Qualidade em Tecnologia da Informação Universidade Salgado de Oliveira Diretória de Pós-Graduação e Pesquisa Especialização em Tecnologia da Informação Prof. MSc. Edigar Antônio Diniz Jr Capability Maturity Modelsw for Software Carnegie Mellon University - Pittsburgh www.sei.cmu.edu Histórico do CMM • Projeto teve início em Novembro de 1986 • SEI – Software Engineering Institute com a assistência da Mitre Corporation foram os responsáveis por este projeto. • O intuito era desenvolver uma Estrutura de Maturidade de Processos que iria ajudar organizações a melhorar seu processo de software. • Esta estrutura deveria apoiar o Governo Federal Americano (em especial o DoD), a avaliar fornecedores de software. 4 - CMM Histórico do CMM • Em 1987, foi publicada a primeira descrição do CMM [Humphrey87a] e o Questionário de Maturidade [Humphrey87b]. • O Questionário de Maturidade foi criado para identificar as áreas que uma organização necessita melhorar. • Depois de 4 anos, a Estrutura de Maturidade de Processo (e o Questionário) evoluíram para o modelo denominado CMM. 4 - CMM Histórico do CMM • Em 1987, foi publicada a primeira descrição do CMM [Humphrey87a] e o Questionário de Maturidade [Humphrey87b]. • O Questionário de Maturidade foi criado para identificar as áreas que uma organização necessita melhorar. • Depois de 4 anos, a Estrutura de Maturidade de Processo (e o Questionário) evoluíram para o modelo denominado CMM. 4 - CMM Estrutura de Maturidade de Processo Conceitos Fundamentais: - Capacidade do Processo de Software: descreve a gama de resultados que se espera alcançar ao seguir um processo de software. - Execução do Processo de Software: representa os resultados atuais obtidos na realização de um processo de software. - Maturidade do Processo de Software: descreve em que nível um processo específico é definido, gerenciado, medido, controlado e efetivado. Indica o potencial de evolução da capacidade do processo de software. 4 - CMM Estrutura de Maturidade de Processo Conceitos Fundamentais: - Capacidade do Processo de Software: descreve a gama de resultados que se espera alcançar ao seguir um processo de software. - Execução do Processo de Software: representa os resultados atuais obtidos na realização de um processo de software. - Maturidade do Processo de Software: descreve em que nível um processo específico é definido, gerenciado, medido, controlado e efetivado. Indica o potencial de evolução da capacidade do processo de software. 4 - CMM Modelo de Maturidade de Capacidade • Engenheiros conhecem profundamente os problemas de sua organização com relação ao processo de software. • A grande dificuldade aparece no momento de decidir quais problemas devem ser solucionados primeiro, e como como esta melhora deve ocorrer. • Assim, para se melhorar a qualidade de uma organização, é necessário projetar um caminho de evolução para a mesma. 4 - CMM Modelo de Maturidade de Capacidade • Modelo de Maturidade de Capacidade: fornece às organizações um conjunto de orientações para que as mesmas possam controlar seu atual processo de software e para que as mesmas possam evoluir em direção a uma excelente cultura de engenharia de software e gerenciamento de software. 4 - CMM Cinco Níveis de Maturidade do Processo de Software - CMM • CMM fornece uma estrutura com cinco níveis de maturidade que permite a uma organização executar pequenos e sucessivos passos evolucionários. • Estes níveis de maturidade definem um escala ordinal para medir a maturidade do processo de software de uma organização e para avaliar a capacidade do processo de software da mesma. 4 - CMM Cinco Níveis de Maturidade do Processo de Software - CMM • Um Nível de Maturidade é uma bem-definida base evolucionária para se alcançar um processo de software mais maduro. • Cada nível é uma camada necessária para se caminhar em direção a maturidade desejada pela comunidade de desenvolvimento. 4 - CMM Cinco Níveis de Maturidade do Processo de Software - CMM 4 - CMM CMM x SPICE Nível 5 – Otimizado Nível 4 – Previsível Nível 3 – Estabelecido Nível 2 – Gerenciado Nível 1 – Executado Nível 0 – Incompleto 4 - CMM Cinco Níveis de Maturidade do Processo de Software - CMM A seguir temos uma caracterização dos cinco níveis de capacidade do CMM: • Inicial (Nível 1): O processo de software é caracterizado como sendo ad hoc, e ocasionalmente até caótico. Poucos processos são definidos e o sucesso depende do esforço individual. • Repetível (Nível 2): Processos básicos de gerenciamento do projeto são estabelecidos para mapear custos, agendamento e funcionalidade. A disciplina necessária nos processos é aplicada de forma repetível dentre os projetos similares. 4 - CMM Cinco Níveis de Maturidade do Processo de Software - CMM • Definido (Nível 3): O processo de software tanto para as atividades de engenharia quanto para as atividades de gerência está documentado, padronizado e integrado à um processo de software padrão da organização. • Gerenciado (Nível 4): Medidas detalhadas do processo de software e da qualidade do produto são coletadas. Tanto o processo quanto o produto são quantitativamente compreendidos e controlados. 4 - CMM Cinco Níveis de Maturidade do Processo de Software - CMM • Definido (Nível 5): Um processo de melhoria contínua é ativado, tomando como base as medidas do processo de software e fazendo uso de idéias e tecnologias criativas e inovadoras. 4 - CMM Comportamento dos Níveis de Maturidade As principais características das organizações em cada um dos níveis do CMM são: • Nível 1 (Inicial) - Não possui um ambiente estável para desenvolvimento - Não existe um gerenciamento das práticas / atividades - Durante um crise a organização abandona os procedimentos planejados e parte para a codificação e teste. - Processo de software é imprevisível devido as constantes mudanças nas atividades de desenvolvimento. 4 - CMM Comportamento dos Níveis de Maturidade • Nível 2 (Repetível) - Políticas para gerenciar os projetos de software e os procedimentos para implementar estas políticas são estabelecidas. - Planejamento e o gerenciamento de novos projetos são baseados em experiências com projetos passados similares. - Compromissos reais (custo e prazo) podem são assumidos e cumpridos. - Sucessos passados são repetíveis. - Planejamento e acompanhamento dos projetos são estáveis. 4 - CMM Comportamento dos Níveis de Maturidade • Nível 3 (Definido) - Um Processo Padrão para desenvolver e manter o software na organização é documentado, incluindo tanto a engenharia de software quanto o gerenciamento do processo. - O processo é utilizado (e modificado quando necessário) para ajudar os gerentes e engenheiros técnicos a melhorar sua eficiência. - Há uma equipe responsável por cada atividade do processo de software. - Um programa de treinamento para toda a organização é implementado. 4 - CMM Comportamento dos Níveis de Maturidade • Nível 4 (Gerenciado) - A organização define quantitativamente objetivos de qualidade tanto para o produto quanto para o processo de software. - Produtividade e qualidade são mensurados, para todos os projetos da organização, como parte de um programa de mensuração da organizacional. - Um banco de dados sobre o processo de software da organização é utilizado para coletar e analisar as informações disponíveis. 4 - CMM Comportamento dos Níveis de Maturidade • Nível 5 (Otimizado) - Toda a organização foca em um processo contínuo de otimização (melhoramento) do processo de software. - A organização possui meios para identificar pontos fracos e fortalecer o processo de software pró-ativamente, isto com o objetivo de prevenir defeitos. - Dados sobre eficiência são utilizados para avaliar a relação custo-benefício de novas tecnologias e mudanças propostas. - Inovações para a engenharia de software são propostas e difundidas em toda a organização. 4 - CMM Entendendo os Níveis de Maturidade • O CMM é um modelo descritivo no sentido que descreve os atributos (chaves) essenciais que são necessários para caracterizar uma organização em um particular nível de maturidade. • É um modelo normativo no sentido que detalha as práticas convencionais e esperadas para uma organização que trabalha sobre grandes projetos em um contexto de contratos governamentais. • O CMM não é prescritivo, ou seja, não diz para a organização como melhorar, só que o que deve ser melhorado. 4 - CMM Entendendo os Níveis de Maturidade • É estimado que para uma organização passar de um nível para outro são consumidos dois anos. • Os Níveis 2 e 3 os focos principais são: definir, documentar e gerenciar o processo de software. • Nos níveis 4 e 5 o foco principal é melhorar, ou seja, otimizar o processo de software (ver figura seguinte). 4 - CMM Entendendo os Níveis 4 e 5 de Maturidade Entendendo os Níveis de Maturidade • A figura a seguir exemplifica, de forma abstrata, como ocorre o trabalho em cada um dos níveis de maturidade do CMM. 4 - CMM Entendendo os Níveis de Maturidade Otimização Atividades de Chaves Controle / Avaliação Etapa do Processo Entendendo os Níveis de Maturidade • Nenhum Nível do CMM pode ser ignorado. Um nível fornece a base para que o outro possa ser aplicado. • Contudo, é perfeitamente viável e necessário que uma organização faça uso de processos definidos nos níveis mais altos de maturidade. • Esta necessidade vem do fato de processos referentes à: engenharia de requisitos, análise, projeto e testes só venham a aparecer nos níveis mais elevados de maturidade, nem por isso, estes processos deixam de existir em um organização locada nos níveis mais inferiores do CMM. 4 - CMM Estrutura Interna dos Níveis de Maturidade • Cada Nível de Maturidade é decomposto em partes constituintes. • Cada Nível de Maturidade é composto por várias Áreas-Chave de Processo. • Cada Área-Chave de Processo é organizada em cinco seções chamadas de Características Comuns. • As Características Comuns especificam Práticas Chaves que vão ao encontro dos objetivos gerais da Área-Chave de Processo. 4 - CMM Estrutura Interna dos Níveis de Maturidade Áreas-Chave de Processo • Exceto para o Nível 1 de Maturidade, todos os Níveis são divididos em Áreas-Chave de Processo que indicam as áreas que uma organização irá se concentrar para melhorar seu processo de software. • Áreas-Chave de Processo identifica os assuntos (temas) que devem ser endereçados para se alcançar o nível de maturidade. • Cada Área-Chave de Processo identifica um grupo (cluster) de atividades relacionadas que, quando executadas corretamente, conduzem a uma melhor capacidade do processo. 4 - CMM Áreas-Chave de Processo • Os caminhos (como fazer) para se alcançar os objetivos de uma Área-Chave de Processo podem ser diferentes para cada organização ou para cada projeto. • Todos os objetivos de uma Área-Chave de Processo devem ser alcançados para que uma organização satisfaça tal Área-Chave. • A seguir são listadas todas as Áreas-Chave de Processo: 4 - CMM Áreas-Chave de Processo 4 - CMM Áreas-Chave de Processo 4 - CMM Áreas-Chave de Processo 4 - CMM Áreas-Chave de Processo 4 - CMM Áreas-Chave de Processo • Para se alcançar um Nível de Maturidade, todas as Áreas-Chave de Processo do mesmo devem ser satisfeitas. • Exercício: Compreender e explicar cada uma das Áreas-Chave de Processo do CMM? 4 - CMM Características Comuns • Características Comuns são atributos que indicam se a implementação e institucionalização de uma Área-Chave de Processo é efetiva, repetível e duradoura. • Sempre existem 5 Características Comuns para cada Nível de Maturidade. 4 - CMM Características Comuns As 5 Características Comuns são: • Compromissos (Commitment to Perform): Descreve ações que a organização deverá tomar para garantir que o processo seja estabelecido e duradouro. Tipicamente envolve estabelecer políticas organizacionais e patrocinar um gerenciamento. 4 - CMM Características Comuns • Habilidades (Ability to Perform): Descreve pré-condições que devem existir para implementar completamente o processo de software. Tipicamente envolve recursos, estrutura organizacional e treinamento. 4 - CMM Características Comuns • Atividades (Activities Performed): Descrevem regras e procedimentos necessários para implementar uma Área-Chave de Processo. Tipicamente envolve estabelecer planos e procedimentos para executar, acompanhar e tomar medidas corretivas sobre o trabalho. 4 - CMM Características Comuns • Medir e Analisar (Measurament and Analysis): Descreve a necessidade de medir o processo e avaliar esta medida. Tipicamente inclui exemplos de medidas que podem indicar o status de progresso e efetividade de uma atividade. 4 - CMM Características Comuns • Verificando a Implementação (Verifying Implementation): Descreve os passos para garantir que as atividades são executadas em conformidade com o processo que foi estabelecido. Tipicamente envolvem revisões e auditoria para garantir a qualidade e a gerência do processo. 4 - CMM Práticas Chaves • Cada Área-Chave de Processo é descrita em termos das Práticas Chave que contribuem para satisfazer seus objetivos. • As Práticas Chave descrevem a infra-estrutura e as atividades que mais contribuem para a efetiva implementação e institucionalização das Áreas-Chave de Processo. • Cada Prática Chave é constituída de uma única sentença, normalmente seguida por um descrição detalhada, na qual pode incluir exemplos e elaborações. 4 - CMM Práticas Chaves • As Práticas Chave (Práticas de Baixo Nível) declaram políticas fundamentais, procedimentos e atividades para a Área-Chave. • Cada Prática Chave é descrita através de seus componentes, denominados de Sub-práticas Chave. • As Práticas Chave definem o que deve ser feito, mas não endereçam como isso será alcançado. 4 - CMM Práticas Chaves Utilizando o CMM • Existem dois métodos (desenvolvidos pela SEI) para visualizar a maturidade da execução de um Processo de Software de uma organização: 1) Medida do Processo de Software: é utilizado para determinar o estado de um atual Processo de Software e para determinar os pontos de mais alta prioridade a serem implementados para que a organização melhore seu Processo de Software. 4 - CMM Utilizando o CMM • continuação ... 2) Avaliação da Capacidade de Software: utilizado para identificar contratantes que são qualificados para desenvolver um software ou para monitorar o estado atual de um Processo de Software Utilizado. 4 - CMM Utilizando o CMM • Os objetivo destes métodos são completamente diferentes, apesar de suas aplicações não possuírem diferenças tão sensíveis. • O CMM estabelece uma estrutura comum de referência para executar os dois métodos supracitados. • A figura a seguir apresenta os passos comuns a serem executados em ambos os métodos: 4 - CMM Aplica-se o Questionário de Maturidade Time visita o local; Entrevistas são realizadas para compreender resultados Utilizando o CMM Registra respostas; identifica áreas a serem exploradas Documenta pontos fortes e fracos do processo É Estabelecido um Perfil para KPA Utilizando o CMM Utilizando o CMM Maturity Questionary (MQ) – Questionário de Maturidade • É um conjunto de perguntas com respostas objetivas, respostas estas que devem ser acompanhadas por justificativas e comentários. • Estas perguntas são locadas dentro de seções, uma para cada KPA (todas as KPA’s de todos os níveis são contempladas). • Nem toda Prática Chave é contemplada diretamente através de uma pergunta do Questionário de Maturidade. 4 - CMM Utilizando o CMM Maturity Questionary (MQ) – Questionário de Maturidade 4 - CMM Utilizando o CMM Maturity Questionary (MQ) – Questionário de Maturidade • Foi projetado para ser respondido em 1 hora. Por isso, não contempla todas as Práticas Chaves diretamente. • Cada entrevistado responderá a somente um sub-conjunto das questões, que se apliquem ao seu contexto de trabalho. 4 - CMM Somente um subconjunto das Práticas Base são utilizadas na Avaliação SPICE Categorias de Processo Processos Práticas Chaves Instrumentos de Medida Nível de Maturidade Características Comuns Sub-Indicadores de Processo Práticas Genéricas Indicadores de Processo A Organização define que Práticas Base são adequadas a ela CMM Estrutura mais fixa e rígida, não pode ser muito flexionada de acordo com os anseios da organização Práticas Chaves são dependentes do Nível de Maturidade QM é um ótima ferramenta para apoiar o processo de avaliação. Questionário de Maturidade Sub-Práticas Base Informações Complementares Futuras Direções do CMM • O que o CMM não cobre: - Não determina como selecionar, motivar e reter pessoas competentes. - Não endereça aspectos específicos de certos tipos de aplicações especialistas. - Não advoga a favor de tecnologias específicas. • Evolução: - O CMM atual será abandonado em três anos. O CMMI (CMM Integrated) irá substitui-lo. O CMMI segue o padrão e a estrutura incremental do SPICE, ou seja o CMMI está em conformidade com a arquitetura proposta pelo SPICE. 4 - CMM