definições e ciclo de vida -...

Post on 25-Mar-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Definições e ciclo de vida

“A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software”.

“É a aplicação sistemática de conhecimentos científicos na criação e construção de soluções com um bom custo benefício para resolução de problemas práticos da sociedade”.

Abrange um conjunto de três elementos fundamentais:

Métodos,

Ferramentas e

Procedimentos

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

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

Procedimentos: constituem o elo de ligação entre os métodos e as ferramentas;

sequê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.

O processo de desenvolvimento de software contém 3 fases genéricas, independentes do modelo de engenharia de software escolhido:

1. DEFINIÇÃO,

2. DESENVOLVIMENTO e

3. MANUTENÇÃO.

Software é:

(1) Instruções (programas) de computador que, quando executadas, produzem a função e o desempenho desejados; +

(2) estruturas de dados que possibilitam que os programas manipulem adequadamente a informação; +

(3) documentos que descrevem a operação e o uso dos programas.

Roger Pressman

Um conjunto de instruções que quando executadas produzem a função e o desempenho desejados, estruturas de dados que permitam que as informações relativas aos problema a resolver sejam manipulados adequadamente e a documentação necessária para uma melhor operação e entendimento.

Não consiste apenas em um programa de computador, mas também todos os dados de documentação e configuração selecionados

Conjunto de programas

Arquivos de configuração

Documentação do sistema

Documentação para o usuário

Site contendo informações e atualizações do sistema

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!”

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.

A maioria dos softwares é feita sob medida e não montada a partir de componentes existentes.

!= Hardware.

Situação esta mudando:

Orientação a objetos.

Reusabilidade é o “Santo Graal”(diminui custos e melhora projetos).

1. Revisões

2. Documentação

3. Controle de

Mudanças

CCCooonnnssstttrrruuuçççãããooo

1. Entender

2. Modificar

3. Revalidar

Manutenção “mudanças”

OOOpppeeerrraaaçççãããooo

SSSOOOFFFTTTWWWAAARRREEE

PPPRRROOODDDUUUTTTOOO

AAAtttiiivvviiidddaaadddeeesss dddeee AAApppoooiiiooo

1. Análise de

Sistema

2. Planejamento

do Projeto

3. Análise de

Requisitos

Definição“o que” Desenvolvimento

“como”

1. Projeto de

Software

2. Codificação

3. Teste

Alguns ciclos de vida mais conhecidos são: Ciclo de Vida Clássico (Cascata)

Prototipação

Modelo Espiral

Desenvolvimento Iterativo

Evolutivo

natureza do projeto e da aplicação

métodos e ferramentas a serem usados ou disponíveis

controles e produtos que precisam ser entregues

prazos e recursos disponíveis

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, sequencial ao desenvolvimento de software

Engenharia de

SistemasAnálise de

Requisitos Projeto

Codificação

Testes

Manutenção

Definição: “o que” será desenvolvido.

Análise do sistema : define o papel de cada elemento num sistema baseado em computador, atribuindo, em última análise, o papel que o software desempenhará.

Planejamento do projeto de software : assim que o escopo do software é estabelecido, os riscos são analisados, os recursos são alocados, os custos são estimados e as tarefas e a programação de trabalho, definidas.

18

Definição: “o que” será desenvolvido.

Análise de requisitos : o escopo definido para o software proporciona uma direção, mas uma definição detalhada do domínio da informação e da função do software é necessária antes que o trabalho se inicie.

19

Desenvolvimento: “como” será desenvolvido.

Projeto de software : traduz os requisitos do software num conjunto de representações que descrevem a estrutura de dados, a arquitetura, o procedimento algorítmico e as características de interfaces.

Codificação : as representações do projeto devem ser convertidas numa linguagem artificial que resulte em instruções que possam ser executadas pelo computador. A etapa de codificação realiza essa conversão.

Realização de testes do software : logo que é implementado numa forma executável por máquina, o software deve ser testado para que se possa descobrir defeitos de função, lógica e implementação.

20

Manutenção: “mudanças” que estão associadas à:

CORRECÃO DE ERROS,

ADAPTAÇÕES e AMPLIAÇÕES.

EVOLUTIVAS

Três tipos de mudanças são encontradas durante a fase de manutenção:

21

Correção: mesmo com as melhores atividades de garantia da qualidade, é possível que o cliente descubra defeitos no software. A manutenção corretiva muda o software para corrigir defeitos.

Adaptação: com o passar de tempo, o ambiente original para o qual o software foi desenvolvido provavelmente mudará. A manutenção adaptativa resulta em modificações no software a fim de acomodar mudanças em seu ambiente.

Melhoramento funcional: à medida que o software é usado, o cliente/usuário reconhecerá funções adicionais que oferecerão benefícios, estendendo o software para além de suas exigências funcionais originais.

22

Atividades de proteção : complementam as fases e passos descritos na visão genérica da Engenharia de Software.

