Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003...

29
Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael Studart Monclar

Transcript of Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003...

Page 1: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Capability Maturity Model for Software –

CMM

Fundamentos da Engenharia de Software

Janeiro/2003

Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael Studart Monclar

Page 2: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Apresentação

Visão Geral do Modelo de Maturidade de Capacitação para o Desenvolvimento de Software

Page 3: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

O que é o CMM

Modelo de qualidade para o desenvolvimento e manutenção de sistemas de software

Criado no Instituto de Engenharia de Software (SEI) da Universidade Carnegie Mellon (Pensilvânia).

Page 4: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Introdução do CMM

Descreve os elementos chaves de um processo de desenvolvimento de software

O melhoramento de maneira evolucionária do caminho de um processo imaturo de ad hoc, para um processo maduro disciplinado

Cobre as práticas de planejamento, engenharia e gerência de desenvolvimento e manutenção de software

Estabelece um parâmetro que possibilita avaliar o estágio de maturidade dos processos de software da organização comparando-o as práticas da indústria

Page 5: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Composição do CMM

Cinco níveis de maturidade

Com exceção do Nível 1, cada nível de maturidade tem várias áreas-chave de processos

Cada área-chave de processo é organizada dentro de cinco seções chamadas características comuns

A característica comum especifica as práticas-chave que, quando direcionadas em grupo, executam os objetivos da área-chave de processo

Page 6: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Componentes do CMM

Níveis de Maturidade

Capacitação do Processo

Áreas-chave de processo

Metas

Práticas-chave

Características comuns

Page 7: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Esquema da Estrutura

Níveis deMaturidadeNíveis de

Maturidade

Áreas-chave de Processo

Áreas-chave de Processo

CaracterísticasComuns

CaracterísticasComuns

Práticas-Chave

Práticas-Chave

Capacitaçãodo Processo

Capacitaçãodo Processo

Atividades ouInfra-estrutura

Atividades ouInfra-estrutura

Implementação ouInstitucionalização

Implementação ouInstitucionalização

MetasMetas

CompromissoHabilitaçãoAtividadeMedição e AnáliseVerificação

CompromissoHabilitaçãoAtividadeMedição e AnáliseVerificação

Indicam

Contêm

Alcançam

Abordam

Descrevem

São

Contêm

Organizadas pelas

(Paulk 93a)

Page 8: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Estrutura do CMMNíveis de Maturidade

(N5)

Níveis de Maturidade (N5)

Área-chave (Gerência de Requisitos)

Área-chave (Gerência de Requisitos)

Níveis de Maturidade (N4)

Níveis de Maturidade (N4)Níveis de Maturidade

(N3)

Níveis de Maturidade (N3)Nível de Maturidade

(N2)

Nível de Maturidade (N2)

