# CMMI

O CMMI (Capability Maturity Model Integration ou Modelo Integrado de Maturidade em Capacitação) é um modelo de referência que contém práticas (Genéricas ou Específicas) necessárias à maturidade em disciplinas específicas (Systems Engineering (SE - Engenharia de Sistemas), Software Engineering (SW - Engenharia de Software), Integrated Product and Process Development (IPPD - Desenvolvimento Integrado de Processo e Produto), Supplier Sourcing (SS - Seleção de Fornecedores)). O modelo é gerenciado pelo Instituto CMMI, uma organização da ISACA. Desenvolvido pelo SEI (Software Engineering Institute) da Universidade Carnegie Mellon, o CMMI é uma evolução do CMM e procura estabelecer um modelo único para o processo de melhoria corporativo, integrando diferentes modelos e disciplinas. O CMMI é um conjunto comprovado de práticas globais recomendadas que impulsiona o desempenho dos negócios por meio da criação e do benchmarking(avaliação comparativa) de recursos-chave serna.
O CMMI foi baseado nas melhores práticas para desenvolvimento e manutenção de produtos. Há uma ênfase tanto em engenharia de sistemas quanto em engenharia de software, e há uma integração necessária para o desenvolvimento e a manutenção. Ele está dividido em 5 níveis de maturidade que atestam, o grau de evolução em que uma organização se encontra. Além disso, tem por objetivo principal funcionar como um guia para a melhoria dos processos da organização, considerando para isto atividades como o gerenciamento do desenvolvimento de software, prazos e custos previamente estabelecidos. O objetivo maior, considerando o CMMI e seus diferentes conceitos, está justamente na produção de software com maior qualidade e menos propenso a erros.
A versão do CMMI (versão 1.3) foi publicada em 27 de outubro de 2010 e apresenta três modelos:
* CMMI for Development (CMMI-DEV), voltado ao processo de desenvolvimento de produtos e serviços.
* CMMI for Acquisition (CMMI-ACQ), voltado aos processos de aquisição e terceirização de bens e serviços.
* CMMI for Services (CMMI-SVC), voltado aos processos de empresas prestadoras de serviços.
Uma das premissas do modelo é "A qualidade é influenciada pelo processo", e seu foco é "Melhorar processo de uma empresa".
A versão atual do modelo é o CMMI V2.0, liberado em Março de 2018.
O objetivo final do CMMI é integrar processos para melhorar produtos.

## Evolução Histórica

