CMMI & Scrum, é possível unir os dois?

O Scrum é compatível com o CMMI? Sim e não. A demanda de documentação requerida pelo modelo CMMI contrasta com a agilidade no tempo de desenvolvimento de software.

Abordagens ágeis são criticadas devido ao fato de apresentarem muito pouco design de arquitetura e pouca documentação. Abordagens rigorosas são criticadas por serem burocráticas e serem de difícil adaptação à mudança.

O modelo CMMI descreve “o que fazer”, enquanto a metodologia ágil, como o Scrum, descreve “o como fazer”. Isso não quer dizer que seja impossível adotá-las em conjunto. As práticas estabelecidas pelo CMMI (ações e documentação) não interferem em como devemos executá-las (conforme proposto pelo Scrum).

O importante é entender o que o CMMI pode adaptar o Scrum a essa realidade sem perder o controle do CAOS; pois o CMMI é aberto a várias formas de interpretação e o modelo não desceve “o como fazer”.

Lembrando que você pode utilizar o Scrum com outras metodologias ágeis como o XP e FDD por exemplo. Abaixo pode ser vista uma tabela que mostra todas as áreas de processo do CMMI e quais são satisfeitas por cada uma dessas metodologias.

Scrum? O que é? Como funciona?

O que é o Scrum?

O Scrum é um método ágil para gerenciamento de projetos de desenvolvimento de software. Porém, teoricamente, pode ser aplicado em qualquer contexto no qual um grupo de pessoas com conhecimentos multidisciplinares necessitem trabalhar juntas para atingir um objetivo comum, como iniciar uma escola pequena, projetos de pesquisa científica ou até mesmo o planejamento de um casamento.

O Scrum junta conceitos de Lean, desenvolvimento iterativo e do estudo de Hirotaka Takeuchi e Ikujiro Nonaka no artigo The New Product Development Game.

Como funciona? (em vídeo, em inglês)

O vídeo abaixo explica em menos de 10 minutos praticamente todo o funcionamento do Scrum (por alto obviamente) de uma maneira muito didática. O único “problema” é que é todo falado em inglês, não possuindo legenda em português nem em inglês (pra quem tem dificuldade em entender o que é dito).

Como funciona? (em slides, em português)

Segue uma apresentação utilizada aqui na MJV para apresentar o Scrum para os clientes.

Como funciona? (em texto, em português)

No Scrum, os projetos são dividos em ciclos (tipicamente mensais) chamados de Sprints. O Sprint representa um tempo definido dentro do qual um conjunto de atividades deve ser executado. Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações, que no Scrum são chamadas de Sprints e geralmente duram de 2-4 semanas.

As funcionalidades a serem implementadas no projeto são mantidas em uma lista que é conhecida como Product Backlog. No início de cada Sprint, faz-se um Sprint Planning Meeting (uma reunião de planejamento), na qual o Product Owner (quem representa os stakeholders) prioriza todos os itens do Product Backlog e a equipe seleciona as funcionalidades que ela será capaz de implementar durante o Sprint que se inicia. As funcionalidades alocadas em um Sprint são transferidas do Product Backlog para o Sprint Backlog.

Diariamente, em uma Sprint, a equipe faz uma breve reunião de no máximo 15 minutos, com todos os participantes em pé, chamada Daily Scrum. O objetivo é cada integrante dizer o que fez no dia anterior, o que pretende fazer no dia que se inicia e se existe algum impedimento que está atrapalhando o seu trabalho.

Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review Meeting onde o time mostra o que foi alcançado neste sprint. Finalmente, faz-se uma Sprint Retrospective para identificar o que funcionou bem, o que pode ser melhorado e que ações serão tomadas para melhorar e a equipe parte para o planejamento do próximo Sprint.

Assim reinicia-se o ciclo como pode ser visto na ilustração abaixo:

"Ciclo Scrum"

Scrum Master

O Scrum é facilitado por um Scrum Master, que tem como função primária remover qualquer impedimento à habilidade de uma equipe de entregar o objetivo do sprint. O Scrum Master não é o líder da equipe (já que as equipes são auto-organizadas) mas atua como um firewall entre a equipe e qualquer influência desestabilizadora.

Outra função extremamente importante de um Scrum Master é o de assegurar que a equipe esteja utilizando corretamente as práticas de Scrum, motivando-os e mantendo o foco na meta da Sprint.

Outras características importantes do Scrum

  • Clientes se tornam parte da equipe de desenvolvimento (os clientes devem estar genuinamente interessados na saída);
  • Entregas freqüentes de funcionalidades 100% desenvolvidas;
  • Planos freqüentes de mitigação de riscos desenvolvidos pela equipe;
  • Problemas não são ignorados e ninguém é penalizado por reconhecer ou descrever qualquer problema não visto;
  • Sprints para corrigir bugs são feitos de tempos em tempos;
  • O Burn Down Chart é um dos artefatos mais importantes do Scrum;

Aprendendo mais

Existe um livro gratuito na web sobre Scrum que é muito bom: Scrum and XP from the Trenches que inclusive foi traduzido para o português.

A palestra do Guilherme Chapiewski sobre Desenvolvimento Ágil com XP e Scrum também é muito interessante. Alguns outros links úteis: Improve It e Wikipedia.

