GESTÃO DA QUALIDADE DE SOFTWARE Fernando L. F. Almeida [email protected] Gestão da Qualidade de Software Principais Modelos Capability Maturity Model Integration (CMMI) Team Software Process and Personal Software Process (TSP/PSP) Project Management Book of Knowledge (PMBOK) IT Service Management (ITIL) Expreme Programming e Métodos Ágeis (SCRUM e XP) Gestão da Qualidade de Software Paradoxo da Produtividade “é para jogar o computador no lixo?” (Exame Negócios, pag. 56, 04/04/01) Na década de 80, economistas norte-americanos como o Prêmio Nobel Robert Solow verificaram que, apesar de gastarem cada vez mais com computadores, as empresas e a economia como um todo não obtinham ganhos significativos de produtividade. Tal constatação ficou conhecida como paradoxo de Solow ou paradoxo da produtividade ! Gestão da Qualidade de Software Problemas dos Processos e Software “Prefiro deixar como está e atender ao prazo. Nós podemos corrigir o problema depois.” A agenda é primordial. As minhas promoções e aumentos são baseados unicamente em encontros agendados. “The botton line is schedule. My promotions and raises are based on meeting schedule first and foremost.” Gestão da Qualidade de Software Problemas dos Processos e Software Perda do foco no objetivo (compromisso) Ausência de visibilidade durante o processo Surpresas constantes Problemas na qualidade Entrega fora do prazo Problemas de última hora Alteração de custos durante o processo Retrabalho Os requisitos do cliente não foram implementados correctamente Pedidos adicionais pós entrega Insatisfação Frustração Quem é o responsável? Gestão da Qualidade de Software CMMI – Visão Geral O SW-CMM (Capability Maturity Model for Software) é um modelo de capacitação de processos de software, desenvolvido pelo SEI (Software Engineering Institute) e patrocinado pelo Departamento de Defesa Americano (DoD), para a avaliação da capacidade dos fornecedores de software deste último. Em 1999, foi publicado o esboço (draft), versão 0.2: CMMI-SE/SW (Capability Maturity Model -Integrated – System / Software Engineering). Objetivo Principal: guiar organizações a conhecerem e melhorarem seus processos de software. Identifica práticas para um processo de software maduro, definindo as características de um processo de software efetivo. Gestão da Qualidade de Software CMMI – Objectivos Além da integração dos modelos e redução dos custos com melhorias de processo, os seguintes objetivos também fazem parte do projeto CMMI: Aumento do foco das atividades Integração dos processos existentes Eliminar inconsistências Reduzir duplicações Fornecer terminologia comum Assegurar consistência com a norma ISO 15504 e ISO 9001 Flexibilidade e extensão para outras disciplinas Gestão da Qualidade de Software CMMI – Representação Há duas formas de representar modelos CMMI Por etapas Contínuo Uma representação adequada permite que a organização siga caminhos diferentes no processo de melhoria A organização e a apresentação dos dados são diferentes em cada representação. Porém, o conteúdo é o mesmo. Gestão da Qualidade de Software CMMI – Representação Gestão da Qualidade de Software CMMI – Representação Gestão da Qualidade de Software CMMI – Capability Levels Um Capability Level é um nível de evolução bem definido que descreve a capacidade da organização em relação a uma determinada area do processo Há seis níveis de evolução (Capability Levels) Cada nível é uma camada de fundamentos para o processo contínuo de melhoria Logo, os Capability Levels são acumulativos (i.e., a higher capability level includes the attributes of the lower levels) Gestão da Qualidade de Software CMMI – Capability Levels Gestão da Qualidade de Software CMMI – Nível 1 (inicial) O processo de software é caracterizado como sendo imprevisível e ocasionalmente caótico. Poucos processos são definidos e o sucesso depende de esforços individuais e, muitas vezes, heróicos. O processo de software é uma caixa preta, de forma que somente as entradas e os produtos finais podem ser vistos com clareza. Gestão da Qualidade de Software CMMI – Nível 1 (inicial) Organizações no nível 1 apresentam deficiências de planeamento e enfrentam dificuldades ao realizarem previsões. Cronogramas e planos são irrealistas. Como não há credibilidade no planeamento, mesmo aquilo que foi planeado não é seguido. Não há controle de requisitos e o cliente só os avalia na entrega do produto. É comum passar diretamente dos requisitos à codificação. A documentação é encarada como algo inútil. São comuns reações intransigentes à recolha de dados e ao uso de padrões, documentação e ferramentas. Gestão da Qualidade de Software CMMI – Nível 2 (Repetível) Processos básicos de gestão de projetos são estabelecidos para controle de custos, prazos e escopo. É possível repetir sucessos de projetos anteriores em aplicações similares. Ao invés do processo ser uma única caixa preta, ele passa a ser uma sequência de caixas pretas que asseguram a visibilidade em determinados pontos, os marcos do projeto. Gestão da Qualidade de Software CMMI – Nível 2 (Repetível) Neste nível, organizações têm maior probabilidade de cumprir compromissos de requisitos, prazos e custos, mas desde que sejam semelhantes a outros realizados anteriormente. A organização é disciplinada, mas não está bem preparada para mudanças. Há preocupação com a gestão do projeto. Os gestores acompanham custos, cronogramas e funcionalidades de cada um dos projetos. Porém, a gestão ainda não é pró-ativa, tomando ações normalmente quando se está diante de uma crise. Controla-se a evolução dos requisitos, permitindo avaliações ao final de cada marco do projeto, e controla-se, também, a evolução das configurações do software. Gestão da Qualidade de Software CMMI – Nível 3 (Definido) Um processo de software, composto por atividades de gestão e engenharia, é documentado, padronizado e integrado em um processo de software padrão da organização. Todos os projetos utilizam uma versão aprovada e adaptada do processo organizacional para desenvolvimento e manutenção de software. A organização interna das tarefas está definida e visível Gestão da Qualidade de Software CMMI – Nível 3 (Definido) Processos utilizados são estabelecidos e padronizados em toda a organização. Os processos pertencem à organização e não aos projetos. Apesar da padronização, é possível adaptar os processos para as necessidades particulares de um projeto. Processos de engenharia de software são considerados ao lado dos processos de gestão. A organização consegue se manter dentro do processo mesmo em períodos de crise. Como o processo é bem definido, caso um programador abandone o projeto antes de seu término, o impacto é relativamente menor que nos níveis anteriores. Passagem do nível 2 para o 3: a padronização já realizada garante a oportunidade de escolher as melhores práticas existentes na organização. Gestão da Qualidade de Software CMMI – Nível 4 (Gerenciado) Métricas detalhadas do processo de software e da qualidade do produto são recolhidas. Tanto o processo como o produto de software são quantitativamente compreendidos e controlados. Gestão da Qualidade de Software CMMI – Nível 4 (Gerenciado) A organização estabelece metas quantitativas de qualidade e produtividade para as atividades do processo e para os produtos produzidos. Medidas de qualidade e produtividade são recolhidas em todos os projetos como parte de um processo organizacional de medição e estabelecem uma base quantitativa para que os gestores possam avaliar o progresso do desenvolvimento e a ocorrência de problemas. Os projetos melhoram o seu controle sobre os produtos e processos e a variância das medidas é diminuída. É estabelecido o controle estatístico de processos. Uma organização no nível 4 passa a ter uma gestão feita com bases quantitativas. Gestão da Qualidade de Software CMMI – Nível 5 (Otimizado) A melhoria contínua do processo é estabelecida por meio de sua avaliação quantitativa, e da implantação planeada e controlada de tecnologias e ideias inovadoras. Gestão da Qualidade de Software CMMI – Nível 5 (Otimizado) A organização está compormetida na melhoria contínua de seus processos, possuindo meios para identificar fraquezas e fortalecer o processo de forma pró-ativa, prevenindo defeitos. O entendimento do processo ultrapassa os processos praticados, possibilitando compreender os efeitos de alterações potenciais no processo. Melhorias em processos e tecnologias são planeados e executados como parte das atividades de rotina. Mudanças mais significativas de processos ou de tecnologias são feitas a partir de análises de custo / benefício com base em dados quantitativos cuja recolha iniciou-se no nível 4. Gestão da Qualidade de Software CMMI – Visão geral Níveis de Maturidade 5 Otimizado Foco na melhoria do processo Gerenciado 4 Processo medido e controlado Definido 3 Processo pró-ativo e caracterizado para a organização Repetível 2 Processo caracterizado para projetos e frequentemente reativo 1 Processo imprevisível, pouco controlado Inicial Gestão da Qualidade de Software CMMI – Utilização Prática 1. 2. 3. 4. 5. 6. 7. 8. Melhoria do planeamento do projecto Ciclo de gestão do tempo melhorado Produtividade agregada Qualidade melhorada Satisfação do cliente agregada Satisfação da equipa agregada Retorno do investimento (ROI) melhorado Custo de qualidade reduzido Gestão da Qualidade de Software CMMI – Utilização Prática Gestão da Qualidade de Software PSP – Personal Software Process Introduz técnicas para o estimativa de tamanho do software e esforço (PROBE) Planeamento de tarefas e cronograma Relatório para registro dos dados de teste Gestão da Qualidade de Software PSP – Personal Software Process Planning Direct Feedback 2 3 4 5 6 7 8 9 10 Defects/KLOC Pro je c t Numbe r 10 9 8 7 6 5 4 3 2 1 0 y vit 10 20 30 40 50 Productivity Trend 40 LOC/Hour Project Data 30 20 10 0 -10 -20 -30 1 2 3 4 5 6 7 8 Project Number 9 10 60 Percent Early Defect Removal Time Estimating Accuracy % Estimate Error Analysis Synthesis 200 180 160 140 120 100 80 60 40 20 0 1 ti uc Data Best of Practices Lessons Learned Practice Product Development Process Quality od Pr Experience process o Pr ty ali u Q ct du Project Number Product Defects Tracking 45 40 35 30 25 20 15 10 5 0 1 2 3 4 5 6 7 8 Project Number 9 10 70 Gestão da Qualidade de Software PSP – Estrutura Gestão da Qualidade de Software PSP – Exemplo Gestão da Qualidade de Software PSP – Exemplo Gestão da Qualidade de Software PSP – Será completo? Gestão da Qualidade de Software PSP – Será completo? Pessoas trabalham em grupo Integração e planeamento de etapas de desenvolvimento Necessidade de estimativas compostas Gestão da Qualidade de Software TSP – Visão Geral TSP é um framework para produção de software processo produto trabalho em equipe planeamento e gestão do projeto. Métodos prontos para otimizar a duração e gestão do projeto Voltado para a formação de equipas de desenvolvimento de alta produtividade Focado em métricas e inspeções Gestão da Qualidade de Software TSP – Visão Geral PSP Habilidade Individual Metricas individuais Disciplina Estimativa e Planeamento Gestão da Qualidade Acompanhamento Disciplina Individual TSP Formação da Equipe (Team Launch) TSP Gestão Objetivos do Projeto Comunicacao Planos de Qualidades Análise de Riscos Relatório final Disciplina da Equipe Equipe Integrada Gestão Das Actividades Gestão da Qualidade de Software TSP – Visão Geral Gestão da Qualidade de Software TSP – Pontos fortes Formação de uma equipe coesa, que busca um objetivo comum Suas práticas melhoram a gestão do projeto Completamente alinhado com o SW-CMM, funcionando como “catalisador” Gestão da Qualidade de Software TSP – Pontos fracos Requer formação prévia em Personal Software Process (PSP) Não possui modelos de documentos Não entra em detalhes sobre a execução das atividades