Aula 3 – Análise de Projetos de Sistemas

Post on 12-Jun-2015

1.148 views 2 download

Transcript of Aula 3 – Análise de Projetos de Sistemas

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/