Modelos de Ciclo de Vida de Software
Nesse post vou abordar alguns dos modelos de ciclo de vida de desenvolvimento de software. Para escrever esse conteúdo estou utilizando as aulas disponibilizadas por esse site http://cederj.edu.br/videoaulas/ além de outros conteúdos que pesquisei pela internet.
1) Modelo em Cascata/Clássico (Waterfall Model)
* Popularizado na década de 1970;
* Composto por uma sequência de atividades;
* Uma atividade começa a executar quando a outra termina;
* Resultado de uma etapa é utilizado na etapa seguinte;
* Guiado por documentos;
* Ciclo de vida mais antigo e mais utilizado.
a) Vantagens:
* Oferece uma maneira de tornar o processo mais visível;
* Facilita o planejamento.
b) Desvantagens:
* Dificuldade de manter a serialização proposta pelo modelo
* Dificuldade de se concluir a etapa de análise de requisitos, devido a modificações nos requisitos do software (requisitos deveriam ser congelados ao fim da análise)
* A primeira versão do software só estará disponível após o término das fases de análise, projeto, codificação e testes, aumentando o tempo de latência entre o início do projeto e a criação de sua primeira versão.
2) Prototipação
* O objetivo é entender os requisitos do usuário;
* Versão simplificada de um produto de software, geralmente criada sem um processo formal de desenvolvimento, utilizada para elucida ou validar os requisitos do produto.
a) Vantagens:
* Protótipos contribuem para melhorar a especificação dos requisitos;
* Partes do protótipo podem vir a ser usadas no desenvolvimento do sistema final.
b) Desvantagens:
* Custo elevado;
* Atraso no desenvolvimento.
3) Modelo Incremental
* Combinação entre os modelos linear e prototipação;
* O desenvolvimento é dividido em etapas, denominadas “incrementos”;
* Em cada incremento é realizado todo o ciclo do desenvolvimento de software;
* Cada etapa produz um sistema totalmente funcional;
a) Vantagens:
* Existe um risco menor de fracasso do software;
* Reduz a chance de mudança de requisito;
Tipos de Incrementos:
* Evolutivos: Produtos de cada etapa de desenvolvimento são aproveitados em cada nova passagem pela etapa.
* Descartáveis: Produtos das etapas de desenvolvimento são descartados a cada novo protótipo é construído do início.
* Operacional: Requisitos são elucidados através de protótipos e o produto final é construído paralelamente a construção dos protótipos.
3.1) Ciclo Incremental Evolutivo
* Os requisitos vão sendo implementados por parte
* Entregas rápidas de produtos intermediários para o usuário
* Maior entendimento a medida que o desenvolvimento ocorre
3.2) Ciclo Incremental Descartável
* Custo alto pela perda do produto construído no incremento
* Alta qualidade do processo por trás do protótipo descartável
* Possível insistência do usuário em manter o protótipo em uso.
3.3) Ciclo Incremental Operacional
* Mantem duas equipes
– Uma equipe pequena trabalha em turnos longos no ambiente do usuário, construindo protótipos “quick-&-dirty” para facilitar o entendimento dos requisitos do usuário.
– Uma equipe trabalha em ritmo menos acelerado e em um ambiente separado, produzindo um software de qualidade a partir dos requisitos coletados pela primeira equipe.
4) Ciclo de Vida em Espiral
* É um metamodelo, visto que qualquer ciclo de vida pode ser utilizado na fase de desenvolvimento.
* Foi criado visando abranger as melhores características do modelo clássico e da prototipagem;
* Dividido em quatro fases;
* Essas fases são repetidas várias vezes;
a) Vantagens:
* Possibilidade de melhorar o sistema a cada iteração;
* Diminui manutenção.
b) Desvantagens:
* Modelo relativamente novo;
* Modelo mais complexo.
5) Ciclo de Vida RAD (Rapid Application Development)
* É um modelo que enfatiza um ciclo de desenvolvimento curto;
* Construção baseada em componentes;
* O modelo RAD é usado principalmente para aplicações de sistema de informação;
* Adaptação do modelo em cascata, onde um desenvolvimento rápido é obtido através de uma abordagem de construção baseada em componentes.
a) Vantagens:
* Baseado em componentes;
* Pode ser desenvolvido em várias equipes;
b) Desvantagens:
* É necessário desenvolvedor e cliente comprometidos;
* Não é apropriado para qualquer aplicação;
Critérios para Seleção de um Ciclo de Vida
* Relacionados aos usuários e a equipe
– Experiencia dos usuários no domínio da aplicação;
– Facilidade de expressão dos usuários;
– Experiencia da equipe no domínio da aplicação;
– Experiencia da equipe de Engenharia de Software;
– Disponibilidade de recursos humanos para a equipe;
– Grau de acesso aos usuários.
* Relacionados ao Produto
– Tamanho e grau de complexidade da aplicação
– Grau de importância dos requisitos de interface