Beruflich Dokumente
Kultur Dokumente
19/08/2009
1
Módulo 4.1
Aula 3
2
• AGRADECIMENTOS
• AVISOS
3
AGENDA
• Crise do Software;
• Conceitos fundamentais sobre ciclos
de vida;
• Modelos de ciclo de vida.
4
Crise de Software
Refere-se a um conjunto de
problemas encontrados no
desenvolvimento de software.
5
Crise de Software
(1) As estimativas de prazo e de custo
frequentemente são imprecisas
“Não dedicamos tempo para coletar dados
sobre o processo de desenvolvimento
de software”.
“Sem nenhuma indicação sólida de
produtividade, não podemos avaliar com
precisão a eficácia de novas ferramentas,
métodos ou padrões”.
6
Crise de Software
(2) A produtividade das pessoas da área de
software (desenvolvimento) não
acompanha 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.”
7
Crise de Software
(3) A qualidade de software às vezes é
menos que adequada.
“Só recentemente começam a surgir
conceitos quantitativos sólidos de
garantia de qualidade de software.”
8
Crise de Software
(4) O software existente é muito difícil de
manter.
“A tarefa de manutenção devora o
orçamento destinado ao software.”
“A facilidade de manutenção não foi
enfatizada como um critério importante.”
9
Crise de Software
RESULTADO:
1. Estimativas de prazo e
de custo estourados;
2. Produtividade das pessoas reduzida;
3. Qualidade de software reduzida;
4. Enorme dificuldade em se manter
(efetuar manutenção) o software.
10
Conceituando:
Engenharia de Software
SOFTWARE
+ +
Programas Dados
Documentação 11
Conceituando:
Engenharia de Software
Como construir um software?
ENGENHARIA
Simplesmente DE SOFTWARE
www.sei.cmu.edu/
“FAZER” OU
www.rspa.com/spi/
www.swebok.org
SOFTWARE
+ +
Programas Dados
Documentação 12
Conceituando: Método
• Conjunto dos meios dispostos convenientemente para
alcançar um fim e especialmente para chegar a um
conhecimento científico ou comunicá-lo aos outros.
• Técnica para o ensino de qualquer
disciplina.
• Caminho pelo qual se atinge um
objetivo.
• Maneira de fazer as coisas;
modo de proceder, meio.
13
Processo de Software
É uma série de passos (um roteiro) para realizar
um propósito. (IEEE – Institute of Electrical and Electronics Engineers)
Entrada
Proc
essa
ment
o
Saída?
16
Processo de Software IMATURO
• Coerente com as linhas de ação, o trabalho é
efetivamente concluído.
• Revisado (definido, documentado e melhorado)
constantemente.
• Com o apoio visível da alta administração e outras
gerências.
• Bem controlado - fidelidade ao processo é objeto de
auditoria e de controle.
• São utilizadas medições do produto e do processo.
17
Processo de Software MADURO
Entrada
Saída
Os processos de cada fase, assim como o
processo como um todo são controlados e
medidos.
18
Processo de Software MADURO
Foco na melhoria continua do processo.
Entrada
Saída
A qualidade de um sistema de software é altamente
influenciada pela qualidade do processo utilizado no
seu desenvolvimento e manutenção. 19
Processo de Software
Como “escolher” um processo de software?
As CARACTERÍSTICAS DA APLICAÇÃO
(domínio do problema, tamanho, complexidade etc.);
A TECNOLOGIA a ser adotada na sua
construção (paradigma de desenvolvimento,
linguagem de programação, mecanismo de
persistência, etc.), a organização;
ONDE o produto será desenvolvido;
O PERFIL DA EQUIPE de desenvolvimento.
20
Processo de Software e
Ciclo de Vida de Software
Quando se “escolhe“ um processo de
desenvolvimento de software (SI) define-se um:
Modelo de Ciclo de Vida (ou modelo de processo).
˗É uma representação abstrata da estrutura
(“ESQUELETO“) de processo.
˗Inclui algumas atividades principais.
˗A ordem de precedência entre elas.
˗Opcionalmente, artefatos requeridos
e produzidos.
21
Processo de Software e
Entrada Ciclo de Vida de Software
Saída
Quando o processo envolve a elaboração de um
produto, nos referimos a ele como ciclo de vida. 22
Atividade
Agora é com vocês!!
Reúnam-se em duplas e discutam:
Um processo maduro não garante o sucesso do
produto.
O processo de desenvolvimento do meu software pode
ser excelente, porém os clientes podem preferir usar o
da concorrência que não tem um processo tão maduro
quanto o meu.
Se isso ocorre, porque devo lutar por um processo
maduro de desenvolvimento de software?
Justifique.
23
Slide do professor
Resposta da Atividade
Porque sem isso, voltaríamos a crise do software:
1. Estimativas de prazo e de custo estourados;
2. Produtividade das pessoas reduzida;
3. Qualidade de software reduzida;
4. Enorme dificuldade em se manter (efetuar
manutenção) o software.
Esse exercício tem por finalidade ressaltar a importância
de se investir tanto no processo quanto no produto, pois,
não se deve investir em um processo maravilhoso se o
produto é uma lastima.
24
Slide do professor
Resposta da Atividade
Alguém lembra do Lada?
• Fase; período.
26
Ciclo de Vida
O que vem a ser um ciclo de vida?
CICLO DA ÁGUA
27
Ciclo de Vida de Software
Em geral os ciclos de vida de desenvolvimento de
software envolvem as seguintes fases:
Planejamento;
Análise e Especificação de Requisitos;
Projeto;
Testes;
Implementação;
Entrega e Implantação;
Operação;
Manutenção. 28
Ciclo de Vida
de Software: Planejamento
Fornece uma estrutura que possibilita ao gerente fazer
estimativas iniciais de recursos, custos e prazos;
29
Ciclo de Vida de Software:
Análise de Requisitos
O escopo do software é refinado;
30
Ciclo de Vida de Software:
Projeto
Utiliza a fase anterior como insumo;
− Projeto da arquitetura
do software;
− Projeto detalhado.
31
Ciclo de Vida de Software:
Implementação
O projeto é
traduzido para uma
forma passível de
execução pela
máquina.
32
Ciclo de Vida de Software:
Testes
Testes de unidade e documentação dos resultados;
Alguns modelos de
processo prevêem a
realização de testes já
nas primeiras etapas.
33
Ciclo de Vida de Software:
Entrega e Implantação
35
Ciclo de Vida de Software:
Manutenção
Atividade durante a qual ocorrem modificações em
um ou mais artefatos resultantes do
desenvolvimento de um software;
Busca mantê-lo disponível,
corrigir suas falhas, melhorar
seu desempenho e adequá-lo
aos requisitos novos ou
modificados.
(ANSI/IEEE, 1993) 36
Ciclo de Vida de Software:
Tipos de Manutenção
CORRETIVA:
Correção de erros/falhas.
ADAPTATIVA:
Adaptação do software para acomodar mudanças
em seu ambiente externo.
Exemplos: uma nova plataforma (hardware,
sistema operacional) ou mudanças nas regras de
negócio, leis, políticas governamentais etc.
37
Ciclo de Vida de Software:
Tipos de Manutenção
EVOLUTIVA (OU PERFECTIVA):
Acréscimo de funcionalidades, não previstas em
seu documento de requisitos original.
PREVENTIVA (REENGENHARIA):
O software é modificado para oferecer uma base
melhor para futuras manutenções.
Esse tipo de manutenção visa melhorar a
confiabilidade e/ou manutenibilidade futura.
38
Ciclo de Vida de Software:
Modelos Sequenciais
CASCATA (LINEAR):
Organizam o processo em uma sequência
Estudo linear de fases.
Análise Resultado de uma etapa é usado na
Projeto
etapa seguinte
Codificação
Testes
Entrega e
Implantação
39
Ciclo de Vida de Software:
Modelos Sequenciais
CASCATA (LINEAR): PROBLEMAS
Projetos reais não seguem um fluxo em sequência,
na maioria das vezes, como o modelo propõe.
Estudo Difícil estabelecer todos os requisitos
Análise logo no início.
Projeto O cliente precisa ter paciência
Codificação
e o tempo necessário
para disponibilizar
Testes
o software.
Entrega e
Implantação
40
Ciclo de Vida de Software:
Modelos Sequenciais
Codificação Definidos.
Testes
Entrega e
Implantação
41
Modelos de Ciclo de Vida
de Software
42
Ciclo de Vida de Software:
Modelos Incrementais
Incrementos
43
Ciclo de Vida de Software:
Modelos Incrementais
RAD (Rapid Application Development):
Busca um ciclo de desenvolvimento curto.
Implementação
Análise Projeto
e Testes
Especificação Implementação
Análise Projeto Integração
de Requisitos e Testes
Implementação Entrega e
Análise Projeto Implantação
e Testes
Software
44
Ciclo de Vida de Software:
Modelos Incrementais
VANTAGENS:
45
Ciclo de Vida de Software:
Modelos Incrementais
PROBLEMAS:
Requisitosinstáveis ou incompletos geram muitas
mudanças nos incrementos;
Gerência do projeto é mais complexa.
46
Ciclo de Vida de Software:
Modelos Incrementais
INDICAÇÃO:
47
Modelos de Ciclo de Vida
de Software
48
Ciclo de Vida de Software:
Modelos Iterativos
49
Ciclo de Vida de Software:
Modelos Iterativos
Exemplo: Modelo Espiral, RUP (Rational Unified
Process)
Análise
Quanto mais se
caminha para Especificação Projeto
de Requisitos
fora do espiral,
Implementação
mais se caminha Entrega e
Implantação
na direção do SI
Testes
concluído.
50
Ciclo de Vida de Software:
Modelos Iterativos
Exemplo: Modelo Espiral, RUP
Cada iteração do
espiral representa Análise
52
Modelos de Ciclo de Vida
de Software
53
Atividade
Agora é com vocês!!
Reúnam-se em duplas e discutam:
Supondo que sua equipe fosse composta de 03
desenvolvedores (programadores) e você
tivesse que iniciar um projeto que envolvesse
três áreas de sua organização (compras,
financeiro e contabilidade) e a contratação de
uma empresa terceirizada para lhe prover um
determinado serviço.
Qual modelo de ciclo de vida você utilizaria? Por
quê?
(não existem restrições).
54
Ciclo de Vida de Software:
Protótipos
OBJETIVOS:
Processo onde se cria um
esboço do software que
será implementado.
Pode evoluir para o
produto final ou ser
descartado.
O protótipo serve como uma técnica para o
levantamento dos requisitos do software. 55
Ciclo de Vida de Software:
Protótipos
PROCESSO DE PROTOTIPAÇÃO:
56
Ciclo de Vida de Software:
Protótipos
PROBLEMAS:
Idealização do protótipo como
“solucionador” dos problemas.
Gera versão
operável do
sistema.
58
Ciclo de Vida de Software:
Tipos de Protótipos
Redução de riscos;
Maior visibilidade sobre o processo;
Problemas podem ser descobertos logo
no início;
Auxilia na estimativa de tempo do projeto.
59
Ciclo de Vida de Software:
Tipos de Protótipos
60
Ciclo de Vida de Software:
Tipos de Protótipos
PROTÓTIPO EVOLUTIVO:
Baseado no modelo de ciclo de vida iterativo.
Gera versão
operável do
sistema.
61
Ciclo de Vida de Software:
Tipos de Protótipos
VANTAGENS DO PROTÓTIPO EVOLUTIVO:
Menor taxa de defeitos (pela melhor
definição das especificações do sistema);
Promove maior participação do cliente;
Maior visibilidade do progresso de
desenvolvimento;
Verificação da aceitação do sistema nos
primeiros estágios do desenvolvimento.
62
Ciclo de Vida de Software:
Tipos de Protótipos
PROTÓTIPO DESCARTÁVEL:
Utilizado para o levantamento de requisitos;
Definição de interfaces;
Não Gera versão operável do sistema.
64
O que veremos na
próxima aula:
Obrigado!
http://www.inepad.org.br/interativacoc/
67