......Área-chave (Planejamento do Proje..

Área-chave (Planejamento do Proje..

Meta 1 Os requisitos...

Meta 1 Os requisitos...

Meta 2 Os planos...

Meta 2 Os planos...

Características ComunsCaracterísticas Comuns

Compromissoem executar (C)

Compromissoem executar (C)

Habilitaçãopara executar (H)

Habilitaçãopara executar (H)

Atividadesa executar (A)

Atividadesa executar (A)

Medição e Análise(M)

Medição e Análise(M)

Verificaçãoimplantação (V)

Verificaçãoimplantação (V)

Prática-Chave C1Prática-Chave C1 Prática-Chave H3Prática-Chave H3 Prática-Chave H4Prática-Chave H4

... ...

...

(Dymond 95)

Page 9: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Níveis de Maturidade

Nível de maturidade é um patamar evolucionário bem definido para alcançar a maturidade do processo de desenvolvimento de software.

Cada nível de maturidade fornece uma camada no fundamento para o melhoramento contínuo do processo.

Cada área-chave engloba um grupo de objetivos.

Page 10: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Níveis de Maturidade

Em Otimização (5)

Gerenciado (4)

Definido (3)

Repetitivo (2)

Inicial (1)Ad Hoc ProcessoCaótico

Processo deMelhoriaContínua

ProcessoDisciplinado

ProcessoPadronizado eConsistente

ProcessoPrevisível

Gerência de Projeto

Processo Integrado deEngenharia

ControleQuantitativode Processo

Melhoria Contínua

(61,5%

23,3%

13,1%

1,7%

0,4%

SEI – ABR/97(Paulk 93a)

Page 11: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Nível 1 – Inicial

Processo ad hoc, às vezes caótico. Poucos processos definidos Sucesso depende de esforços individuais. Ambiente instável para o desenvolvimento e

manutenção. As boas práticas de engenharia de software são

minadas pelo planejamento ineficaz. Na crise, abandonam processos planejados e

revertem para codificação e teste. Imprevisível, o processo é constantemente

modificado ou trocado conforme o ambiente

Page 12: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Nível 2 – Repetitivo

Gerência Básica Estabelecida. Novos projetos são baseados na experiência de projetos

similares. Permite a organização de planos realistas repetindo o

sucesso de práticas em projetos anteriores. Cada projeto tem processos definidos, documentados,

praticados, obedecidos, treinados, medidos e capazes de melhorias.

Verifica se está sendo executado conforme o plano.

Controle das configurações. Gerentes acompanham custos, cronograma e

funcionalidades e os problemas para atingir os compromissos são identificados quando eles surgem.

Page 13: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Nível 2 – Repetitivo

Registro e controle da integridade do baseline dos requerimentos e das entregas.

Padrões são definidos e seguidos fielmente.

Relacionamento forte com sub-contratados.

O processo é disciplinado, porque o planejamento e o acompanhamento são estáveis.

Page 14: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Nível 3 – Definido

Processo de Engenharia de Software Estabelecido. O processo padrão para desenvolvimento e

manutenção de software na organização é documentado e estão integrados coerentemente.

Processos estabelecidos aqui são usados (e modificados, quando apropriado) para ajudar os gerentes e técnicos no desempenho mais efetivo.

Práticas de engenharia de software são efetivas quando os processos estão padronizados.

Um grupo é responsável pelas atividades do processo, ex:. um grupo de processo de engenharia de software ou SEPG [Fowler90].

Page 15: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Nível 3 – Definido

Implementação de um programa de treinamento para assegurar que a equipe técnica e os gerentes tenham conhecimentos e habilidades requeridas para desempenharem plenamente seus papéis.

O Processo Padrão da Organização é adequado às características individuais de cada projeto.

Um processo bem definido pode ser caracterizado por seus critérios de disponibilidade, entradas, padrões e procedimentos para realizar o trabalho, mecanismo de verificação, saídas e critérios de aceitação.

Pode ser resumido como consistente e padronizado porque as atividades de engenharia e gerência são estáveis e repetitivas.

Page 16: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Nível 4 – Gerenciado

Gerência Quantitativa. Estabelecimento de metas quantitativa de qualidade. Os processos são medidos quantitativamente. Uma base para tomadas de decisões. A variabilidade nos processos são menores. Entendimento da capacitação e do risco. Minimização de impacto na ocorrência do inesperado. Produtos são previsivelmente de alta qualidade.

Page 17: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Nível 5 – Em Otimização

Evolução Sistemática do Processo.

Melhoria contínua do processo como um todo

Projetos pilotos para a absorção e internalização de novas tecnologias

Alto nível de qualidade

Alto nível de satisfação dos clientes

Page 18: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Pesquisa de Evolução

Pesquisas de evolução nas empresas apontaram as seguintes durações médias:

De 1987 a 1996 Após 1996

31 meses 26 mesesN1 N2

18 meses 17 meses

N1 N2

N2 N3 N2 N3

Page 19: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Capacitação do Processo

De desenvolvimento de software descreve a abrangência dos resultados esperados que podem ser alcançados e fornece os meios para isso.

Capacitaçãodo Processo

Capacitaçãodo Processo

Níveis deMaturidadeNíveis de

MaturidadeIndicam

Page 20: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Áreas-chave de processo

Cada área-chave de processo identifica um grupo de atividades relacionadas que, quando executadas coletivamente, alcança um grupo de objetivos considerados importantes para o estabelecimento da capacidade de processo do nível de maturidade.

As áreas-chave de processo tem sido definidas para residir em um único nível de maturidade. Ex: uma das áreas-chave para o Nível 2 é Planejamento do Projeto.

Alcançam metas através de práticas-chave.

MetasMetas Áreas-chave de Processo

Áreas-chave de Processo

Alcançam

Page 21: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Áreas-chave de processo

O objetivo principal das 18 KPAs (key process areas) são:

N1 – Não tem kpas

N2 – Estabelecer controles gerenciais básicos

• Gerência de Requisitos• Planejamento do Projeto de Software• Supervisão e Acompanhamento do Projeto • Gerência de Contratos de Software• Garantia da Qualidade de Software• Gerência de Configuração de Software

Page 22: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Áreas-chave de processo

N3 – Ações técnicas e gerenciais num só processo

• Revisão por Parceiros• Coordenação entre Grupos• Engenharia do Produto de Software• Gerência de Software Integrada• Programa de Treinamento• Definição do Processo da Organização• Foco no Processo da Organização

os processos em vermelho são de responsabilidade da organização os demais são do projeto.

Page 23: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Áreas-chave de processo

N4 – Entender quantitativamente o processo

• Gerência da Qualidade de Software• Gerência Quantitativa do Processo

N5 – Manter melhoria contínua do processo

• Gerência da Evolução de Processos• Gerência da Evolução da Tecnologia• Prevenção de Defeitos

Page 24: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Metas

Resumem as práticas-chave das áreas-chave de processo e podem ser usadas para determinar se uma organização ou projeto tem efetivamente implementado a área-chave de processo.

Significam o escopo, as fronteiras e a intenção de cada área-chave de processo. Um exemplo de um objetivo para a área-chave de processo do Planejamento de Projeto de Software é “estimativas são documentadas para uso no planejamento e controle do projeto".

Page 25: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Práticas-chave

Cada área-chave de processo é descrita em termos de práticas-chave que, quando implementada, ajudam a realizar seus objetivos.

Descrevem a infra-estrutura e a maioria das atividades que contribuem para a implantação e institucionalização da área-chave. Ex: uma das práticas para a área-chave do processo de Planejamento de Projeto é "O plano de projeto é desenvolvido de acordo com um processo documentado”.

Práticas-Chave

Práticas-Chave

Atividades ouInfra-estrutura

Atividades ouInfra-estrutura

Descrevem

Page 26: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Práticas-chave Uma prática-chave descreve “o que” fazer sem

estabelecer “como” fazer. O CMM define 316 práticas-chave. Distribuição de Áreas, Práticas e Metas por Nível:

N1 000

N2 201216

N3 171087

N4 6312

N5 9563

MetasPráticasÁreas

Page 27: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Características comuns

As práticas-chave são divididas entre cinco seções. Características: Compromissos, Habilidades,

Atividades, Medição e Análise, e Verificação da Implementação.

São atributos que indicam se a implementação e institucionalização de uma área-chave esta efetiva, repetível, e permanente.

A característica Atividade descreve as atividades de implementação. As demais características descrevem os fatores de institucionalização, que fazem parte do processo da cultura organizacional.

CaracterísticasComuns

CaracterísticasComuns

CompromissoHabilitaçãoAtividadeMedição e AnáliseVerificação

CompromissoHabilitaçãoAtividadeMedição e AnáliseVerificação

Implementação ouInstitucionalização

Implementação ouInstitucionalização

Abordam São

Page 28: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Conclusão

Assim como os processos de software o CMM está em constante evolução.

O CMM fornece uma estrutura conceitual para melhoria na gerência e desenvolvimento de produtos de software mas não assegura (nem pretende) que o software terá sucesso ou que todos os problemas serão resolvidos.

CMM identifica características de um processo de software eficaz, mas outros fatores também são essenciais para o sucesso de um projeto como pessoas e tecnologia.

Page 29: Capability Maturity Model for Software – CMM Fundamentos da Engenharia de Software Janeiro/2003 Daniel Leitão Corrêa e Silva Eduardo Lima Fernandes Rafael.

Referências

Soeli T. Fiorini, Arndt von Staa, Renan Marins Baptista Engenharia de Software com CMM, 2002;

Mark C. Paulk,Bill Curtis,Mary Beth, Chrissis, Charles V. Weber Capability Maturity ModelSMfor Software,

Version 1.1, 1993. Carnegie Mellon – Software

Engeneering Institute http://www.sei.cmu.edu/cmm/