Revisões : são feitas para garantir que a qualidade seja mantida à medida que cada etapa é concluída.

Documentação : desenvolvida e controlada para garantir que informações completas sobre o sistema e o software estejam disponíveis para uso posterior.

Controle das mudanças : é instituído de forma que elas possam ser aprovadas e acompanhadas.

23

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

Embora o Ciclo de Vida Clássico tenha fragilidades, ele é significativamente melhor do que uma abordagem casual ao desenvolvimento de software

processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construído.

idealmente, o modelo (protótipo) serve como um mecanismo para identificar os requisitos de software.

apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou requisitos de entrada, processamento e saída com detalhes.

Obtenção dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais

Projeto Rápido: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída)

fim

início

construção

produto

refinamento

protótipo

avaliação

protótipo

construção

protótipo

projeto

rápido

obtenção

dos

requisitos

Construção Protótipo: implementação do projeto rápido

Avaliação do Protótipo: cliente e desenvolvedor avaliam o protótipo

fim

início

construção

produto

refinamento

protótipo

avaliação

protótipo

construção

protótipo

projeto

rápido

obtenção

dos

requisitos

Refinamento dos

Requisitos: cliente e

desenvolvedor refinam os

requisitos do software a ser

desenvolvido.

Ocorre neste ponto umprocesso de iteração que

pode conduzir a 1a. atividade até que as

necessidades do cliente sejam satisfeitas e o

desenvolvedor compreenda o que precisa ser feito.

fim

início

construção

produto

refinamento

protótipo

avaliação

protótipo

construção

protótipo

projeto

rápido

obtenção

dos

requisitos

fim

início

construção

produto

refinamento

protótipo

avaliação

protótipo

construção

protótipo

projeto

rápido

obtenção

dos

requisitos

Construção Produto: identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade.

cliente não sabe que o software que ele vê não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a idéia que a versão final do software vai ser construída e "força" a utilização do protótipo como produto final.

desenvolvedor freqüentemente faz uma implementação comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo. Depois de um tempo ele familiariza com essas escolhas, e esquece que elas não são apropriadas para o produto final.

Exercício de prototipação

Grupo de até 4 alunos

Construir um protótipo para um dos temas a seguir:

Software de locação

Locação de filmes por um determinado cliente

Devolução dos filmes locados

Efetuar pagamento dos filmes locados utilizando cartão crédito

Emitir relação de filmes locados no mês, agrupadas por gênero do filmes. Indicador subtotais de locações (quantidade e valor financeiro arrecadado) por filme e por gênero.

Software de controle acadêmico

Emissão das disciplinas cursadas pelo aluno com suas respectivas notas, carga horária, frequências e situação (aprovado ou reprovado)

Matrícula on-line do aluno

Ainda que possam ocorrer problemas, a prototipação é um ciclo de vida eficiente

A chave é definir-se as regras do jogo logo no começo

O cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos

Por quê ?

O primeiro design muito provavelmente será deficiente com respeito aos requisitos principais do projeto

nem todos os requisitos são claramente identificáveis a princípio, e aqueles que são podem as vezes ser ambíguos ou simplesmente inconsistentes

requisitos podem mudar ou ficar obsoletos

clientes podem mudar de opinião

mercado competitivo pode exigir mudanças

A descoberta tardia de defeitos no design resultarão em aumentos de custos ou cancelamento do projeto

O tempo e o dinheiro gastos na correção de um design defeituoso não são recuperáveis !

O modelo espiral acopla a natureza iterativa da prototipação com os aspectos controlados e sistemáticosdo modelo cascata

O modelo espiral é dividido em uma série de atividades de trabalho ou regiões de tarefa

Existem tipicamente de 3 a 6 regiões de tarefa

36

Adiciona um novo elemento: a Análise de Risco

Usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos

Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso

O modelo é relativamente novo e não tem sido amplamente usado

O paradigma do modelo espiral para a engenharia de software é a abordagem mais realística para o desenvolvimento de sistemas e de software de grande escala

37

38

Planejamento

Análise de Riscos

Engenharia

Construção e Liberação

Avaliação do Cliente

Comunicação com

Cliente

Especificação

de Requisitos

Análise

Design

Implementação

Teste

Tempo

Ris

co

Aplicação da Cascata Iterativamente ao Sistema

Primeiras iterações carregam os maiores riscos

Cada iteração gera uma versão executável com algum incrementoao sistema

Cada iteração inclui integração e testes

R

A

D

I

T tempo

R

A

D

I

T

R

A

D

I

T

R

A

D

I

T

I1 I2 I3 I4

Tempo

Ris

co

CascataIterativo

Iteração Iteração Iteração Iteração Iteração Iteração Iteração Iteração

SOMMERVILLE, I. Engenharia de Software. 8ª ed. São Paulo: Pearson Addison-Wesley, 2007.

PRESSMAN, R. S. Engenharia de Software: Uma abordagem Profissional. 7ª ed. Porto Alegre: AMGH, 2011.

top related