Beruflich Dokumente
Kultur Dokumente
Software
Introdução a Engenharia
de Software
Introdução
■ “O Software ultrapassou o
Hardware como chave para
o sucesso de muitos
sistemas baseados em
computador” (Pressman, pg.
3, 1992)
O Software é o que faz a
diferença!!!
■ Completeza da
informação
■ user-friendlyness
Tornam 1
■ web-enhanced
produto melhor
■ inteligência que outro
■ funcionalidade
■ compatibilidade
■ suporte
A importância do Software
■ Durante as 3 primeiras décadas da era
do computador, o principal desafio era
desenvolver um HARDWARE de baixo
custo e alto desempenho.
■ O hoje o desafio é melhorar a
qualidade (e reduzir os custos) das
soluções baseadas em SOFTWARE!
A evolução do Software
- Nova
Revolução
Computação Industrial
(Toffler)
- 3a. Onda
O que é Software?
■ Definição - Software é:
1o - instruções (programas de computador)
que, quando executadas, produzem a
função e o desempenho desejados;
2o - estruturas de dados que permitem a
manipulação das informações;
3o - documentos que descrevem a operação
e uso dos programas.
Características do Software - 1
■ O Software é desenvolvido ou projetado
por engenharia, não manufaturado no
sentido clássico:
– Custos são concentrados no trabalho de
engenharia.
– Projetos não podem ser geridos como
projetos de manufatura.
– “Fábrica de Software!”
Características do Software - 2
■ Software não desgasta!
– Software não é sensível aos problemas
ambientais que fazem com que o hardware
se desgaste.
– Ver curvas de falha, páginas 14 e 15 do
Pressman.
– Toda falha indica erro de projeto ou
implementação: manutenção do SW é
mais complicada que a do HW.
Características do Software - 3
“mortalidade “desgaste”
índice
de infantil”
falhas
tempo
mudança
índice
de curva real
falhas
curva
idealizada
tempo
Pressman, página 10
■ Software Básico
■ Software Comercial
■ Software Embutido
strict precondition 1:
{
Set."x"=FLPT and Set."y"=INT16
and -32768 <= x <= +32767
}
program code:
y := int(x);
postcondition:
{Set."x"=FLPT and Set."y"=INT16 and y=int(x)}
Ironia...
■ O resultado desta conversão não era
mais necessário após a decolagem...
Quais são os problemas?
■ A sofisticação do software ultrapassou
nossa capacidade de construção.
■ Nossa capacidade de construir
programas não acompanha a demanda
por novos programas.
■ Nossa capacidade de manter
programas é ameaçada por projetos
ruins.
Perguntas que Engenharia de
Software quer responder:
■ Porque demora tanto para concluir um
projeto (não cumprimos prazos)?
■ Porque custa tanto (uma ordem de
magnitude a mais)?
■ Porque não descobrimos os erros antes
de entregar o software ao cliente?
■ Porque temos dificuldade de medir o
progresso enquanto o software está
sendo desenvolvido?
Causas óbvias
■ Não dedicamos tempo para coletar
dados sobre o desenvolvimento do
software - resulta em estimativas “a
olho”.
■ Comunicação entre o cliente e o
desenvolvedor é muito fraca.
■ Falta de testes sistemáticos e
completos.
Causas menos óbvias
■ O Software é desenvolvido ou projetado
por engenharia, não manufaturado no
sentido clássico (característica 1).
■ Gerentes sem background em
desenvolvimento de SW.
■ Profissionais recebem pouco
treinamento formal.
■ Falta investimento (em ES).
■ Falta métodos e automação.
Mitos do Software -
Administrativos
■ Um manual oferece tudo que se precisa
saber.
■ Computadores de última geração
solucionam problemas de
desenvolvimento.
■ Se estamos atrasados, basta adicionar
programadores e tirar o atraso
(chamado “conceito de hordas de
mongois”).
Mitos do Software - do Cliente
■ Uma declaração geral é suficiente para
começar a escrever programas.
■ Mudanças podem ser facilmente
acomodadas em um projeto (ver figura
pg. 28).
Mitos do Software -
do Profissional
■ Um programa está terminado ao
funcionar.
■ Quanto mais cedo escrever o código,
mais rápido terminarei o programa.
■ Só posso avaliar a qualidade de um
programa em funcionamento.
■ A única coisa a ser entregue em um
projeto é o programa funcionando.
Engenharia de Software:
Definição
■ “Engenharia de Software é o
estabelecimento e uso de sólidos
princípios de engenharia para que se
possa obter economicamente um
software que seja confiável e que
funcione eficientemente em máquinas
reais”
■ É METODOLOGIA!
Engenharia de Software:
Abrangência
■ E.S. possui 3 elementos fundamentais:
– métodos: “como fazer”
– ferramentas: apoio automatizado aos
métodos.
– Procedimentos: elo de ligação entre os
métodos e os procedimentos
■ Existem diversos Paradigmas de
Engenharia de Software:
– abordagens que envolvem estes métodos,
ferramentas e procedimentos
O Processo de Software
■MÉTODOS:
MÉTODOS proporcionam os detalhes
de como fazer para construir o software
Planejamento e estimativa de projeto
Análise de requisitos de software e de sistemas
Projeto da estrutura de dados
Codificação
Teste
Manutenção
O Processo de Software
■ FERRAMENTAS: dão suporte automatizado
aos métodos.
– Existem atualmente ferramentas para sustentar
cada um dos métodos
– Quando as ferramentas são integradas, é
estabelecido um sistema de suporte ao
desenvolvimento de software chamado CASE -
Computer Aided Software Engineering = CAD -
Computer Aided Design
O Processo de Software
■ PROCEDIMENTOS: constituem o elo de
ligação entre os métodos e ferramentas
– Seqüência em que os métodos serão aplicados
– Produtos que se exige que sejam entregues
– Controles que ajudam assegurar a qualidade e
coordenar as alterações
– Marcos de referência que possibilitam
administrar o progresso do software.
Paradigmas de Engenharia de
Software
■ Existem dezenas.
■ 4 principais:
– Ciclo de Vida Clássico (modelo Cascata)
– Prototipagem
– Espiral
– Técnicas de Quarta Geração
■ Páginas 18 até 44 Pressman
Ciclo de Vida Clássico: modelo
Cascata (Waterfall)
■ Baseado em projetos de engenharia
clássicos (não de Software) - 1970
■ Fases:
– Análise de requisitos
– Definição
– Projeto
– Implementação
– Integração e testes
– Operação e manutenção
O Modelo Cascata
■ modelo mais antigo e o mais amplamente
usado da engenharia de software
■ modelado em função do ciclo da
engenharia convencional
■ requer uma abordagem sistemática,
seqüencial ao desenvolvimento de
software
■ o resultado de uma fase se constitui na
entrada da outra
Modelo Cascata
Engenhari
a de
Sistemas
Análise de
Requisitos
Projeto
Codificaçã
o
Testes
Manutençã
o
Modelo Cascata
1- ANÁLISE
Engenhari
E ENGENHARIA DE
SISTEMAS
a de
Sistemas
■ envolve a coleta
Análise de de requisitos em nível do
Requisitos
sistema, com uma pequena quantidade de
projeto e análise de alto nível (sistema)
Projeto
Manutençã
o
Modelo Cascata
5- TESTES
Engenhari
a de
■ Concentra-se:
Sistemas
Análise de
– nos
Requisitos
aspectos lógicos internos do software,
garantindo que todas as instruções tenham sido
Projeto
testadas
Codificaçã
– nos aspectos funcionais externos,
o
para
descobrir erros e garantir que a entrada
Testes definida
produza resultados que concordem com os
esperados. Manutençã
o
Modelo Cascata
6- MANUTENÇÃO
Engenhari
a de ■ provavelmente o software deverá sofrer
Sistemas
mudanças depois que for entregue ao
Análise de
Requisitos
cliente (exceção - software embutidos)
Projeto
■ causas das mudanças: erros, adaptação do
software para acomodar mudanças em seu
Codificaçã
o
ambiente externo e exigência do cliente
Testes
para acréscimos funcionais e de
desempenho Manutençã
o
Problemas com o Modelo
Cascata
Projetos reais raramente seguem o fluxo
seqüencial que o modelo propõe
Logo no início é difícil estabelecer
explicitamente todos os requisitos. No
começo dos projetos sempre existe uma
incerteza natural
O cliente deve ter paciência. Uma versão
executável do software só fica disponível
numa etapa avançada do desenvolvimento
Problemas com o Modelo
Cascata
Projetos
Embora o raramente
reais Modelo seguem
Cascata
o fluxo
seqüencial que o modelo propõe
tenha fragilidades, ele é
significativamente
Logo melhor
no início é difícil estabelecer
explicitamente todos
do que uma abordagem os requisitos. No
começo dos projetos sempre existe uma
casual ao desenvolvimento
incerteza natural
de software
O cliente deve ter paciência. Uma versão
executável do software só fica disponível
numa etapa avançada do desenvolvimento
Ciclo de Vida Clássico (III)
■ Problemas:
– projetos reais não seguem um fluxo
seqüencial: dificuldade de acomodar
mudanças depois de iniciado.
– Dificuldade de declaração de todas as
exigências pelo cliente.
– Paciência!
Modelo Espiral de Boehm (1988)
Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analy sis Proto
type 1
Requirements plan Simulations, models, benchmarks
Lifecycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
nextlevel product
Fases do modelo Espiral
■ Definição dos objetivos
– Especificação dos objetivos específicos
desta fase.
■ Análise dos riscos
– Identificação e solução dos principais riscos
■ Desenvolvimento e validação
■ Planejamento
– O projeto é revisto e se define planos para a
próxima “volta da espiral”
Conclusão
■ Software é elemento chave para o
sucesso. Mas:
– Software não é hardware.
– Software não é fácil.
– Software mata.
– Precisamos de ajuda.