Engenharia de Software
Slide 06 – Modelos de Processos
(Continuação)
Juliano Amorim de Oliveira
[email protected]
Instituto Metodista Isabela Hendrix
Curso de Análise e Desenvolvimento de Sistemas
Vimos nas aulas anteriores

Engenharia de Software: uma tecnologia
em camadas (ferramentas, métodos,
processos, qualidade)

Modelos de processo de sofware

Modelo cascata
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
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 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
Refinamento do Protótipo
Construir Protótipo
Avaliar Protótipo
Prototipação
Simplificando
construa/revise
protótipo
ouça o
cliente
teste do
protótipo
pelo cliente
O Modelo de Prototipação
Obter Requisitos
Desenvolvedor e cliente:
Elaborar Projeto Rápido
 definem os objetivos gerais do software
Refinamento do Protótipo
 identificam quais requisitos são conhecidos
 identificam as áreas que necessitam de definições
adicionais
Construir Protótipo
Avaliar Protótipo
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Refinamento
do Protótipo
Representação
dos aspectos do software que são
visíveis ao usuário
 abordagens de entrada e
Construir Protótipo
 formatos de saída
Avaliar Protótipo
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Refinamento do Protótipo
Implementação rápida do
projeto
Construir Protótipo
Avaliar Protótipo
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Refinamento do Protótipo
Avaliar Protótipo
Cliente
e desenvolvedor
Construir
Protótipo
avaliam o protótipo
O Modelo de Prototipação
Obter Requisitos
Elaborar Projeto Rápido
Refinamento do Protótipo
Cliente e desenvolvedor
refinam
os
Construir
Protótipo
requisitos
do software a ser desenvolvido
Avaliar
Protótipo
O Modelo de Prototipação
Obter Requisitos
CONSTRUÇÃO DO
PRODUTO
Elaborar Projeto Rápido
Identificados os requisitos, o protótipo deve
Protótipo
ser descartado e a versãoConstruir
de produção
deve
Avaliar
Protótipo
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çã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 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
Atividades Paralelas
Engenharia
de
Sistemas
Versão Inicial
Análise de
Requisitos
Descrição
geral
Projeto
Versões
Descrição
Descrição
Intermediárias
geral
geral
Codificação
Testes
Versão
Final
O Modelo Incremental
Atividades Paralelas
A versão inicial é, freqüentemente,
o
Versão Inicial
núcleo do produto
Engenharia
de
Sistemas
Análise de
Requisitos
Descrição
geral
• o desenvolvimento começa com as partes
do produto que
Projeto são mais bem entendidas
Codificação
Versões
Descrição
Descrição
Intermediárias
geral
geral
• um plano é desenvolvido para o próximo
Testes
incremento, como resultado
do uso e/ou
avaliação por parte do cliente  são
Versão
adicionadas novas características à medida
Final
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
Projeto
Análise
incremento 2
incremento 4
Análise
Análise
Testes
Codificação
Projeto
Projeto
produto liberado
do incremento 1
Testes
Codificação
Projeto
Análise
incremento 3
incremento 1
Codificação
Testes
produto liberado
do incremento 2
produto liberado
do incremento 3
Testes
Codificação
tempo
produto
liberado
do
incremento 4
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 pares
 40 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 Espiral
Modelo 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
O Modelo Espiral (com 6 regiões)
Planejamento
Análise de Riscos
Comunicação
com Cliente
Engenharia
Avaliação do Cliente
Construção e Liberação
O Modelo Espiral (com 6 regiões)
Planejamento
Análise de Riscos
Comunicação
com Cliente
As tarefas das regiões são
adaptadas às
características do projeto
Engenharia
Avaliação do Cliente
Construção e Liberação
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 funcionalidadesalvo 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
Comunicação
com Cliente
Avaliação do Cliente
Engenharia
Construção e Liberação
O ModeloIdentificar
de Montagem de
componentes
Componentes
candidatos
Procurar Planejamento
Construir a 1a
componentes
iteração do
na biblioteca
sistema
Extrair
Comunicação
componentes
com
Cliente
se disponíveis
Análise de Riscos
Colocar os
novos
componentes
na biblioteca
Construir os
componentes
não
disponíveis
Avaliação do Cliente
Engenharia
Construção e Liberação
O Modelo de Montagem de
Componentes

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
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

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
Obtenção dos
Requisitos
Estratégia do
• o cliente
descreve os requisitos os quais
“Projeto”
Implementação
são traduzidos para
um protótipo
usando 4GL
operacional
Testes
•o cliente pode estar inseguro quanto aos
requisitos
•as 4GLs atuais não são sofisticadas
suficientemente para acomodar a verdadeira
"linguagem natural"
Técnicas de 4a Geração
Obtenção dos
Requisitos
Estratégia do
“Projeto”
Implementação
usando 4GL
• Pequenas aplicações: é possível mover-se do
passo
Testes
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)
Técnicas de 4a Geração
Obtenção dos
Requisitos
Estratégia do
“Projeto”
Implementação
usando 4GL
• Os resultados
desejados são
representados de
modo que haja
geração automática
de código
Testes
Técnicas de 4a Geração
Obtenção dos
Requisitos
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

PROPONENTES:
 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

OPONENTES:
 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
Download

Construir Protótipo