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ção-
Integraçã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?