Modelos de Desenvolvimento de Software

Propaganda
Profª. Andrea Padovan
Presidente Epitácio
2013
Ademir Kaique
Claudio Xavier
Pedro Augusto
Ricardo L. Silva

Modelos Cascata

Modelo Espiral

Modelo Incremental

Modelo ........
MODELO CASCATA (Clássico)




O Modelo Cascata é um modelo de desenvolvimento de
software sequencial no qual o desenvolvimento é visto
como um fluir constante para frente (como uma
cascata) através de suas fases de análise de
requisitos, projeto, implementação, testes (validação), i
ntegração e manutenção de software;
Também é conhecido por abordagem “top-down”, foi
proposto por Royce em 1970;
Até meados da década de 1980 foi o único modelo com
aceitação
quase
que
geral
por
parte
dos
desenvolvedores;
Sua finalidade era a de estabelecer ordem no
desenvolvimento de grandes produtos de software;




O modelo cascata é um dos mais importantes modelos, e é
referência para muitos outros modelos de desenvolvimento,
servindo de base para nortear muitos projetos modernos. A
versão original deste modelo foi melhorada e retocada ao
longo do tempo e continua sendo muito utilizado hoje em
dia;
Nesse modelo as atividades do processo de desenvolvimento
são estruturados em um cascata onde a saída de uma etapa é
a entrada para a próxima etapa;
Existem diversas variantes desse modelo proposta por
pesquisadores e empresas desenvolvedoras e que podem ser
adaptadas a diversos e diferentes tipos de software,
Uma das principais características do Modelo Cascata é o seu
fluxo linear e sequencial de cada uma das fases que
compoem o processo de desenvolvimento, o que o torna, na
maioria das vezes um processo “rígido” de desenvolvimento;
Ou seja:
“ A ideia principal que o dirige é que as diferentes
etapas de desenvolvimento seguem uma
sequência: a saída da primeira etapa “fluí” para a
segunda etapa e a saída da segunda etapa “fluí”
para a terceira e assim por diante. As atividades a
executar são agrupadas em tarefas, executadas
sequencialmente, de forma que uma tarefa só
poderá ter início quando a anterior tiver
terminado.”
Principais atividades (fases) do Modelo Cascata
1  Definição de Requisitos;
2  Projeto de Software;
3  Implementação e Teste de Unidade;
4  Integração e Teste do Sistema;
5  Operação e Manutenção;
1 Definição de Requisitos

Nesta etapa, estabelecem-se os requisitos do
produto que se deseja desenvolver. Sendo isso
estabelecido, os requisitos devem ser definidos
de uma maneira apropriada para que sejam úteis
na etapa seguinte. Esta etapa inclui também a
documentação e o estudo da facilidade e da
viabilidade do projeto com o fim de determinar o
processo de início de desenvolvimento do projeto
do sistema, pode ser vista como uma concepção
de um produto de software e também como o
início do seu ciclo de vida.
2 Projeto de Software

O projeto do sistema é um processo de vários
passos que se centraliza em quatro atributos
diferentes do sistema: estrutura de dados,
arquitetura do software, detalhes procedais e
caracterização das interfaces. O processo de
projeto representa os requisitos de uma forma
que permita a codificação do produto (é uma
prévia etapa decodificação). Da mesma maneira
que a análise dos requisitos, o projeto é
documentado e transforma-se em uma parte do
software.
3 Implementação e Teste de Unidade

Esta é a etapa em que são criados os
programas. Se o projeto possui um nível de
detalhe elevado, a etapa de codificação pode
implementar-se
automaticamente.
A
princípio, sugere-se incluir um teste unitário
dos módulos nesta etapa; nesse caso, as
unidades de código produzidas são testadas
individualmente antes de passar a etapa de
integração e teste global.
4 Integração e Teste do Sistema

Concluída a codificação, começa a fase de teste
do sistema. O processo de teste centraliza-se em
dois pontos principais: as lógicas internas do
software e as funcionalidades externas. Esta fase
decide se foram solucionados erros de
“comportamento” do software e assegura que as
entradas definidas produzam resultados reais
que coincidam com os requisitos especificados.
5 Operação e Manutenção

