FACECA
Apostila 1
2008
INTRODUÇÃO
Usuário: São pessoas que usam algum tipo de serviço, neste caso, serviços de informação. Os
usuários em sistemas de informação são aqueles que usam a tecnologia para fazer algum trabalho.
Ex: Uma cadeira ou uma mesa são exemplos de manufatura no sentido clássico, ou seja, junta-
se partes para se “fabricar uma cadeira ou mesa”, um software é algo bem mais complexo, cada
software é diferente do outro, ainda há aspectos como local de funcionamento do software, público
atendido, hardware e estrutura de comunicação e rede disponível, etc...
Evolução do Software
(1950 - 1965) hardware: contínuas mudanças; software: arte "secundária"; hardware de propósito
geral; software específico para cada aplicação; não havia documentação
(1965 - 1975) Multiprogramação e sistemas multiusuários; técnicas interativas; sistemas de tempo
real; 1a geração de SGBD’s; produto de software; bibliotecas de Software; cresce no de sistemas
baseados em computador; manutenção quase impossível crise de software
(1975 - hoje) Sistemas distribuídos; Redes locais e globais; uso generalizado de microprocessadores -
produtos inteligentes; hardware de baixo custo; impacto de consumo CRISE DE SOFTWARE
(aflição crônica???)
2) A produtividade das pessoas da área de software não tem acompanhado a demanda por seus
serviços
“Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago
indício das exigências do cliente”
Administrativos
Já temos um manual repleto de padrões e procedimentos para a construção de software. Isso não
oferecerá ao meu pessoal tudo o que eles precisam saber?
Realidade:
Meu pessoal tem ferramentas de desenvolvimento de software de última geração; afinal lhes
Seráos
compramos que o manual
mais é usado?
novos computadores.
Os profissionais sabem que ele existe?
Realidade:
Ele reflete a prática moderna de desenvolvimento de software?
É Elepreciso muitoÉ mais
é completo? do que os mais recentes computadores para se fazer um
atualizado?
Prof. Paulo
desenvolvimento de software de altaRoberto R. de Souza
qualidade.
Pg. 4
ENGENHARIA DE SOFTWARE
Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso.
Realidade:
O desenvolvimento de software não é um processo mecânico igual à manufatura.
Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser
acrescentadas, mas somente de uma forma planejada.
Do Cliente
Uma declaração geral dos objetivos é suficiente para se começar a escrever programas - podemos
preencher os detalhes mais tarde.
Realidade:
Uma definição inicial ruim é a principal causa de fracassos no desenvolvimento de
software.
É fundamental uma descrição formal e detalhada do domínio da informação, função,
desempenho, interfaces, restrições de projeto e critérios de validação.
Realidade:
Mudanças no projeto tardiamente podem provocar graves problemas no
desenvolvimento, assim como, o não cumprimento dos prazos estabelecidos;
Há um momento chamado “ponto de congelamento” onde após este momento,
alterações no projeto devem ser maximamente evitadas, exceto em casos de estrema
necessidade;
Quanto mais tarde as alterações forem solicitadas, maiores serão os prejuízos para o
desenvolvimento.
Ou seja, de acordo com a tabela acima, pudemos perceber que quanto mais tarde a alteração, maior
será seu custo para o projeto total.
Do Profissional
Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará
completo.
Realidade:
Os dados da indústria indicam que entre 50 e 70% de todo esforço gasto num programa
serão despendidos depois que ele for entregue pela primeira vez ao cliente.
Prof. Paulo Roberto R. de Souza
Pg. 5
ENGENHARIA DE SOFTWARE
Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua
qualidade.
Realidade:
À cada etapa do desenvolvimento do software é possível verificar e aferir sua qualidade.
Principalmente no que se refere à conformidade com os requisitos, que é um critério de
qualidade.
1) Métodos:
Métodos proporcionam os detalhes de como fazer para construir o software
Portanto:
Área de negócio que deverá ser informatizada e experiência do cliente também são informações
relevantes.
Envolve a coleta de requisitos em nível do sistema, pequena quantidade de projeto e análise de alto
nível.
• Visão essencial quando o software deve fazer interface com outros elementos (hardware, pessoas
e banco de dados)
• Nesta etapa levantamos os requisitos de uma forma geral, ampla, ou seja, descrevemos aqui o
que o software deve conter, o que ele irá solucionar, qual são seus objetivos principais.
2. PROJETO
• Tradução dos requisitos do software para um conjunto de representações que podem ser
avaliadas quanto à qualidade, antes que a codificação se inicie. É o “desenho” do software,
montamos um projeto de modo que já possamos visualizar como ele será (imagine uma planta
baixa de uma casa).
• Se concentra em 4 atributos do software: Estrutura de Dados, Arquitetura de Software, Detalhes
Procedimentais e Caracterização de Interfaces
• Definimos o que será desenvolvido?
Análise do Sistema: define o papel de cada elemento num sistema baseado em computador
(hardware, software, banco de dados, procedimentos, documentação, pessoas), atribuindo em
última análise, o papel que o software desempenhará.
Planejamento do Projeto de Software: assim que o escopo do software é estabelecido, os riscos são
analisados (que situações colocam em risco o projeto em si?), os recursos são alocados (o que é
necessário? Quando, Onde? Quanto?), os custos são estimados e, tarefas e programação de
trabalho são definidas.
3. CODIFICAÇÃO
Tradução das representações do projeto para uma linguagem “artificial” resultando em instruções
executáveis pelo computador. É a codificação propriamente dita.
4. TESTES
Os testes concentram-se:
Nos aspectos lógicos internos do software, garantindo que todas as instruções tenham sido testadas.
5. MANUTENÇÃO
Corretivas: mesmo com as melhores atividades de garantia de qualidade de software, é provável que
o cliente descubra defeitos no software. A manutenção corretiva muda o software para corrigir
defeitos.
Adaptativas: com o passar do tempo, o ambiente original (por exemplo a CPU, o sistema operacional
e periféricos) para o qual o software foi desenvolvido provavelmente mudará. A manutenção
adaptativa muda o software para acomodar mudanças em seu ambiente.
De Melhoramento Funcional: a medida que o software é usado, o cliente/usuário reconhecerá
funções adicionais que oferecerão benefícios.
Comentários sobre o ciclo de vida clássico: - Embora possua fragilidades, ele é significativamente
melhor do que uma abordagem casual ao desenvolvimento de software já que possui etapas bem
definidas e propõe organização do projeto e seu processo de desenvolvimento.
2) Prototipação iníc
fim io obtenção dos
requisitos
construção projeto
produto rápido
refinamento construção
protótipo protótipo
avaliação
protótipo
Processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construído.
Idealmente, o modelo (protótipo) serve como um mecanismo para identificar os requisitos de software.
Apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas não
identificou requisitos de entrada, processamento e saída com detalhes.
Principalmente, o modelo protótipo é utilizado em áreas hostis ao desenvolvedor (que não possui
experiência ou complexas) ou quando o cliente / usuário não tem experiência com sistemas e não
consegue explicitar adequadamente os requisitos do software (necessidades).
Atividades da Prototipação
Desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são
conhecidos e as áreas que necessitam de definições adicionais. Levanta-se os requisitos do
software, suas necessidades, o que ele deverá informatizar.
2. PROJETO RÁPIDO:
Nesta etapa, realiza-se a representação dos aspectos do software que são visíveis ao usuário
(abordagens de entrada e formatos de saída). Telas (interfaces), modelos de consulta e modelos
de relatórios. No final desta etapa, deve-se ser capaz de identificar uma visão geral dos recursos
que o software conterá em termos de projeto.
3. CONSTRUÇÃO DO PROTÓTIPO:
Implementação do projeto rápido. Normalmente, implementa-se o projeto em uma linguagem de
programação de rápido desenvolvimento ou em uma ferramenta onde seja possível o cliente
visualizar os recursos que o software conterá e o que ele irá lhe oferecer.
4. AVALIAÇÃO DO PROTÓTIPO:
Cliente e desenvolvedor avaliam o protótipo. Esta avaliação visa fornecer subsídios ao cliente e
desenvolvedor para que se possam refinar os requisitos que ainda já foram identificados e
identificar aqueles que ainda não foram.
O Cliente não sabe que o software que ele vê não considerou, durante o desenvolvimento, a
qualidade global e a manutenibilidade (facilidade de manutenção) a longo prazo.
Não aceita bem a idéia que a versão final do software vai ser construída e "força" a utilização do
protótipo como produto final.
Prototipação evolutiva
direção de
avaliação
do cliente um sistema
engenharia concluído
Engloba as melhores características do ciclo de vida Clássico e da Prototipação, adicionando um
novo elemento: a Análise de Risco
Segue a abordagem de passos sistemáticos do Ciclo de Vida Clássico incorporando-os numa
estrutura iterativa que reflete mais realisticamente o mundo real
Usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de
riscos.
Um de seus pontos fortes é a constante avaliação por parte do cliente / usuário em todas as
etapas.
PLANEJAMENTO:
ANÁLISE DE RISCO:
Análise das alternativas e identificação / resolução dos riscos. Verificação e tratamento de todos
os fatores que podem colocar em risco o projeto. (Ex: Problemas com o servidor, problemas
com redes e comunicação de dados, fornecedores, desenvolvedores, softwares básicos, etc).
CONSTRUÇÃO:
AVALIAÇÃO DO CLIENTE:
Avaliação do produto e planejamento das novas fases. O cliente avalia o que foi realizado, dá
suas opiniões e o projeto prossegue.
O grande problema deste ciclo de vida é que nem sempre o cliente está disponível para realizar
suas avaliações, este pode ser um grande entrave para o cumprimento dos prazos e do projeto em si.
O sistema será especificado em uma linguagem de alto nível (de fácil utilização).
O código fonte seja gerado automaticamente a partir dessas especificações.
As ferramentas utilizadas realizarão consultas aos bancos de dados, geração de relatórios, telas de
cadastros, etc.
Obtenção dos
Requisitos
Estratégia do
“Projeto” Implementaçã
o usando 4GL
Testes
O cliente descreve os requisitos (suas necessidades) os quais são traduzidos para um protótipo
operacional que seja possível especificar um projeto.
ESTRATÉGICA DE PROJETO:
Para pequenas aplicações é possível mover-se do passo de obtenção dos Requisitos para o passo de
Implementação usando uma Linguagem de quarta geração. (4GL).
Os resultados desejados são representados de modo que haja geração automática de código. Deve
existir uma estrutura de dados com informações relevantes e que seja acessível pela 4GL. Para
TESTES:
Vantagens:
Redução dramática no tempo de desenvolvimento do software (aumento de produtividade);
Extrema facilidade em se gerar códigos de programas de cadastros e relatórios;
Desvantagens:
As Linguagens de quarta geração, assim como, as ferramentas case atuais não são mais fáceis de
usar do que as linguagens de programação;
O código fonte produzido é truncado e ineficiente;
Programas gerados são de difícil manutenção;
Há dificuldade de se gerar códigos utilizando-se ferramentas case em programas de cálculos e
encerramentos onde há grande quantidade de laços condicionais e particularidades;
DEFINIÇÃO;
DESENVOLVIMENTO;
MANUTENÇÃO;
Análise do Sistema: define o papel de cada elemento num sistema baseado em computador,
atribuindo em última análise, o papel que o software desempenhará.
Planejamento do Projeto de Software: assim que o escopo do software é estabelecido, os riscos são
analisados, os recursos são alocados, os custos são estimados e, tarefas e programação de
trabalho definidas.
3) MANUTENÇÃO:
Concentra-se nas “mudanças” que ocorrerão depois que o software for liberado para uso
operacional. Como vimos especificamente no ciclo de vida clássico, as manutenções podem ser:
Corretivas: mesmo com as melhores atividades de garantia de qualidade de software, é provável que
o cliente descubra defeitos no software. A manutenção corretiva muda o software para corrigir
defeitos.
Adaptativas: com o passar do tempo, o ambiente original (por exemplo a CPU, o sistema operacional
e periféricos) para o qual o software foi desenvolvido provavelmente mudará. A manutenção
adaptativa muda o software para acomodar mudanças em seu ambiente.
Melhoramento Funcional: À medida que o software é usado, o cliente/usuário reconhecerá
funções adicionais que oferecerão benefícios, ou o desenvolvedor observa que o software está
funcionando, porém, algumas pequenas modificações trarão maior qualidade ao software.
ATIVIDADES DE PROTEÇÃO:
As fases e etapas correlatas descritas são complementadas por uma série de atividades de
proteção:
a) Revisões: efetuadas para garantir que a qualidade seja mantida à medida que cada etapa é
concluída.
c) Controle das Mudanças: é instituído de forma que as mudanças possam ser aprovadas e
acompanhadas.
BIBLIOGRAFIA
1. PRESSMAN, Roger S., Engenharia de Software. 3ª Ed. São Paulo: Editora Makron Books., 1995.
1. SOUZA, Paulo Roberto Rodrigues. Como investir em tecnologia com segurança: critérios
importantes para se adquirir e desenvolver software. Florianópolis, 2000. Dissertação – Mestrado
– UFSC, 2000.
7. PRADO, Darci Santos do. Gerência de Projetos em Tecnologia da Informação. Belo Horizonte:
Editora de Desenvolvimento Gerencial, 1999
8. AZANHA, José da Silva. Gestão de Projetos. Monografia, 2001 PMI - Project Management Institute