Os ciclos de vida definem basicamente como um software deve ser desenvolvido, e descrevem com detalhes as etapas e atividades a serem executadas. O modelo adotado pode determinar o sucesso da produção de um projeto, pois ajuda a melhorar o andamento do projeto e garantir que os objetivos sejam alcançados.

Definindo claramente essas etapas, torna-se possível o controle e avaliação da qualidade de cada etapa, ou atividade.

Nos primórdios do desenvolvimento de software, onde o desenvolvimento de software era em pequena escala, não havia claramente um processo ou um ciclo de vida definido, sendo assim, o foco estava na programação, caracterizando o primeiro modelo de ciclo de vida, codificar e consertar, que consiste em partir diretamente para o desenvolvimento do software, seguida da correção, até completar o produto.

Com o aumento do desenvolvimento de software, houve a necessidade de organização e metodologias para que o processo se tornasse mais gerenciável. Assim surgiram diversos modelos de ciclo de vida.

Modelo Cascata

Nesse modelo, as etapas são executadas de forma sequencial até o término do projeto. Normalmente possui as seguintes fases: Análise, projeto, Construção, Avaliação e Manutenção.

Apesar de parecer perfeito, esse método se torna trabalhoso, devido a grande documentação que o processo gera, além de ocorrerem mudanças frequentes no escopo do projeto, pois o cliente somente receberá o produto pronto, não passando por etapas de avaliação.

Prototipação

Esse modelo tem como propósito realizar a validação contínua com o cliente de forma incremental. Inicia-se um processo de análise e levantamento de requisitos, como no modelo em cascata, porém após a parte inicial do processo, inicia-se o desenvolvimento do primeiro protótipo que será validado com o cliente. Após a primeira avaliação do cliente, ajustam-se os requisitos necessários, ou o que o cliente reavaliou e se inicia novamente o desenvolvimento de um novo protótipo, até que o produto seja entregue ao cliente.

Apesar de o modelo ser extremamente eficiente quanto às validações com o cliente, este pode se tornar inviável quando o prazo de desenvolvimento seja precisamente definido, pois não há uma forma de determinar um tempo preciso de desenvolvimento, pois a cada nova etapa novas modificações podem ser solicitadas.

Iterativo Incremental

O modelo Iterativo Incremental tem por finalidade combinar os benefícios dos modelos cascata e de prototipação. Desta forma, um projeto é dividido em partes, onde cada parte irá gerar um protótipo até que o produto esteja completamente pronto. Cada uma dessas partes segue o modelo cascata, porém todos os protótipos estão interligados em um mesmo produto.

Este modelo facilita os testes, pois somente algumas partes serão testadas na entrega para o cliente, e não o produto por completo, porém há a dificuldade de se dividir a implementação, que nem sempre esta pode ser realizada.

Espiral

Neste modelo, o projeto e repartido em pequenas partes, os riscos são levantados e após a verificação dos riscos, o desenvolvimento do projeto pode seguir os passos de algum outro modelo, porém ao término do ciclo é criado um protótipo e validado com o cliente, como também planejado a próxima circunferência, até que o projeto seja inteiramente finalizado.

A grande vantagem desse modelo é a facilidade na gerência de riscos, porém se necessita de desenvolvedores e pessoas com maior grau de experiência, pois um projeto pode ser iniciado e após iniciar um novo projeto sem ter finalizado o anterior, gerando descontentamento por parte dos funcionários.

Como podemos perceber, não há um modelo específico para cada organização ou para cada projeto a ser desenvolvido e também não há um modelo ideal que somente possua vantagens. Assim a organização deve adotar o melhor modelo de ciclo de vida para seus projetos ou para a sua metodologia, levando em consideração o tempo, a necessidade de documentação ou a análise de riscos.

Por João Luís Trentin
Artigo do Seminário de Engenharia de Software 2011-2
Revisão Thiarlei Macedo | Fonte Micreiros.com