É necessário conhecer as características do projeto a ser desenvolvido para escolhermos o melhor ciclo de vida e os recursos humanos empregados no projeto.
Esses devem ser reconhecidamente capazes de enfrentar os desafios que se apresentam diante das dificuldades inerentes de todo e qualquer projeto de software.
Principais modelos de ciclo de vida de software:
-
Cascata;
-
Modelo em V;
-
Modelo incremental;
-
Evolutivo;
-
Iterativo e incremental;
-
RAD;
-
Prototipagem;
-
Espiral;
-
Modelo de ciclo de vida associado ao RUP.
O modelo cascata, ou sequencial linear, é considerado o mais antigo e o mais usado na engenharia de software em todo o mundo. Este é o grande mérito deste modelo.
Seu nome foi atribuído devido à sequência com que cada fase do desenvolvimento dependia do término da fase anterior, ou seja, o resultado de uma fase era utilizado com a entrada para a fase seguinte.
Nesse modelo, a ênfase maior ficava por conta das fases de análise e projeto antes de iniciar a implementação (codificação).
É possível retornar a uma etapa anterior; entretanto deve-se analisar muito bem em relação às áreas técnica e financeira, sem prejuízo das partes envolvidas.
Vantagens do modelo cascata:
-
A fase de análise de requisitos (única) leva ao projeto do sistema e, por sua vez, antes da fase de codificação;
-
Ao final de cada fase e antes de iniciar a seguinte, devem ser feitas revisões com a participação do usuário;
-
Cada etapa (fase) deve passar por aprovação e documentação, visando o passo seguinte.
Desvantagens do modelo cascata:
-
O fluxo sequencial proposto pelo modelo geralmente não é seguido;
-
O modelo cascata exige que os requisitos sejam claramente definidos e completos, pois são estabelecidos na fase inicial do projeto;
-
O módulo executável para testes somente fica disponível ao final do projeto, isto é, na etapa avançada do desenvolvimento, exigindo um grande esforço.
Este modelo é uma variação do cascata, ajustando as atividades de testes com as fases de análise e projeto.
Da mesma forma que no cascata, o modelo em V é sequencial, o que significa que cada fase necessita ser concluída antes do início da fase seguinte.
Como podemos observar, no modelo em V os procedimentos de testes são planejados em praticamente todas as fases do desenvolvimento, diferentemente do que ocorre no modelo em cascata.
Vantagens do modelo em V:
-
Maior chance de sucesso quando comparado com o modelo cascata, devido ao desenvolvimento de planos de teste desde as fases iniciais;
-
Funciona bem para projetos pequenos, nos quais os requisitos são facilmente entendidos.
Desvantagens do modelo em V:
-
Tão rígido quanto o modelo cascata;
-
Requisitos devem ser estabelecidos corretamente e de forma clara no início do projeto.
No modelo incremental, as novas funcionalidades ou necessidades do usuário são integradas de forma segmentada e em série até a conclusão do produto final.
Este modelo se propõe a aumentar pouco a pouco o software, conforme as necessidades surgem.
O modelo incremental deve ser adotado quando os requisitos são claramente conhecidos na fase inicial do desenvolvimento e há a necessidade de entrega de um módulo ou funcionalidade do software em curto espaço de tempo.
É importante notar que, a cada incremento, uma nova versão do software é produzida.
Vantagens do modelo incremental:
-
A entrega da primeira versão apresenta um menor custo e menos tempo se comparado com os modelos em cascata e em V;
-
Poucos riscos associados ao desenvolvimento dos incrementos devido ao seu tamanho reduzido.
Desvantagens do modelo incremental:
No caso de requisitos mal definidos ou incompletos, alguns incrementos podem ser retrabalhados, o que gera custos e atrasos.
O modelo evolutivo obedece a um processo que visa o desenvolvimento do software a partir de requisitos de protótipos iniciais.
Neste modelo, as versões parciais são desenvolvidas para atender aos requisitos levantados inicialmente. Assim, a primeira versão é usada para refinar os requisitos visando uma segunda versão e, a partir do conhecimento obtido com o uso, o desenvolvimento prossegue, evoluindo, então, o produto.
Vantagens do modelo evolutivo:
-
É usado quando os requisitos se apresentam incompletos no início do desenvolvimento;
-
Com o uso do sistema, o conhecimento sobre o produto vai aumentando e, consequentemente, melhorando os requisitos.
Desvantagens do modelo evolutivo:
-
É necessário um rígido controle sobre os custos, grande preocupação com o cronograma e com a configuração do software;
-
Usuários precisam estar preparados quanto aos resultados iniciais, que podem parecer insatisfatórios.
O processo de desenvolvimento em cascata apresenta uma série de vantagens, porém tem também alguns pontos fracos. Para solucionar este impasse, estudiosos de TI criaram o modelo de desenvolvimento iterativo e incremental.
Esse modelo trouxe bastante agilidade e flexibilidade nos processos de desenvolvimento de software, o que permitiu uma maior capacidade de lidar com as demandas do mercado e, assim, atingir melhores resultados em médio e longo prazo.
Basicamente, este modelo divide o desenvolvimento do software em pequenos ciclos ou módulos ou novas funcionalidades. Cada funcionalidade deve corresponder a uma necessidade do usuário à medida que for necessária à sua construção.
Para o desenvolvimento de cada funcionalidade, é utilizado um pequeno modelo em cascata, objetivando, assim, atender às necessidades sempre que se fizer necessário.
Precisamos, então, identificar as necessidades dos usuários e definir uma escala de prioridades para cada uma dessas funcionalidades.
O modelo RAD é um modelo de desenvolvimento de software incremental que enfatiza um ciclo de desenvolvimento curto e se apresenta de forma sequencial linear.
A rapidez ou velocidade com que o software é desenvolvido se deve pelo fato de várias equipes trabalharem em paralelo, quando o produto pode ser dividido em módulos. Um projeto de software que utiliza o RAD consome em média de 60 a 90 dias.
O uso deste modelo exige requisitos bem definidos e estabilizados, além de escopo restrito e com possibilidade de ser dividido em módulos.
Vantagens do modelo RAD:
-
O ciclo de desenvolvimento é extremamente curto se comparado com os demais modelos;
-
Distribuição de tarefas é facilitada entre as equipes de desenvolvimento.
Desvantagens do modelo RAD:
-
Requer equipes de desenvolvimento adequadas para atender à demanda de projetos grandes e escaláveis;
-
Não é apropriado quando os riscos são grandes;
-
Não é apropriado quando o sistema precisa interagir com outros sistemas.
O modelo prototipagem é utilizado quando é definido um conjunto de objetivos gerais para o software, mas os detalhes não estão claramente definidos como requisitos de entrada, processamento ou saída.
O ciclo do modelo prototipagem começa com a comunicação entre o engenheiro de software e o cliente, quando são definidos os objetivos gerais do software, identificando as necessidades conhecidas e são verificadas as áreas que necessitam de mais definição.
Os usuários podem fazer simulações com o protótipo, identificando mais detalhadamente funcionalidades que deverão ser disponibilizadas futuramente.
A versão inicial do software ajuda a determinar a viabilidade técnica, custos e prazo do projeto.
É importante haver uma forte interação com o usuário para que rapidamente o protótipo seja implementado de acordo com as etapas:
Vantagens do modelo prototipagem:
-
O protótipo deve ser avaliado pelo usuário;
-
A interação do usuário com o protótipo é fundamental para ajustar as necessidades funcionais.
Desvantagens do modelo prototipagem:
-
O usuário pode pensar que a maior parte do software está pronta;
-
O protótipo pode crescer de maneira não planejada, com risco de se tornar um incremento funcional;
-
O protótipo pode confundir o usuário iludido por um desempenho melhor do que um incremento funcional;
-
O fato de o protótipo não implementar toda a funcionalidade pode causar frustação para o usuário quando o sistema completo é entregue.
O modelo espiral se divide em duas etapas principais: análise de riscos e prototipagem. A cada novo ciclo, esse modelo testa constantemente erros que podem vir a acontecer.
A cada iteração, a volta da espiral pode ser baseada em um modelo diferente e pode ter diferentes atividades. Ou seja, a cada repetição é refeita a análise de a prototipação até que não existam grandes riscos no desenvolvimento.
No modelo espiral, em cada repetição do ciclo devem ocorrer no projeto:
-
Determinação de objetivos.
-
Avaliação e redução de riscos.
-
Desenvolvimento e validação.
-
Planejamento da próxima iteração.
Os riscos são considerados à medida que cada evolução é realizada.
A primeira atividade se dá com o desenvolvimento de uma especificação de produto, as próximas passagens podem ser usadas para desenvolver um protótipo e assim sucessivamente.
Cada passagem pela fase do planejamento, por exemplo, resulta em ajustes no planejamento do projeto. O custo e o cronograma são sempre ajustados de acordo com o feedback obtido do usuário após uma entrega.
Na imagem, cada loop representa uma fase de desenvolvimento do software.
Vantagens do modelo espiral:
-
Muita análise de riscos;
-
Bom para projetos grandes e críticos;
-
Software é produzido cedo no ciclo de vida.
Desvantagens do modelo prototipagem:
-
Pode ser custoso;
-
Análise de riscos requer experiência;
-
Não se aplica bem a projetos menores.
O RUP foi desenvolvido em 1999 por Jacobson, Booch e Rumbaugh depois de terem definido a UML. É um processo que integra ciclos, fases e disciplinas, visando a qualidade no gerenciamento de projetos.
O ciclo de vida do desenvolvimento do software é dividido nas seguintes fases:
-
Concepção: Define o escopo do projeto.
-
Elaboração: Planeja o projeto, define e valida a arquitetura.
-
Construção: Construção do software.
-
Transição: Implantação do software.
As disciplinas requisitos, análise, projeto, implementação, testes e implantação vão estar presentes em cada uma dessas fases, com maior ou menor ênfase, conforma mostra a figura:








