Modelos de Processos
Conteúdo
• Introdução • Modelo Cascata • Desenvolvimento Incremental • Desenvolvimento Evolucionário • Modelo EspiralIntrodução
• O que é ciclo de vida?• Conjuntos de fases que devem ser executadas para o desenvolvimento de um produto de software. O ciclo de vida determina a ordem e interação entre as fases e atividades.
• Modelos de ciclo de vida
• são representações abstratas de processos
• descrevem processos a partir de uma perspectiva específica • podem ser vistos como frameworks de processos
• devem ser aplicados e personalizados segundo necessidades específicas
• Alguns exemplos
• Cascata
• Evolucionário • Espiral
Introdução
• Um dos primeiros modelos (Royce, 1970).
• O desenvolvimento de um estágio deve terminar antes do próximo começar.
• Simples, mas não reflete, efetivamente, o modo como o código é desenvolvido.
Fases
Sistemático e seqüencial Engenharia de Sistemas Análise Projeto Codificação Teste ManutençãoBase para os outros
Sistemático e sequencial
Fase: Engenharia de Sistemas
• Software faz parte de um sistema maior;• Estabelecer os requisitos básicos para todos os elementos que envolvem o software, como hardware, pessoas e bancos de dados.
• Envolve a coleta dos requisitos em nível do sistema, com uma pequena quantidade de projeto e análise de alto nível.
• Exige uma intensa comunicação entre o cliente e o analista • Faz parte da Analise de Sistema
Fase: Análise dos Requisitos
• Intensifica-se o processo de coleta dos requisitos;
• Identificar as funções necessárias, o desempenho e interfaces exigidos. (funcionalidades e restrições)
• Os requisitos para o sistema e para o software são documentados e revistos com o cliente.
• Produz a especificação dos requisitos. • Faz parte da Analise de Sistema.
Fase: Projeto
• Traduz os requisitos em um conjunto de representações que podem ser avaliadas quando à qualidade.
•Estrutura de dados;
•Arquitetura do software; •Detalhes Procedimentais; •Caracterização da interface.
• É avaliado antes de começar a ser implementado;
Fase: Codificação
• Projeto traduzido para a linguagem do computador(C, Delphi, Java). • Se o projeto for executado detalhadamente, a codificação pode ser
Fase: Testes
• Concentra-se nos aspectos funcionais externos e lógicos internos do software.
• Garante que “todas as instruções” tenham sido testadas. • A entrada definida produz os resultados exigidos?
Fase: Manutenção
• Software embutido nem sempre tem esta parte;
• provavelmente o software deverá sofrer mudanças depois que for entregue ao cliente
Tipos de Manutenção
• Manutenção Corretiva: diagnóstico e correção de erros
• Manutenção Adaptativa: adaptação do software para acomodar mudanças em seu ambiente externo.
• Manutenção Perfectiva: exigência do cliente para acréscimos funcionais e de desempenho
• Manutenção Preventiva: melhorar a confiabilidade e
manutenibilidade futura (técnicas de engenharia reversa e reengenharia)
Vantagens
• Bastante simples porque as atividades são claras e bem definidas; • Permite que os desenvolvedores descrevam o que deve ser
realizado;
• Fácil gerenciamento;
• Abordagem clássica e deve continuar sendo usada por bastante tempo;
Desvantagens
• Dificuldade de acomodar as mudanças após o processo ter sido iniciado
• Particionamento inflexível do projeto em fases distintas
• Dificuldade de responder a requisitos do usuário que mudam
• Uma versão do software só estará disponível em um ponto tardio do cronograma.
Definição
• Permite o refinamento iterativo dos requisitos.
• A cada iteração é produzido um protótipo do software final. • Este protótipo pode ser um:
• Protótipo em Papel: primeiras versões que permitem ao usuário
ter uma visão abstrata do sistema;
• Protótipo incomplete: implementa algum subconjunto de funções
exigidas;
• Protótipo final: um software que executa parte ou toda a função
desejada, mas que tem outras características que serão melhoradas e ainda não pode ser disponibilizado.
Apropriado 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;
• desenvolvedor não tem certeza da eficiência de um algoritmo, forma da interação homem/máquina.
Fases
Inicio Fim Coleta e Refinamento dos requisitos Projeto Rápido Construção do Protótipo Avaliação do Protótipo pelo Cliente Refinamento do Protótipo Engenharia do Produto DecideFase: Coleta e Refinamento dos
Requisitos
• Nesta etapa o desenvolvedor e o cliente devem definir os objetivos
gerais do software(Protótipo),
• Identificar quais requisitos são conhecidos e as áreas que
necessitam de definição adicional.
Fase: Projeto Rápido
• Representação dos aspectos do software que são visíveis ao usuário
Fase: Construção do Protótipo
Fase: Avaliação do Protótipo
•
Cliente e desenvolvedor avaliam o protótipo.
•
No caso de sugestão ou mudanças serão trabalha-das na
Fase: Refinamento do Protótipo
• São trabalhados os problemas encontrados na fase anterior. Ou
seja, são refinados os requisitos.
• Neste ponto pode ocorrer, no caso de necessidade de alterações,
um retorno na fase de projeto Rápido para desenvolver um novo protótipo que incorpora as mudanças.
Fase: Construção do Produto
• Identificado todos os requisitos necessários, o protótipo pode ser
descartado e a versão final do produto deve ser construída considerando os critérios de qualidade.
Vantagens
• Facilita a definição de requisitos.
• Sistema atual melhora a percepção do usuário em relação software. • Equívocos entre os usuários de software e desenvolvedores são
expostos.
• Reduz os riscos e incertezas do desenvolvimento.
Desvantagens
• O cliente muitas vezes não aceita mais uma iteração, aquela versão mesmo incompleta já serve.
• Não entendimento pelo cliente de que o protótipo não é um produto acabado.
• desenvolvedor freqüentemente faz uma implementação
comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo.
Solução:
• Definir as regras do jogo logo no começo, o cliente deve concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos
Definição
• O Modelo em espiral é um modelo incremental.
• Este tipo de modelo combina elementos do modelo cascata (aplicado repetidamente) com a filosofia iterativa da prototipação.
• Acrescenta mais uma atividade: Análise de Risco.
• O objetivo é trabalhar junto do usuário para descobrir seus requisitos, de maneira incremental, até que o produto final seja obtido.
• O desenvolvimento começa com as partes do produto que são mais bem entendidas. • A evolução acontece quando novas características são adicionadas à medida que são
sugeridas pelo usuário.
Definção (cont.)
• Fornece o potencial para desenvolvimento rápido de versões incrementais do software.
• Nas primeiras iterações são desenvolvido versões que podem ser protótipos.
• Nas iterações mais adiantadas são produzido versões incrementais mais completas e melhoradas.
Fase: Planejamento
• determinação dos objetivos, alternativas e restrições;
• Comunicação com os clientes;
Fase: Análise de Risco
• análise das alternativas e identificação • resolução dos riscos
Fase: Construção
• desenvolvimento do produto no nível seguinte;
• Constrói protótipos ou versões mais avançadas do produto.
Fase: Avaliação do Cliente
• Obter um feedBack do cliente baseado na avaliação da versão do
software.
Vantagens
• É uma abordagem realística para o desenvolvimento de software em
grande escala;
• Usa uma abordagem que capacita o desenvolvedor e o cliente a
Desvantagens
• Pode ser difícil convencer os clientes que uma abordagem "evolutiva"
é controlável;
• Exige considerável experiência na determinação de riscos e depende
Modelo: RAD
Definição
• Desenvolvimento Rápido (ou ágil) de Aplicações • Desenvolvimento Iterativo e Incremental
• Prazos curtos para desenvolvimento de software (entre 30 e 90 dias) • Divisão de trabalhos entre equipes distintas
Desenvolvimento Interativo
• Desenvolvimento de tarefas com prazos pré-definidos • Cada iteração é um ciclo do desenvolvimento
• Devem-se realizar as tarefas dentro do ciclo, sem atrasos
Desenvolvimento Iterativo
• Desenvolvimento de módulos em paralelo
• Módulos são integrados ao fim do desenvolvimento • Oposto ao Método em Cascata (sequencial)
Fase 1 – Modelagem de Negócio
• Modelagem do fluxo de informações entre as funções/módulos, de forma a responder às seguintes perguntas:
• Quais informações guiam o processo de negócio? • Quais informações são geradas?
• Quem gera essas informações? • Para onde vão as informações?
Fase 2 - Modelagem de Dados
• Definição das entidades (classes), com base nos dados necessários para a aplicação
• Atributos das entidades
Fase 3 - Modelagem do Processo
• Com base na modelagem de dados, criam-se o fluxos de dados • Diagramas de classes
• Casos de uso
Fase 4 - Geração da Aplicação
• Uso de técnicas de Quarta Geração para desenvolvimento do software
• Reutilização de código
• Uso de ferramentas para automatização de geração de códigos • Construção de códigos reutilizáveis
Fase 5 – Testes e Modificações
• Testar os módulos criados durante o desenvolvimento da aplicação • Por se basear em reutilização, grande parte do software já está
testado e funcional
• Redução do tempo total de testes
Quando Usar
• Possibilidade de modularização do projeto
• Tarefas podem ser divididas entre equipes distintas
Quando Não Usar
• Possibilidade de modularização do projeto
• Tarefas podem ser divididas entre equipes distintas
Vantagens
• Desenvolvimento rápido, com prazos curtos (entre 30 e 90 dias) • Divisão de tarefas entre equipes
• Mais rápida visão geral do sistema (protótipos) • Maior envolvimento do usuário/cliente
• Menor custo (menos tempo; tempo = dinheiro)
Desvantagens
• Para grandes projetos, exige-se equipe grande, para cumprir o prazo • Grande envolvimento do usuário (disponibilidade pode ser um
problema)
Referência
• PRESSMAN, Roger S. Engenharia de Software. Trad. José Carlos Barbosa dos Santos. São Paulo: Makron Books, 1995.