sábado, 21 de abril de 2012

CMMI para Concursos - Parte 1 - Introdução e Constelações

Atenção! Este é o meu resumo sobre CMMI. Não me culpe caso algo esteja errado, faça bom proveito e se encontrar erros, por favor me avise. Conforme for estudando, vou melhorando os resumos. 

Capability (capacidade): Qualidade de ser capaz ou apto a realizar uma tarefa ou ação. É a capacidade de alcançar determinado resultado. 

Maturity (maturidade): O quanto uma empresa está madura em determinada área de interesse. É possível ter a capacidade de entregar determinado resultado sem ter a maturidade suficiente para repetí-lo com segurança. Maturidade é o atingimento de boas práticas.

Model (modelo): Representação simplificada e abstrata de algo sob diferentes pontos de vista. Observa-se apenas o que é essencial para solução de determinada questão em determinado contexto. 

Integration (integração): O CMMI é um framework que integrou diversos outros modelos CMM para desenvolvimento, produtos de software e etc.

Modelo Integrado de Capacidade e Maturidade - É um modelo de melhores práticas para se definir, implantar e melhorar processos. Assim com o ITIL, CMMI não é uma metodologia, não é uma receita de bolo, não existe passo a passo. Descreve as características que os processos devem ter para se tornarem efetivos.

O CMMI foca na seguinte questão: "O que fazer" e não "como fazer" ou "quem deve fazer". Não existem papéis pré-definidos para os processos:

O CMMI trará melhoria na pervisão de custos e tempo a ser gasto no desenvolvimento e manutenção de produtos e serviços de software. Os processos que dizem às pessoas o que fazer e mapeiam as características importantes a serem atendidas, sendo assim, a equipe já sabe o que fazer para alcançar as metas, o que aumenta a agildade da equipe e portanto, a produtividade.

Colocando em prática o que foi dito anteriormente, a consequência é a melhoria na qualidade dos produtos. Tudo isso também trará maior retorno sobre o investimento.

Antes existiam diversos modelos CMM (Engenharia de Software - SW, Engenharia de Aquisições - SA, Engenharia de Sistemas - SE, IPD e People). Diversas areas de interesse tiveram seus modelos criados o que gerou sobreposição de assuntos, gerando processos redundantes ou em oposição dentro de uma mesma empresa que adotasse mais de um modelo. Com a criação do modelo integrado, esses problemas foram resolvidos.

Então  o CMMI serve para implantar e melhorar os processos de uma organização com foco em desenvolvimento e manutenção de software de forma integrada. (CMMI-DEV)

Constelações CMMI
Conjunto de componentes (modelos, material de treinamento e documentos de avaliação) para atender uma área de interesse específica de uma organização.

Existem 3 constelações atualmente (versão 1.2):

CMMI-ACQ - Processos para aquisições de suprimentos e terceirização.
CMMI-SVC - Processos para entregar e suportar serviços. (processos parecidos com ITIL)
CMMI-DEV - Processos para desenvolver produtos e serviços.

Mesmo existindo 3 constelações diferentes, existe uma integração entre elas. 16 processos são comuns a todas as constelações. O framework é flexível o suficiente para receber novas constelações no futuro.

Neste resumo, estou estudando apenas o CMMI-DEV (é o que é cobrado)

Disciplinas do CMMI-DEV
Dentro das constelações existem áreas de conhecimento específicas:

Engenharia de Software (SW): Foco na aplicação de métodos para o desenvolvimento e manutenção de sistemas de software.

Engenharia de Hardware (HW): Técnicas e tecnlogogias para manter e implementar um produto concreto.

Engenharia de Sistemas (SE): Cobre o desenvolvimento de sistema como um todo. Pode ou não incluir softwares. Tranforma expectativas em soluções completas. Exemplo: o desenvolvimento de um IPOD, envolve a criação de um hardware, um software para o hardware e ainda um outro software para atualizar as músicas do aparelho através de um PC. Além disso ainda existe o loja virtual de venda de músicas.

Atenção: Assim como nos livros de engenharia de software, existe diferença entre software e sistema. O software é um programa, o sistema é algo maior, que inclui software, documentação, hardware e etc. O caso citado do IPOD mostra a diferença. Dentro do IPOD roda um software, mas o todo é o sistema e inclui desde o hardware até à loja de música.

Existem dois modelos CMMI for Development e CMMI for Development + IPPD (Desenvolvimento Integrado de Produtos e Processos). IPPD é apenas um complemento opcional do CMMI-DEV. Você pode escolher aplicar as praticas dele se quiser.

É muito comum empresas gerenciarem os processos, mas tercerizarem o desenvolvimento em outras empresas com níveis de CMMI. Para isso é necessário uma integração entre as partes, aí entra o IPPD (Não confiar muito nessa definição).

O CMMI-DEV possui 22 processos.
Quando nada for dito em uma questão, considere sempre que está se falando de CMMI-DEV.