Essa etapa consiste na correção de erros que não
foram previamente detectados, em melhorias
funcionais e de preferência e outros tipos de
suporte. A etapa de manutenção à parte do ciclo
de vida do produto de software e não pertence
estritamente ao seu desenvolvimento. Melhorias
e correções podem ser consideradas como parte
do desenvolvimento.
Principais Vantagens





Torna o processo de desenvolvimento estruturado;
Tem uma ordem sequencial de fases;
Cada fase cai em cascata na próxima e cada fase deve
estar terminada antes do início da seguinte;
Todas as atividades identificadas nas fases do
modelo são fundamentais e estão na ordem certa;
Esta abordagem é atualmente a norma e
provavelmente permanecerá por um tempo, mas
temos o desenvolvimento agil chegando com muita
força na maioria das empresas de grande porte;
Principais Desvantagens







Não fornece feedback entre as fases e não
permite a atualização ou redefinição das fases
anteriores;
Não suporta modificações nos requisitos;
Não prevê a manutenção;
Não permite a reutilização;
É excessivamente sincronizado;
Se ocorrer um atraso todo o processo é afetado;
Demora muito para ser entregue;
MODELO ESPIRAL

O modelo em espiral foi proposto por Boehm
em 1988 como forma de integrar os diversos
modelos existentes à época, eliminando suas
dificuldades e explorando seus pontos fortes.
Este modelo foi desenvolvido para abranger
as melhores características tanto do ciclo de
vida clássico como da prototipação,
acrescentando, ao mesmo tempo, um novo
elemento - a análise de riscos - que falta a
esses paradigmas.


O modelo espiral é, atualmente a abordagem
mais realística para desenvolvimento de
software em grande escala, e usa uma
abordagem que capacita a empresa que
presta o serviço, e o cliente a entender e
reagir aos riscos em cada etapa evolutiva;
O modelo original em espiral organiza o
desenvolvimento como um processo iterativo
em que vários conjuntos de quatro fases se
sucedem até se obter o sistema final;

Entretanto a integração não se dá através da
simples incorporação de características dos
modelos anteriores. O modelo em espiral
assume que o processo de desenvolvimento
ocorre em ciclos, cada um contendo fases de
avaliação e planejamento, onde a opção de
abordagem para a próxima fase (ou ciclo) é
determinada. Estas opções podem acomodar
características de outros modelos;


Um ciclo se inicia com a determinação de
objetivos, alternativas e restrições (primeira
tarefa)onde ocorre o comprometimento dos
envolvidos e o estabelecimento de uma
estratégia para alcançar os objetivos;
Na segunda tarefa, avaliação de alternativas,
identificação e solução de riscos, executa-se
uma análise de risco. Prototipação é uma boa
ferramenta para tratar riscos. Se o risco for
considerado inaceitável, pode parar o projeto;

Na terceira tarefa ocorre o desenvolvimento
do produto. Neste quadrante pode-se
considerar o modelo cascata. Na quarta tarefa
o produto é avaliado e se prepara para iniciar
um novo ciclo.
Variações do modelo espiral consideram entre
três e seis tarefas ou setores da espiral, que
podem ser:
- comunicação com o cliente;
- planeamento;
- análise de risco;
- engenharia;
- construção e liberação;
- avaliação do cliente.
Vantagens
 Modelo em espiral permite que ao longo de
cada iteração se obtenham versões do
sistema cada vez mais completas, recorrendo
à prototipagem para reduzir os riscos.
 Este tipo de modelo permite a abordagem do
refinamento seguido pelo modelo em
cascata,
mas
que
incorpora
um
enquadramento iterativo que reflete, de uma
forma bastante realística, o processo de
desenvolvimento.
Desvantagens



Pode ser difícil convencer grandes clientes (
articularmente em situações de contrato) de que a
abordagem evolutiva é controlável;
A abordagem deste tipo de modelo exige
considerável experiência na avaliação dos riscos e
baseia-se nessa experiência para o sucesso. Se um
grande risco não for descoberto, poderão ocorrer
problemas;
Este tipo de modelo é relativamente novo e não tem
sido amplamente usado;
Desvantagens


