Upload
emanuelchaves
View
1.148
Download
2
Embed Size (px)
Citation preview
1
Curso de Gestão da TI
Análise de Projetos de Sistemas
Prof. Flávio Barbosa
19/08/2009
2
Módulo 4.1
Aula 3
Ciclo de Vida do Software
3
• AGRADECIMENTOS
• AVISOS
4
AGENDA• Crise do Software;• Conceitos fundamentais sobre ciclos
de vida;• Modelos de ciclo de vida.
5
Crise de Software
Refere-se a um conjunto de
problemas encontrados no
desenvolvimento de software.
6
(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”.
Crise de Software
7
(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.”
Crise de Software
8
(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.”
Crise de Software
9
(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.”
Crise de Software
10
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.
Crise de Software
11
SOFTWARE
Conceituando: Engenharia de Software
É a utilização de sólidos princípios de engenharia a fim de se obter um software de maneira econômica que seja confiável e que trabalhe eficientemente em máquinas reais.
Programas
+
Documentação
+
Dados
Fritz Bauer, 1969
12
SOFTWARE
Como construir um software?
Programas
+
Documentação
+
Dados
Simplesmente“FAZER” OU
ENGENHARIA DE SOFTWAREwww.sei.cmu.edu/ www.rspa.com/spi/ www.swebok.org
Conceituando: Engenharia de Software
13
Conceituando: Método
1. Conjunto dos meios dispostos convenientemente para
alcançar um fim e especialmente para chegar a um
conhecimento científico ou comunicá-lo aos outros.
2. Técnica para o ensino de qualquer
disciplina.
3. Caminho pelo qual se atinge um
objetivo.
4. Maneira de fazer as coisas;
modo de proceder, meio.
13
14
Processo de Software
É uma série de passos (um roteiro) para realizar
um propósito.
Para criar em tempo hábil um software de alta
qualidade, sem estourar o orçamento.
Processo Bom...Processo Bom...
...Resultado Bom!...Resultado Bom!
Processo Ruim...Processo Ruim...
...Resultado Ruim!...Resultado Ruim!
(IEEE – Institute of Electrical and Electronics Engineers)
15
Processo de Software IMATURO
1. processo improvisado por profissionais e gerências (Ad hoc);
2. Não é rigorosamente seguido e o cumprimento não é controlado;
3. Altamente dependente dos profissionais atuais;
4. Baixa visibilidade do progresso e da qualidade;5. A funcionalidade e a qualidade do produto
podem ficar comprometidas para que prazos sejam cumpridos.
16
6. Custos de manutenção excessivos.
7. Qualidade difícil de se prever (imprevisível).
Entrada
Processamento
Saída?
Processo de Software IMATURO
17
1. Coerente com as linhas de ação, o trabalho é
efetivamente concluído.
2. Revisado (definido, documentado e melhorado)
constantemente.
3. Com o apoio visível da alta administração e outras
gerências.
4. Bem controlado - fidelidade ao processo é objeto de
auditoria e de controle.
5. São utilizadas medições do produto e do processo.
Processo de Software IMATURO
18
Processo de Software MADUROEntrada
Saída
Os processos de cada fase, assim como o processo como um todo são controlados e
medidos.
19
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.
Processo de Software MADURO
20
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.
21
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
22
Entrada
Saída
Quando o processo envolve a elaboração de um
produto, nos referimos a ele como ciclo de vida.
Processo de Software e Ciclo de Vida de Software
23
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.
24
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.
Slide do professor
25
Alguém lembra do Lada?
Lada é uma marca da Avtovaz, uma fábrica de automóveis russa de Togliatti.
Slide do professorResposta da Atividade
26
Conceituando: Ciclo
1. Período durante o qual se completa uma
sequência de eventos ou fenômenos.
2. Fase; período.
(Fonte: DIC Michaelis Escolar Versão 2.0)
26
27
Ciclo de Vida
O que vem a ser um ciclo de vida?
CICLO DA ÁGUA
28
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;
Implementação; Testes;
Entrega e Implantação;
Operação;
Manutenção.
29
Ciclo de Vida de Software: Planejamento
O escopo do software é estabelecido;
Um plano de projeto deve ser
elaborado configurando o
processo a ser utilizado;
Esta atividade faz parte da
gerência de projeto.
Fornece uma estrutura que possibilita ao gerente fazer
estimativas iniciais de recursos, custos e prazos;
29
30
Ciclo de Vida de Software: Análise de Requisitos
Devem ser analisados o
domínio do problema e
o domínio da solução.
O escopo do software é refinado;
Descreve “o que” o software deverá fazer;
31
Ciclo de Vida de Software: Projeto
− Projeto da arquitetura
do software;
− Projeto detalhado.
Utiliza a fase anterior como insumo;
Envolve duas grandes fases:
32
Ciclo de Vida de Software: Implementação
O projeto é
traduzido para uma
forma passível de
execução pela
máquina.
33
Ciclo de Vida de Software: Testes
Testes de unidade e documentação dos resultados;
Integração dos componentes e teste do software como
um todo;
Alguns modelos de
processo prevêem a
realização de testes já
nas primeiras etapas.
33
34
Ciclo de Vida de Software: Entrega e Implantação
O software deve ser instalado em ambiente de produção;
Principal propósito é estabelecer que o software satisfaz as necessidades do usuário (teste de aceitação);
Envolve:
Treinamento de usuários;Configuração do ambiente de produção;Conversão de bases de dados (se necessário).
34
35
Ciclo de Vida de Software: Operação
Após o teste de aceitação, o software passa a ser
utilizado de fato em ambiente de produção;
Após o teste de aceitação, o software passa a ser
utilizado de fato em ambiente de produção;
Acompanhamento
dos usuários é
imprescindível ainda
nessa fase.
35
36
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
37
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.
38
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.
Ciclo de Vida de Software: Tipos de Manutenção
39
Ciclo de Vida de Software: Modelos Sequenciais
CASCATA (LINEAR):
Organizam o processo em uma sequência
linear de fases.
Resultado de uma etapa é usado na
etapa seguinte
Estudo
Análise
Projeto
Codificação
Testes
Entrega e Implantação
40
Estudo
Análise
Projeto
Codificação
Testes
Entrega e Implantação
CASCATA (LINEAR): PROBLEMASProjetos reais não seguem um fluxo em sequência,
na maioria das vezes, como o modelo propõe.
Difícil estabelecer todos os requisitos logo no início.
O cliente precisa ter paciência e o tempo necessário
para disponibilizar o software.
Ciclo de Vida de Software: Modelos Sequenciais
41
Estudo
Análise
Projeto
Codificação
Testes
Entrega e Implantação
CASCATA (LINEAR): INDICAÇÃO
Projetos (SI) onde os
requisitos são bem
Definidos.
Ciclo de Vida de Software: Modelos Sequenciais
42
Modelos de Ciclo de Vida de Software
43
Ciclo de Vida de Software: Modelos Incrementais
Software produzido por incrementos (módulos);
Incrementos
- Seu desenvolvimento segue o modelo sequencial;
- Exigem revisão do cliente.
44
RAD (Rapid Application Development):
Busca um ciclo de desenvolvimento curto.
Especificação de Requisitos
Análise ProjetoImplementação
e Testes
Integração
Entrega e Implantação
Análise ProjetoImplementação
e Testes
Análise ProjetoImplementação
e Testes
Software
Ciclo de Vida de Software: Modelos Incrementais
45
VANTAGENS:
Menor custo e tempo para entrega da 1ª versão.Menor risco e nº de mudanças nos requisitos (porque os incrementos são menores que o sw todo).
Ciclo de Vida de Software: Modelos Incrementais
46
PROBLEMAS:
Requisitos instáveis ou incompletos geram muitas mudanças nos incrementos;Gerência do projeto é mais complexa.
Ciclo de Vida de Software: Modelos Incrementais
47
INDICAÇÃO:
Projetos (SI) onde exista uma boa equipe de gerência e onde o projeto permita
modularização.
Ciclo de Vida de Software: Modelos Incrementais
48
Modelos de Ciclo de Vida de Software
49
Ciclo de Vida de Software: Modelos Iterativos
Não se preocupa com a entrega de versões operacionais desde o primeiro ciclo;
Geralmente produzem protótipos ou modelos;
Versões operacionais são produzidas à medida em que os requisitos vão ficando mais claros e estáveis.
50
Exemplo: Modelo Espiral, RUP (Rational Unified
Process)
Quanto mais se
caminha para
fora do espiral,
mais se caminha
na direção do SI
concluído.
Especificação de Requisitos
AnáliseAnálise
ProjetoProjeto
ImplementaçãoImplementação
TestesTestes
Entrega eImplantação
Ciclo de Vida de Software: Modelos Iterativos
51
Exemplo: Modelo Espiral, RUP
Cada iteração do
espiral representa
uma versão
progressivamente
mais completa do
SI.
Especificação de Requisitos
AnáliseAnálise
ProjetoProjeto
ImplementaçãoImplementação
TestesTestes
Entrega eImplantação
Ciclo de Vida de Software: Modelos Iterativos
52
INDICAÇÃO:
Projetos (SI) de alta complexidade onde os
requisitos são bastante voláteis ou que não
podem ser totalmente especificados no início do
desenvolvimento.
Ciclo de Vida de Software: Modelos Iterativos
53
Modelos de Ciclo de Vida de Software
54
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).
55
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.
56
PROCESSO DE PROTOTIPAÇÃO:
Ciclo de Vida de Software: Protótipos
57
PROBLEMAS:
Idealização do protótipo como
“solucionador” dos problemas.
O cliente, não raro, ignora
a função do protótipo.
Concessões do desenvolvedor na implementação a
fim de conseguir rapidamente o sistema em
funcionamento.
Ciclo de Vida de Software: Protótipos
58
Ciclo de Vida de Software: Tipos de Protótipos
PROTÓTIPO INCREMENTAL:
Baseado no modelo de ciclo de vida incremental.
Gera versão
operável do
sistema.
59
Redução de riscos;
Maior visibilidade sobre o processo;
Problemas podem ser descobertos logo no início;
Auxilia na estimativa de tempo do projeto.
VANTAGENS DO PROTÓTIPO INCREMENTAL:
Ciclo de Vida de Software: Tipos de Protótipos
60
Exige grande esforço na atualização da documentação do usuário;
O desenvolvimento por estágio requer que as dependências entre eles sejam bem planejadas. Um dos problemas comuns é descobrir que o estágio 2 depende de componentes do estágio 4.
DESVANTAGENS DO PROTÓTIPO INCREMENTAL:
Ciclo de Vida de Software: Tipos de Protótipos
61
PROTÓTIPO EVOLUTIVO:
Baseado no modelo de ciclo de vida iterativo.
Gera versão
operável do
sistema.
Ciclo de Vida de Software: Tipos de Protótipos
62
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.
VANTAGENS DO PROTÓTIPO EVOLUTIVO:
Ciclo de Vida de Software: Tipos de Protótipos
63
Pobre manutenibilidade (provocada pela rapidez no desenvolvimento ou constantes mudanças na estrutura do protótipo);
Acréscimo de novas funcionalidades devido ao constante contato do cliente com o protótipo;
Uso ineficiente do tempo destinado à construção do protótipo.
DESVANTAGENS DO PROTÓTIPO EVOLUTIVO:
Ciclo de Vida de Software: Tipos de Protótipos
64
PROTÓTIPO DESCARTÁVEL:
Utilizado para o levantamento de requisitos;
Definição de interfaces;
Não Gera versão operável do sistema.
Ciclo de Vida de Software: Tipos de Protótipos
65
Tema 4 – ENGENHARIA DE REQUISITOS
Definição de requisitos;
Tipos de requisitos;
Documento de requisitos.
O que veremos na próxima aula:
Não se esqueçam de:
Ler o material didático;
Participar das atividades do portal.
66
Curso de Gestão da TI
Obrigado!
Nos vemos em nossa plataforma.
Prof. Flavio Barbosa
67
Visite o site e avalie a aula.
Utilize seu código e senha de aluno.
http://www.inepad.org.br/interativacoc/