Na década de 1930, Walter Shewhart começou a trabalhar na melhoria de processos com os seus princípios de controle estatístico da qualidade [Shewhart 1931]. Esses princípios foram refinados por W. Edwards Deming [Deming 1986], Philip Crosby [Crosby 1979], e Joseph Juran [Juran 1988]. Watts Humphrey, Ron Radice, e outros estenderam esses princípios ainda mais e começaram a aplicá-los aos softwares em seus trabalhos na IBM e do SEI [Humphrey 1989]. O livro de Humphrey, Gerenciando o Processo de Software, fornece uma descrição dos princípios e conceitos básicos sobre os quais muitos dos CMMs se baseiam.
O CMMI surgiu durante a década de 1980 como um modelo para avaliação de risco na contratação de empresas de software pelo Departamento de Defesa dos Estados Unidos que desejava ser capaz de avaliar os processos de desenvolvimento utilizados pelas empresas que concorriam em licitações como indicação da previsibilidade da qualidade, custos e prazos nos projetos contratados. Para desenvolver esse processo, o DOD constituiu junto a Carnegie-Mellon University o SEI (Software Engineering Institute), o qual além de ser responsável pela evolução da família CMM, realiza diversas outras pesquisas em engenharia de software.
A partir de 1991, foram desenvolvidos CMMs® para várias disciplinas (Engenharia de Sistemas, Engenharia de Software, Aquisição de Software, Gerência e Desenvolvimento da Força de Trabalho, Desenvolvimento Integrado do Processo e do Produto). Embora estes modelos tenham mostrado sua utilidade, o uso de múltiplos modelos se mostrou problemático. O CMMI® surgiu para resolver o problema de utilização de vários modelos e é o resultado da evolução do SW-CMM®, SECM® (System Engineering Capability Model) e IPD-CMM® (Integrated Product Development Capability Maturity Model).
Os processos de melhoria nasceram de estudos realizados por Deming (Out of the Crisis), Crosby (Quality is Free: The Art of Making Quality Certain) e Juran, cujo objetivo principal era a melhoria da capacidade dos processos. Entende-se por capacidade de um processo a habilidade com que este alcança o resultado desejado.
Um modelo tem como objetivo estabelecer - com base em estudos, históricos e conhecimento operacional - um conjunto de "melhores práticas" que devem ser utilizadas para um fim específico.
O CMMI tem como origens em três outros modelos de maturidade - SW-CMM (SEI Software CMM), EIA SECM (Electronic Industries Alliances's Systems Engineer Capability Model) e IPD-CMM (Integrated Product Development CMM).
Resumindo, o CMMI é o sucessor do modelo de maturidade de capacidade (CMM) ou Software CMM. O CMM foi desenvolvido de 1987 até 1997. Em 2002, a versão 1.1 foi lançada, a versão 1.2 foi seguida em agosto de 2006 e a versão 1.3 em novembro de 2010. Algumas mudanças importantes no CMMI V1.3 são o suporte ao desenvolvimento ágil de software melhorias nas práticas de alta maturidade e alinhamento da representação (encenada e contínua).
O CMMI ajuda a "integrar funções organizacionais tradicionalmente separadas, definir metas e prioridades de melhoria de processos, fornecer orientação para processos de qualidade e fornecer um ponto de referência para avaliar processos atuais".
Em março de 2016, o Instituto CMMI foi adquirido pela ISACA.
Em março de 2018, o CMMI 2.0 foi introduzido, não pela primeira vez na história do CMMI: a opção mais barata era o acesso de 1 semana à versão online por US $ 150,00.

## Sobre o CMM

Um Capability Maturity Model, incluindo o CMMI, é uma representação simplificada do mundo. CMMs contêm os elementos essenciais dos processos eficazes. Esses elementos são baseados nos conceitos desenvolvidos por Crosby, Deming, Juran, e Humphrey.
O SEI adotou a premissa de gestão de processos, "a qualidade de um sistema ou o produto é altamente influenciada pela qualidade do processo utilizado para desenvolvê-lo e mantê-lo", e definiu CMMs que incorporaram essa premissa.

## Dimensões

O CMMI foi construído considerando três dimensões principais: pessoas, ferramentas e procedimentos. O processo serve para unir essas dimensões.

## Disciplinas

O processo inclui três disciplinas ou corpos de conhecimento (body of knowledges), sendo elas:
* Engenharia de sistemas
* Engenharia de software
* Engenharia de hardware
A engenharia de software é similar à engenharia de sistemas em relação às áreas de processo, apenas com enfoque diferente nos processos. As áreas de processo requeridas para engenharia de sistemas são as mesmas para engenharia de software, mas o nível de maturidade que é diferente.

## Representações

O CMMI possui duas representações: "contínua" ou "por estágios". Estas representações permitem à organização utilizar diferentes caminhos para a melhoria de acordo com seu interesse.

### Representação Contínua

Define uma sequência para melhoria de uma área de processos e ao mesmo tempo permite uma flexibilidade na escolha das áreas de processo a serem melhoradas, possibilitando a organização direcionar seus esforços de melhoria nas áreas que julgar mais relevante. É caracterizado por: Níveis de Capacidade (Capability Levels):
* Nível 0: Incompleto (Ad-hoc)
* Nível 1: Executado
* Nível 2: Gerenciado / Gerido
* Nível 3: Definido
* Nível 4: Gerenciado quantitativamente --- REMOVIDO DA v.1.3
* Nível 5: Em otimização --- REMOVIDO DA v.1.3
Nesta representação a capacidade é medida por processos separadamente, onde é possível ter um processo com nível um e outro processo com nível cinco, variando de acordo com os interesses da empresa.
No nível 1(um) o processo é executado de modo a completar o trabalho necessário para a execução de um processo.
* No nível 2(dois) é sobre planejar a execução e confrontar o executado contra o que foi planejado.
* No nível 3(três) o processo é construído sobre as diretrizes do processo existente, e é mantido uma descrição do processo.
* No nível 4(quatro) é quando o processo é gerenciado quantitativamente através de estatísticas e outras técnicas.
* No nível 5(cinco) o processo gerido quantitativamente é alterado e adaptado para atender às necessidades negociais/estratégicas da empresa.
A representação contínua é indicada quando a empresa deseja tornar apenas alguns processos mais maduros, quando já utiliza algum modelo de maturidade contínua ou quando não pretende usar a maturidade alcançada como modelo de comparação com outras empresas.

### Representação Por Estágios

Disponibiliza uma sequência pré-determinada para melhoria baseada em estágios que não deve ser desconsiderada, pois cada estágio serve de base para o próximo. É caracterizado por Níveis de Maturidade (Maturity Levels):
* Nível 1: Inicial (Ad-hoc)
* Nível 2: Gerenciado/Gerido
* Nível 3: Definido
* Nível 4: Quantitativamente gerenciado / Gerido quantitativamente
* Nível 5: Em otimização
Nesta representação a maturidade é medida por um conjunto de processos. Assim é necessário que todos os processos atinjam nível de maturidade dois para que a empresa seja certificada com nível dois. Se quase todos os processos forem nível três, mas apenas um deles estiver no nível dois a empresa não irá conseguir obter o nível de maturidade três.
Esta representação é indicada quando a empresa já utiliza algum modelo de maturidade por estágios, quando deseja utilizar o nível de maturidade alcançado para comparação com outras empresas ou quando pretende usar o nível de conhecimento obtido por outros para sua área de atuação.

### Representação Contínua vs Representação por Estágio

Na representação contínua o nível de capacidade é medido para uma área ou um conjunto de áreas de processos definido pela organização. Já na representação por estágio, o nível de maturidade é medido para um conjunto de áreas de processos definido previamente no modelo.

### Modelo de estrutura (v2.0)

Na versão 2.0, a separação de representação acima foi cancelada e agora existe apenas um modelo coeso. O modelo é dividido em 4 categorias, 12 capacidades e 25 áreas de processo (com iniciais entre parênteses e os mais altos níveis de maturidade atingíveis entre colchetes):
* Fazendo
** Garantindo a Qualidade (ENQ)
*** Desenvolvimento e Gerenciamento de Requisitos (RDM) [3]
*** Garantia de Qualidade de Processo (PQA) [3]
*** Validação e Verificação (VV) [3]
*** Avaliações de Colegas (PR) [3]
** Engenharia e Desenvolvimento de Produtos (EDP)
*** Solução Técnica (TS) [3]
*** Integração de Produtos (PI) [3]
** Selecionando e Gerenciando Fornecedores (SMS)
*** Gestão de Contratos de Fornecedores [4]
* Gerenciando
** Planejamento e Gerenciamento de Trabalho (PMW)
*** Estimando (EST) [3]
*** Planejamento (PLAN) [4]
*** Monitoramento e Controle (MC) [3]
** Gerenciando Resiliência de Negócios (MBR)
*** Gestão de Riscos e Oportunidades (RSK) [3]
** Gerenciando a Força de Trabalho (MWF)
*** Treinamento Organizacional (OT) [3]
* Possibilitando
** Suportando a Implementação (SI)
*** Analise Casual e Resolução (CAR) [5]
*** Analise e Resolução de Decisões (DAR) [3]
*** Gerenciamento de Configuração (CM) [2]
* Melhorando
** Capacidade de Construção e Sustentação (BSC)
*** Governança (GOV) [4]
*** Infraestrutura de Implementação (||) [3]
** Melhorando o Desempenho (IMP)
*** Gerenciamento de Processos (PCM) [4]
*** Desenvolvimento de Ativos de Processo (PAD) [3]
*** Gerenciando Desempenho e Medição (MPM) [5]

### Modelo de estrutura (v1.3)

Dependendo das áreas de interesse (aquisição, serviços, desenvolvimento) usadas, as áreas de processo que ele contém irão variar. As áreas de processo são as áreas que serão cobertas pelos processos da organização. A tabela abaixo lista as dezessete áreas principais de processo do CMMI que estão presentes para todas as áreas de interesse do CMMI na versão 1.3.
Áreas principais do processo de integração de modelo de maturidade de capacidade (CMMI) :
| Abreviação | Nome | Área | Nível de Maturidade |
| CAR | Análise Casual e Resolução | Suporte | 5 |
| OPM | Gestão de Desempenho Organizacional | Gerenciamento de Processos | 5 |
| OPP | Desempenho do Processo Organizacional | Gerenciamento de Processos | 4 |
| QPM | Gestão Quantitativa de Projetos | Gerenciamento de Processos | 4 |
| DAR | Análise e Resolução de Decisão | Suporte | 3 |
| IPM | Gerenciamento Integrado de Projetos | Gerenciamento de Processos | 3 |
| OPD | Definição de Processo Organizacional | Gerenciamento de Processos | 3 |
| OPF | Foco no Processo Organizacional | Gerenciamento de Processos | 3 |
| OT | Treinamento Organizacional | Gerenciamento de Processos | 3 |
| RSKM | Gerenciamento de Riscos | Gerenciamento de Processos | 3 |
| CM | Gerenciamento de Configurações | Suporte | 2 |
| MA | Medição e Análise | Suporte | 2 |
| PMC | Monitoramento e Controle de Projetos | Gerenciamento de Processos | 2 |
| PP | Planejamento de Projetos | Gerenciamento de Processos | 2 |
| PPQA | Garantia de Qualidade de Processos e Produtos | Suporte | 2 |
| REQM | Gerenciamento de Requisitos | Gerenciamento de Processos | 2 |
| SAM | Gestão de Contratos de Fornecedores | Suporte | 2 |

## Áreas de Processo

O modelo CMMI v1.3 (CMMI-DEV) contém 32 áreas de processo. Em sua representação por estágios, as áreas são divididas da seguinte forma:
Nível 1: Inicial (Ad-hoc)
Não possui áreas de processo.
Nível 2: Gerenciado / Gerido
* Gerenciamento de Requisitos - REQM (Requirements Management)
* Planejamento de Projeto - PP (Project Planning)
* Monitoramento e Controle de Projeto - PMC (Project Monitoring and Control)
* Gerenciamento de Acordos de Fornecedores - SAM (Supplier Agreement Management)
* Medição e Análise - MA (Measurement and Analysis)
* Garantia da Qualidade de Processo e Produto - PPQA (Process and Product Quality Assurance)
* Gerência de Configuração - CM (Configuration Management)
* Planejamento de Trabalho - WP (Work Planning)
* Monitoramento e Controle do Trabalho WMC (Work Monitoring and Control)
* Prestação de Serviços - SD (Service Delivery)
* Processo de Garantia de Qualidade - PPQA(Process and Quality Assurance)
Nível 3: Definido:
* Desenvolvimento de Requisitos - RD (Requirements Development)
* Solução Técnica - TS (Technical Solution)
* Integração de Produto - PI (Product Integration)
* Verificação - VER (Verification)
* Validação - VAL (Validation)
* Foco de Processo Organizacional - OPF (Organizational Process Focus)
* Definição de Processo Organizacional - OPD (Organizational Process Definition)
* Treinamento Organizacional - OT (Organizational Training)
* Gerenciamento Integrado de Projeto - IPM (Integrated Project Management)
* Gerenciamento de Risco - RSKM (Risk Management)
* Análise e Resolução de Decisão - DAR (Decision Analysis and Resolution)
* Gestão Estratégica de Serviço - STSM (Strategic Service Management)
* Transição do Sistema de Serviço - SST (Service System Transition)
* Desenvolvimento de Sistemas de Serviços SSD (Service System Development)
* Continuidade de Serviço - SCON (Service Continuity)
* Gestão Integrada de Trabalho - IWM (Integrated Work Managements)
* Resolução e Prevenção de Incidentes - IRP (Incident Resolution and Prevention)
* Gerenciamento de Capacidade e Disponibilidade - CAM (Capacity and Availability)
Nível 4: Quantitativamente gerenciado / Gerido quantitativamente
* Desempenho de Processo Organizacional - OPP (Organizational Process Performance)
* Gerenciamento Quantitativo de Projeto - QWM (Quantitative Work Management)
Nível 5: Em otimização
* Gestão do Desempenho Organizacional - OPM (Organizational Performance Management)
* Análise Causal e Resolução - CAR (Causal Analysis and Resolution)

### Modelos e áreas de processo

As áreas de processo variam com base no modelo escolhido, não sendo as mesmas áreas para todos os modelos (CMMI-DEV, CMMI-ACQ ou CMMI-SVC).
O CMMI-DEV divide os processos em quatro categorias:
1 - Gestão de Processos (5 processos) 2 - Gestão de projetos (8 processos) 3 - Engenharia (6 processos) 4 - Suporte (6 processos)
1. Gestão de Processo  1.1 - Foco no Processo Organizacional - (OPF - Organizational Process Focus) - (SE/SW)  1.2 - Definição do Processo Organizacional - (OPD - Organizational Process Definition) - (SE/SW)  1.3 - Treinamento Organizacional - (OT - Organizational Training) - (SE/SW)  1.4 - Desempenho de Processo Organizacional - (OPP - Organizational Process Performance) - (SE/SW)  1.5 - Inovação e Implementação Organizacional - (OID - Organizational Innovation and Deployment) - (SE/SW)
2. Gestão de Projeto  2.1 - Planejamento de Projeto - (PP - Project Planning) - (SE/SW)  2.2 - Monitoramento e Controle de Projeto - (PMC - Project Monitoring and Control) - (SE/SW)  2.3 - Gestão de Acordo com o Fornecedor - (SAM - Supplier Agreement Management) - (SE/SW)  2.4 - Gestão Integrada do Projeto - (IPM - Integrated Project Management) - (SE/SW)  2.5 - Gestão de Risco - (RSKM - Risk Management) - (SE/SW)  2.6 - Integração de Equipes - (IPPD)  2.7 - Gestão Integrada de Fornecedores - (SS)  2.8 -Gestão Quantitativa do Projeto - (QPM - Quantitative Project Management) - (SE/SW)
3. Engenharia  3.1 - Gestão de Requisitos - (REQM - Requirements Management) - (SE/SW)  3.2 - Desenvolvimento de Requisitos - (RD - Requirements Development) - (SE/SW)  3.3 - Solução Técnica - (TS - Technical Solution) - (SE/SW)  3.4 - Integração do Produto - (PI - Product Integration) - (SE/SW)  3.5 - Verificação - (VER - Verification) - (SE/SW)  3.6 - Validação - (VAL - Validation) - (SE/SW)
4. Suporte  4.1 - Gestão de Configurações (CM - Configuration Management) - (SE/SW)  4.2 - Garantia da Qualidade do Processo e do Produto - (CM - Configuration Management) - (SE/SW)  4.3 - Medição e Análise - (MA - Measurement and Analysis) - (SE/SW)  4.4 - Análise e Solução das Decisões - (DAR - Decision Analysis and Resolution) - (SE/SW)  4.5 - Ambiente Organizacional para Integração - (IPPD)  4.6 - Análise e Solução de Causas - (CAR - Causal Analysis and Resolution) - (SE/SW)

## ISO/IEC 15504

A ISO/IEC 15504, também conhecida como SPICE, define um "processo para relatórios técnicos no assessoramento em desenvolvimento de software", e similarmente ao CMMI possui níveis de maturidade para cada processo. O CMMI não é baseado nesta norma, mas sim compatível.

## Avaliações

Uma organização não pode ser certificada no CMMI, entretanto é avaliada. Dependendo do tipo de avaliação, a organização pode receber uma classificação de nível de maturidade (1-5) ou um perfil de realização de nível de capacidade.
Muitas organizações encontram valor em medir seu progresso realizando uma avaliação. As avaliações são geralmente conduzidas por um ou mais dos seguintes motivos:
* Determinar o grau de comparação dos processos da organização com as práticas recomendadas do CMMI e identificar as áreas em que a melhoria pode ser feita;
* Informar os clientes e fornecedores externos sobre o grau de comparação dos processos da organização com as práticas recomendadas do CMMI;
* Para atender aos requisitos contratuais de um ou mais clientes;
E as avaliações dessas organizações usando um modelo CMMI precisam estar em conformidade com os requisitos definidos no documento de Requisitos para o CMMI (ARC).

## Segurança

Para abordar as preocupações de segurança do usuário, estão disponíveis dois guias de segurança não oficiais. Considerando o caso do conteúdo de segurança no CMMI para Serviços, há uma área de processo, o Gerenciamento de segurança. Segurança por Design com o CMMI para Desenvolvimento, a versão 1.3 tem as seguintes áreas de processo:
. OPSD - Preparação Organizacional para o Desenvolvimento Seguro
. SMP - Gerenciamento Seguro em Projetos
. SRTS - Requisitos de segurança e solução técnica
. SVV - Verificação e validação de segurança
Embora não afetem os níveis de maturidade ou capacidade, essas áreas de processo podem ser relatadas em resultados de avaliação.

## Aplicações

O modelo CMMI lida principalmente com os processos que devem ser implementados, e não tanto com a forma como eles podem ser implementados. E nada garante que a aplicação do CMMI numa organização aumentará o desempenho e qualidade nos seus processos.
Turner & Jain (2002) argumentam que, embora seja óbvio que existem grandes diferenças entre o CMMI e o desenvolvimento de software ágil, ambas as abordagens têm muito em comum. Eles acreditam que nenhuma das maneiras é o caminho "certo" para desenvolver software, mas que existem fases em um projeto em que uma das duas é mais adequada. Eles sugerem que se deve combinar os diferentes fragmentos dos métodos em um novo método híbrido. Sutherland et al. (2007) afirmam que uma combinação de Scrum e CMMI traz mais adaptabilidade e previsibilidade do que qualquer um sozinho. David J. Anderson (2005) dá dicas sobre como interpretar o CMMI de maneira ágil.
O CMMI pode ser avaliado usando duas abordagens diferentes: encenada e contínua. A abordagem em etapas produz os resultados da avaliação como um dos cinco níveis de maturidade. A abordagem contínua produz um dos quatro níveis de capacidade. As diferenças nessas abordagens são sentidas apenas na avaliação; as melhores práticas são equivalentes e resultam em resultados de melhoria de processos equivalentes.