Modelos de Ciclo de Vida e Metodologias de Software
Modelo Evolucionário
- Tentativa de lançar o produto antecipadamente: Foco na entrega inicial rápida.
- Operação da evolução do primeiro produto: O sistema evolui a partir de uma versão inicial.
- Sistemas com mudanças esperadas: Projetado para sistemas onde a mudança é constante ao longo do tempo.
- Instabilidade de requisitos: Dificuldade em estabilizar os requisitos; o ciclo do projeto confunde-se com o ciclo de vida.
Desvantagens:
- Falta de planejamento e produção de software mal estruturada.
- Dificuldade em modificar códigos criados antes da análise completa do sistema.
- Dificuldade de integração com outras aplicações.
- Pouco usado em sistemas de grande porte por ser incapaz de processar mudanças de controle de forma eficiente.
- Não é aconselhável para substituir sistemas bem definidos.
Modelo Incremental
- Similar ao sistema evolutivo: É criado pela adição progressiva de componentes funcionais (incrementos).
- Atualizações constantes: A cada passo, o sistema é atualizado.
- Integração de resultados: Foco na entrega contínua de software funcional.
Desvantagens:
- Pode gerar soluções não estruturadas e necessidade de retestes constantes por erros acumulados.
- O usuário pode ficar relutante com um desenvolvimento onde não se sabe o resultado final exato.
Modelo em Espiral
- Origem: Proposto por Barry Boehm em 1986 (e revisado em 1998).
- Objetivo: Surge para aliviar os problemas do ciclo de vida clássico.
- Análise de Risco: Apresenta uma análise de risco composta por uma série de ciclos.
- Estrutura: A espiral é dividida em quatro quadrantes; o projeto inicia no centro e avança para fora.
- Planejamento: Identificação dos objetivos do produto, estudo de alternativas e restrições.
- Análise de Riscos: Avaliação de alternativas, análise de incertezas, prototipagem e identificação de elementos de risco.
- Riscos Comuns: Falta de pessoal qualificado, orçamentos irreais, planejamento inadequado, funções de software erradas, requisitos de interface de usuário incorretos, mudanças contínuas, deficiências em itens externos e lacunas em trabalhos terceirizados.
- Restrições: Pode exceder as possibilidades atuais da engenharia de computação no desenvolvimento e teste de produtos.
- Revisão: Avaliação constante para o próximo nível.
Vantagens:
- Combina o melhor de outros modelos e evita o pior, dependendo da situação.
- Opções de reutilização são consideradas desde o início.
- Prepara o sistema para crescimento, desenvolvimento e mudanças.
- Incorpora objetivos de qualidade no desenvolvimento.
- Foca na eliminação de erros e opções atraentes precocemente.
- Determina o nível de esforço necessário para cada fase.
- Segue o mesmo procedimento para desenvolvimento e manutenção, evitando problemas de "melhorias de rotina" de alto risco.
- Permite alta flexibilidade e adapta-se bem ao design e programação orientada a objetos.
Desvantagens:
- Desenvolvido inicialmente para o mundo da contratação comercial, podendo ser complexo para desenvolvimento interno.
- Necessita de especialistas em avaliação de riscos, que nem sempre estão disponíveis.
- Requer etapas de processamento adicionais em comparação a outros modelos.
- É um modelo relativamente novo e menos utilizado que o modelo em cascata ou prototipagem.
Diferenças com outros modelos (Wolff, 1989):
- Reconhecimento explícito de alternativas para alcançar os objetivos.
- Foco na identificação e resolução de riscos em cada alternativa.
- Divisão em fases com acordos finais, permitindo mudanças ou o encerramento do projeto com base no aprendizado.
- Método adaptável a qualquer atividade, incluindo consultoria externa.
Metodologias
- É necessário estabelecer uma abordagem sistemática e disciplinada para o desenvolvimento de software.
- As metodologias afetam diretamente o processo de construção.
- São desenvolvidas a partir da estrutura definida por um ou mais ciclos de vida.
- Não há consenso absoluto entre autores sobre o conceito exato de metodologia.
Definição
Conjunto de passos e procedimentos a serem seguidos para o desenvolvimento de software.
O que a metodologia abrange?
- Aplicação de melhores processos de desenvolvimento.
- Melhoria contínua.
- Estabelecimento de normas para a organização.
Objetivos das Metodologias
- Estabelecer os requisitos de um sistema de software com sucesso.
- Construir sistemas dentro de um tempo adequado e custo aceitável.
- Garantir que o sistema seja bem documentado e de fácil manutenção.
- Ajudar a identificar rapidamente qualquer mudança necessária no processo.
- Proporcionar o desenvolvimento de um sistema que satisfaça todos os envolvidos.
Características Desejáveis em uma Metodologia
- Existência de regras pré-definidas e cobertura completa do ciclo de vida.
- Planejamento intermediário e controle de verificações.
- Comunicação eficaz e suporte para uma vasta gama de projetos.
- Facilidade de treinamento e uso de ferramentas CASE.
- Atividades para melhorar o processo de desenvolvimento.
- Suporte para manutenção e reuso de software.
Método vs. Metodologia
- Existe confusão entre os termos devido ao uso indevido da linguagem técnica.
- Uma metodologia pode seguir um ou vários modelos de ciclo de vida.
- O ciclo de vida diz o que precisa ser superado no desenvolvimento, mas não como; a metodologia indica o como.
- A metodologia é um conceito mais amplo; pode ser considerada um conjunto de métodos.
Classificação
- Estruturada: Orientada a processos, orientada a dados ou orientada a estruturas de dados hierárquicas.
- Mista: Combinação de abordagens.
- Orientada a Objetos: Focada na modelagem de objetos e suas interações.