O que é CMMI?

O CMMI (Capability Maturity Model Integration) é um modelo de qualidade, criado e mantido pelo SEI (Software Engineering Institute), um centro de pesquisa e desenvolvimento patrocinado pelo Departamento de Defesa dos EUA.

Pode-se dizer que é um modelo de referência que contém boas práticas para os processos de desenvolvimento de software. O modelo possui uma listagem de melhores práticas para todas as áreas de processo melhorando drasticamente a qualidade dos projetos.

Deixando claro que o CMMI não é uma metodologia, ele diz o que você deve fazer mas não diz como; por isso é possível utilizar o CMMI com metodologias ágeis de gerenciamento de projetos.

Onde utilizar o CMMI?

Os processos (negócio) e o desenvolvimento de soluções com engenharia de software são o foco do CMMI. Porém, por ser bem abrangente e ter uma estrutura mais aberta, muitas de suas práticas podem ser utilizadas em outros tipos de projetos.

Por que utilizar o CMMI?

Esse conjunto de práticas contribui para o aprimoramento dos processos de uma organização tornando-a mais madura e eficiente.

O CMMI ajuda a organização a conhecer a si própria e a sua performance, melhorando a precisão do planejamento. Permite também um melhor monitoramento dos processos, possibilitando que o gerente de projetos saiba se o projeto dará certo ou não.

Com o tempo, adquirindo maturidade, a empresa vai identificando o que realmente tem valor e foca nisso, otimizando cada vez mais os processos. E é justamente isso que o CMMI é: um modelo que possibilita uma melhoria contínua nos processos, amadurecendo as organizações e tornando-as mais competitivas.

Níveis CMMI

O CMMI possui 5 níveis de capacidade, é necessário passar em uma avaliação oficial do SEI para adquirir os níveis de 2 a 5; o nível 1 é o nível que as empresas não certificadas se encontram. Atualmente existem apenas 107 empresas no Brasil que passaram na avaliação do CMMI.

Em breve postaremos um post falando especificamente sobre os níveis do CMMI.

Fonte: Blog CMMI, What’s this e Wikipedia.

MJV, pioneira no uso de CMMI com Metodologias ágeis

A MJV é a mais nova empresa certificada com o modelo CMMI (Capability Maturity Model Integrated) e a primeira empresa no Brasil a ser certificada utilizando o método de gerenciamento de projeto ágil Scrum.

A MJV recebeu em maio de 2009 a aprovação oficial pelo SEI (Software Engineering Institute) sobre a avaliação CMMI na Fábrica de Software da MJV. Passamos a fazer parte de um grupo extraordinário de 107 empresas certificadas oficialmente pelo SEI no modelo CMMI.

Sobre CMMI

O modelo é uma evolução dos conceitos do modelo de capabilidade, estabelecido pelo SEI da Universidade Carnegie Mellon. O CMMI foi projetado para a melhoria contínua dos processos de desenvolvimento, aquisição e manutenção de produtos e serviços. O modelo compreende disciplinas de engenharia de sistemas, engenharia de software, processo de desenvolvimento integrado de produto, gestão de processos e de projetos.

Sobre a MJV

A MJV é uma empresa de consultoria em tecnologia e inovação, com instalações de última geração, mais de 13 anos de mercado, especializada nas mais recentes tecnologias e metodologias na área de desenvolvimento de produtos e serviços.

Ao longo desses anos a MJV vem agregando valor para clientes de grande porte, principalmente nos setores de telecomunicações, seguros e varejo, construindo uma extensa lista de serviços especializados de alta tecnologia e qualidade.

Entre os principais clientes da MJV estão VIVO, Claro, TIM, Nextel, Embratel, Atento, Brasil Center, PontoFrio, Casa & Vídeo, Dufry, Brasif, Bradesco Seguros, Banco do Brasil e Icatu Hartford.

Especial CMMI e Scrum

Durante a próxima semana, faremos posts sobre CMMI, Scrum e a junção dos dois; abordando estes temas mais a fundo. Caso tenha alguma dúvida específica sobre algum dos temas acima, escreva-a abaixo para que possamos abordá-la em um dos posts.

Não esqueça de assinar o feed do blog para saber quando os posts saírem. Atualização: o post explicando o que é o CMMI e suas vantagens já está no ar; assim como o post sobre Scrum.

Promoção

Capa dos livros

Para comemorar esta novidade, sortearemos dois livros aqui no blog, um sobre CMMI e outro sobre desenvolvimento ágil: A Arte do Desenvolvimento Ágil e CMMI: Integração dos Modelos de Capacitação e Maturidade de Sistemas.

Será um sorteio e existem três formas de participar, você pode deixar o seu comentário neste post, linkar este post ou o blog no seu próprio blog/ site ou simplesmente twittar o post citando o @inovatividade.

Regras do sorteio: limite de uma participação, por pessoa, via comentário e uma via link ou tweet. O sorteio será realizado via random.org. Lembrando que funcionários da MJV (e seus parentes) não podem participar do sorteio. O sorteio ocorrerá dia 17/07/09.

Atualização: O resultado do sorteio já saiu.