Qualidade de Software CMM Uma Visão Geral 1 Sumário O que é o CMM Os 5 Niveis de Maturidade do CMM Caracterização Comportamental dos Níveis de Maturidade As inspirações do CMM 2 Qualidade de Software PROCESSO DE SOFTWARE requisitos de software produto Processo de Desenvolvimento usuário desenvolvedor organização requisitos atendidos SOFTWARE PRODUTO SOFTWARE COM QUALIDADE 3 Melhoria de Processo de Software Abordagem IDEAL Processo é examinado pela 5 ALAVANCAGEM Ações futuras 1 INICIALIZAÇÃO Avaliação do Processo Melhoria do Processo 4 Teste Piloto Soluçã o Recomen -dações Plano de Ação 3 DIRETRIZES Refinamento REALIZAÇÃO Estado Atual e Desejado DIAGNÓSTICO conduz à Implementação InfraEstímulo Contexto e Estrutura Patrocínio 2 Analisar/ Validar Prioridades Abordagem A abordagem IDEAL descreve as fases, atividades e recursos necessários para uma melhoria de processo com sucesso. 4 Abordagem IDEAL Ações futuras 1 INICIALIZAÇÃO InfraEstímulo Contexto e Patrocínio Estrutura 2 DIAGNÓSTICO CMM 4 Analisar/ Validar Prioridades 5 Implementação REALIZAÇÃO Estado Atual e Desejado Recomendações 3 DIRETRIZES ALAVANCAGEM Refinamento Teste Solução Piloto Plano de Ação Abordagem 5 O que é o CMM? Uma estrutura que descreve os elementos chaves de um processo de software eficaz. Um caminho de melhoramento evolucionário (5 níveis de maturidade) para organizações de software mudarem de um processo de software imaturo, ad hoc, para um processo maduro, disciplinado. 6 CMM - Capability Maturity Model Capability Maturity Model (Modelo de Maturidade da Competência) Maturidade da Competência : competência em controlar o Processo de Software (desenvolvimento, gerenciamento e manutenção). Maturidade da Competência Processo de Software Maturidade do 7 Maturidade de Processo de Software A maturidade dos processos de software de uma organização influencia na sua capacidade de atingir metas de custo, qualidade e cronograma A qualidade do processo de software pode ser analisada através do nível de maturidade do processo. 8 CMM - Capability Maturity Model desenvolvido pela SEI (Instituto de Engenharia de Software) Carnegie Mellon University, Pittsburgh, PA Missão da SEI: Exercer liderança nos estágios avançados da prática de engenharia de software para melhorar a qualidade de sistemas que dependam de software. SEI Software Engineering Institute 9 A Evolução do CMM (a) 1986 - início do desenvolvimento de um modelo de maturidade de processo, para ajudar as organizações a melhorar seus processos de software (por solicitação do governo federal). junho 1987 - liberação de breve descrição do modelo de maturidade de processo de software. setembro 1987 - versão preliminar do questionário de maturidade 1991 - 1a versão do CMM (Versão 1.0) 10 A Evolução do CMM (b) 1993 - depois de 5 anos de experiência, o modelo de maturidade evoluiu para um modelo completamente definido, usando conhecimento adquirido das avaliações de processo de software e de extensivo retorno das indústrias e do governo CMM • fevereiro 1993 - Versão 1.1 do CMM - Capability Maturity Model for Software (atualmente usada) 11 Premissa Básica Premissa básica que está por baixo do trabalho da SEI sobre maturidade de processo: A qualidade de um software produto é profundamente determinada pela qualidade do processo de desenvolvimento e de manutenção usado para construí-lo. 12 Visão Geral do Modelo (a) SEI desenvolveu um modelo de 5 níveis que orienta uma organização em como “amadurecer” seus processos de software. O modelo descreve um caminho evolucionário que vai de um processo indisciplinado para um processo disciplinado. Sem a disciplina descrita no modelo, programas de melhoria podem mostrar-se ineficientes porque os fundamentos necessários para apoiar os mnelhoramentos sucessivos não foram estabelecidos. 13 Visão Geral do Modelo (b) Os 5 níveis de maturidade descrevem fundamentos sucessivos para melhoria contínua do processo e definem uma escala ordinal para medir a maturidade de processo de uma organização. As vantagens dos níveis de maturidade é que eles fornecem prioridades claras, as quais orientam na seleção de algumas atividades de melhoramento que serão muito úteis se implementadas imediatamente. Isso é importante porque a maioria das organizações podem focalizar somente algumas poucas atividades de melhoramento de cada vez. 14 Os 5 Níveis de Maturidade do CMM OTIMIZADO Organizações com Melhoria Contínua GERENCIADO DEFINIDO REPETÍVEL INICIAL Organizações Previsíveis Organizações Padronizadas Organizações Disciplinadas Organizações Caóticas 15 CMM: Nível 1 de Maturidade • O processo de software é caracterizado como ad hoc, e ocasionalmente até mesmo caótico. INICIAL Organizações Caóticas • Poucos processos são definidos e o sucesso depende de esforços individuais e heróicos. 16 CMM Nível 1- Inicial O Gerenciamento de Software é uma Caixa Preta In Out Requisitos fluem para dentro. Um produto de software é (normalmente) produzido através de algum processo disforme. O produto flui para fora e (espera-se) funciona. 17 CMM - Nível 1 - Inicial Organizações Caóticas A organização não provê um ambiente estável para o desenvolvimento e manutenção de software Cronogramas e orçamentos são frequentemente abandonados por não serem baseados em estimativas realísticas Numa crise para cumprir cronograma, etapas planejadas do ciclo de vida não são realizadas prejudicando a qualidade do software 18 CMM - Nível 1 - Inicial Organizações Caóticas Desempenho basicamente em função da competência e heroísmo das pessoas que fazem o trabalho. O processo de software é imprevisível, já que é constantemente alterado no decorrer do projeto Os maiores problemas com os quais se defrontam as organizações de software são gerenciais e não técnicos. 19 CMM: Nível 2 de Maturidade • Processos administrativos básicos são estabelecidos para acompanhar custo, cronograma e funcionalidade. • A disciplina de processo está REPETÍVEL em repetir sucessos anteriores Organizações em projetos com aplicações Disciplinadas similares. 20 CMM Nível 2- Repetível Está em vigor um Sistema de Gerenciamento de Projeto In Out Processo de construção de software é uma série de caixas pretas com pontos de verificação definidos. 21 CMM - Nível 2 - Repetível Organizações Disciplinadas Caracterizado pela existência de um processo efetivo de planejamento e gerenciamento do projeto de software onde os controles sobre os procedimentos, compromissos e atividades são bem fundamentados. Os processos de planejamento e gerenciamento do projeto de software devem ser praticados na organização, documentados, treinados e controlados. Neste nível ainda não há preocupação com o processo de engenharia de software 22 CMM - Nível 2 - Repetível Organizações Disciplinadas O planejamento e gerenciamento de novos projetos são baseados na experiência obtida com projetos similares, que tenham obtido sucesso no passado Um fator relevante para a organização nesse nível é a dependência das experiências anteriores. O desenvolvimento de novos tipos de produtos pode causar um desequilíbrio no projeto, nas estimativas de custos e nos cronogramas 23 CMM: Nível 3 de Maturidade • Os processos de software, tanto para atividades administrativas quanto para de engenharia estão documentados, DEFINIDOpadronizados e integrados em um processo de software padrão Organizações Padronizadas para a organização. • Todos os projetos usam uma versão aprovada do processo de software padrão da organização para desenvolvimento e manutenção de software. 24 CMM Nível 2- Repetível Desenvolvimento de software de acordo com um processo bem definido In Out Funções e responsabilidades no processo são bem entendidas. A produção do produto de software é visível através do processo de software. 25 CMM - Nível 3 - Definido Organizações Padronizadas Caracterizado principalmente pela existência de um processo de engenharia de software bem definido, documentado e padrão para a empresa. As saídas de uma atividade fluem naturalmente para as entradas da próxima atividade Cada projeto de software utiliza o processo padrão da organização como base para implementar seu próprio processo. 26 CMM - Nível 3 - Definido Organizações Padronizadas Existe um grupo para processos de software (SEPG) responsável por facilitar atividades de definição e melhoria de processos. Existe um programa de treinamento que assegura que todos tenham o conhecimento e a capacidade requerida para desenvolver suas tarefas, utilizando as ferramentas e os métodos disponíveis Processos que dêem poderes as pessoas para realizarem o trabalho 27 CMM: Nível 4 de Maturidade GERENCIADO • São coletadas medidas detalhadas da qualidade do processo e do produto. Organizações Previsíveis • Tanto o processo de software quanto os produtos são quantitativamente compreendidos e controlados. 28 CMM Nível 4- Gerenciado Produto e processo são gerenciados quantitativamente In Out A gerência tem bases objetivas para tomada de decisão. A gerência é capaz de prever o desempenho dentro de limites quantificados. 29 CMM - Nível 4 - Gerenciado Organizações Previsíveis Caracterizado pela existência de processos de software passíveis de medida. A produtividade e a qualidade são medidas em todas as etapas do processo de software e para todos os projetos da organização. O controle sobre produtos e processos de todos os projetos são adquiridos através da diminuição da variação do seu desempenho para dentro de limites quantitativos aceitáveis. 30 CMM - Nível 4 - Gerenciado Organizações Previsíveis A organização começa a aplicar métricas de controle de qualidade para aumentar a qualidade e a produtividade do software entregue aos clientes. À medida que a organização adquire mais conhecimento sobre o produto, tem a oportunidade de remover várias fontes de comprometimento da qualidade final Isto proporciona a oportunidade de colocar o produto sob um controle estatístico de qualidade. 31 CMM: Nível 5 de Maturidade OTIMIZADO Organizações com Melhoria Contínua • Melhorias contínuas são realizadas no processo, utilizando-se as medidas quantitativas de qualidade do processo e produto, e também aplicando-se idéias e tecnologias inovadoras. 32 CMM Nível 5- Otimizado Foco na melhoria contínua do processo In Out Mudança disciplinada é um meio de vida. 33 CMM - Nível 5 - Otimizado Melhoria Contínua Caracterizado pela existência de processos de software com contínua melhoria. Os processos de software são avaliados para prevenir tipos de defeitos conhecidos devido à recorrência, e as lições aprendidas são disseminadas para outros projetos. Tecnologias que proporcionem mais retorno para processos específicos, utilizados pela organização, são selecionadas para serem introduzidas, de maneira gerenciável na organização. 34 CMM - Nível 5 - Otimizado Melhoria Contínua Apesar de o processo ser maduro, ele é alvo de contínuas melhorias. Os grupos de projetistas analisam o rendimento do projeto para determinar as causas dos defeitos. Nesse nível foi atingido um ambiente de excelência em engenharia de software 35 Níveis de maturidade não podem ser omitidos Processos dos níveis mais altos de maturidade podem ser realizados até mesmo por organizações do nível 1 (embora talvez ineficazmente). Competência em processos é construída em estágios, uma vez que alguns processos não são eficazes quando outros não estão estáveis. Cada nível oferece um fundamento necessário para melhorias a serem implementadas no nível seguinte. 36 Níveis de maturidade não podem ser omitidos Sem a disciplina de gerenciamento o processo de engenharia é sacrificado. Medidas detalhadas são inconsistentes sem um processo definido. O efeito de inovação de processo não é claro em um processo cheio de ruído. 37 CMM: capacidade x pessoas, tecnologia e medidas Otimizado (5) Foco na melhoria contínua do processo Gerenciado (4) Processo medido e controlado Definido (3) Processo é caracterizado e claramente bem entendido Repetível (2) Pode repetir tarefas executadas com sucesso Inicial (1) Pobremente controlado e imprevisível 38 CMM: Capacidade x Pessoas Nível 1 sucesso depende de heróis individuais “apagando incêndio” é o modo de viver relacão entre disciplinas são descordenadas e até adversas Nível 2 sucesso depende de indivíduos, apoio administrativo comprometi mentos são compreendidos e administrados Nível 3 Nível 4 Nível 5 grupos de projeto trabalham juntos forte senso de trabalho em equipe dentro de cada projeto forte senso de trabalho em equipe na organização treinamento é planejado e de acordo com os papéis todos estão envolvidos na melhoria do processo as pessoas são treinadas 39 CMM: Capacidade x Tecnologia Nível 1 Nível 2 Nível 3 Nível 4 Nível 5 introdução de nova tecnologia é um risco tecnologia apoia atividades estáveis e estabelecidas novas tecnologias são avaliadas em bases qualitativas novas tecnologias são avaliadas em bases quantitativas novas tecnologias são procuradas e desenvolvidas 40 CMM: Capacidade x Medidas Nível 1 coleta de dados e análise são feitas ad hoc Nível 2 dados de administração e planejamento usados em projetos individuais Nível 3 dados são coletados e usados em todo processo definido dados são compartilhados ao longo do projeto Nível 4 definição e coleta de dados padronizados na organização dados são usados para compreender o processo quantitativamente e estabilizá-lo Nível 5 dados são usados para avaliar e selecionar melhorias de processo 41 As Inspirações do CMM A estrutura do modelo de maturidade de processo de software está baseada nos princípios de qualidade de produto que existem há 60 anos. 1940 - Shewart (AT&T) promulgou os princípios de controle estatístico de qualidade. Os princípios de Shewart foram posteriormente desenvolvidos e demonstrados com sucesso no trabalho de Deming e Juran. O trabalho desses pioneiros princípios do TQM (Total Quality Management) 42 A reação em cadeia de Deming A qualidade do produto melhora O custo diminui devido a menos re-trabalho, menos problemas, menos demora, melhores projetos uso eficiente de recursos e materiais. A capacidade melhora. O mercado é conquistado devido a melhores produtos e preços menores Lucro e mais serviço é conseguido Permanência no negócio 43 Adaptação da reação em cadeia de Deming ao Projeto de Software A organização amadurece O processo de software torna-se melhor definido e mais consistemente implementado através da organização. Software com maior qualidade , aumento de produtividade, menos re-trabalho, melhores planos e melhor administração de projeto de software 44 Gerenciamento da Qualidade Total Gerenciamento da Qualidade Total (TQM) é a aplicação de métodos quantitativos e recursos humanos para melhorar : - o material e serviços fornecidos por uma organização - todos os processos dentro de uma organização - o nível de atendimento das necessidades do cliente , no presente e no futuro 45 Princípios do TQM adaptados no Modelo CMM O CMM estabelece, durante os estágios iniciais, a administração do projeto e os fundamentos de engenharia e durante os estágios mais avançados de maturidade, o controle quantitativo do processo de software. 46 Aplicando TQM ao Software Organização Projeto A Projeto B Projeto X Projeto C TQM hardware software CMM O processo de melhoria se aplica em todo o contexto do negócio - o CMM se aplica especificamente ao software. 47 Pontos Comuns no Movimento da Qualidade Melhoria tem o seu foco em ajustar o processo e não em culpar as pessoas. Melhoria deve ser medida e ter sua implementação periodicamente controlada. Melhoria requer constância de investimentos, recompensas e incentivos. Melhoria é um processo contínuo. Se o nível de desconforto não é suficientemente alto, as coisas não mudarão. 48 Motivação para o CMM Comunicar a visão de: • o que significa modelo de maturidade • como ele resulta em melhoria da qualidade • como ele faz a relação entre maturidade de processo e competência (capacitação) Fornecer fundamento para: • dar suporte à avaliações baseadas no CMM • testar e aperfeiçoar o modelo de maturidade 49