XP x CMMI Programação Radical Prof. Luiz Fernando Melgarejo João de Amorim Junior XP x CMMI A relação entre Extreme Programming e o Modelo de Maturidade de CapacitaçãoIntegração CMMI - Década de 80: SEI - Carnegie Mellon, Pennsylvania. - Agosto de 1991: Primeira versão do SW-CMM. - Agosto de 2002: Versão 1.1 do SW-CMMI. - SW-CMMI: Adotado como modelo para a capacidade organizacional de desenvolvimento. CMMI - Certificado para empresas de desenvolvimento de SW. - Projetos grandes, de organizações de grande porte. - Framework de processo de desenvolvimento. - Diz o que deve ser feito para se ter um projeto organizado e de qualidade. CMMI - Tudo deve ser muito bem documentado. - Áreas Chaves de Processo (KPA). - Dividido em cinco níveis. - Inicial, Repetível, Definido, Gerenciável e Otimização. - Nível 1: Pessoas competentes (e heróicas). CMMI – Nível 2 - Repetível - Foca no processo de gerenciamento do projeto. - KPA 1 - Gerenciamento de requisitos. - KPA 2 - Planejamento do projeto de software. - KPA 3 - Monitoração e controle do projeto. - KPA 4 - Prevenção de Gerenciamento de contrato com o fornecedor (sub-contrato). CMMI – Nível 2 - KPA 5 - Garantia de qualidade de software. - KPA 6 - Gerenciamento de configuração de software. CMMI – Nível 3 - Definido - Foca na Engenharia de processo e suporte organizacional. - KPA 7 - Foco na organização do processo. - KPA 8 - Definição da organização do processo. - KPA 9 - Programa de treinamento. - KPA 10 - Gerenciamento integrado de software. CMMI – Nível 3 - KPA 11 - Engenharia de produto de software. - KPA 12 - Coordenação inter-grupo. - KPA 13 - Revisões assistidas (Inspeções). CMMI – Nível 4 - Gerenciável (Quantitativamente) - Foca na qualidade do produto e do processo. - KPA 14 - Gerenciamento quantitativo do processo. - KPA 15 - Gerenciamento da qualidade de software. CMMI – Nível 5 - Otimização - Foca na melhoria contínua do processo. - KPA 16 - Prevenção de defeitos. - KPA 17 - Gerenciamento da mudança de tecnologia. - KPA 18 - Gerenciamento da mudança de processo. Extreme Programming - Método de desenvolvimento de software desenvolvido por Kent Beck. - Aquilo que se julga bom no desenvolvimento de software é aplicado ao extremo. - Equipes médias e pequenas, cujos requisitos apresentem mudanças vagas ou rápidas. - Equipes tipicamente co-localizadas com menos de 10 membros. Extreme Programming - Código coletivo. - Escrever teste antes do código. - Programação em dupla. - Testes rodando repetidamente. - Desenvolvedores devem responder rapidamente a mudanças nos requisitos. “O cliente é quem manda”. Extreme Programming - Quatro princípios: Comunicação, Simplicidade, Rapidez e Coragem. - Fazer iterações extremamente pequenas – segundos, minutos e horas ao invés de semanas, meses e anos. - Ciclo de vida incremental e evolucionário. Quatro atividades básicas: codificação, teste, fatoração e projeto. XP e CMMI – Por que não - CMMI exige que tudo seja muito bem documentado. - XP abomina documentação. - XP: código não possui responsáveis. - CMMI aumenta custo de desenvolvimento. Exige gerentes do processo, como SQA, CM, etc. XP e CMMI – Por que não - CMMI: “... XP é code-and-fix disfarçado ...”, “... sem análise de requisitos e boa documentação, um projeto não terá um crescimento sustentável ...”. - XP: “... análise de requisitos é balela ...”, “... documentação atrasa desenvolvimento ...”. - XP não é para projetos grandes. CMMI em projetos pequenos é impraticável. XP e CMMI - Cerca de 90% das empresas de software nunca chegaram a alcançar o nível 2. - Certificação CMMI dá status à empresa em negociações internacionais. - Empresas estão adaptando XP. Ex.: JPMorgan Chase, empresas chinesas, etc. XP e CMMI – Adaptação - CMMI: O que deve ser feito. - XP: Como deve ser feito. - XP possui processos disciplinados e claramente bem definidos. XP e CMMI – Adaptação - Nível 2: - Gerenciamento de requisitos (KPA 1) -> Metáfora e estórias de uso, cliente na equipe, integração contínua. - Planejamento do projeto de software (KPA 2) -> “Planejamento do jogo”, entregas pequenas. XP e CMMI – Adaptação - Nível 2: - Monitoração e controle do projeto (KPA 3) -> Entregas pequenas. - Garantia de qualidade de software (KPA 5) > Programação em dupla. - Gerenciamento de configuração de software (KPA 6) -> Propriedade coletiva, entregas pequenas, integração contínua. XP e CMMI – Adaptação - Nível 3: - Foco na organização do processo (KPA 7) -> Foco no time (equipe). - Definição da organização do processo (KPA 8) -> Metáfora. - Engenharia de produto de software (KPA 11) -> Metáfora, projeto simples, testes, fatoração e re-projeto, padrões de código. XP e CMMI – Adaptação - Nível 3: - Coordenação inter-grupo (KPA 12) -> Cliente na equipe, Programação em dupla. - Revisões assistidas (Inspeções) (KPA 13) -> Programação em dupla. - Nível 5: - Prevenção de defeitos (KPA 16) -> Integração contínua. XP x CMMI - Adaptação de XP para ser utilizado com CMMI: basicamente XP com documentação. - É XP? - Ou é CMMI?