É importante ter em conta que podem existir diferenças
entre o protótipo e o sistema final. O protótipo pode não
cumprir os requisitos de desempenho, pode ser
incompleto, e pode refletir somente alguns aspectos do
sistema a ser desenvolvido;
O modelo em espiral pode levar ao desenvolvimento em
paralelo de múltiplas partes do projeto, cada uma sendo
abordada de modo diferenciado, por isso é necessário o
uso de técnicas específicas para estimar e sincronizar
cronogramas, bem como para determinar os indicadores
de custo e progresso mais adequados;
MODELO INCREMENTAL


Barry Boehm sugeriu, tendo em vista as
limitações da abordagem tradicional, que o
desenvolvimento de sistemas de informação
poderia ser administrado numa série de
incrementos. Assim, poderia haver uma série de
ciclos de vida tradicionais para cada incremento;
O Modelo Incremental foi desenvolvido através
da combinação entre os modelos linear e
prototipação. O desenvolvimento é dividido em
etapas,
denominadas
“incrementos”,
que
produzirão incrementalmente o sistema, até a
sua versão final;

Quando um Modelo Incremental é usado, o primeiro
incremento frequentemente é chamado de núcleo do
produto. Isto é, os requisitos básicos são satisfeitos, mas
muitas características suplementares deixam de ser
elaboradas.
O núcleo do produto é usado pelo cliente e um plano é
desenvolvido para o próximo incremento como resultado
do
uso
e/ou
avaliação.
O Modelo de Processo Incremental, como a prototipagem e
outras abordagens evolucionárias, é iterativo por natureza.
O Modelo Incremental tem o objetivo de apresentar um
produto
operacional
a
cada
incremento.
O desenvolvimento incremental é particularmente útil
quando não há mão-de-obra e/ou recursos técnicos
disponíveis para a implementação completa, dentro do
prazo comercial de entrega estabelecido para o projeto.


Em cada incremento é realizado todo o ciclo
do
desenvolvimento
de
software,
do
planejamento aos testes do sistema já em
funcionamento. Cada etapa produz um
sistema totalmente funcional, apesar de ainda
não cobrir todos os requisitos;
O Modelo Incremental apresenta diversas
vantagens para o desenvolvimento de um
software, especialmente se os requisitos não
estão claros inicialmente;
Vantagens do Modelo Incremental



As versões são fornecidos após cada iteração do
modelo incremental;
O Modelo Incremental inclui o uso do software
pelo usuário para que as mudanças sejam feitas
de acordo com o mesmo;
Esse modelo não afeta o lado financeiro, porque
ele prove o "core" do software que o cliente
precisa, o que vai ajudar o cliente a manter o
negócio da mesma forma, sem alterações no lado
financeiro;
Vantagens do Modelo Incremental



É flexível e fácil de gerenciar processo mais
administráveis e fazer um software melhor com
uma melhor estrutura;
Melhor gerenciamento de riscos, porque você
pode confirmar o resultado com o cliente depois
de cada versão do sistem e sempre verificar se
estão fazendo o que está de acordo com o plano
ou não, e corrigi-los na próxima versão do
software;
Os testes são simples;
Desvantagens



Cada fase de uma iteração é rígida e não se
sobrepõem uns aos outros;
Podem
surgir
problemas
relativos
à
arquitetura do sistema, porque nem todos os
requisitos estão reunidos na frente de todo o
ciclo de vida do software;
O
modelo
Incremental
precisa
ser
relativamente pequeno;




http://pt.wikipedia.org/wiki/Modelo_em_casc
ata
http://protocoloti.blogspot.com.br/2012/03
/os-modelos-de-desenvolvimento-de.html
http://www.clipatecinformatica.com.br/2011
/02/modelo-espiral.html
Falbo,
Ricardo
A.,
Integração
de
Conhecimento
em
um
Ambiente
Desenvolvimento de Software. Tese
Doutorado, COPPE/UFRJ,
Brasil, 1998. (on line)
Rio
de
de
de
Janeiro,


PRESSMAN, Roger S. Engenharia de Software,
Sexta Edição. Editora MCGrawHill: Porto
Alegre, 2010
http://engenhariadesoftwareuesb.blogspot.c
om.br/2012/12/blog-post.html
Download