Prévia do material em texto
MODELO DE MATURIDADE DE SOFTWARE 1 Aula 6: Modelos de medição de software PSM e CMM................................................................ 2 Introdução ............................................................................................................................. 2 Conteúdo ................................................................................................................................ 3 PSM (Practical Software Measurement) ......................................................................... 3 Utilização do PSM .............................................................................................................. 4 Modelos do PSM ................................................................................................................. 4 Modelo de informação ..................................................................................................... 4 Conjunto de medidas do PSM ......................................................................................... 5 SW-CMM (Capability Maturity Model for Software) .................................................... 7 CMMI .................................................................................................................................... 8 Níveis de maturidade do SW-CMM ................................................................................ 9 Atividade proposta .......................................................................................................... 15 Referências........................................................................................................................... 16 Exercícios de fixação ......................................................................................................... 16 Chaves de resposta ..................................................................................................................... 19 Aula 6 ..................................................................................................................................... 19 Exercícios de fixação ....................................................................................................... 19 MODELO DE MATURIDADE DE SOFTWARE 2 Introdução Esta aula tem como tema principal a medição como base para a melhoria de processos. O processo de desenvolvimento de software é uma atividade complexa e requer controle e monitoração em todas as suas fases. O gerenciamento de projeto de software exige um processo de medição que identifique desvios e forneça indicadores que levem à melhoria dos processos e dos produtos. Para isso, é necessário definir um modelo de maturidade de processo. Objetivo: 1. Conhecer o PSM (Practical Software Measurement); 2. Aprender sobre CMMI. MODELO DE MATURIDADE DE SOFTWARE 3 Conteúdo PSM (Practical Software Measurement) O PSM é um modelo para mensuração de projetos de software criado em 1994, sob o patrocínio do DoD (Departamento da Defesa Norte-Americano). O modelo foi elaborado e vem sendo atualizado por renomeados profissionais da área de Software Process Improvement, tais como John McGarry, David Card e Beth Layman. O PSM foi utilizado como base para elaboração da Process Área Meansurement and Analysis do CMMI (Capability Maturity Model - Integration ou Modelo de Maturidade em Capacitação - Integração) é uma evolução do CMM e procura estabelecer um modelo único para o processo de melhoria corporativo, integrando diferentes modelos e disciplinas). O que é o PSM? PSM é um modelo que estrutura a atividade de mensuração em um projeto de software; é um processo para medir e melhorar processos, projetos e produtos de software. Objetivos do PSM • Estabelecer um processo de medição dos projetos de software e gerenciamento dos sistemas; • Prover bases de informações e comunicações para tomada de decisão; • Estabelecer uma fundação para melhorar o gerenciamento organizacional e executivo. Um de seus diferenciais é que suporta integração de medidas organizacionais em seu processo de desenvolvimento e gerenciamento. MODELO DE MATURIDADE DE SOFTWARE 4 Utilização do PSM O PSM foi utilizado como base para elaboração da Process Area Meansurement and Analysis do CMMI (o CMMI é uma evolução do CMM e procura estabelecer um modelo único para o processo de melhoria corporativo, integrando diferentes modelos e disciplinas). Exemplos de organizações que participam ativamente do desenvolvimento do PSM são: Força Aérea, Exército e Marinha norte-americanos; Software Productivity Consortium; Boeing; GTE; Raytheon-Hughes; Lockheed-Martin; MITRE; Software Engineering Institute; Teraquest, TRW. Modelos do PSM O PSM é um modelo que estrutura a atividade de mensuração em um projeto de software é um processo para medir e melhorar processos, projetos e produtos de software. Em nível prático o PSM procura resolver dois problemas: Como especificar de uma maneira formal as medidas que deverão ser utilizadas no projeto, ou seja, os indicadores a serem usados; Como deverá ser conduzido o processo de medição. Para atingir tais objetivos, o PSM faz uso do modelo de Informação que fornecer um caminho para a seleção das medidas utilizadas. Vamos aprofundar melhor sobre o assunto a seguir. Modelo de informação O Modelo de Informação do PSM define uma estrutura para a definição das medidas que deverão ser utilizadas no projeto. Cada especificação é escrita por um membro do PSM e inclui os conceitos abaixo: • Atributo – propriedade relevante do ponto de vista das necessidades de informação. • Método – operação que mapeia o atributo para uma escala. MODELO DE MATURIDADE DE SOFTWARE 5 • Medida Básica – valor resultante da aplicação do método a um atributo. • Função – algoritmo combinando duas ou mais medidas básicas. • Medida Derivada – valor resultante da aplicação de uma Função. • Modelo – algoritmo combinando medidas e critérios de decisão. • Indicador – estimativa ou avaliação que provê uma base para tomada de decisão. Exemplo simples: Com o objetivo de obter estimativas de produtividade no desenvolvimento de software, poderíamos ter a aplicação do seguinte Modelo de Informação: Para cada projeto obter: • Atributos – horas trabalhadas no projeto. • Métodos – contar horas(obtendo o esforço do projeto), contar pontos de função (obtendo o tamanho funcional do projeto). • Medidas Básicas – esforço do projeto em horas, tamanho do projeto em pontos de função. • Função – dividir tamanho do projeto pelo esforço (obtendo Pontos de Função/Hora). A partir dos resultados obtidos para os projetos, obter: Indicador – média e intervalo de confiança a 2 desvios-padrões para a produtividade. Conjunto de medidas do PSM As medidas devem ser obtidas a partir das necessidades de informação. O PSM inclui um conjunto de medidas já utilizadas com sucesso pela indústria. As medidas correspondem a categorias previamente definidas. Assim, as métricas selecionadas serão agrupadas nas seguintes áreas: MODELO DE MATURIDADE DE SOFTWARE 6 Prazo e Progresso - relacionados ao cumprimento dos prazos do projeto. Exemplos: funcionalidades implantadas esforço despendido, milestones alcançados no prazo e fora do prazo, funcionalidades testadas, solicitações de mudanças, revisões. Recursos e custo - relacionados à adequação entre o trabalho a ser executado e os recursos alocados ao projeto. Exemplos: Esforço do desenvolvimento; custode pessoal; esforço médio para solução de defeitos; overhead organizacional, overhead de atividades não planejadas, viagens etc. Tamanho e Estabilidade do Produto - informações relacionadas à estabilidade das funcionalidades ou à capacidade requerida do software. Exemplos: tamanho em função da técnica de estimativas; estabilidade em função do número de mudanças/acréscimo/remoção de requisitos. Qualidade do produto - relacionada à capacidade do software produzido de atender sem falhas às necessidades do usuário. Exemplos: ciclo de vida do software; taxa de retrabalho; densidade de defeitos; complexidade do produto. Performance do Processo - relacionada à capacidade do processo de atender às necessidades apresentadas por cada projeto. Exemplos: produtividade; efetividades dos testes; efetividade de processos de revisões/inspeções; taxa de retrabalho; percentual de esforço por fase de desenvolvimento. Eficácia da Tecnologia - trata da viabilidade e adequação das alternativas técnicas propostas, incluindo reuso, maturidade e qualidade dos componentes. Satisfação do Cliente - relaciona-se ao grau em que os produtos e serviços ofertados atendem às expectativas dos clientes. MODELO DE MATURIDADE DE SOFTWARE 7 Exemplos: número e tipo de reclamações; questionário de satisfação; tempo de resposta para atividades de suporte ao cliente. SW-CMM (Capability Maturity Model for Software) SW-CMM (Capability Maturity Model for Software) é uma conjunto de melhores práticas para os processos de desenvolvimento e manutenção de software. Com o SW-CMM, é possível avaliar e identificar pontos de melhoria. O SW-CMM mede a maturidade do processo em cinco níveis: - Otimização; - Previsível; - Definido; - Gerenciado; - Inicial. O SW-CMM, portanto, é 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. Histórico do CMM • Início dos trabalhos deu-se em 1986, tendo sido publicada a versão 1.0 do SW-CMM em agosto de 1991; • Em fevereiro de 1993 foi publicada a versão 1.1; • Por ser específico para a área de software, o SW-CMM não contemplava outras áreas importantes das organizações, tais como Recursos Humanos e Engenharia de Sistemas; • Com o sucesso do SW-CMM, outros modelos semelhantes foram criados para outras áreas, tais como Gestão de Recursos Humanos (People-CMM), Aquisição de Software (SA-CMM) e Engenharia de Sistemas (SE-CMM); • Entretanto, os diversos modelos apresentavam estruturas, formatos e termos diferentes, dificultando sua aplicação conjunta. MODELO DE MATURIDADE DE SOFTWARE 8 Diversidade de Modelos e Padrões em diversas áreas: Software CMM Systems Security Engineering CMM Software Acquisition CMM Systems Engineering CMM People CMM Integrated Product Development CMM Problemas encontrados: • Diferentes estruturas, termos, e forma de medir; • Causa confusão, especialmente quando mais de um modelo é usado; • Difícil de integrar em um único programa de melhoria. CMMI O que é? O CMMI (Capability Maturity Model Integration) foi criado com a finalidade de integrar os diversos modelos CMM. Quando foi criado? Em 1999, foi publicado o esboço (draft), versão 0.2: CMMI-SE/SW (Capability Maturity Model -Integrated – System / Software Engineering). Quais versões? Versões do CMMI: • Versão 1.0: Agosto de 2000; MODELO DE MATURIDADE DE SOFTWARE 9 • Versão 1.1: Março de 2002; • Versão 1.2: Agosto de 2006 (CMMI for Development). SW-CMM Cada nível de maturidade, com exceção do primeiro, é composto por áreas-chave de processo (Key Process Areas – KPA). Cada KPA identifica atividades relacionadas que, quando executadas adequadamente, atingem determinados objetivos considerados importantes para o aumento da capacidade do processo. As KPA são os requisitos para a obtenção de um nível no CMM. As KPA são cumulativas, isto é, para uma organização atingir um determinado nível de maturidade, ela deve satisfazer todas as KPAs daquele nível e de seus inferiores. Cada KPA é descrita em termos de práticas-chave (Key Practices). Uma prática-chave descreve as atividades e a infraestrutura necessárias para a efetiva implementação e institucionalização de uma KPA. Uma prática-chave descreve “o quê” deve ser feito, e não “como” deve ser feito. Modelo de Maturidade de Capacitação para Software; 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. Descreve como as práticas de engenharia de software evoluem sob certas condições. Organiza os estágios de evolução da melhoria dos processos em cinco níveis de maturidade. Níveis de maturidade do SW-CMM Um nível de maturidade é um patamar evolutivo bem definido, que visa a alcançar um processo de software maduro. Os níveis são uma forma de priorizar as ações de melhoria, de tal forma que se aumente a maturidade do processo de software, no nível 2, por exemplo, são focados aspectos gerenciais dos projetos. Vamos aprofundar melhor em cada nível. MODELO DE MATURIDADE DE SOFTWARE 10 1 – Inicial Processo imprevisível e sem controle SW-CMM: 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, heroicos. • O processo de software é uma caixa preta, de forma que somente as entradas e os produtos finais podem ser vistos com clareza. • Organizações no nível 1 apresentam deficiências de planejamento e enfrentam dificuldades ao realizarem previsões. • Cronogramas e planos são irrealistas. • Como não há credibilidade no planejamento, mesmo aquilo que foi planejado 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 à coleta de dados e ao uso de padrões, documentação e ferramentas. 2 – Repetível Processo disciplinado SW-CMM: Nível 2 (Repetível) • Processos básicos de gerência 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. MODELO DE MATURIDADE DE SOFTWARE 11 • No Nível 2, 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 gerência do projeto. Os gerentes acompanham custos, cronogramas e funcionalidades de cada um dos projetos, porém, a gerência ainda não é proativa, tomando ações normalmente quando se está diante de uma crise. • Os projetos podem ter processos diferentes, no entanto, existe uma política para guiar os projetos no estabelecimento desses processos. 3 – Definido Processo consistente e padronizado SW-CMM: Nível 3 (Definido)• Um processo de software, composto por atividades de gerência 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. • Processos utilizados são estabelecidos e padronizados em toda a organização. • Os processos pertencem à organização e não aos projetos. • O Grupo de Processos (Software Engineering Process Group - SEPG) é responsável pelos processos da organização. • 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 gerenciais. • Há treinamento técnico e gerencial. • A organização consegue se manter dentro do processo mesmo em períodos de crise. MODELO DE MATURIDADE DE SOFTWARE 12 • Como o processo é bem-definido, caso um desenvolvedor 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 realizada é a oportunidade de escolher as melhores práticas existentes na organização. 4 – Gerenciado Processo previsível e controlado SW-CMM: Nível 4 (Gerenciado) • A organização estabelece metas quantitativas de qualidade e produtividade para as atividades do processo e para os produtos produzidos são estabelecidas para cada projeto. • Medidas de qualidade e produtividade são coletadas em todos os projetos como parte de um processo organizacional de medição e estabelecem uma base quantitativa para que os gerentes 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. • Métricas detalhadas do processo de software e da qualidade do produto são coletadas. • Tanto o processo como o produto de software são quantitativamente compreendidos e controlados. 5 – Otimizado Processo continuamente melhorado SW-CMM: Nível 5 (Otimizado) MODELO DE MATURIDADE DE SOFTWARE 13 A melhoria contínua do processo é estabelecida por meio de sua avaliação quantitativa e da implantação planejada e controlada de novas tecnologias. • A organização está engajada na melhoria contínua de seus processos, possuindo meios para identificar fraquezas e fortalecer o processo de forma proativa, 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 planejadas e executadas 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 coleta iniciou-se no nível 4. SW-CMM: Nível 1 (Inicial) Ilustração: SW-CMM: Nível 2 (Repetível) Ilustração: Entrada Saída MODELO DE MATURIDADE DE SOFTWARE 14 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. KPA do Nível 2 • Gerência de Requisitos • Planejamento de Projetos • Supervisão e Acompanhamento de Projetos • Gerência da Subcontratação de Software • Garantia da Qualidade de Software • Gerência de Configuração de Software SW-CMM: Nível 3 (Definido) Ilustração: KPA do Nível 3 • Foco no Processo da Organização • Definição do Processo da Organização • Programa de Treinamento • Gerência de Software Integrada • Coordenação entre grupos • Engenharia de Produtos de Software • Revisão por Pares SW-CMM: Nível 4 (Gerenciado) Ilustração: MODELO DE MATURIDADE DE SOFTWARE 15 KPA do Nível 4 Gerência Quantitativa dos Processos Gerência da Qualidade de Software SW-CMM: Nível 5 (Otimizado) Ilustração: KPA do Nível 5 Prevenção de Defeitos Gerência da Evolução dos Processos Gerência da Evolução das Tecnologias Atividade proposta Discuta com os colegas quais as ações que devem ser tomadas para que as organizações sejam homologadas com grau 5 no CMM. Chave de resposta: O CMMI procura estabelecer um modelo único para o processo de melhoria corporativo, integrando diferentes modelos e disciplina. MODELO DE MATURIDADE DE SOFTWARE 16 Referências PFLEEGER, Shari Lawrence. Engenharia de software – teoria e prática. 2. ed. São Paulo: Pearson (Livros Universitários), 2003. PRESSMAN, Roger S. Engenharia de software – uma abordagem profissional. 7. ed. São Paulo: MCGRAW-HILL BRASIL, 2011. SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson (Livros Universitários), 2011. Exercícios de fixação Questão 1 Os Objetivos do PSM são: I. Estabelecer um processo de medição dos projetos de software e gerenciamento dos sistemas. II. Prover bases de informações e comunicações para tomada de decisão. III. Estabelecer uma fundação para melhorar o gerenciamento organizacional e executivo. IV. Integração de medidas organizacionais em seu processo de desenvolvimento e gerenciamento. a) Apenas I, III b) Apenas I, II, IV c) Apenas II, III, IV d) Todas e) Apenas II, IV Questão 2 Sobre o PSM, indique Verdadeiro ou Falso. ( ) O PSM é um modelo para mensuração de projetos de software e hardware. ( ) O PSM foi criado em 1994, sob o patrocínio do DoD (Departamento da Defesa Norte-Americano). ( ) O modelo foi elaborado por profissionais da área de Software Process Improvement. MODELO DE MATURIDADE DE SOFTWARE 17 ( ) O PSM identifica desvios e fornece indicadores que levam à melhoria dos processos e dos produtos. ( ) O PSM estabelece um modelo único para o processo de melhoria corporativo, integrando diferentes disciplinas. a) F-V-V-V-V b) F-V-V-F-V c) V-F-V-V-F d) V-V-V-F-F e) F-V-F-F-V Questão 3 O Modelo _________________ do PSM define uma estrutura para a definição das medidas que deverão ser utilizadas no projeto. Cada especificação é escrita por um membro do PSM. a) sistêmico b) de projeto c) ISSO d) de informação e) de processo Questão 4 O Modelo de Informação do PSM define uma estrutura para a definição das medidas que deverão ser utilizadas no projeto. As métricas selecionadas serão agrupadas nas seguintes áreas: (Assinale a INCORRETA) a) Prazo e Progresso. b) Recursos e custo. c) Satisfação do cliente. d) Tamanho da organização. e) Qualidade do produto. MODELO DE MATURIDADE DE SOFTWARE 18 Questão 5 Qual métrica do PSM trata da viabilidade e adequação das alternativas técnicas propostas, incluindo reuso, maturidade e qualidade dos componentes? a) Eficácia da Tecnologia b) Satisfação do Cliente c) Performance do Processo d) Custo e) Recursos Questão 6 O nível 5 de maturidade do SW-CMM significa: a) Processo previsível e controlado. b) Processo consistente e padronizado. c) Processo disciplinado. d) Processo continuamente melhorado. e) Processo imprevisível e sem controle. Questão 7 O nível 4 de maturidade do SW-CMM significa:a) Processo previsível e controlado. b) Processo consistente e padronizado. c) Processo disciplinado. d) Processo continuamente melhorado. e) Processo imprevisível e sem controle. Questão 8 O nível 3 de maturidade do SW-CMM significa: a) Processo previsível e controlado. b) Processo consistente e padronizado. c) Processo disciplinado. d) Processo continuamente melhorado. e) Processo imprevisível e sem controle. MODELO DE MATURIDADE DE SOFTWARE 19 Questão 9 O nível 2 de maturidade do SW-CMM significa: a) Processo previsível e controlado. b) Processo consistente e padronizado. c) Processo disciplinado. d) Processo continuamente melhorado. e) Processo imprevisível e sem controle. Questão 10 O nível 1 de maturidade do SW-CMM significa: a) Processo previsível e controlado. b) Processo consistente e padronizado. c) Processo disciplinado. d) Processo continuamente melhorado. e) Processo imprevisível e sem controle. Aula 6 Exercícios de fixação Questão 1 - D Justificativa: Todas as afirmativas estão corretas. Vide Aula 06. Questão 2 - A Justificativa: O PSM é um modelo para mensuração de projetos de software apenas. As demais afirmativas estão corretas, conforme o conteúdo da Aula 6. Questão 3 - D Justificativa: Para atingir tais objetivos, o PSM faz uso do modelo de Informação que fornecer um caminho para a seleção das medidas utilizadas. O Modelo de Informação do PSM define uma estrutura para a definição das medidas que deverão ser utilizadas no projeto. Vide Aula 6. MODELO DE MATURIDADE DE SOFTWARE 20 Questão 4 - C Justificativa: Segundo a Aula 6, todas as alternativas estão corretas, exceto “Satisfação do cliente”, que deve ser medida pela gestão da qualidade. Questão 5 - A Justificativa: Segundo a Aula 06, a eficácia da tecnologia trata da viabilidade e adequação das alternativas técnicas propostas, incluindo reuso, maturidade e qualidade dos componentes. Questão 6 - D Justificativa: SW-CMM Nível 5 significa processos otimizados. A melhoria contínua do processo é estabelecida por meio de sua avaliação quantitativa e da implantação planejada e controlada de novas tecnologias. A organização está engajada na melhoria contínua de seus processos, possuindo meios para identificar fraquezas e fortalecer o processo de forma proativa, prevenindo defeitos. Questão 7 - A Justificativa: SW-CMM: Nível 4 (Gerenciado). A organização estabelece metas quantitativas de qualidade e produtividade para as atividades do processo e para os produtos produzidos são estabelecidas para cada projeto. Medidas de qualidade e produtividade são coletadas em todos os projetos como parte de um processo organizacional de medição e estabelecem uma base quantitativa para que os gerentes possam avaliar o progresso do desenvolvimento e a ocorrência de problemas. Questão 8 - B Justificativa: SW-CMM: Nível 3 (Definido). Um processo de software, composto por atividades de gerência e engenharia, é documentado, padronizado e integrado em um processo de software padrão da organização. A organização interna das tarefas está definida e visível. MODELO DE MATURIDADE DE SOFTWARE 21 Questão 9 - C Justificativa: Os níveis de maturidade do SW-CMM estão explicados na Aula 6.: O nível 2 do é classificado como Repetível, isto é, disciplinado, ou seja, é possível repetir sucessos de projetos anteriores em aplicações similares. Questão 10 - E Justificativa: SW-CMM: 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, heroicos. O processo de software é uma caixa preta, de forma que somente as entradas e os produtos finais podem ser vistos com clareza.