Vous êtes sur la page 1sur 67

Curso de Gestão da TI

Análise de Projetos de Sistemas

Prof. Flávio Barbosa

19/08/2009
1
Módulo 4.1

Aula 3

Ciclo de Vida do Software

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

É 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.

Fritz Bauer, 1969

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)

Para criar em tempo hábil um software de alta


qualidade, sem estourar o orçamento.
Processo Bom... Processo Ruim...

...Resultado Bom! ...Resultado Ruim! 14


Processo de Software IMATURO
 processo improvisado por profissionais e
gerências (Ad hoc);
 Não é rigorosamente seguido e o cumprimento
não é controlado;
 Altamente dependente dos profissionais
atuais;
 Baixa visibilidade do progresso e da
qualidade;
 A funcionalidade e a qualidade do produto
podem ficar comprometidas para que prazos
sejam cumpridos. 15
Processo de Software IMATURO
6. Custos de manutenção excessivos.
7. Qualidade difícil de se prever (imprevisível).

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?

Lada é uma marca da Avtovaz, uma fábrica


de automóveis russa de Togliatti.
25
Conceituando: Ciclo

• Período durante o qual se completa uma

sequência de eventos ou fenômenos.

• Fase; período.

(Fonte: DIC Michaelis Escolar Versão 2.0)

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;

 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.

29
Ciclo de Vida de Software:
Análise de Requisitos
 O escopo do software é refinado;

 Descreve “o que” o software deverá fazer;

 Devem ser analisados o


domínio do problema e
o domínio da solução.

30
Ciclo de Vida de Software:
Projeto
 Utiliza a fase anterior como insumo;

 Envolve duas grandes fases:

− 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;

 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
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
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
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

CASCATA (LINEAR): INDICAÇÃO

Estudo Projetos (SI) onde os


Análise
requisitos são bem
Projeto

Codificação Definidos.
Testes

Entrega e
Implantação

41
Modelos de Ciclo de Vida
de Software

42
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.

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:

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).

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:

Projetos (SI) onde exista uma boa equipe de


gerência e onde o projeto permita
modularização.

47
Modelos de Ciclo de Vida
de Software

48
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.

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

uma versão Especificação Projeto


de Requisitos
progressivamente
Implementação
mais completa do Entrega e
Implantação
SI.
Testes
51
Ciclo de Vida de Software:
Modelos Iterativos
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.

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.

 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. 57
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.

58
Ciclo de Vida de Software:
Tipos de Protótipos

VANTAGENS DO PROTÓTIPO INCREMENTAL:

 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

DESVANTAGENS DO PROTÓTIPO INCREMENTAL:

 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.

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

DESVANTAGENS DO PROTÓTIPO EVOLUTIVO:


 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.
63
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:

Tema 4 – ENGENHARIA DE REQUISITOS


 Definição de requisitos;
 Tipos de requisitos;
 Documento de requisitos.

Não se esqueçam de:


 Ler o material didático;
 Participar das atividades do portal.
65
Curso de Gestão da TI

Obrigado!

Nos vemos em nossa plataforma.

Prof. Flavio Barbosa


66
Visite o site e avalie a aula.

http://www.inepad.org.br/interativacoc/

Utilize seu código e senha de aluno.

67