Engenharia de Software
Slide 06 – Modelos de Processos (Continuação)
Instituto Metodista Isabela HendrixCurso de Análise e Desenvolvimento de Sistemas
Juliano Amorim de [email protected]
Vimos nas aulas anteriores Engenharia de Software: uma tecnologia
em camadas (ferramentas, métodos, processos, qualidade)
Modelos de processo de sofware Modelo cascata
Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software
Modelo Incremental Modelo EspiralModelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente
Modelos de Métodos Formais Técnicas de Quarta Geração
Modelos de Processo de Software
Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software
Modelo Incremental Modelo EspiralModelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente
Modelos de Métodos Formais Técnicas de Quarta Geração
Modelos de Processo de Software
O Modelo de Prototipação
Objetivo: entender os requisitos do usuário
possibilita que o desenvolvedor crie um modelo (protótipo) do software que deve ser construído
apropriado quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou detalhadamente esses requisitos
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Construir ProtótipoAvaliar Protótipo
Refinamento do Protótipo
Prototipação
construa/reviseprotótipo
construa/reviseprotótipo
teste doprotótipo
pelo cliente
teste doprotótipo
pelo cliente
ouça o cliente
ouça o cliente
Simplificando
O Modelo de Prototipação
Elaborar Projeto Rápido
Construir ProtótipoAvaliar Protótipo
Refinamento do Protótipo
Obter Requisitos Obter Requisitos
Desenvolvedor e cliente: definem os objetivos gerais do software identificam quais requisitos são conhecidos identificam as áreas que necessitam de definições adicionais
O Modelo de Prototipação
Obter Requisitos
Construir ProtótipoAvaliar Protótipo
Refinamento do Protótipo
Elaborar Projeto RápidoElaborar 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
Construir Protótipo
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Avaliar Protótipo
Refinamento do Protótipo
Construir Protótipo
Implementação rápida do projeto
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Construir Protótipo
Refinamento do Protótipo
Avaliar ProtótipoAvaliar ProtótipoCliente e desenvolvedor avaliam o protótipo
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Construir ProtótipoAvaliar Protótipo
Refinamento do ProtótipoRefinamento do Protótipo
Cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Construir ProtótipoAvaliar Protótipo
CONSTRUÇÃO DO CONSTRUÇÃO DO PRODUTOPRODUTO
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
Prototipação
Dificuldades:
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 de
“jogar fora” o que foi feito
desenvolvedor freqüentemente desenvolve o protótipo de forma comprometida (utilizando o que está disponível). Depois de um tempo ele se familiariza com essas escolhas, e pode ser que esqueça que elas não são apropriadas para o produto final;
Modelos de Processo de Software
Modelo Seqüencial Linear (Modelo Cascata)Paradigma de PrototipaçãoModelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software
Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente
Modelos de Métodos FormaisTécnicas de Quarta Geração
O Modelo Incremental
Combina elementos do modelo cascata (aplicado repetidamente) com a filosofia iterativa
Usado quando é difícil estabelecer a priori uma especificação detalhada dos requisitos
Objetivo: trabalhar junto do usuário a fim de descobrir seus requisitos, de maneira incremental, até que o produto final seja obtido
O Modelo Incremental
Versão Inicial
Descrição geral Descrição
geral
Descrição geral
Versões Intermediárias
Versão Final
Atividades Paralelas
Engenharia de Sistemas
Engenharia de Sistemas
Análise de Requisitos
Análise de Requisitos
Projeto Projeto
Codificação Codificação
Testes Testes
O Modelo Incremental
Versão Inicial
Descrição geral Descrição
geral
Descrição geral
Versões Intermediárias
Versão Final
Atividades Paralelas
Engenharia de Sistemas
Engenharia de Sistemas
Análise de Requisitos
Análise de Requisitos
Projeto Projeto
Codificação Codificação
Testes Testes
Descrição geral
A versão inicial é, freqüentemente, o
núcleo do produto • o desenvolvimento começa com as partes do produto que são mais bem entendidas
• um plano é desenvolvido para o próximo incremento, como resultado do uso e/ou avaliação por parte do cliente são adicionadas novas características à medida que são sugeridas pelo usuário
O Modelo Incremental
objetiva a elaboração de um produto operacional a cada incremento
os testes podem ser mais efetivos é mais fácil testar cada versão do sistema
do que o sistema todo no final
O Modelo Incremental
Engenharia de Sistemas / Informação
AnáliseAnálise Projeto Projeto Codificação Codificação Testes Testes
AnáliseAnálise Projeto Projeto Codificação Codificação Testes Testes
AnáliseAnálise Projeto Projeto Codificação Codificação Testes Testes
AnáliseAnálise Projeto Projeto Codificação Codificação Testes Testes
incremento 1
incremento 2
incremento 3
incremento 4
produto liberadodo incremento 1
produto liberadodo incremento 2
produto liberadodo incremento 3
produto liberado
do incremento 4
tempo
O Modelo Incremental Diferentemente do paradigma da
prototipação, tem o objetivo de apresentar um produto operacional a cada incremento
É útil quando não há mão de obra disponível para uma implementação completa.
Extreme Programming (XP) Programação Extrema (Programação Ágil)
evolução, recente,da abordagem incremental. Desenvolvida por Beck em 1999
Voltada para equipes de até 20 pessoas engajadas no desenvolvimento de software cujos requisitos são vagos ou se encontram em constante mudança
Principal atividade codificação Principal contribuição aplicação extrema das
práticas num modelo coeso e sinérgico
Extreme Programming (XP)
Algumas características:
o desenvolvimento e a entrega de incrementos de funcionalidade muito pequenos
diálogo constante e evolutivo entre programadores e clientes
a constante melhoria de código
Extreme Programming (XP) Algumas características:
a programação em pares40 horas de trabalho (muita hora-extra é sinal
de problemas com o projeto)requisitos são criados pelo cliente estórias Refactoring abordagem disciplinada para
tornar o código de um software mais claro e de fácil manutenção, minimizando a probabilidade de inclusão de erros
Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software
Modelo Incremental Modelo EspiralModelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente
Modelos de Métodos Formais Técnicas de Quarta Geração
O Modelo Espiral
Engloba as melhores características do modelo Cascata e da Prototipação, adicionando um novo elemento: a Análise de Risco
Segue a abordagem de passos sistemáticos do modelo Cascata incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real
O Modelo Espiral Usa a Prototipação, em qualquer etapa da
evolução do produto, como mecanismo de redução de riscos
O modelo espiral é dividido em uma série de atividades de trabalho ou regiões de tarefa
Planejamento
Análise de Riscos
Engenharia
Construção e Liberação
Avaliação do Cliente
Comunicação com Cliente
O Modelo Espiral (com 6 regiões)
Planejamento
Análise de Riscos
Engenharia
Construção e Liberação
Avaliação do Cliente
Comunicação com Cliente
O Modelo Espiral (com 6 regiões)
As tarefas das regiões são adaptadas às
características do projeto
Comentários sobre o Ciclo de Vida em Espiral
Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso
Usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva
Modelos de Processo de Software
Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software
Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente
Modelos de Métodos Formais Técnicas de Quarta Geração
O que são componentes? Componentes fornecem funcionalidades-
alvo com interfaces bem definidas que permitem que sejam integrados ao software
Componentes possuem documentação
O Modelo de Montagem de Componentes
O modelo de montagem de componentes incorpora características de tecnologias Orientadas a Objetos no modelo espiral
Demanda uma abordagem iterativa para a criação do software
O modelo compõe aplicações a partir de componentes de software “empacotados”
O Modelo de Montagem de Componentes
Planejamento
Análise de Riscos
Avaliação do Cliente
Comunicação com Cliente
Engenharia Construção e Liberação
O Modelo de Montagem de Componentes
Análise de Riscos
Planejamento
Avaliação do Cliente
Comunicação com Cliente
Identificar componentes
candidatos
Procurar componentes na biblioteca
Extrair componentes se disponíveis
Construir os componentes
não disponíveis
Colocar os novos
componentes na biblioteca
Construir a 1a iteração do
sistema
Engenharia Construção e Liberação
O modelo de montagem de componentes conduz ao reuso do software
A Reusabilidade fornece uma série de benefícios: redução de 70% no tempo de desenvolvimento redução de 84% no custo do projeto
Esses resultados dependem da robustez da biblioteca de componentes
O Modelo de Montagem de Componentes
Modelos de Processo de Software
Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software
Modelo Incremental Modelo EspiralModelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente
Modelos de Métodos Formais Técnicas de Quarta Geração
Técnicas de 4a Geração
Engloba um conjunto de ferramentas de software que possibilitam que:
o sistema seja especificado em uma linguagem de alto nível e
o código fonte seja gerado automaticamente a partir dessas especificações
Ferramentas do Ambiente das Técnicas de 4a Geração
O ambiente de desenvolvimento de software que sustenta o ciclo de vida de 4a geração inclui as ferramentas:
linguagens não procedimentais para consulta de banco de dados
geração de relatórios, planilhas e manipulação de dados
interação e definição de telas geração de código capacidade gráfica de alto nível geração automática de HTML e linguagens similares
para criação de páginas Web
Técnicas de 4a Geração
Obtenção dos Requisitos
Estratégia do “Projeto”
Implementação usando 4GL
Testes
Técnicas de 4a Geração
Estratégia do “Projeto”
Implementação usando 4GL
Testes
Obtenção dos Requisitos
• o cliente descreve os requisitos os quais são traduzidos para um protótipo operacional
•o cliente pode estar inseguro quanto aos requisitos
•as 4GLs atuais não são sofisticadas suficientemente para acomodar a verdadeira "linguagem natural"
Obtenção dos Requisitos
Técnicas de 4a Geração
Implementação usando 4GL
Testes
Estratégia do “Projeto”
• Pequenas aplicações: é possível mover-se do passo de Obtenção dos Requisitos para o de Implementação usando uma linguagem de quarta geração
• Grandes projetos: é necessário desenvolver uma estratégia de projeto. De outro modo ocorrerão os mesmos problemas encontrados quando se usa abordagem ad-hoc (baixa qualidade)
Obtenção dos Requisitos
Técnicas de 4a Geração
Estratégia do “Projeto”
Testes
Implementação usando 4GL
• Os resultados desejados são representados de modo que haja geração automática de código
Obtenção dos Requisitos
Técnicas de 4a Geração
Estratégia do “Projeto”
Implementação usando 4GL
Testes
O desenvolvedor deve efetuar testes e desenvolver uma documentação significativa
Comentários sobre as Técnicas de 4a Geração
PROPONENTESPROPONENTES:: redução dramática no tempo de
desenvolvimento do software (aumento de produtividade)
Quando combinado com a abordagem de desenvolvimento baseada em componentes, o paradigma 4GT pode se transformar na abordagem predominante para o desenvolvimento de software
Comentários sobre as Técnicas de 4a Geração
OPONENTESOPONENTES: as 4GL atuais não são mais fáceis de usar
do que as linguagens de programação o código fonte produzido é ineficiente a manutenibilidade de sistemas usando
técnicas 4G ainda é questionável
Exercício!
Faça uma análise dos modelos de processo de software que já foram vistos em aula: Modelo Cascata Paradigma de prototipação Modelo incremental Programação extrema Modelo espiral Modelo de montagem de componentes Técnicas de quarta geração
Bibliografia
PRESSMAN, ROGER S. Engenharia de Software. 6ª edição. Rio de Janeiro: McGraw-Hill, 2006.
SOMERVILLE, IAN. Engenharia de Software. 8ª edição. São Paulo: Addison Wesley, 2007.
Slides da professora Debora Paiva da UFMS