Processos de Desenvolvimento de Software Análise de Sistemas de Software Prof. Rodrigo Ribeiro
Problema Se você tivesse que investir 100.000... Em que você investiria? Treinamentos? Máquinas poderosas? Contratar funcionários? Programadores? Gerentes de projeto?
História Departamento de Defesa dos USA Quase 90% dos projetos falham. Porquê? Investem em Carnegie-Mellon Depois de muito tempo a resposta: Projetos falham por gerência inadequada! Nascimento do CMM (atual CMM-I) Níveis de maturidade de uma empresa de desenvolvimento Classificação de 1 a 5
Capability Maturity Model - CMM
Processos de Desenvolvimento Fundamentais para qualidade Processos ajudam mas... No silver bullet! Modelos de processos Codifica-Remenda Cascata Evolucionário Prototipagem Evolutiva Espiral
Modelo Codifica-Remenda Especificação Desordem Produto Final
Método Codifica Remenda Muito usado (infelizmente...) Não exige gerência complexa Nenhuma documentação Nenhum controle gerencial Atraente para alguns desenvolvedores
Modelo em cascata
Modelo em Cascata Estrutura rigorosa Uma etapa só começa quando a anterior estiver totalmente concluída. Inflexível Não se adapta bem a mudanças de requisitos. Quando usar: Requisitos bem conhecidos Cliente só possui o produto ao final
Modelo cascata com realimentação
Modelo Evolucionário Especificação Versão inicial Esboço Desenvolvimento Versões intermediárias Validação Versão final Atividades Simultâneas
Modelo Evolucionário Especificação incremental Ideal para sistemas médios e pequenos menos de 500.000 LOC Problemas Difícil gerenciar pequenos incrementos Sistemas mal estruturados Muitas mudanças tendem a corromper a estrutura do software
Prototipagem Evolutiva
Prototipagem evolutiva Bom para o desenvolvedor Codificação rápida Bom para o cliente Versão desenvolvida rapidamente Ruim porquê... Cliente não vê “remendos”
Modelo Espiral
Modelo Espiral Similar a outros processos Diferença Problema Ex: Processo evolucionário Diferença Análise e resolução de riscos Ex. Uso de nova linguagem: Ferramentas não disponíveis ou com problemas. Problema Difícil gerenciar todos os incrementos produzidos
Outros modelos... Métodos formais Engenharia de software baseada em componentes Desenvolvimento baseado em modelos Desenvolvimento baseado em testes