PRÓ-REITORIA DE GRADUAÇÃO TRABALHO DE CONCLUSÃO DE CURSO Ciência da Computação GUIA DE GERÊNCIA DE CONFIGURAÇÃO DE SOFTWARE PARA O MPS-BR Autora: Adriana Reis de Almeida Rodrigues Orientador: Vilson Carlos Hartmann Co-orientador: Cândido Gerrero Salgado 2007 ADRIANA REIS DE ALMEIDA RODRIGUES GUIA DE GERÊNCIA DE CONFIGURAÇÃO DE SOFTWARE PARA O MPS-BR Trabalho apresentado ao curso de Graduação em Ciência da Computação da Universidade Católica de Brasília, como requisito para obtenção do Título de Bacharel em Ciência da Computação. Brasília 2007 Trabalho de autoria de Adriana Reis de Almeida Rodrigues, intitulado “Guia de Gerência de Configuração de Software para o MPS-BR”, requisito parcial para a obtenção do título de Bacharel em Ciência da Computação, defendida e aprovada, em ---/---/--- pela banca examinadora constituída por: ___________________________________ Prof. Vilson Carlos Hartmann Orientador ___________________________________ Prof. Cândido Gerrero Salgado Co-orientador ___________________________________ Vilson Carlos Hartmann __________________________________ Cândido Gerrero Salgado Brasília 2007 Dedico o presente estudo aos meus pais pelo apoio incondicional, sem o qual não teria chegado até aqui, ao meu marido Hernani e meus filhos Bruno e Vítor, por tudo representam na minha vida. que Agradeço aos nobres Professores Vilson e Candido pelo apoio e compreensão durante essa jornada. À minha prima Pollyanna e à minha irmã Karina que contribuíram, direta ou indiretamente, para a realização desse trabalho. RESUMO A demanda por produtos de software de qualidade, tem despertado o interesse das empresas desenvolvedoras em uma área específica da Engenharia de Software: a Qualidade de Software. Essa área visa garantir um produto final de qualidade por meio do investimento na melhoria dos seus processos de desenvolvimento. O que se dá através da implantação de padrões, normas e modelos de referências. Dentre esses modelos destaca-se o MPS-BR, que é voltado à realidade das empresas brasileiras. O referido modelo está dividido em sete níveis de capacitação sendo que o presente trabalho refere-se à Gerência de Configuração inserida no nível F. O MPS-BR, assim como outros modelos, não é descritivo, ou seja, ele relata o que fazer para atingir suas metas, mas não diz como. O objetivo desse trabalho é preencher essa lacuna, na medida em que descreve os passos a serem seguidos para que os desenvolvedores de software possam alcançar as metas estabelecidas no MPS-BR para o processo de Gerência de Configuração. Palavras-chave: Qualidade de Software. Modelos de Referência. Gerência de Configuração. Abstract The demand for software products with quality, has collect such interest of development companies in a specific area of the software engineering: the software’s quality. This area might guarantee a final product with quality by investing in best process of development. What happens by the creation of patterns, IAS and model references. Among these models, we show the MPSBR that is focus to the Brazilian’s companies reality. This model is divided in seven levels of capacity, and this work is referred to the configuration manager in the F level. The MPS-BR, as the others models, isn’t de descriptive, whatever, it relates what to do to reach your goals, but not how. The objective of this work is to fulfill the spaces, as long as descript the steps to follow to the software developers can reach the goals established in the MPS-BR to the configurations managing. Key words: Software’s quality. Reference Models. Configuration Managing. Lista de quadros Quadro 1: Áreas de processo – CMMI por estágios Quadro 2: Áreas de processo – CMMI na representação contínua Quadro 3: A visão sobre a GC em cada nível do CMMI Quadro 4: Níveis de maturidade e processos do MPS-BR Quadro 5: Pontos positivos do MPS-BR Quadro 6: Subcaracterísticas da qualidade interna e externa Quadro 7: Características da qualidade de uso Quadro 8: Metas do MPS-BR X Subprocessos do Guia de Gerência de Configuração Lista de figuras Figura 1: Modelo do ciclo de vida codifica-remenda Figura 2: Modelo do ciclo de vida cascata Figura 3: Modelo do ciclo de vida de Prototipagem evolutiva Figura 4: Modelo do ciclo de vida espiral Figura 5: Níveis de maturidade do CMMI Figura 6: Base de construção do MPS.BR Figura 7: Modelo de processos do MPS-BR Figura 8: Evolução do grau de formalismo Figura 9: Descrição de um item de configuração Figura 10: Exemplo de política Trava-Modifica-resolve Figura 11: Exemplo de política copia-Modifica-Resolve Figura 12: Ciclo de uma requisição de mudança aprovada Lista de siglas BID - Banco Interamericano de Desenvolvimento CMM - Modelo de Maturidade de Capacitação CMMI - Modelo integrado de Maturidade de Capacitação ES - Engenharia de Software EUA – Estados Unidos da América FINEP - Financiadora de Estudos e Projetos GC - Gerência de Configuração GQA - Garantia da Qualidade HRD - Projetos de alto risco de desenvolvimento IEC – Comissão Eletrotécnica Internacional IEEE - Instituto de Engenheiros Eletricistas e Eletrônicos IPPD - Desenvolvimento Integrado de Produtos e Processos ISO - Organização Internacional para Padronização MCT - Ministério da Ciência e Tecnologia MCVS - Modelo de ciclo de vida do software MED - Medição MPS.BR - Melhoria de Processo do Software Brasileiro NBR – Norma Brasileira RUP – Processo Unificado da Rational SEI - Instituto de Engenharia de Software SOFTEX - Associação para Promoção da Excelência do Software Brasileiro SW - Software SUMÁRIO INTRODUÇÃO .......................................................................................................... 11 1 O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE ................................. 16 1.1 A Engenharia de Software................................................................................... 16 1.2 Paradigmas do ciclo de vida................................................................................ 18 2 QUALIDADE DE SOFTWARE ............................................................................... 26 2.1 Visão geral .......................................................................................................... 26 2.2 Qualidade do Processo ....................................................................................... 27 2.3 Qualidade do Produto ......................................................................................... 38 3 GERÊNCIA DE CONFIGURAÇÃO ........................................................................ 42 3.1 Abordagem Teórica ............................................................................................. 42 3.1.1 Visão Geral....................................................................................................... 42 3.1.2 Conceitos Iniciais ............................................................................................. 44 3.1.3 Definição do escopo e do grau de formalismo das tarefas de GCS ................. 46 3.2 Abordagem operacional....................................................................................... 47 3.2.1 Atividades de Gestão da Configuração ............................................................ 47 3.2.1.1 Identificação .......................................................................................................... ....47 3.2.1.2 Armazenamento ....................................................................................................... 49 3.1.2.3 Controle de versões ................................................................................................. 49 3.2.1.4 Controle de mudanças............................................................................................. 53 3.2.1.5 Relato de status ........................................................................................................ 56 3.2.1.6 Entrega na GC .......................................................................................................... 56 3.2.1.7 Auditoria da configuração ....................................................................................... 57 4 CONSTRUÇÃO DO GUIA ...................................................................................... 59 4.1 Definição do Layout ......................................................................................... 59 4.2 Definição dos subprocessos ............................................................................ 59 4.3 Definição dos anexos ...................................................................................... 64 4.4 Metas do MPS-BR X Guia de Gerência de Configuração ............................... 66 Conclusão ................................................................................................................. 68 Apêndice A – Guia para Gerência de Configuração de Software.............................. 70 Referência Bibliográfica .......................................................................................... 114 11 INTRODUÇÃO Motivação A competitividade no mercado, entre outros fatores, fez com que uma área da engenharia de software crescesse nos últimos tempos: a Qualidade de Software. A exemplo de outras áreas, as empresas desenvolvedoras de softwares buscam a cada dia um diferencial a ser oferecido aos seus clientes; a entrega de um software de qualidade é, além desse diferencial, uma necessidade para que as organização se tornem bem-sucedidas. “A qualidade de software é uma área da engenharia de software que visa garantir, por meio da definição e da normatização dos processos de desenvolvimento, a qualidade do software” (WIKIPÉDIA, 2007). De acordo com a norma ISO 9000, qualidade é o grau com que um conjunto de características de um determinado produto atende aos requisitos estipulados. No que diz respeito à engenharia de software, a qualidade é subdividida em qualidade do processo e qualidade do produto. Quando há uma preocupação com a qualidade do processo de desenvolvimento do software, estamos a caminho de produzir produtos de qualidade visto que, dessa forma, estaremos adotando práticas que garantam a qualidade do software desde o início de seu desenvolvimento. Com o intuito de subsidiar o processo de desenvolvimento e a manutenção de softwares de qualidade, foram desenvolvidos alguns modelos de referência de qualidade, entre eles podemos destacar o Modelo de Maturidade de Capacitação para Software (SW-CMM), o Modelo Integrado de Maturidade de Capacitação (CMMI) e o MPS-BR (Melhoria de Processo do Software Brasileiro). Koscianski e Soares (2007) relatam que o SW-CMM foi criado no final da década de 1980 pelo SEI (Instituto de Engenharia de Software) e é um modelo de capacitação de processo, patrocinado pelo Departamento de Defesa dos Estados Unidos da América (EUA) para a avaliação da capacidade dos seus 12 fornecedores de software. Este modelo é específico para a área de software e tem foco nos processos, pois para o referido modelo esse é o fator com maior potencial de melhoria a curto prazo. Segundo os mesmos autores, o sucesso do CMM, levou ao aparecimento de diversos outros modelos direcionados a outras áreas, como gestão de recursos humanos e aquisição de software. Então, para integrar todos esses modelos, surgiu o CMMI, como uma evolução do CMM. O objetivo do CMMI é “fornecer direcionamentos para melhorar os processos de uma organização e sua capacidade de gerenciar o desenvolvimento, aquisição e manutenção de produtos e serviços” (SEI, 2006). Tanto o CMM como o CMMI descrevem 5 níveis de maturidade do processo, são eles: Nível 1(Inicial), Nível 2(Gerencial), Nível 3(Definido), Nível 4 (Quantitativamente definido) e Nível 5 (Otimizado). Koscianski e Soares (2007) relatam sobre outro modelo de referência, o MPS-BR, que teve seu início em dezembro 2003. Ele constitui um programa de melhoria de processo do software Brasileiro e é coordenado pela Associação para Promoção da Excelência do Software Brasileiro (SOFTEX). Seu objetivo é permitir que micro, pequenas e médias empresas tenham acesso à melhoria de processos de software. Assim, ele é adequado à realidade brasileira, sem deixar de ser compatível com os padrões de qualidade internacionais. O MPS-BR também é estruturado em níveis de maturidade de evolução dos processos de software e na capacidade para a avaliação e melhoria da qualidade e da produtividade dos softwares. Ele apresenta sete níveis de maturidade, a saber: Nível A (Em Otimização), Nível B (Gerenciado Quantitativamente), Nível C (Definido), Nível D (Largamente Definido), Nível E (Parcialmente Definido), Nível F (Gerenciado) e Nível G (Parcialmente Gerenciado). Conforme descrito no guia geral V1.2 do MPS-BR: [...] para cada um destes sete níveis de maturidade é atribuído um perfil de processos que indicam onde a organização deve colocar o esforço de melhoria. O progresso e o alcance de um determinado 13 nível de maturidade do MPS-BR se obtém quando são atendidos os propósitos e todos os resultados esperados dos respectivos processos e dos atributos de processo estabelecidos para aquele nível. (SOFTEX, 2007, p.16). A Gerência de Configuração (GC), devido a sua importância, está presente tanto no CMMI como no MPS-BR. Neste último, ela é descrita no nível F, o qual se refere à garantia da qualidade. “O propósito do processo de Gerência de Configuração é estabelecer e manter a integridade de todos os produtos de trabalho de um processo ou projeto e disponibilizá-los a todos os envolvidos” (SOFTEX, 2007, p.28). Pressman (2002) relata que inúmeras mudanças ocorrem durante o ciclo de desenvolvimento de um software, pelos mais diversos motivos, que podem ser novas condições do mercado, novas necessidades dos clientes, reorganização dos negócios ou restrições de orçamento e cronograma. Assim, podemos perceber que a GC é fundamental para a administração de todas essas modificações durante o desenvolvimento e a manutenção de um software. “A GC é um conjunto de atividades de apoio ao desenvolvimento do software que é aplicada ao longo de todo o processo de software. Essas atividades são desenvolvidas para (1) identificar as modificações, (2) controlar modificações, (3) garantir que as modificações sejam adequadamente implementadas e (4) relatar as modificações a outros que possam ter interesse. Essas atividades começam quando o projeto de engenharia de software se inicia e só termina quando o software é retirado de operação” (PRESSMAN, 2002). Produzir software de qualidade traz diversos benefícios, tanto para as empresas quanto para os clientes, uma vez que como conseqüência de tal prática, as empresas estabelecem processos bem definidos, reduzem o retrabalho, aproveitam melhor os recursos, diminuem riscos, reduzem custos e, na medida do possível, cumprem o cronograma. Já para o cliente, entre outras vantagens, podemos destacar que ele adquire um produto que atende às suas necessidades, num menor preço e dentro do prazo estabelecido. 14 Problema diagnosticado O MPS-BR é muito importante para as empresas brasileiras desenvolvedoras de software, pois é um modelo voltado para nossa realidade, porém é limitado, uma vez que esse modelo descreve o que uma organização deve fazer para alcançar o nível F de maturidade, porém não descreve como fazê-lo. O presente trabalho visa preencher essa lacuna, no que se refere à Gerência de Configuração, pois culmina com a implementação de um guia que orienta a implantação desse processo. Restrições O nível F do MPS.BR, inclui, além da Gerência de Configuração, a Garantia da Qualidade (GQA) e a Medição (MED) , porém os dois últimos tópicos não serão contemplados no presente trabalho, sendo esta uma restrição desse trabalho. Beneficiados Como beneficiados com este estudo, destacamos os desenvolvedores de softwares, de modo geral, especialmente empresas que buscam atingir o nível F de maturidade do MPS-BR, podem ser beneficiados com este estudo, pois o mesmo servirá como um guia que descreve as atividades a serem desenvolvidas para que as metas, correlatas à Gerência de Configuração, definidas no referido modelo sejam alcançadas. Objetivo O objetivo do presente trabalho é descrever de forma detalhada as atividades a serem desenvolvidas pelas empresas desenvolvedoras de software para que elas possam atingir as metas estabelecidas para o nível F do MPS-BR no que tange ao processo de Gerência de Configuração. Resultados Esperados Dessa forma, os resultados esperados é que desenvolvedores de software tenham um material de apoio que possa efetivamente auxiliá-los a atingir as metas estabelecidas para o nível F do MPS-BR com relação ao processo de Gerência de Configuração. 15 Metodologia Esta pesquisa será de natureza aplicada e abordagem bibliográfica, pois poderá ter uma aplicação prática na área da qualidade de software, visto empresas desenvolvedoras de software que tenham interesse em melhorar suas atividades na área de Gerência de Configuração podem utilizá-la e será baseada em material bibliográfico impresso e eletrônico. Organização A organização dos capítulos ocorrerá da seguinte maneira, no Capítulo 1 será realizada uma abordagem geral sobre a Engenharia de Software, relatando alguns conceitos básicos e seus principais paradigmas de desenvolvimento, além disso, também será abordada a importância da qualidade no contexto de desenvolvimento de software. No Capítulo 2 a qualidade de software será explanada nas suas duas visões: qualidade do processo e qualidade do produto. Já no capítulo 3 o tema Gerência de Configuração será dissecado em seus aspectos teórico e prático. Será visto a conceituação de termos importantes e os principais tópicos que fazem parte da Gerência de Configuração, a saber: Identificação dos itens de configuração, Armazenamento, Controle de acesso, Controle de versão, Relato do status e Auditoria da configuração. Finalmente, o capítulo 4 abordará a construção do Guia de Gerência de Configuração, explicando a finalidade de cada subprocesso, o motivo de sua criação e como eles são subdividos. 16 1 O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 1.1 A Engenharia de Software Há diversas definições para software, mas, para o escopo desse trabalho, é suficiente dizer que “Software é o nome dado ao conjunto de produtos desenvolvidos durante o processo de desenvolvimento de software, o que inclui não só o programa de computador propriamente dito, mas também manuais, especificações, planos de teste, e etc”. (WIKIPEDIA, 2007) O processo de concepção de um software fica a cargo da Engenharia de Software (ES). Ela emergiu na década de 70 objetivando a produção de software de alta qualidade a um baixo custo. Para Costa, Quaresma e Sabattini (s.d., p. 2) a Engenharia de Software tem por objetivo [...] a melhoria da qualidade de seu produto, com propostas de modelo de desenvolvimento, métodos e técnicas para aplicação nas diversas fases de desenvolvimento do software. De acordo com Pressman (2002), a Engenharia de Software abrange um conjunto de três elementos fundamentais – métodos, ferramentas e procedimentos. Os métodos especificam "como fazer" para se construir o software, as ferramentas proporcionam apoio automatizado ou semi- automatizado aos métodos, e os procedimentos unem os métodos às suas ferramentas. O mesmo autor ressalta que de acordo com a natureza da aplicação, o tamanho e complexidade do projeto, os métodos e as ferramentas a serem usados, deve-se escolher o paradigma de engenharia de software mais adequado. Cada paradigma da Engenharia de Software possui suas próprias subdivisões, ou fases. Conforme o paradigma adotado, tais subdivisões podem 17 ser em maior ou menor número, mais extensas ou mais curtas, se repetir durante o processo ou não. O conjunto de todas as atividades praticadas durante o desenvolvimento do software chama-se ciclo de vida do software. Independente do paradigma de engenharia adotado, o processo de desenvolvimento de software é composto por três fases genéricas que Pressman (1995) as descreve da seguinte forma: a) Definição - essa fase focaliza o o quê. Ela é composta por três etapas específicas: - análise do sistema: define o papel de cada elemento num sistema de computador, inclusive o do próprio software; - planejamento do projeto: nessa fase são efetuadas tarefas correspondentes, por exemplo, à definição do escopo do software, análise de riscos, alocação de recursos e estimativas de custos; - análise de requisitos: nessa fase definem-se o domínio da informação, os requisitos funcionais e não-funcionais, além das restrições funcionais e de projeto. b) Desenvolvimento - essa fase focaliza o como. Ela é composta por três passos específicos: - projeto de software: traduz os requisitos do software num conjunto de representações que descrevem a estrutura de dados, a arquitetura, o procedimento algoritmo e as características de interface; - codificação: fase de conversão das representações do projeto numa linguagem de programação; - realização de testes: nessa etapa o software é testado para que se possa descobrir o maior número de defeitos, desde a especificação até implementação. c) Manutenção - concentra-se nas mudanças que possam ocorrer, seja por erros descobertos, adaptações ou ampliações no software. 18 Nessa fase aplicam-se novamente os passos das fases de definição e planejamento, mas em um software já existente. Três tipos de mudanças podem ocorrer durante essa fase: (1) correção – ocorre quando algum tipo de defeito encontrado, (2) adaptação – ocorre quando é necessário adequar o software às mudanças que ocorreram em seu ambiente e (3) melhoramento funcional – ocorre quando se quer acrescentar exigências funcionais que não foram definidas originalmente. 1.2 Paradigmas do ciclo de vida Os paradigmas do ciclo de vida, também chamados de modelos de ciclo de vida do software, descrevem as etapas principais da produção e manutenção do software. A seguir veremos os modelos típicos de desenvolvimento: 1.2.1 Modelo codifica-remenda Esse é um ciclo de vida caótico, aqui temos o que Pádua (2003) chama de ciclo de vida “codifica-remenda”, nessa abordagem parte-se de uma fraca especificação, quando existente. Os desenvolvedores começam imediatamente a codificar, remendando à medida que os erros vão sendo descobertos. Não é preciso nenhuma sofisticação gerencial ou técnica e nenhum processo definido é seguido. Projetos que seguem esse modelo, são projetos de alto risco e que não permitem uma boa gestão. 19 Figura1: Modelo do ciclo de vida codifica-remenda. Fonte: Páuda, 12. 1.2.2 Modelo cascata ou clássico Segundo Pressman (1995) o modelo cascata é uma abordagem sistemática, onde o desenvolvimento do software se dá de forma seqüencial, que se inicia no nível do sistema e avança ao longo da análise, projeto, codificação, teste e manutenção. Essas etapas são descritas abaixo: a) Análise e Engenharia de Sistemas: esta etapa esta relacionada à coleta dos requisitos do sistema em relação ao ambiente que ele está inserido e em relação aos outros elementos com o qual ele precisa se comunicar; b) Análise de requisitos de software: é a fase de levantamento dos requisitos funcionais e não-funcionais, ou seja, define-se que o software precisa fazer e como; c) Projeto: é um processo de múltiplos passos que se concentra em quatro atributos distintos: estrutura de dados, arquitetura de software, detalhes procedimentais e caracterização da interface; 20 d) Codificação: é a etapa onde se traduz o que está especificado no projeto para uma linguagem de programação; e) Teste: essa etapa esta voltada para descobrir o maior número de erros possíveis, tanto nos aspectos lógicos internos do software, como nos aspectos funcionais externos, antes que o software entre em operação; f) Manutenção: nessa fase aplica-se novamente as etapas anteriores a um software que precise de manutenção preventiva ou corretiva. Este modelo não é tão utilizado como anteriormente por diversos motivos, entre eles podemos citar o fato do levantamento de requisitos ocorrer somente na fase inicial do projeto e a atividade de teste somente ao final de todo processo, além de ser muito raro um projeto seguir um fluxo seqüencial proposto pelo referido modelo. Veja a seguir uma ilustração desse modelo: Engenharia de sistemas Análise de Requisitos Projeto Codificação Teste Manutenção Figura 2: Modelo do ciclo de vida cascata. Fonte: Pressman, 33. 21 1.2.3 Prototipação De acordo com Pressman (1995), a prototipação permite ao desenvolvedor criar um modelo do software que será implementado. Esse modelo poderá ser: (1) um protótipo em papel; (2) um protótipo que implementa algum subconjunto da função exigida; (3) um programa que executa parte ou toda a função desejada. A prototipação é iniciada com a coleta dos requisitos. Desenvolvedor e cliente definem os objetivos globais para o software. Com base nesses requisitos um projeto rápido é elaborado levando-se em consideração os aspectos do software que serão visíveis ao usuário, ou seja, as entradas e saídas. A partir daí, efetua-se a construção do protótipo que será avaliado pelo cliente e usado para refinar os requisitos. O objetivo inicial do protótipo é identificar requisitos de software e, idealmente, o mesmo deve ser descartado, ao menos em parte, logo após ter o seu objetivo concluído. A partir daí, o software real deverá ser projetado, levando-se em conta a qualidade e manutenibilidade. Alguns pontos problemáticos quanto a esse paradigma podem ser levantados: O primeiro, refere-se ao entusiasmo que o usuário pode ter, pois ao ver as interfaces do sistema, tende a achar que o mesmo estará a sua disposição rapidamente e não concebe o fato que esse protótipo será descartado. O segundo, refere-se à pressão com relação à urgência da implantação, sugerindo-se que o protótipo seja, ao invés de descartado, evoluído e entre rapidamente em funcionamento. A figura a seguir ilustra a seqüência de eventos para o paradigma da prototipação: 22 Figura 3: Modelo do ciclo de vida de Prototipagem evolutiva. Fonte: Páuda, 14. 1.2.4 Modelo espiral Pressman (1995) explica que o modelo espiral reune as melhores características dos dois modelos anteriores, acrescentando um novo elemento: a análise de risco. A dimensão radial desse modelo representa bem a espiral percorrida ao longo das atividades de desenvolvimento. Pois as atividades iniciais encontram-se no centro da espiral, e na medida em que o desenvolvimento do software avança, percorre-se a espiral do centro pra fora. A figura a seguir ilustra os quadrantes que representam as quatro atividades importantes desse ciclo, são elas: a) Planejamento: determinação dos objetivos, alternativas e restrições; b) Análise dos riscos: análise de alternativas e identificação/resolução dos riscos; c) Engenharia: desenvolvimento do produto no “nível seguinte”; d) Avaliação feita pelo cliente: avaliação dos resultados da engenharia. A cada iteração versões mais completas do software vão sendo construídas, durante o primeiro giro ao redor da espiral, os objetivos, 23 alternativas e restrições são definidos e os riscos são identificados e analisados. O cliente avalia o trabalho da engenharia e apresenta sugestões para modificações. Com base na entrada do cliente, avança-se para a fase de planejamento e análise de risco. Em cada arco da espiral, a conclusão da análise de risco resulta numa decisão de prosseguir ou não com o projeto. Atualmente, esse ciclo de vida é o que possui uma abordagem mais realista, pois sua estrutura iterativa corresponde melhor ao que vivemos no mundo real. Além disso, ele capacita o desenvolvedor, bem como o cliente, a entender e reagir aos riscos em cada etapa evolutiva. Contudo, ele exige uma considerável experiência na avaliação de riscos e dependendo dessa experiência o projeto pode resultar em sucesso ou fracasso. Figura 4: Modelo do ciclo de vida espiral. Fonte: Pádua, 14. 24 1.3 A qualidade no processo de desenvolvimento do software Apesar dos vários paradigmas de ciclo de vida e da diversidade de métodos, técnicas e ferramentas disponíveis para subsidiar o desenvolvimento de software, grande parte dos usuários não esta satisfeita com seus produtos. Além dos problemas decorrentes de falhas, desempenho inadequado ou nãoconformidades, existem aqueles relacionados ao custo e ao prazo de entrega dos produtos, entre outros. Os benefícios que os sistemas informatizados trouxeram, para as mais diversas áreas, são inegáveis. Avanços na medicina com microcirurgias e na educação, com a educação multimídia e a distância, são alguns exemplos. Contudo, os usuários ainda querem mais. O patamar de exigências está cada vez mais alto e a necessidade de melhorar os softwares é crescente. Diante desse contexto, e segundo Curtis (2000) apud Rocha, Maldonado, Weber (2001), as empresas desenvolvedoras de software estão buscando adequar-se através do investimento em qualidade de software. A qualidade de software é, portanto, não apenas algo desejável, mas uma necessidade de mercado. Desse modo, organizações que sejam capazes de integrar, harmonizar e acelerar seus processos de desenvolvimento e manutenção de software têm a primazia do mercado. (JOMORI; DELLA VOLPE; ZABEU, 2007, s.n) relatam que: Muitas organizações têm investido na busca de melhorias, não somente para diminuir os problemas decorrentes da baixa qualidade de seus processos de desenvolvimento e do produto final, mas também para alcançar melhores resultados financeiros com o aumento de produtividade e conseqüente diminuição de prazo de entrega e maior satisfação de seus clientes. Machado e Sousa (2007) afirmam que para se chegar aos objetivos esperados, no que se refere à qualidade do software, é fundamental que a preocupação com a qualidade seja constante e presente desde o início do ciclo de desenvolvimento do software. Práticas de garantia e controle da qualidade 25 garantem que os artefatos de software sejam desenvolvidos e entregues aos clientes com melhor aceitabilidade, menos defeitos e menores custos. Segundo Pressman (2002), quanto mais os cedo defeitos – que podem ser desde uma especificação de requisito inadequada até um erro na linha de código – forem descobertos, menos tempo e recursos serão necessários para removê-los. Mas qualidade não surge do acaso. As empresas desenvolvedoras de software necessitam de investimento tanto na qualidade do processo de desenvolvimento como na qualidade do produto. Uma vez que investir só em processo não garante que o produto de software seja de boa qualidade. Por isso, as organizações que pretendem aperfeiçoar sua qualidade de modo contínuo, se interessam cada vez mais, em seguir padrões, normas e modelos de referência de qualidade. 26 2 QUALIDADE DE SOFTWARE 2.1 Visão geral Definir qualidade não é uma tarefa fácil, visto que tal conceito varia de acordo com a visão e as necessidades de cada um. De acordo com a norma NBR ISO 8402 (1994) apud Machado e Sousa (2007), qualidade é a totalidade das características de uma entidade, que lhe confere a capacidade de satisfazer necessidades explícitas e implícitas. Na área de software, tais necessidades podem ser traduzidas na forma de requisitos. “A especificação de requisitos de um produto implica, também, a determinação de requisitos não-funcionais, entre os quais se incluem os requisitos de qualidade” (ROCHA; MALDONADO; WEBER, 2001). Ainda segundo os mesmos autores, definir requisitos de qualidade significa identificar os atributos relevantes para um produto específico. Tornase, portanto, necessário identificar quais são as características de qualidade necessárias para um determinado produto de software e definir em que grau essas característica precisam ser alcançadas para satisfazer as necessidades dos usuários. A crescente demanda por softwares de qualidade, tem feito com que a indústria de software invista cada vez mais na qualidade de seus processos e produtos. A adoção de normas e modelos de referência se insere nesse esforço. Tsukumo, et al. (1997) relatam que com a melhoria da qualidade do processo é possível melhorar o produto, no entanto, as duas abordagens (produto e processo) são necessárias e complementares uma vez que melhorar o processo não garante, necessariamente, a melhoria do produto já 27 que sempre há fatores imponderáveis e imprevisíveis que escapam ao controle do processo de produção e que podem afetar seu resultado final. 2.2 Qualidade do Processo Nogueira e Capra (2003) explicam que quando colocamos o foco no processo de desenvolvimento, garantimos, a partir de então, a qualidade desde o início da construção do software, uma vez que controlamos a sua fabricação passo a passo e medimos a sua qualidade antes dele sair da fábrica. Para buscar a melhoria dos processos de desenvolvimento, as empresas desenvolvedoras de software estão investindo em normas e modelos de capacitação, seja pela adequação ou certificação. (KOSCIANSKI, SOARES, 2007, p.49) relatam que: A adequação a uma norma consiste em colocar em prática, total ou parcialmente, aquilo que nela é proposto. Isso pode ser feito pela empresa de maneira autônoma, ou com auxílio de uma consultoria, por exemplo. Já a certificação envolve a participação de um organismos ou empresa externa, devidamente regulamentado ou credenciado, que possa atestar que a empresa candidata segue corretamente um dado padrão. De acordo com Pádua (2003), um modelo de capacitação serve de referência para avaliar a maturidade dos processos de uma organização. Esta pode ser avaliada comparando-se suas práticas reais com aquelas que o modelo de capacitação descreve ou recomenda. Essa aferição produz um diagnóstico da organização quanto aos seus processos. O diagnóstico serve de base para recomendações de melhoria de processos, e essas recomendações podem ser consolidadas em um plano de melhoria. “A maturidade de uma organização em Engenharia de Software mede o grau de competência, técnica e gerencial, que essa organização possui para 28 produzir software de boa qualidade, dentro de prazos e custos razoáveis e previsíveis” (PÁDUA, 2003, p.53). Este autor descreve, ainda, alguns sintomas que demonstram a imaturidade das organizações, a saber: (1) os projetos não são definidos com clareza, (2) as pessoas não recebem o treinamento necessário, (3) as ferramentas não ajudam realmente a resolver os problemas, (4) os procedimentos e padrões, quando existem, são definidos e seguidos de forma burocrática. A partir daí, podemos listar alguns exemplos de prejuízos que essa imaturidade causa: (1) os mesmos problemas se repetem de projeto em projeto, (2) o trabalho é excessivo e desgastante, onde corridas desesperadas contra os prazos são a regra, (3) a qualidade de vida no trabalho é ruim, (4) os profissionais são desmotivados e (5) os orçamentos e cronogramas estouram rotineiramente. A fim de evitar os problemas supracitados, entre outros, as empresas têm buscado implantar modelos de capacidade como o CMMI e o MPS.BR. 2.2.1 CMMI – Modelo de Integração de Maturidade da Capacidade O modelo de Integração de Maturidade da Capacidade (CMMI Capability Maturity Model Integration) é uma evolução do CMM - Capability Maturity Model, a versão 1.1, foi publicada em 2002. Esse modelo possui duas representações: “por estágio” ou níveis e “contínua” ou por disciplinas. Jomori, Della Volpe e Zabeu (2007) descrevem algumas características da representação contínua: (1) permite melhorar o desempenho em um processo único, (2) permite melhorar o desempenho em várias áreas alinhadas aos objetivos de negócio e (3) é apropriado para quem sabe que processo deve ser melhorado. Na representação por estágios, eles destacam as 29 seguintes características: (1) possui um enfoque de melhoria do processo de forma sistêmica e estruturada, (2) atingir cada um dos estágios garante a base fundamentada necessária para o próximo estágio, (3) permite a organização ter um caminho evolutivo pré-defindo pela melhoria. A ilustração a seguir representa os níveis/estágios de maturidade de processo no CMMI: Figura 5: Níveis de maturidade do CMMI. Fonte: Molinari, 50. A seguir temos uma tabela representando os níveis de maturidade e suas respectivas áreas de processo na abordagem por estágios: 30 Gerência de requisitos Planejamento do projeto Nível de maturidade 2 Gerência e controle do projeto Gerência de acordos com fornecedores Medição e análise Garantia da qualidade do processo e do produto Gerência de configuração Desenvolvimento de requisitos Solução técnica Integração de produto Verificação Validação Nível de maturidade 3 Foco no processo organizacional Treinamento organizacional Gerência de projeto integrada Gerência de riscos Análise de decisão e resolução Desempenho do processo organizacional Definição do processo organizacional Nível de maturidade Desempenho do processo organizacional 4 Gerência quantitativa do projeto Nível de maturidade 5 Inovação e implantação na organização Análise e resolução de causas Quadro 1: Áreas de processo - CMMI por estágios. Fonte: Kosianski, 108. 31 O quadro abaixo apresenta as áreas de processo na representação contínua: Foco no processo Definição de processos Gerência de processos Treinamento Desempenho de processo Inovação e implantação Planejamento de projeto Controle e monitoramento de projeto Gerência de acordos com fornecedores Gerência de projeto Gerência de projeto integrada Gerência de riscos Integração de equipe Integração de fornecedores Gerência quantitativa de projeto Gerência de requisitos Gerência de desenvolvimento Engenharia Solução técnica Integração do produto Verificação Validação Gerência de configuração Garantia de qualidade de produto e processo Suporte Medida e análise Análise e decisão e resolução Ambiente organizacional para integração Resolução e análise de causas Quadro 2: Áreas de processo CMMI na representação contínua. Fonte: Kosicianski, 110. 32 Devido ao escopo desse trabalho vamos detalhar apenas o processo de Gerência de Configuração. Para maiores informações sobre cada nível e suas respectivas áreas: www.sei.cmu.edu/cmmi. O (SEI, 2006, p. 499) descreve o objetivo da GCS no CMMI versão 1.1 como: O propósito da Gestão de Configuração de software (GCS) é estabelecer e manter a integridade dos produtos de trabalho, usando identificação da configuração, controle de configuração, status da configuração contábil e auditoria de configuração (SEI, 2006). As metas específicas de Gerência de Configuração definidas no CMMI , segundo Molinari (2007) e as propostas para cada uma delas são: a) Estabelecer baselines, que são utilizadas para o trabalho nos produtos bem como sua manutenção; Identificar itens de configuração. Estabelecer sistemas de gestão de configuração. Criar ou liberar baselines. b) Rastreamento e controle de mudanças, para permitir a rastreabilidade e controle das mudanças dos produtos; Rastrear mudanças. Controlar as mudanças. c) Estabelecer integridade, para permitir que a integridade das baselines seja estabelecida e manutenida. Estabelecer registros da Gerência de Configuração. Executar auditorias de configuração. Molinari (2007) descreve, em linha gerais, como a GC é vista em cada nível: 33 Nível 1: a GC é implantada como um membro que deve ser evoluído. Nível 2: a GC em um processo gerenciado, que significa planejar, executar, monitar e controlar o tipo de processo. Nível 3: a GC é processo definido, ou seja, é processo ajustado e próprio para a organização, com a devida documentação atualizada e revisada. Nível 4: a GC é processo quantitativamente gerenciado, de modo que se passa a usar o controle estatístico de processo dentro da organização e dos projetos. Nível 5: a GC é um processo otimizado, pois as causas e problemas de processo são entendidos e corrigidos de forma pró-ativa. Foca-se na constante otimização do processo. Quadro 3: A visão sobre a GC em cada nível do CMMI. Fonte: Molinari, 62. 2.2.2 MPS.BR – Melhoria de Processo do software Brasileiro Koscianski e Soares (2007) esclarecem que o MPS.BR é um programa para Melhoria de Processo do Software Brasileiro que teve seu início no final de 2003 e é coordenado pela Associação para Promoção da Excelência do Software Brasileiro (SOFTEX). Tal programa conta com o apoio do Ministério da Ciência e Tecnologia (MCT), da Financiadora de Estudos e Projetos (FINEP) e do Banco Interamericano de Desenvolvimento (BID). De acordo com os mesmos autores, o MPS.BR está dividido em três componentes: Modelo de Referência (MR-MPS), Método de Avaliação (MAMPS) e Modelo de Negócio (MN-MPS). A sua construção é baseada nas normas NBR ISO/IEC 1210, ISO/IEC 15504 e no CMMI. A construção do modelo é um esforço conjunto do SOFTEX, do Governo e Universidades, para aplicação em empresas brasileiras. 34 A figura a seguir indica a base para construção desse modelo: Figura 6: Base de construção do MPS.BR. Fonte: Koscianski,143. Segundo os autores do modelo, os sete níveis do MPS-BR devem permitir uma implantação mais gradual do que o CMMI, facilitando a tarefa em empresas de pequeno porte. Os níveis de maturidade estabelecem patamares de evolução de processos, caracterizando estágios de melhoria de implementação de processos na organização. O MR.MPS define sete níveis de maturidade: A (Em Otimização), B (Gerenciado Quantitativamente), C (Parcialmente Gerenciado), D (Largamente Definido), F (Gerenciado) e G (Parcialmente Gerenciado). A escala de maturidade se inicia no nível G e progride até o nível A. Para cada um destes sete níveis de maturidade foi atribuído um perfil de processos e de capacidade de processos que indicam onde a organização tem que colocar esforço para melhoria de forma a atender os objetivos de negócio. Para maiores informações sobre cada nível e processos correlatos: www. softex.br/mpsbr. O quadro abaixo representa os níveis de maturidade e os processos do MPS-BR: 35 A Inovação e implantação na organização Análise de causas e resolução B Desempenho do processo organizacional Gerência quantitativa do projeto C Análise de decisão e resolução Gerência de riscos D Desenvolvimento de requisitos Solução técnica Integração de produto Instalação de produto Liberação de produto Verificação Validação E Treinamento Avaliação e melhoria do processo organizacional Definição do processo organizacional Adaptação do processo para gerência de projeto F Medição Gerência de configuração Aquisição Garantia da qualidade G Gerência de requisitos Gerência de projetos Quadro 5: Níveis de maturidade e processos do MPS.BR. Fonte: Koscianski, Soares,146 O modelo MPS-BR possui uma série de características que o tornam mais adequado à realidade das empresas brasileiras, tais características são listadas no quadro a seguir: 36 Pontos fortes do MPS.BR Possui sete níveis de maturidade, o que possibilita uma implantação mais gradual e adequada a pequenas empresas; Compatibilidade plena com o CMMI e com a norma ISO/IEC 15504; Criado no Brasil, onde a maioria das empresas que desenvolvem software são micro, pequenas e médias; Custo acessível; Avaliação bienal das empresas; Forte interação Universidade-Empresa. Quadro 5: Pontos positivos do MPS-BR. Vasconcelos,35. De acordo com o que a (SOFTEX, 2006, p.28) descreve no MPS.BR, “O propósito do processo de Gerência de Configuração é estabelecer e manter a integridade de todos os produtos de trabalho de um processo ou projeto e disponibilizá-los a todos os envolvidos”. A Gerência de Configuração é definida no MPS.BR como um processo de apoio ao desenvolvimento e está inserido no nível F. As atividades a serem desenvolvidas no processo de GC são descritas por Molinari (2007) da seguinte forma: a) Os itens de configuração são identificados. b) Os itens de configuração gerados pelo projeto são definidos e colocados sob uma linha base. c) É estabelecido e mantido um Sistema de Gerência de Configuração. d) As modificações e liberações dos itens de configuração são controladas. e) As modificações e liberações são disponibilizadas para todos os envolvidos. f) A situação dos itens de configuração e as solicitações de mudanças são registradas, relatadas e o seu impacto é analisado. 37 g) A completeza e a consistência dos itens de configuração são asseguradas. h) O armazenamento, manuseio e entrega dos produtos de trabalho são controlados. i) A integridade das linhas-base (baselines) é estabelecida e mantida através de auditoria da configuração e de registros da Gerência de Configuração. O quadro a seguir representa uma visão de processo, onde a Gerência de Configuração está colocada como um processo de apoio: Figura 7: Modelo de processos do MPS-BR. Fonte Molinari, 80. 38 2.3 Qualidade do Produto A qualidade de um produto de software é resultante das atividades realizadas no processo de desenvolvimento do mesmo. Avaliar a qualidade de um produto de software é verificar, através de técnicas e atividades operacionais o quanto os requisitos são atendidos. Tais requisitos, de uma maneira geral, são a expressão das necessidades, explicitados em termos quantitativos ou qualitativos, e têm por objetivo definir as características de um software, a fim de permitir o exame de seu atendimento. (TSUKUMO, ET AL.,1997, p.10 ) Existem várias normas que versam sobre a qualidade dos produtos de software, por exemplo : ISO/IEC 14598-5 fornece requisitos e recomendações para implementação prática da avaliação de produto de software. ISO/IEC 9126 lista o conjunto de características que devem ser verificadas em um software para que ele seja considerado um "software de qualidade". Norma ISO/IEC 12119 é aplicável a pacotes de software, estabelecendo requisitos e instruções a respeito de como testar um pacote de software em relação aos requisitos estabelecidos. Dentre essas, veremos com mais detalhes a norma ISO/IEC 9126. Tal norma está dividida em três partes. A primeira (9126-1) inclui definições e características. As duas seguintes descrevem métricas externas (9126-2) e internas (9126-3). O presente trabalho descreverá apenas a parte ISO/IEC 9126-1, ela refere-se ao modelo de qualidade e apresenta um conjunto de características de qualidade aplicável a qualquer produto de software. Cada uma das características pode ser detalhada em vários níveis de subcaracterísticas, chegando-se a um amplo conjunto de atributos que descrevem a qualidade de um produto de software. 39 O modelo de qualidade divide-se em qualidade interna, externa e qualidade de uso. De acordo com Bianchi (2007), elas podem ser descritas da seguinte maneira: a) Qualidade interna – refere-se às características do produto segundo uma visão interna, elas servem para definir estratégias de desenvolvimento e critérios de avaliação e verificação; completar b) Qualidade externa - refere-se a características do produto segundo uma visão externa, tais características são percebidas quando o software é executado; c) Qualidade de uso – refere-se à visão do usuário quando o produto está em uso num ambiente específico. Esse quadro refere-se às subcaracterísticas de qualidade interna e externa. Características Subcaracterísticas Pergunta chave para a subcaracterística Adequação Acurácia Propõe-se a fazer o que é apropriado? Faz o que foi proposto de forma correta? Funcionalidade (satisfaz as necessidades para a finalidade a que se Interoperabilidade Interage com os sistemas especificados? destina?) Conformidade Confiabilidade (matém o desempenho ao Está de acordo com as normas, leis, etc.? Segurança de Evita acesso não autorizado aos acesso dados? Maturidade Com que freqüência apresenta falhas? 40 longo do tempo e nas condições estabelecidas?) Usabilidade (é fácil de usar?) Tolerância a falhas É capaz de recuperar dados em recuperação caso de falha? Facilidade de É fácil entender os conceitos compreensão utilizados? Facilidade de aprendizagem Em relação ao tempo (realiza as tarefas no tempo adequado à complexidade de cada uma delas?) Qual é o tempo de resposta e de processamento? recursos quanto tempo? modificação (é fácil de modificar?) Estabilidade Testabilidade É fácil de encontrar um erro, quando ocorre? É fácil modificar e remover erros? Há grande risco quando se faz alterações? É fácil testar quando se faz alterações? É fácil adaptar a outras Portabilidade outro ambiente?) É fácil de operar e controlar? Quanto recurso usa? Durante Facilidade de (é fácil transferir para É fácil aprender a usar? Em relação aos Facilidade de análise Manutenibilidade reage? Facilidade de Operacionalidade Eficiência Ocorrendo falhas, como ele Adaptabilidade plataformas sem aplicar outras ações além dos fornecidos para esta finalidade? 41 Facilidade de É fácil instalar em outras instalação plataformas? Está de acordo com padrões de Conformidade portabilidade? Facilidade de É fácil substituir por outro substituição software? Quadro 6: Subcaracterísticas da qualidade interna e externa. Fonte: Adapatação de Biacnhi, 2006 O quadro a seguir refere-se às características de qualidade de uso. Características Eficácia Pergunta-chave Permite atingir os objetivos estabelecidos em certas condições de funcionamento? Produtividade Capacidade de utilizar um determinado número de recursos em relação aos objetivos pretendidos em certas condições de Segurança funcionamento. Capacidade de obter níveis de risco, aceitáveis em certas condições de funcionamento. Satisfação Satisfaz aos requisitos do usuário? Quadro 7: Características da qualidade de uso. Fonte: Biacnhi, 2006 42 3 GERÊNCIA DE CONFIGURAÇÃO 3.1 Abordagem Teórica Essa seção conterá a parte contextual da Gerência de Configuração, abordando sua definição e conceituando termos importantes. 3.1.1 Visão Geral À medida que a complexidade dos projetos aumentou e as equipes de trabalho se tornaram maiores, muitas vezes distribuídas geograficamente, ter um processo de desenvolvimento definido e gerenciado tornou-se uma necessidade. Para Molinari (2007), no que diz respeito à Gerência de Configuração de Software ter algo organizado e gerenciado refere-se a guardar um histórico real do que foi desenvolvido e modificado, inclusive tratando as seguintes questões: por que foi modificado, quando, como, quem modificou, qual o impacto da mudança e qual a produtividade associada. A Gerência de Configuração ou Gestão de Configuração, segundo Pressman (2002), é um conjunto de atividades de apoio ao desenvolvimento do software que é aplicada ao longo de todo o processo de software. Essas atividades são desenvolvidas para (1) identificar as modificações, (2) controlar modificações, (3) garantir que as modificações sejam adequadamente implementadas e (4) relatar as modificações a outros que possam ter interesse. Essas atividades começam quando o projeto de engenharia de software se inicia e só termina quando o software é retirado de operação. Uma definição formal para a Gerência de Configuração (GC) seria: 43 “uma disciplina que aplica procedimentos técnicos e administrativos para identificar e documentar as características físicas e funcionais de um Item de Configuração (IC), controlar as alterações nessas características, armazenar e relatar o processamento das modificações e o estágio da implementação e verificar a compatibilidade com os requisitos especificados” (IEEE apud Murta, 2006, p.8). Conforme a visão de Molinari (2007), a GC trata da gestão do ciclo de vida de desenvolvimento do software, incluindo seu histórico de alterações. Ela pode ser usada por todos os envolvidos no processo de desenvolvimento de um software, desde o desenvolvedor, utilizando-a para gerenciar as versões de seu novo programa, até os gestores da empresa, fazendo uso da GC para saber o impacto das mudanças e seus custos associados. Para tal, ela deve dar suporte a diversas atividades, tais como: identificação dos componentes, gerenciamento da configuração do software, controle de versão e controle das mudanças. Segundo o mesmo autor, a GC passou, ao longo dos anos, por quatro fases que caracterizam a sua evolução. De 1970 a 1980, a GCS era baseada em arquivos, sendo voltada para o controle e versionamento de arquivos pura e simplesmente. De 1998 a 1990, era baseada em repositório, as informações de cada arquivo versionado (metadados) passam a ser armazenados em banco de dados e a gestão de mudanças começa a ser iniciada. De 1990 a 2000, a GC era baseada em transparência, onde os dados gerenciados passam a ser armazenados em repositórios centrais, e há uma preocupação com a segurança de acesso e com a rastreabilidade desses dados. Do início de 2000 até hoje, a GCS é baseada em processos e produtividade, essa fase é caracterizada pela preocupação com a produtividade e com o impacto da mudança. 44 3.1.2 Conceitos Iniciais a) Metadados: Molinari (2007) explica que são informações relativas aos itens de configuração, tais como: data de entrada em produção, data de criação, quem criou e, principalmente, o seu relacionamento com os outros itens, o que proporciona a rastreabilidade entre eles. Os metadados dos itens colocados sob controle são compartilhados por todas as áreas de atividades de GC. Sendo usados, entre outras, para pesquisas direto na base de dados e para determinar se um item de configuração está fora dos padrões; b) Item de Configuração: Pressman (1995) o descreve como sendo cada um dos elementos de informação que são criados durante o desenvolvimento de um produto de software, ou que para este desenvolvimento sejam necessários, que são identificados de maneira única e cuja evolução é passível de rastreamento; c) Configuração de Software: é o conjunto de itens de configuração de um determinado software; d) Baseline (ou linhas de referência): para Rocha, Maldonado, Weber, (2001) é um conjunto de um ou mais itens de configuração identificados, analisados, corrigidos, aprovados e armazenados em um local sob controle de acesso. Segundo Pádua (2003), tais itens só podem ser modificados se forem satisfeitas uma série de etapas de formalização, análise, aprovação e registro de acordo com o padrão de GC da empresa; e) Plano de configuração: documento que consta as atividades relacionadas à implantação e administração do processo de Gerência de Configuração. Deve conter, também, a descrição de como e quando as atividades serão efetuadas e quem serão os responsáveis por elas, bem como os recursos necessários. Tal plano varia de acordo com as necessidades de cada empresa e, se for 45 necessário, pode-se fazer um estudo dos padrões internacionais de planos de Gerência de Configuração para escolher o mais adequado (Rocha, Maldonado, Weber, 2001); f) Repositório (ou biblioteca): local onde os itens de configuração são armazenados e só podem ser acessados de acordo com a política de acesso da Gerência de Configuração (Molinari, 2007). Pelo fato de manipular uma grande quantidade de informações, a gestão da biblioteca só é viável com o suporte de uma ferramenta. (Páuda, 2003); g) Papéis (ou roles): indicam as atribuições de cada um dentro do desenvolvimento do software em relação à GC. “A GC requer o funcionamento colaborativo de vários papéis da organização. Os papéis que se destacam são: (1) o grupo de GC que centraliza o funcionamento dos mecanismos dessa disciplina, por exemplo, desenvolve, mantém e divulga os procedimentos de GC e uso das respectivas ferramentas; (2) o grupo de controle de configuração de software que toma as decisões importantes relativas à GC no nível de projeto, por exemplo, autorizar a identificação dos itens de configuração e a criação de baselines, bem como, avaliar o impacto das alterações; (3) os gerentes de projeto são responsáveis por cobrar dos desenvolvedores a aplicação da GC no dia-a-dia do projeto” (Pádua, 2003, 287) h) Check-in/check-out: de acordo com Rocha, Maldonado, Weber (2001), esses métodos de conferência na entrada e na saída são aplicados para a inclusão e extração dos itens de configuração no repositório, respectivamente. Quando é preciso fazer uma alteração em um item de configuração uma cópia dele é colocada na área de trabalho do desenvolvedor (check-out). Ao término das suas modificações, esse item é revisado e recolocado no repositório (check-in). 46 3.1.3 Definição do escopo e do grau de formalismo das tarefas de GCS Molinari (2007) explica que o escopo diz respeito ao número e aos tipos de objetos colocados sob controle da GC. A princípio, qualquer objeto de software pode ser colocado sob controle da GC, porém quanto mais objetos controlarmos mais alto será seu custo. Definir o escopo, portanto, é encontrar o ponto de equilíbrio. O grau de formalismo está relacionado ao nível de controle com o qual a Gerência de Configuração é desempenhada. Quanto maior o risco, maior deve ser o nível de controle. Conforme vemos na figura abaixo, o grau de formalismo aumenta à medida que as atividades vão sendo realizadas. Figura 8: Evolução do grau de formalismo. Fonte: Molinari, 87. 47 3.2 Abordagem operacional Nessa seção a parte prática da Gerência de Configuração será abordada, discorrendo sobre seus aspectos fundamentais e as atividades que devem compor esse processo. 3.2.1 Atividades de Gestão da Configuração Diversas atividades são desenvolvidas no processo de Gerência de Configuração. Identificação, armazenamento, controle de versão, controle de mudança, relato de status e auditoria são algumas delas, cada uma será vista a seguir: 3.2.1.1 Identificação Nessa atividade determina-se os metadados de um item de configuração. Normalmente, os itens que devem estar sob a Gerência de Configuração são os mais usados no ciclo de vida, os mais genéricos, os mais importantes para a segurança, os projetados para reutilização e os que podem ser alterados simultaneamente. (Berlack, 1992 apud Rocha, Maldonado, Weber, 2001) De acordo com Molinari (2007), um aspecto importante dessa atividade é garantir uma identificação única para cada item, para que a evolução de cada uma das versões dos componentes e a hierarquia entre eles possam ser reconhecidos por meio de seus nomes. O mesmo autor ressalta que é preciso descrever como os itens de configuração se relacionam, pois a identificação desses relacionamentos permite uma rápida localização dos itens afetados em decorrência de alguma alteração por meio da rastreabilidade. 48 Figura 10: Descrição de um item de configuração. Fonte: Molinari,107. Segundo Molinari (2007) diversos artefatos produzidos ao longo do desenvolvimento do projeto podem passar a ser itens de configuração controlados pela Gerência de Configuração. Alguns desses artefatos são: a) Objetos de Produto: podem ser software (inclui arquivos, códigosfonte, arquivos de cabeçalho), hardware (podem ser cabos, maquinário em geral e periféricos), rede (interfaces de protocolo, servidores específicos, switches), dados (seriam os dados iniciais ou básicos do sistema) e ferramentas (processadores de banco de dados são um exemplo); b) Objetos de projeto: Cada etapa de desenvolvimento e suporte possui seus respectivos produtos. Podemos ter, por exemplo, contratos, plano de projeto, cronogramas, relatórios, planos de teste, requisições de release, registro de eventos, etc; c) Objetos Organizacionais: podem ser documentos administrativos, tais como correspondências, (cartas, e-mails, fax), material de venda do produto (protótipos, apresentações), bem como objetos de infraestrutura, como compiladores, computadores pessoais, sistemas 49 operacionais e os ligados à qualidade, por exemplo, descrições de processo da empresa, templates e padrões. 3.2.1.2 Armazenamento Segundo Molinari (2007), sua finalidade é garantir a consistência, integridade e disponibilidade do item de configuração. Por se tratar de algo físico, pode ser uma estrutura de diretório. Cada registro é guardado de forma a identificar com quem esteve e se a cópia do item foi efetuada. Ao conjunto de dados armazenados, damos o nome de biblioteca, ou repositório. Em termos de desenvolvimento de software, Molinari (2007) classifica as bibliotecas da seguinte maneira: a) Biblioteca controlada: quando o armazenamento dos itens de configuração é feito de forma organizada, de acordo com alguma característica ou funcionalidade envolvida; b) Biblioteca dinâmica: os itens de configuração são armazenados nessa biblioteca enquanto estão sendo produzidos, por isso também é conhecida como biblioteca de desenvolvimento. 3.1.2.3 Controle de versões Diversas alterações em um item de configuração são efetuadas ao longo do seu desenvolvimento, o que acarreta, conseqüentemente, a criação de novas versões. De acordo com Molinari (2007), o controle de versões, ou versionamento, permite a edição colaborativa e o compartilhamento dos dados, além de rastrear e controlar os artefatos do projeto. Segundo Rocha, Maldonado e Weber (2001), para efetuar o controle dessas versões, estas devem ser devidamente armazenadas e identificadas. É conveniente que tal esquema de identificação seja feito em forma de árvore, 50 pois além de permitir um histórico das versões, permite identificação única e ramificações a partir de qualquer versão. “Quando um item existe simultaneamente em duas ou mais formas diferentes, que atendam a requisitos similares, temos variantes do item, representadas por ramificações na árvore” (Rocha, Maldonado, Weber, 2001, 62). “Quando temos várias pessoas trabalhando paralela e concorrentemente nos mesmos arquivos pode surgir o problema de uma sobrescrever o trabalho da outra. Para que isso seja evitado, é preciso um conjunto de políticas para ordenar e integrar todas essas fontes de alterações” (MOLINARI, 2007, 170). O mesmo autor explica que por uma questão de segurança, os desenvolvedores costumam fazer uma cópia dos arquivos a serem alterados ao invés de trabalhar diretamente nos arquivos do repositório. Veremos a seguir como Molinari (2007) descreve os tipos de sincronização (ou políticas de versionamento): a) Trava-Modifica-Destrava Nesse caso, o processo de versionamento permite que apenas uma pessoa altera o arquivo de cada vez. Essa visão pode causar um processo de serialização desnecessário, mas se o ambiente necessitar de um alto grau de formalização, esse tipo de processo é o adequado. Essa abordagem é ilustrada na figura a seguir: 51 Figura 12: Exemplo de política Trava-Modifica-Destrava. Fonte:Molinari, 172. 52 b) Copia-Modifica-Resolve Nessa abordagem não há travamento de arquivos, cada desenvolvedor trabalha de forma independente na sua cópia. Se mais de um deles tiver trabalhado no mesmo arquivo, ao final, as alterações são mescladas formando uma versão final única. Veja a ilustração na figura a seguir: Figura 13: Exemplo de Política Copia-Modifica-Resolve. Fonte: Molinari, 173. 53 3.2.1.4 Controle de mudanças Rocha, Maldonado e Weber (2001) reforçam que ao longo do desenvolvimento do software muitas informações são produzidas e modificadas, para que as informações relevantes ao desenvolvimento não se tornem inconsistentes, suas modificações devem ser acompanhadas e controladas. De acordo com Molinari (2007), inúmeros fatores são causadores de mudanças, erro cometido por alguém, surgimento de novos requisitos ou adequação ao novo ambiente no qual o produto está inserido são alguns exemplos. Portanto, a mudança em uma aplicação é para corrigir algo, adicionar novas funcionalidades ou otimizar as já existentes. Molinari (2007) ressalta um aspecto fundamental da mudança: o chamado “efeito dominó”, pois qualquer mudança, por menor que seja, sempre causará algum impacto. Por isso é fundamental que todos os envolvidos sejam informados. Conforme Pádua (2003) explica, para que um item de configuração sofra alguma alteração após está inserido numa baseline, é preciso passar por um processo formal de solicitação de alteração, avaliação, aceitação, desenho, implementação e testes. Caso tenha um resultado positivo nos testes, então a solicitação será, enfim, disponibilizada. “O controle de mudança é a combinação de procedimentos humanos e ferramentas automatizadas” (Pressman, 1995, 930). O processo de controle de mudança explicado a seguir, está descrito conforme o entendimento de Páuda (2003) e complementado com a visão de Pressman (1995). O primeiro passo para dar início a essa atividade é o envio de uma solicitação de mudança. Tal solicitação vai para análise para determinar os respectivos custos e benefícios. Nessa etapa, é produzido um relatório de avaliação de solicitação de mudança no qual constam os seguintes itens: a) Especificação dos requisitos da mudança; 54 b) Identificação dos itens possivelmente afetados; c) Possível impacto da modificação sobre o produto; d) Possíveis soluções alternativas; e) Possíveis impactos sobre outros produtos; f) Identificação dos problemas de segurança; g) Possíveis fatores humanos envolvidos; h) Custos da modificação; i) Benefícios da modificação; j) Riscos da modificação; k) Plano de desenho e implementação; l) Estratégias de testes. De acordo com as conclusões desse relatório, define-se por aceitar ou rejeitar a solicitação de alteração. Caso seja escolhida a primeira opção, um aviso de aceitação de alteração é emitido, e uma solicitação de liberação dos itens afetados da baseline é feita ao grupo de GC. Caso a solicitação de liberação dos itens da baseline seja aceita, de acordo com as prioridades, passa-se à fase seguinte, de desenho, onde são identificados os itens que serão efetivamente modificados, bem como a definição dos testes a serem aplicados, para evitar efeitos colaterais negativos com relação às alterações. O resultado do desenho é uma proposta de alteração. Tal proposta deve constar: a) Lista dos itens que deverão ser efetivamente alterados; b) Desenho das alterações; c) Testes que deverão ser realizados; d) Plano detalhado de implementação das alterações. Depois disso, vem a fase de implementação. Nesta, as alterações dos itens são efetivamente realizadas, e para isso é preciso fazer o check-out dos 55 itens necessários. Nessa fase também são efetuados os testes de unidade e, quando preciso, as atualizações dos modelos e documentos. A próxima etapa é a de testes, onde são realizados teste de integração, de regressão, além de revisões e inspeções. Ao final, os respectivos relatórios são enviados ao grupo da garantia da qualidade, o qual realiza a auditoria nos itens modificados. Estando de acordo, os referidos itens são enviados ao grupo de GC juntamente com um relatório de formalização de alteração. O grupo de GC, verifica a conformidade com as regras de gestão e incorpora os itens em uma baseline, através do check-in, mecanismos apropriados de controle de versão devem ser aplicados nesse momento. Uma cópia do relatório de formalização da alteração é enviada aos interessados. Figura 14: Ciclo de uma requisição de mudança aprovada. Fonte: Adaptada de Molinari, 122 56 3.2.1.5 Relato de status “O objetivo dessa tarefa é relatar a todas as pessoas envolvidas no desenvolvimento e na manutenção do software as seguintes informações: o que aconteceu, quem o fez, quando aconteceu, o que mais será afetado.” (ROCHA; MALDONADO; WEBER, 2001). Segundo Molinari (2007), essa atividade é responsável por procedimentos de extração dos dados, por meio de consultas e relatórios. Estes permitem a formatação e o alinhamento dos dados e devem ser totalmente automatizados, bem como seus templates disponíveis para utilização sempre que preciso. De acordo com Rocha, Maldonado, Weber (2001) o rápido acesso à base de dados sobre as ocorrências na GC traz os benefícios de agilizar o processo de desenvolvimento e melhorar a comunicação entre as pessoas. 3.2.1.6 Entrega na GCS “No contexto da Engenharia de Software, definimos uma linha básica como um marco de referência no desenvolvimento de um software, que é caracterizado pela entrega de um ou mais itens de configuração e pela aprovação dos mesmos, obtida por meio de uma revisão técnica formal” (Pressman, 1995, 919). De acordo com Molinari (2007), em vários momentos do ciclo de desenvolvimento do software, são efetuadas entregas (ou deliveries) de um determinado objeto. Esses momentos vão variar de acordo com o modelo de desenvolvimento adotado e são chamados marcos de entrega (ou milestones). As entregas citadas acima podem ser internas, ou seja para ser utilizada em desenvolvimentos futuros, ou pode ser uma entrega externa, para um cliente. 57 “Um release de um sistema é uma versão que é distribuída para os clientes. Cada release de sistema deve incluir nova funcionalidade ou se destinar a uma diferente plataforma de hardware. Ele pode conter, além do código executável, a seguinte documentação: a) Arquivos de configuração que definem como o release deve ser configurado para instalações específicas; b) Arquivos de dados que são necessários para operação bemsucedida; c) Um programa de instalação que é utilizado para ajudar a instalar o sistema no hardware-alvo; d) Documentação eletrônica e em papel que descreva o sistema” (SOMMERVILLE, 2003). “A entrega dos produtos e da documentação do software devem ser formalmente controladas. Itens relativos a funções críticas de segurança devem ser elaborados, armazenados, empacotados e liberados de acordo com as políticas da organização” (Rocha, Maldonado, Weber, 2001). 3.2.1.7 Auditoria da configuração Conforme Pádua (2003) descreve, o grupo de GC deve efetuar auditorias do repositório periodicamente. A finalidade da auditoria é verificar se: a) as baselines estão atualizadas; b) as alterações se originam de solicitações de mudanças aprovadas; c) na as baselines há consistência entre descrição e conteúdo; d) as baselines estão conformes com as regras especificadas; e) os backups necessários foram atualizados. Os resultados das auditorias são comunicados aos responsáveis para que os problemas encontrados sejam resolvidos. Caso necessário, os 58 problemas encontrados também podem ser reportados à alta administração da empresa. 59 4 CONSTRUÇÃO DO GUIA 4.1 Definição do Layout O Layout do guia para o processo de gerência de configuração foi baseado no layout do guia de aquisição do MPS-BR. 4.2 Definição dos subprocessos O processo de gerência de configuração, definido nesse guia, foi subdividido em cinco subprocessos, onde se procurou englobar atividades que cobrissem de forma satisfatória as funções do processo de gerência de configuração do MPS-BR. a) Subprocesso: Planejar a Gerência de configuração do projeto O planejamento é fundamental para o êxito de qualquer projeto. Antes de iniciar um projeto é preciso planejar estratégias, definir regras, elaborar atividades, definir responsabilidades, estipular metas, preparar os recursos necessários, enfim, definir previamente como o projeto deverá se desenvolver. Dessa forma, entre outros benefícios, evita-se o desperdício de tempo e recursos, os improvisos são menos freqüentes e os imprevistos são melhor administrados. Esse subprocesso foi dividido em três atividades: 1. Estabelecer/Consultar Políticas de GC - As políticas de GC foram estabelecidas de forma que as metas – GCO1 - Os itens de configuração são identificados e GCO8 - O armazenamento, o manuseio e a entrega dos produtos de trabalho são controlados – do MPS-BR fossem atendidas, na medida em que se definiu: 60 Os itens de configuração que devam ser controlados pela gerência de configuração; A nomeclatura para que esses itens possam ser identificados unicamente; A estrutura de diretórios para armazenamento dos artefatos produzidos ao longo do projeto; As políticas de acesso aos dados dos repositórios; A forma como os itens de configuração devam ser recuperados do repositório; As regras de versionamento para itens de configuração liberados para entrega. Além disso, o Backup foi incluso nas políticas de GC por se tratar de uma atividade importante para preservação do conteúdo do repositório, como o próprio modelo MPS-BR cita quando trata de sua meta GCO3 – É estabelecido e mantido um Sistema de Gerência de Configuração. 2. Elaborar Plano de GC - O plano de gerência de configuração é citado em diversos momentos no MPS-BR, por exemplo, quando trata da identificação dos itens de configuração e da criação de linhas de base. Portanto, essa atividade foi descrita para a elaboração desse artefato tão importante e que vai ser utilizado em todo o processo. 3. Criar ambiente de GC - Todos os artefatos que farão parte do escopo da gerência de configuração devem estar armazenados em um repositório seguro e confiável. A criação da estrutura desse repositório e as respectivas permissões de acesso são realizadas nessa atividade e deve seguir as regras estabelecidas nas políticas de GC. b) Subprocesso: Manipular baseline Baselines são elementos que ficam sobre o controle da gerência de configuração, a partir dos quais se pode dar continuidade a desenvolvimentos posteriores. Todas as atividades do processo de 61 Gerência de Configuração são efetuadas direta ou indiretamente em cima das baselines. Portanto, esse é um subprocesso essencial que foi descrito de modo a atender as seguintes metas do MPS-BR: GCO2 Os itens de configuração gerados pelo projeto são definidos e colocados sob uma linha base e GCO4 - As modificações e liberações dos itens de configuração são controladas. Para atender a essas metas este subprocesso foi dividido em três atividades: 1. Criar baseline – O momento de criação e os itens que farão parte de uma baseline devem ser previamente definidos no plano e nas políticas de GC. Como as baselines são pontos de referência para outras etapas do desenvolvimento, a sua criação necessita ser analisada e aprovada por um comitê. 2. Recuperar baseline – Esse é um passo intermediário entre a criação e a liberação de uma baseline. Após sua criação, sempre que uma baseline precisar passar por alterações, é necessário recuperá-la da base de dados. Esse passo dever seguir as formalidades estabelecidas pelo subprocesso “Controlar Mudanças”. A forma com que uma baseline é recuperada do repositório controlado - por check-out – está estabelecido nas políticas de GC. 3. Liberar baseline – Uma baseline pode ser liberada internamente para ser utilizada em outras etapas do desenvolvimento do projeto – ou externamente – para instalação no ambiente do cliente. Seja como for, antes de sua liberação a baseline deve passar por uma auditoria e deve seguir as regras de versionamento estabelecidas nas políticas de GC. 62 c) Subprocesso: Controlar mudanças As mudanças em um projeto são invitáveis e ocorrem constantemente. Todas as mudanças que possam ocorrer em uma baseline devem passar por um processo formal, para serem previamente analisadas de modo a não comprometer o desenvolvimento do projeto com mudanças inadequadas. Portanto, esse subprocesso foi estabelecido para atender as seguintes metas do MPS-BR: GCO4 - As modificações e liberações dos itens de configuração são controladas e GCO6 - A situação dos itens de configuração e as solicitações de mudanças são registradas, relatadas e o seu impacto é analisado. 1. Formalizar solicitação de mudança – Esse passo deve ser executado para se registrar, formalmente, a necessidade de se alterar uma baseline. 2. Analisar impacto da mudança – A análise do impacto é uma atividade explícita na meta GCO6 do MPS-BR e é fundamental para o desenvolvimento do projeto, pois é nela que se avalia a abrangência das modificações e se estima, entre outros, o esforço, tempo, recurso e prazo para realizá-las. O resultado dessa atividade é um relatório com todas essas informações. 3. Analisar solicitação de mudança – O relatório elaborado na atividade anterior é analisado pelo Comitê de Controle de Mudanças, grupo formado por representantes dos diversos segmentos envolvidos no projeto, a partir dessa análise, decide-se por aprovar ou não a solicitação de mudança. 4. Atribuir mudança – Caso aprovada e de acordo com sua natureza, a mudança proposta deve ser atribuída ás pessoas que tenham competência técnica implementá-la. 5. Implementar mudança – Nessa atividade as mudanças propostas são efetivamente realizadas. Diversas atividades do processo de desenvolvimento do software podem efetuadas, como análise, modelagem, implementação, revisão e teste. 63 d) Subprocesso: Relatar status da configuração Tornar as informações e modificações da configuração do software disponíveis aos envolvidos com elas é fundamental para o bom andamento do projeto, uma vez que facilita a comunicação entre as pessoas e evita o retrabalho. Esse subprocesso foi estabelecido para atender às seguintes metas do MPS-BR: GCO5 - As modificações e liberações são disponibilizadas para todos os envolvidos, GCO6 - A situação dos itens de configuração e as solicitações de mudanças são registradas, relatadas e o seu impacto é analisado e GCO9 - A integridade das linhas bases (baselines) é estabelecida e mantida, através de auditoria da configuração e de registros da Gerência de Configuração. Esse subprocesso foi dividido em duas atividades: 1. Gerar relatórios/Notificações - Nessa atividade os responsáveis coletam as informações e agregam os dados na forma de relatórios ou notificações. Isso é feito em diversos momentos do desenvolvimento do projeto para que os envolvidos sejam cientificados a respeito de qualquer acontecimento, mudança ou informação relevante. 2. Enviar relatórios/Notificações - É a efetiva comunicação formal das informações geradas na atividade anterior. e) Subprocesso: Auditar configuração Realizar a auditoria na configuração do software é muito importante para verificar se processo esta sendo seguido, bem como a integridade das baselines. Esse subprocesso foi estabelecido para atender a meta GCO9: A integridade das linhas bases (baselines) é estabelecida e mantida, através de auditoria da configuração e de registros da Gerência de 64 Configuração. Para isso, o subprocesso foi dividido em duas atividades: 1. Executar auditoria – Nessa atividade realiza-se a verificação do cumprimento de tudo que está especificado no processo de Gerência de Configuração, bem como a integridade física e funcional das baselines. 2. Reportar resultados – Os profissionais, das áreas gerencial e técnica, responsáveis por providenciar a correção dos possíveis desvios são comunicados nessa atividade. 4.3 Definição dos anexos Os anexos foram elaborados como forma de exemplificar os produtos gerados no processo de desenvolvimento, porém eles podem ser adaptados de acordo com as necessidades da empresa. a) Anexo A – Plano de Desenvolvimento de Software Esse plano de desenvolvimento de software foi adaptado do Rational Unified Process (RUP) uma vez que é um processo de engenharia de software reconhecido mundialmente e atende de forma satisfatória ao processo de Gerência de Configuração estabelecido nesse guia. A adaptação foi feita em determinados locais do plano que fazia referência apenas ao termo “iteração”, incluindo-se o termo “etapa” de modo que pudesse ser utilizado também por um processo de desenvolvimento não iterativo. b) Anexo B – Plano de Gerência de Configuração Esse plano de gerência de configuração foi adaptado do Rational Unified Process (RUP) uma vez que é um processo de engenharia de 65 software reconhecido mundialmente e atende de forma satisfatória ao processo de Gerência de Configuração estabelecido nesse guia. A adaptação foi feita em determinados locais do plano que fazia referência apenas ao termo “iteração”, incluindo-se o termo “etapa” de modo que pudesse ser utilizado também por um processo de desenvolvimento não iterativo. c) Anexo C – Planilha de controle de criação baseline Essa planilha foi elaborada de modo a conter os dados essenciais para identificar uma baseline que foi criada, ela descreve a data, o nome e número correspondente à fase ou iteração da criação da baseline, o que originou a sua criação, os itens de configuração que a compõem, bem como o seu rótulo. d) Anexo D – Planilha de acompanhamento de mudança Essa planilha foi proposta como uma forma de facilitar o acompanhamento do andamento da solicitação de mudança, uma vez que ela contém a identificação da solicitação de mudança, o número do Relatório de Controle de Mudança se for o caso, e a situação em que ela se encontra. e) Anexo E – Relatório de controle de Mudança Esse relatório foi baseado no referencial teórico que trata a respeito do controle das mudanças. Portanto, as principais informações que um relatório dessa natureza deve conter foram sintetizadas nesse relatório, tais como descrição da mudança, o impacto nos requisitos, produtos e prazos, bem como a estimativa de esforço. Ele contém ainda um tópico destinado às assinaturas das pessoas aprovam as mudanças, caso não sejam aprovadas, existe um local para tal justificativa. f) Anexo F – Registro de Auditoria Esse documento foi elaborado devido à necessidade de se registrar os dados da atividade de auditoria. Ele contém campos para identificação 66 e registro dos desvios encontrados, bem como das possíveis melhorias. 4.4 Metas do MPS-BR X Guia de Gerência de Configuração O Guia de Gerência de Configuração tem por objetivo descrever um processo de Gerência de Configuração que atenda, de forma satisfatória, as metas do MPS-BR. Portanto, o quadro abaixo mostra a correspondência entre a meta descrita mo MPS-BR e o subprocesso elaborado neste guia que vai atendê-la, demonstrando, assim, que o objetivo foi alcançado. Metas do MPS-BR Subprocessos do Guia de Gerência de Configuração GCO1 - Os itens de configuração são Subprocesso - Planejar a Gerência identificados de configuração do projeto (atividades: Definir Políticas de GC e Elaborar Plano de GC do projeto) GCO2 - Os itens de configuração Subprocessos – Planejar a gerados pelo projeto são definidos e Gerência de configuração do projeto colocados sob uma linha base (atividades: Definir Políticas de GC e Elaborar Plano de GC do projeto) e Manipular Baseline (atividade: Criação de Baseline) GCO3 – É estabelecido e mantido um Essa meta é atendida no processo Sistema de Gerência de Configuração como um todo. GCO4 - As modificações e liberações Subprocessos: Planejar a Gerência 67 dos itens de configuração são de configuração do projeto controladas (atividade: Definir Políticas de GC), Manipular Baseline (atividade: Liberação de Baseline) e Controlar Mudanças GCO5 - As modificações e liberações Subprocessos: Manipular Baseline são disponibilizadas para todos os (atividade: Liberação de Baseline) e envolvidos Controlar Mudanças (atividade: Comunicar os envolvidos). GCO6 - A situação dos itens de Subprocessos: Controlar Mudanças configuração e as solicitações de (atividades: Formalizar Solicitação mudanças são registradas, relatadas e de Mudança e Analisar Impacto da o seu impacto é analisado Mudança) e Relatar status da Configuração GCO7 - A completeza e a consistência Essa meta é atendida no processo dos itens de configuração são como um todo. asseguradas GCO8 - O armazenamento, o manuseio Subprocessos: Planejar a Gerência e a entrega dos produtos de trabalho de configuração do projeto são controlados (atividade: Definir Políticas de GC e Elaborar Plano de GC do projeto) e Manipular Baseline (atividade: Liberação de Baseline) GCO9 - A integridade das linhas bases Subprocessos: Relatar Status da (baselines) é estabelecida e mantida, Configuração e Auditar através de auditoria da configuração e configuração de registros da GC. Quadro 8: Metas do MPS-BR X Subprocessos do Guia de Gerência de Configuração 68 Conclusão A demanda por produtos e serviços de qualidade é crescente em todas as áreas. A cada dia o mercado consumidor está mais exigente e, por conseguinte, o investimento em práticas que levam a obtenção da qualidade nos processos de produção e no produto final tem sido cada vez maior. Nesse contexto, a área da engenharia de software tem sido subsidiada pela disciplina de qualidade de software. A indústria de software tem investido na qualidade através da adoção de normas, padrões e modelos de referência de qualidade que se preocupam não só com a qualidade do produto, mas também com a qualidade do processo de desenvolvimento do software. Dentre esses modelos de referência, destaca-se o MPS-BR, que é um modelo adequado a micro e pequenas empresas e voltado para a realidade brasileira. Tal modelo, no que se refere à implantação dos processos de desenvolvimento de um software, é subdividido em níveis de maturidade. Dentre esses níveis, destacamos o nível F o qual contempla o processo de Gerência de Configuração de Software, foco do presente trabalho. O processo de Gerência de Configuração é um processo de apoio ao desenvolvimento do software e seu objetivo é manter a integridade dos artefatos produzidos ao longo do ciclo de vida do projeto, de modo que a evolução desses artefatos seja acompanhada e suas mudanças sejam controladas e comunicadas aos envolvidos. Pelo fato do modelo MPS-BR não ser um modelo descritivo, ou seja, ele diz o que fazer, mas não como fazer, esse trabalho teve o objetivo de preencher essa lacuna. Portanto, foi elaborado um guia para o processo de Gerência de Configuração, onde são relatados, de modo detalhado, os seus subprocessos com suas respectivas atividades, bem como os produtos requeridos e gerados em cada uma delas. Para elaborar o guia foi necessária uma pesquisa bibliográfica sobre o tema, utilizando-se livros, materiais eletrônicos disponíveis na Web e 69 programas que abordavam o assunto. É importante destacar que o material publicado na Web se mostrou muito superficial, sendo imprescindível, para o êxito do trabalho, a pesquisa em livros voltados exclusivamente para o tema. Com a produção do guia, procurou-se subsidiar as empresas desenvolvedoras de software a atingir as metas estabelecidas no nível F do MPS-BR para o processo de Gerência de Configuração, ou simplesmente a estabelecer um processo de Gerência de Configuração no âmbito de sua organização, de modo a tornar seu processo de desenvolvimento mais eficiente. Como continuidade desse trabalho, é possível efetuar um estudo de caso com a aplicação do guia em uma empresa real, verificando-se, desse modo, sua eficácia, outra sugestão seria desenvolver um aplicativo que desse suporte às atividades descritas no processo de Gerência de Configuração. 70 Apêndice A – Guia para Gerência de Configuração de Software Este guia contém orientações para a processo implantação de de um Gerência de Configuração de Software. Adriana Reis de Almeida Rodrigues Universidade Católica de Brasília Novembro de 2007 71 Sumário 1. Introdução .................................................................................................... 72 2. Objetivo..... ................................................................................................... 72 3. Descrição do processo de Gerência de Configuração (GC)................. ........ 72 3.1 Visão Geral ...................................................................................................... 72 3.2 Planejar a GC do projeto ................................................................................. 76 3.3 Manipular baseline .......................................................................................... 84 3.4 Controlar as mudanças ................................................................................... 87 3.5 Reportar status de configuração...................................................................... 91 3.6 Auditar configuração ........................................................................................ 94 Anexo A – Plano de Desenvolvimento de Software .................................................. 97 Anexo B – Plano de Gerência de Configuração ...................................................... 105 Anexo C – Planilha de Controle de criação baseline ............................................... 108 Anexo D – Planilha de Acompanhamento de Mudanças ........................................ 109 Anexo E – Relatório de Controle de Mudanças....................................................... 110 Anexo F – Registro de Auditoria.............................................................................. 113 72 1. Introdução Ao longo do ciclo de vida de um software diversas pessoas estão envolvidas e inúmeros artefatos são produzidos. O conjunto de artefatos – incluindo documentação, código, protótipo, etc. – forma a configuração de um software. Tudo que for produzido e/ou alterado deve ser registrado para que haja um efetivo controle das versões dos artefatos e assim, se possa fazer o reconhecimento de qual versão é válida em um determinado momento. Durante o processo de desenvolvimento de um software várias mudanças podem ocorrer, pelos mais diversos motivos, que pode ser a necessidade de adaptação ao novo ambiente em que o software está inserido, a inclusão de um novo requisito não informado anteriormente ou a mudança no próprio negócio. O controle dessas mudanças é fundamental para que informações relevantes não se tornem inconsistentes, além de se evitar alterações prejudiciais ao próprio projeto. Outro aspecto importante diz respeito à comunicação das mudanças ocorridas. Pelo fato de uma alteração, normalmente, gerar outras, é necessário que todas as alterações sejam comunicadas às pessoas envolvidas e às que serão afetadas por elas. A gerência de configuração se preocupa com todos os elementos abordados, por isso ela é uma atividade de apoio tão importante ao desenvolvimento do software e deve estar presente desde o início do seu ciclo de desenvolvimento. De acordo com o MPS-BR, o propósito do processo de Gerência de Configuração “é estabelecer e manter a integridade de todos os produtos de trabalho de um processo ou projeto e disponibilizá-los a todos os envolvidos”. 2. Objetivo Este guia tem por finalidade descrever os subprocessos, e suas respectivas atividades, que são necessários para que uma empresa possa implantar um processo de Gerência de Configuração (GC) de modo a atender as metas do MPS-BR. 3. Descrição do processo de Gerência de Configuração (GC) 3.1 Visão Geral O gerenciamento de configuração é um processo de apoio ao desenvolvimento do projeto e seu propósito é definir as atividades para aplicação de procedimentos administrativos e técnicos destinados a identificar e definir os itens de configuração, estabelecer e manter a integridade dos artefatos gerados ao longo do projeto, bem como comunicar às pessoas interessadas da produção ou modificação de tais artefatos. Este processo deve ser estar presente desde o início do ciclo de vida do projeto. 73 Como resultado da implementação bem-sucedida do processo de Gerência de Configuração temos: 1. Um Sistema de Gerência de Configuração é estabelecido e mantido; 2. Os itens de configuração são identificados; 3. Os itens de configuração sujeitos a um controle formal são colocados sob baseline; 4. A situação dos itens de configuração e das baselines é registrada ao longo do tempo e disponibilizada; 5. Modificações em itens de configuração são controladas e disponibilizadas; 6. Auditorias de configuração são realizadas; 7. O armazenamento, o manuseio e a liberação de itens de configuração e baselines são controlados. Este processo será descrito a seguir através dos seus 5 (cinco) subprocessos (Figura 1): Planejar a GC do projeto (ver 3.2) Manipular baseline (ver 3.3) Controlar mudanças (ver 3.4) Relatar status da configuração (ver 3.5) Auditar configuração (ver 3.6) 74 Visão Geral do processo de Gerência de Configuração Planejar a GC do projeto Manipular baseline Controlar mudanças Relatar status de configuração Auditar configuração 1. Estabelecer/Consultar Políticas de GC 2. Elaborar Plano de GC 3. Criar ambiente de GC 1. Criar baseline 2. Recuperar baseline 3. Liberar baseline 1. 2. 3. 4. 5. 6. Formalizar solicitação de mudança Analisar impacto da mudança Analisar solicitação de mudança Atribuir mudança Implementar mudança Comunicar os envolvidos 1. Gerar relatório/Notificação 2. Enviar relatório/Notificação 1. Executar auditoria 2. Reportar resultados 75 Cada um dos subprocessos está detalhado, quando pertinente, pelos seguintes itens: Objetivo: descreve os objetivos a serem alcançados com a realização do subprocesso e orientações gerais a respeito do subprocesso; Atividades previstas: identifica e descreve as atividades necessárias para atingir os objetivos e obter os resultados previstos para o subprocesso; Produtos requeridos e gerados: relaciona os insumos necessários para executar cada atividade prevista no subprocesso, bem como os produtos das atividades previstas no subprocesso. 76 3.2 Planejar a GC do projeto Objetivo O propósito do subprocesso “Planejar a GC do projeto” é definir as diversas práticas relacionadas à GC, determinar COMO, QUANDO E POR QUEM as atividades de GC serão desempenhadas ao longo do desenvolvimento do projeto, bem como criar o ambiente necessário para o gerenciamento da configuração. Ele é composto pelas seguintes atividades: Estabelecer/Consultar políticas de GC (ver Pl-a1); Elaborar o plano de GC (ver Pl-a2); e Criar ambiente de GC (ver Pl-a3). Atividades previstas Id. Atividade Pl-a1 Estabelecer/consultar políticas de GC Descrição: As políticas de GC são estabelecidas pelo gerente de GC e são usadas para estipular diversas práticas a serem aplicadas na seleção, identificação, armazenamento, acesso, versionamento e manutenção da configuração, de modo a torná-la consistente e confiável. 1. Práticas de identificação da configuração: A identificação da configuração agiliza a identificação e localização de qualquer versão de item do configuração do projeto. Seleção dos itens de configuração A definição do escopo dos itens de configuração é fundamental para uma gerência de configuração eficiente. Ele não deve ser nem muito amplo, para não dificultar o gerenciamento e nem muito restrito para não limitar ou prejudicar o processo de gerência de configuração. Os critérios podem variar de acordo com cada projeto, o analista de GC do projeto deve selecionar os itens de configuração dentre os seguintes critérios: Produtos que são passíveis de alterações e que devam ser mantidos sob o controle de versões; Produtos que são dependentes entre si e que, por esse motivo, ocasionam um efeito dominó quando alterados; 77 Produtos que podem ser compartilhados por mais de um grupo; Produtos que são críticos para o controle do projeto; Produtos de uma fase que servem de insumo para outra fase do projeto; Produtos projetados para reutilização; Produtos que serão entregues aos clientes. Definição dos rótulos de identificação Identificar a configuração permite que se localize e identifique de forma rápida e fácil a versão correta de qualquer artefato de projeto. Para se identificar unicamente um item de configuração deve-se rotulá-los. Os rótulos identificam versões específicas de artefatos. Utilizando a ferramenta de GC, o analista de GC do projeto deve rotular os IC de acordo com a seguinte estrutura de rótulo de identificação única: <Cliente> - <Sigla do sistema> - <Nome do Item> <Cliente> Sigla do cliente <Sigla do sistema> Sigla que identifica o Sistema <Nome do Item> Nome que identifica o item. Identificação de baseline Quando um ou um conjunto de itens de configuração passa a ser uma baseline, ele deve seguir o seguinte rótulo identificador de versão: BL-<Sigla do sistema>–<AAAAMMDD>–<Fase/Iteração> BL: Indica que é uma linha de base. Sigla do sistema: Sigla do sistema. AAAAMMDD: Ano, mês e dia. 78 Fase/Iteração: Sigla da fase ou iteração. Exemplo: BL-SGA-20070421-E1 (Elaboração 1 - Iterativo) BL-SAB-20050702-F4 (Fase 4 - Cascata) Documentos que possuem subclassificações, como atas e relatórios, necessitam de um maior detalhamento na sua nomeclatura, para isso deve-se seguir as seguintes instruções: Atas e Relatórios: Atas de Requisitos: <Cliente > - <Sigla do Sistema> – Ata LREQ <AAAAMMDD> (LREQ = Levantamento de Requisitos) <Cliente> - <Sigla do Sistema> – Ata AREQ <AAAAMMDD> (AREQ = Aprovação de Requisitos) Relatórios: <Cliente> - <Sigla do Sistema> – RAP <AAAAMMDD> (RAP = Relatório de Acompanhamento de Projeto) <Cliente> - <Sigla do Sistema> – RCM <AAAAMMDD> (RCM = Relatório de Controle de Mudanças) 2. Práticas para definição da estrutura de armazenamento e controle de acesso Os ICs do projeto são mantidos no repositório, portanto, o servidor destinado a esse fim precisa ser confiável, tolerante a falhas e apresentar um alto nível de desempenho. A estrutura lógica do repositório facilita a identificação dos artefatos e deve observar a hierarquia entre eles. Devem existir dois repositórios, um para itens de configuração em desenvolvimento e outro para baselines. Os repositórios podem possuir a seguinte estrutura básica, devendo ser adaptada de acordo com as necessidades da organização: Estrutura de diretórios dos Repositórios: 79 Figura 1: Estrutura dos repositórios 80 Políticas de acesso aos repositórios: Diretório Ambiente Usuário Acesso Gerente do Projeto R, C e A Análise e Design Gerente de GC e R, C, A e D Documentos não Padronizados analista de GC do Gerenciamento de Configuração projeto Gerenciamento de Projeto Implantação Usuários da equipe do projeto Implementação Todos os demais R, C e A R Modelagem de Negócios Requisitos Teste (Acesso) direitos de acesso: R (read), C (check-in/check-out), A (add/rename/delete) e D (destroy) 3. Práticas de controle de versão O controle de versões dos ICs que não são passíveis de entrega é realizado pela própria ferramenta de controle de versões e terá o histórico das alterações documentadas no comentário de cada versão criada. O controle de versões dos ICs que são passíveis de entrega é realizado através de rótulos, conforme descrito abaixo: Entrega de produtos: O rótulo dos IC a ser entregues devem ter um sufixo identificando a entrega e um número correspondente à versão. Por exemplo, E1, onde E significa Entrega e o número 1 a versão interna do produto. Para homologação: Enquanto o produto estiver com o responsável pela homologação, o analista de GC deve bloqueá-lo com algum recurso da ferramenta de controle de versão, para garantir que ninguém, sem sua autorização, o altere. Até esse momento o produto deve fazer parte do repositório de desenvolvimento. Após a homologação, o produto deve ser rotulado como homologado, conforme exemplo abaixo, e se for alterado, deve ser homologado novamente. Ele está apto a se tornar uma baseline, se for o caso, e para isso 81 deve seguir o especificado na atividade de “criar baseline”, caso seja aprovada a criação de uma baseline, ele deverá ser promovido para o repositório de baselines e rotulado de acordo com as políticas de GC. Primeira entrega: GRU-20060403-E2-E1 (versão 1) Segunda entrega: GRU-20060405-E2-E2 (versão 2) Enésima entrega: GRU-20060407-E2-EN (versão N) Homologado: GRU-20000409-E2-H Após homologação: Quando se tratar de uma entrega de um item já homologado, ele deve ser recuperado do repositório de baselines e seguir o que está especificado em “Recuperar baseline”. Caso seja uma entrega para um cliente, seu rótulo deve especificar que se trata de um release colocando-se o sufixo “R”, se for uma entrega interna para dar continuidade ao desenvolvimento do software, ao seu rótulo deve-se acrescentar o sufixo “I”, indicando que é uma entrega interna, conforme os exemplos a seguir: LB-GRU-20060511-I3-R (Release) LB-GRU-20060511-I3-I (Interna) 4. Práticas para efetuar check-in/check-out As ferramentas de controle de versão organizam os acessos ao repositório por meio de operações básicas conhecidas como check-in/check-out. O método adotado para efetuar essas operações é o “Trava-Modifica-Destrava”. A grande vantagem deste método é prevenir acessos conflitantes ao repositório, quando mais de uma pessoa tenta trabalhar no mesmo conjunto de ICs. Check-out – obtém cópia de trabalho da versão desejada do IC para modificação e, simultaneamente, impede acessos à versão por outros usuários. Nessa operação não é necessário informar comentários. Check-in – cria nova versão do IC a partir de cópia de trabalho modificada (obtida por check-out) e libera acessos. Nesta operação o usuário deve obrigatoriamente registrar um comentário que descreva o que foi alterado. 82 5. Práticas para realizar backup O backup serve para assegurar a disponibilidade dos dados, guardando-os em outro lugar seguro, em caso de acidente ou erro fatal nas aplicações do sistema. O backup deverá ser feito fora dos horários de pico e no modo offline para ter um melhor desempenho. A estratégia de backup deverá ser: Backup total semanalmente e Backup incremental diariamente. Produtos gerados: Pl-p1 – Políticas de gerência de configuração. Pl-a2 Elaborar o plano de Gerência de configuração Descrição: O plano de GC deve ser elaborado pelo analista de GC do projeto e deve descreve quais as atividades relacionadas à GC devem ser realizadas no decorrer do ciclo de vida do projeto. Bem como o cronograma dessas atividades, a atribuição de responsabilidades e os recursos necessários para desempenhálas. Ele deve ser elaborado no início do projeto e revisado a casa fase de desenvolvimento, para assegurar que realmente está adequado ao desenvolvimento do software. Produtos requeridos: Pl-p1 – Políticas de gerência de configuração. Pl-p2 - Plano de desenvolvimento de software1. Produtos gerados: Pl-p3 – Plano de gerência de configuração2. NOTA 1: Ver template do plano de desenvolvimento de software no anexo A. NOTA 2: Ver template do plano de gerência de configuração no anexo B. Pl-a2 Criar ambiente de GC Descrição: O analista de GC do projeto deve solicitar ao pessoal do suporte a alocação de recursos de hardware necessários para instalar e configurar a ferramenta de GC. 83 Com o auxilio da ferramenta de GC o analista de GC deve criar os repositórios do projeto e atribuir os direitos de acesso, conforme estabelecido nas Políticas de GC. Produtos requeridos: Pl-p1 – Políticas de gerência de configuração. Pl-p3 - Plano de gerência de configuração. Produtos gerados: Pl-p4 – Repositórios do projeto. Produtos requeridos e gerados Id. Produtos Pl-p1 Políticas de gerência de Documento que consta as definições de diversas práticas a serem seguidas configuração durante o desenvolvimento do software em relação à gerência de configuração. Plano de desenvolvimento Documento que consta todas as informações necessárias ao controle de software do projeto. Plano de gerência de Documento que consta as atividades relacionadas à implantação e configuração administração do processo de gerência de configuração. Pl-p2 Pl-p3 Pl-p4 Repositório do projeto Descrição Local de armazenamento de todas as versões de arquivos do projeto. 84 3.3 Manipular baseline Objetivo O propósito do subprocesso “Manipular baseline” é criar baselines, recuperálas para implementação de mudanças e liberá-las para o cliente ou para utilização interna. As atividades previstas compreendem: Criar baseline (ver Mb-a1); Recuperar baseline (ver Mb-a2); e Liberar baseline (ver Mb-a3). Atividades previstas Id. Atividade Mb-a1 Criar baseline Descrição: Uma baseline tem por finalidade identificar um ou um conjunto de itens de configuração que estabeleçam um marco do projeto. Através das baselines é possível retroceder no tempo e reproduzir uma determinada versão ou ambiente de desenvolvimento do projeto, rastrear o relacionamento de um produto e elaborar relatórios através de comparação entre os conteúdos das baselines. Os ICs que compõem as baselines deverão ser definidos e documentados no plano de GC do projeto. Os projetos deverão ter, no mínimo, o número de baselines correspondentes às fases do ciclo de vida do projeto, conforme a metodologia adotada. O gerente do projeto poderá definir baselines intermediárias, caso considere necessário. A criação de uma baseline é efetuada pelo analista de GC, após solicitação do gerente do projeto. O analista de GC registra a solicitação de criação da baseline e encaminha tal solicitação ao Comitê de Controle de Mudança1 (CCM) para análise e aprovação. Caso não seja aprovada, tal motivo deve ser informado. Depois de criar a baseline o analista de GC do projeto bloqueia os IC, que só podem ser alterados mediante processo formal de mudanças. Toda baseline criada deve ser rotulada conforme as Políticas de GC e deve ser registrada na Planilha de Controle de 85 criação de baseline2. Produtos requeridos: Pl-p1 – Políticas de gerência de configuração. Mb-p1 – Solicitação de criação de baseline. Produtos gerados: Mb-p2 – Baseline. Mb-p3 – Planilha de controle de criação de baseline2. NOTA 1: O Comitê de controle de Mudança é um grupo formado por representantes de todos os afetados por possíveis mudanças no projeto, tais como: usuários, desenvolvedores, gerente do projeto, analista de GC, gerente de GC e a alta administração da empresa. A formação desse grupo vai variar de acordo com impacto da mudança no projeto. Quanto maior o impacto, maior deve ser o poder de decisão das pessoas que formam o CCM. Esse comitê é responsável por autorizar a criação e recuperação de baselines, bem como revisar e aprovar as mudanças propostas. NOTA 2: Ver template de Planilha de controle de criação de baseline no Anexo C Mb-a2 Recuperar baseline Descrição: A recuperação de uma baseline é efetuada somente mediante a aprovação da solicitação de mudança pelo CCM, conforme o subprocesso “Controlar mudanças”. O gerente do projeto solicita a recuperação da baseline ao analista de GC referenciando o RCM correspondente. Produtos Requeridos: Cm-p4 – Relatório de controle de mudança (RCM)1. Produtos gerados: Mb-p2 – Baseline. NOTA 1: Ver template de relatório de controle de mudança no anexo E. Mb-a3 Liberar baseline Descrição: A liberação de uma baseline pode ser internamente, com finalidade de reutilização em futuras iterações/etapas do projeto e/ou em outros projetos ou externamente (release), que é a 86 entrega para um cliente. O rótulo das baselines a serem liberadas deve seguir o padrão especificado nas Políticas de GC. Sempre que uma baseline for ser liberada, ela deve passar por uma auditoria, conforme estabelecido no subprocesso de “Auditar Configuração”. A liberação de uma baseline deve ser disponibilizada ao envolvidos, por meio do subprocesso “Relatar status da configuração”. Quando se tratar da entrega de um produto executável para o cliente, o analista de GC do projeto é responsável por providenciar uma cópia dos produtos liberados na mídia necessária para implantação no ambiente de destino. Produtos requeridos: Pl-p1 – Políticas de gerência de configuração. Produtos gerados: Mb-p2 – Baseline. Produtos requeridos e gerados Id. Produtos Pl-p1 Políticas de gerência de Documento que consta as definições de diversas práticas a serem seguidas configuração durante o desenvolvimento do software em relação à gerência de configuração. Solicitação de criação de Documento que registra um pedido configuração base formal de criação de uma configuração base. Mc-p1 Descrição Cm-p4 Relatório de controle de Documento onde são registradas as mudança informações sobre a avaliação do imapcto da mudança solicitada. Mb-p2 Baseline Mb-p3 Planilha de controle de Documento onde são registradas criação de baseline informações acerca da criação das baselines. É um IC ou um conjunto de ICs que estabelecem um marco no projeto. 87 3.4 Controlar as mudanças Objetivo O propósito do subprocesso “Controlar mudanças” é garantir que as mudanças propostas a um sistema sejam avaliadas e aplicadas de forma controlada. As atividades previstas compreendem: Formalizar solicitação de mudança (ver Cm-a1); Analisar impacto da mudança (ver Cm-a2); Analisar solicitação de mudança (ver Cm-a3); Atribuir mudanças (ver Cm-a4); Implementar mudanças (ver Cm-a5);e Comunicar os envolvidos (ver Cm-a6). Atividades previstas Id. Atividade Cm-a1 Formalizar solicitação de mudança Descrição: As solicitações de mudanças podem ser propostas por qualquer envolvido no projeto e surgem pelos mais diversos motivos, como inclusão/alteração de requisitos e melhoria/correção de algum artefato. O gerente do projeto registra a solicitação de mudança numa planilha de acompanhamento de mudança (PAM), com a data e a situação de “Aberta”. Nessa planilha ficam registradas as informações da situação da solicitação desde sua abertura até o fechamento. A cada mudança de situação, o gerente do projeto de projetos deve atualizá-la informando a data e a nova situação. Produtos gerados: Cm-p1 – Solicitação de mudança. Cm-p2 – Planilha de acompanhamento de mudança (PAM)1. NOTA1: Ver template da Planilha de acompanhamento de mudança no Anexo D. Cm-a2 Analisar o impacto Descrição: 88 Nessa atividade verifica-se qual a abrangência da solicitação da mudança e se haverá alteração no escopo do projeto e/ou produto. O gerente do projeto e sua equipe avaliam o impacto da mudança sob o ponto de vista técnico e gerencial, verificando quais os produtos associados ao projeto serão afetados, bem como as possíveis alterações no tamanho, no esforço, no prazo e no custo que essas mudanças podem agregar ao projeto. O gerente do projeto registra os resultados dessas avaliações no Relatório de controle de mudança (RCM). A planilha de acompanhamento de mudança deve ser atualizada com o nº do RCM correspondente. Produtos requeridos: Cm-p1 – Solicitação de mudança. Cm-p2 – Planilha de acompanhamento de mudança. Pl-p1 – Plano de desenvolvimento de Software; Cm-p3 – Produtos diversos que sirvam como base para essa atividade. Produtos gerados: Cm-p4 – Relatório de controle de mudança (RCM). Cm-a3 Analisar a solicitação de mudança Descrição: Todas as solicitações de mudanças devem ser submetidas à aprovação do comitê de controle de mudança (CCM). O CCM, de acordo com as conclusões do RCM, define por aceitar ou rejeitar a solicitação de mudança. A aprovação do RCM denota que o coordenador de projetos está autorizado a dar seguimento às próximas atividades. Caso a solicitação de mudança seja reprovada, a justificativa da reprovação deve ser registrada no RCM. O gerente do projeto deve atualizar a planilha acompanhamento de mudança como “Aprovada” “Reprovada” de acordo com a avaliação do CCM. Produtos requeridos: Cm-p2 – Planilha de acompanhamento de mudança. Cm-p4 – Relatório de controle de mudança (RCM). Produtos gerados: Cm-p2 – Planilha de acompanhamento de mudança. Cm-p4 – Relatório de controle de mudança (RCM). de ou 89 Cm-a4 Atribuir mudanças Descrição: Após a aprovação da mudança, o gerente do projeto deve atualizar a planilha de acompanhamento de mudança colocando a sua situação com “Atribuída”. Ele deve ainda atribuir tarefas à equipe do projeto, que são os responsáveis pela implementação e testes da mudança até o seu fechamento, além de fazer as atualizações necessárias nos planos e cronograma do projeto. Produtos requeridos: Cm-p2 – Planilha de acompanhamento de mudança. Produtos gerados: Cm-p2 – Planilha de acompanhamento de mudança. Cm-a5 Implementar mudanças Descrição: Para que as mudanças possam ser implementadas deve-se recuperar os itens de configuração no repositório. Esse procedimento tem que ser feito de acordo com o estabelecido nas políticas de GC no que corresponde ao controle de acesso ao repositório e ao uso do check-in e check-out para modificar os itens de configuração. A implementação das mudanças envolve outras atividades do processo de desenvolvimento do software, como análise, modelagem, codificação, revisão e teste. Desse modo, cada profissional deve implementar a tarefa de sua responsabilidade. Durante a implementação das mudanças, a situação da solicitação de mudança na PAM deve ser atualizada como: “Desenvolvimento” e após concluí-las: “Em testes”. O Analista de Sistemas responsável pela execução da revisão e dos testes verifica se há alguma discordância, entre o que foi planejado e o que foi efetivamente implementado, se for encontrada deve-se retornar para atividade de implementar mudanças a fim de torná-las coerente com o que foi especificado. Caso esteja tudo correto, a planilha de acompanhamento de mudanças deve ser atualizada, pelo gerente do projeto, como “Encerrada”. Produtos requeridos: Cm-p2 – Planilha de acompanhamento de mudança. Cm-p4 – Relatório de controle de mudança (RCM). 90 Cm-p5 – Produtos desenvolvimento. típicos para as atividades de Produtos gerados: Cm-p2 – Planilha de acompanhamento de mudança. Cm-p3 – Nova versão dos IC alterados. Cm-a6 Comunicar os envolvidos Descrição: A cada alteração da situação da solicitação de mudança, o gerente do projeto deve notificar os envolvidos, para que possam se atualizar sobre a nova situação, isso pode ser feito através da própria planilha de controle de mudança, de um email ou de outra documentação específica para esse fim. Após o encerramento de uma solicitação de mudança, ou seja, quando ela tiver sido atendida, o gerente do projeto deve comunicar formalmente todos os envolvidos na mudança ou que serão afetados por elas. O analista de GC do projeto deve, a partir dessa notificação, gerar novas baselines, conforme a atividade “criar baseline” do subprocesso “Manipular baseline”. Produtos requeridos: Cm-p2 – Planilha de acompanhamento de mudança. Cm-p3 – Nova versão dos IC alterados. Produtos gerados: Cm-p4 – Registro de comunicação de mudança. 91 Produtos requeridos e gerados Id. Produtos Descrição Pl-p1 Plano de desenvolvimento de Software Documento que consta as atividades relacionadas à implantação e administração do processo de gerência de configuração. Deve conter, também, a descrição de como e quando as atividades serão efetuadas e quem serão os responsáveis por elas, bem como os recursos necessários. Cm-p1 Solicitação de mudança Documento usado para registrar um pedido de mudança. Cm-p2 Planilha de acompanhamento de mudança. Documento onde são registradas as informações da situação da solicitação de mudança desde a abertura até o seu fechamento. Cm-p3 Produtos diversos que sirvam como base para essa atividade São documentos originados de diversas atividades do ciclo de desenvolvimento do projeto, tais como atas de reuniões e estimativas do projeto. Cm-p4 Relatório de controle de mudança (RCM). Documento onde são registradas as informações sobre a avaliação do imapcto da mudança solicitada. Cm-p5 Produtos típicos para as atividades de desenvolvimento São produtos necessários para a execução da mudança em si, tais como casos de uso, modelo de análise, modelo de design e planos de teste. 3.5 Reportar status de configuração Objetivo O propósito do subprocesso “Relatar status da configuração” é auxiliar as atividades de estimativa e assegurar que os dados sejam “agregados” e reportados, por meio de atividades de relatórios e/ou notificações. As atividades previstas compreendem: 92 Gerar relatório/Notificação (ver Rs-a1);e Enviar relatório/Notifica (ver Rs-a2). Id. Atividade Mb-a1 Gerar relatório/Notificação Descrição: O analista de GC do projeto deve fornecer relatórios/notificações, de acordo com o plano de gerenciamento de configuração, cuja freqüência pode ser: Diariamente, Semanalmente, Mensalmente, Por Iteração, Por Fase e no Final do Projeto. O analista de GC deve informar os envolvidos sempre que uma baseline for criada ou liberada. O gerente do projeto deve notificar os envolvidos sempre que a situação de uma solicitação de mudança for alterada. Com a ajuda de ferramentas de coleta de dados deve-se gerar relatórios do status da configuração do software com base, por exemplo, nas seguintes fontes: 1. Solicitações de Mudança; 2. Descrição de versão; e 3. Auditorias. 1. Quanto a Solicitações de Mudança Os relatórios derivados das solicitações de mudança realizadas no projeto podem esclarecer diversas questões e deles podem ser extraídas métricas importantes que ajudam nas estimativas do projeto com base no tipo, no número, na classificação e na gravidade dos defeitos encontrados e corrigidos, durante o desenvolvimento do produto. Exemplos de questões: Há quanto tempo as Solicitações de Mudança estão pendentes? Qual é o número acumulado de defeitos encontrados e corrigidos no decorrer do tempo? Qual é a classificação dos defeitos detectados e corrigidos? Qual é a 'lacuna de qualidade' em termos de defeitos pendentes versus defeitos corrigidos? Qual é a média de tempo de correção de um defeito? Quem está detectando, qual tipo de defeito e em que ponto do projeto? Quantos problemas estão em aberto para um determinado profissional? 93 Qual é o nível de gravidade dos defeitos que estão sendo detectados? Em que ponto do processo os problemas estão sendo gerados (causa original)? Quantos defeitos estão em aberto neste dia, nesta semana ou neste mês? Quantos defeitos foram corrigidos neste dia, nesta semana ou neste mês? 2. Descrição de versão Relatórios de descrição de versão descrevem os detalhes de um release do software. Tal relatório contém as seguintes informações: Inventário do material liberado (mídia física e documentos), Inventário do conteúdo do software (listagens de arquivos), Instruções de instalação e Possíveis problemas e erros conhecidos. 3. Auditorias As auditorias devem ser realizadas de acordo com o subprocesso “Auditar configuração”. Ao final das auditorias, um relatório deve ser gerado com o resultado das verificações efetuadas. Produtos requeridos: Pl-p2 - Plano de gerência de configuração; Pl-p4 – Repositório do projeto. Produtos gerados: Rs-p1 – Relatórios/Notificações diversos. Rs-a2 Enviar relatório/Notificação Descrição: Os relatórios gerados devem ser enviados às pessoas que precisam tomar conhecimento de seus dados, a fim de se atualizarem sobre o novo status do projeto e tomar decisões, no âmbito gerencial e/ou técnico, necessárias para resolver os problemas que neles são reportados. Produtos requeridos: 94 Rs-p1 – Relatórios/Notificações diversos. Produtos gerados: Rs-p2 – Registro de envio de relatório/Notificação. Produtos requeridos e gerados Id. Produtos Descrição Pl-p2 Plano de gerência de configuração Documento que consta as atividades relacionadas à implantação e administração do processo de gerência de configuração. Pl-p4 Repositório do projeto Local de armazenamento de todas as versões de arquivos do projeto. Rs-p1 Relatórios/Notificações diversos São relatórios/notificações gerados a partir de dados da configuração do software. Podem sem baseados nas solicitações de mudança, nas descrições de versões e nas auditorias. Rs-p2 Registro de envio de relatório/Notificação. É um registro formal, espécie de comprovante, do envio de relatório/notificação. Pode ser através de um e-mail ou outra documentação específica para esse fim. 3.6 Auditar configuração Objetivo O propósito do subprocesso “Auditar configuração” é verificar se os procedimentos estabelecidos nas políticas de GC e no processo de gerência de configuração como um todo estão sendo seguidos, bem como, verificar a integridade física e funcional das baselines. As atividades previstas compreendem: Executar auditoria (ver Ac-a1) e 95 Reportar resultados (ver Ac-a2). Atividades previstas Id. Atividade Ac-a1 Executar auditoria Descrição: As auditorias concentram-se na verificação do cumprimento dos procedimentos estabelecidos tanto nas políticas de GC como no processo de GC como um todo, além de verificar a integridade física e funcional das baselines. As auditorias devem ser realizadas pelo gerente de GC, ou por uma pessoa do grupo de GC que não esteja envolvido diretamente com o projeto auditado, por meio de uma Lista de verificação de GC. As informações obtidas nas auditorias são registradas no Relatório de auditoria de GC. A auditoria pode verificar tanto aspectos físicos como funcionais da configuração, para determinar que uma baseline contém todos os artefatos necessários e que ela atende aos requisitos estabelecidos. As auditorias devem ser realizadas mensalmente ou sempre que as baselines forem liberadas, tais auditorias devem verificar: A presença de todos os itens de configuração especificados para baseline; O atendimento aos requisitos especificados; Estrutura de diretório dos repositórios; Rótulos dos IC e das baselines; IC que compõem as baselines; Procedimentos para criação de baselines; Procedimentos para fazer modificações em baselines; Solicitações de mudanças pendentes; Procedimentos de backup. Artefatos Ausentes 96 Requisitos Não Testados Requisitos Reprovados Para realizar uma auditoria funcional, deve-se preparar um relatório que liste cada requisito estabelecido para a baseline, seu procedimento de teste correspondente e o resultado do teste (aprovado/reprovado). O intuito é verificar se cada requisito passou por um ou mais testes e que o resultado de todos esses testes foi 'aprovado'. Caso seja detectado que algum requisito não tenha passado por procedimentos de teste ou que tenham sido feitos de forma incompleta ou ainda que foram reprovados, tal fato deve ser documentado no registro de auditoria. Ao se verificar desvios nas condutas adotadas, o gerente de GC deve anotá-los no registro de auditoria de configuração e as respectivas ações corretivas devem ser identificadas, as responsabilidades atribuídas e uma data de conclusão determinada. Produtos requeridos: Pl-p2 - Plano de gerência de configuração; Ac-p1 – Lista de verificação de GC. Produtos gerados: Ac-p2 – Relatório de auditoria de configuração1; NOTA 1: Ver template no anexo F. Ac-a2 Reportar resultados Descrição: O relatório da auditoria deve ser encaminhado aos profissionais das áreas de gestão e técnica, a fim de que sejam tomadas providências para corrigir possíveis desvios. Produtos Requeridos: Ac-p2 – Relatório de auditoria de configuração2; Produtos gerados: Ac-p3 – Registro de envio de relatório. 97 Produtos requeridos e gerados Id. Produtos Descrição Pl-p2 Plano de gerência configuração de Documento que consta as atividades relacionadas à implantação e administração do processo de gerência de configuração. Pl-p4 Repositório do projeto Local de armazenamento de todas as versões de arquivos do projeto. Ac-p1 Lista de verificação de GC Documento que orienta a atividade de auditoria através da listagem de itens a serem verificados. Ac-p2 Relatório de auditoria de Documento que registra os desvios configuração encontrados, quanto ao processo de gerência de configuração. Ac-p3 Registro relatório de envio de É um registro formal, espécie de comprovante, do envio de relatório. Pode ser através de um e-mail ou outra documentação específica para esse fim. Anexo A – Plano de Desenvolvimento de Software1 1 Esse Plano de Desenvolvimento de Software foi adapatado do Rational Unified Process 98 <Nome do Projeto> Plano de Desenvolvimento de Software Versão <X> Histórico da Revisão Data Versão Descrição Autor <dd/mmm/aa> <x.x> <detalhes> <nome> 1. Introdução A introdução do Plano de Desenvolvimento de Software deve fornecer uma visão geral de todo o documento. Ela deve incluir a finalidade, o escopo, as definições, os acrônimos, as abreviações, as referências e a visão geral deste Plano de Desenvolvimento de Software. 1.1 Finalidade Especifique a finalidade deste Plano de Desenvolvimento de Software. 1.2 Escopo Uma breve descrição do escopo deste Plano de Desenvolvimento de Software; a que Projeto(s) ele está associado e tudo o mais que seja afetado ou influenciado por este documento. 1.3 Definições, Acrônimos e Abreviações Esta subseção deve fornecer as definições de todos os termos, acrônimos e abreviações necessárias à adequada interpretação do Plano de Desenvolvimento de Software. Essas informações podem ser fornecidas mediante referência ao Glossário do projeto. 1.4 Referências Esta subseção deve fornecer uma lista completa de todos os documentos mencionados em qualquer outra parte do Plano de 99 Desenvolvimento de Software. Cada documento deverá ser identificado por título, número do relatório (se aplicável), data e organização de publicação. Especifique as fontes a partir das quais as referências podem ser obtidas. Essas informações podem ser fornecidas mediante referência a um apêndice ou outro documento. Para o Plano de Desenvolvimento de Software, a lista de artefatos mencionados deverá incluir: Plano de Gerenciamento de Requisitos Plano de Métricas Plano de Gerenciamento de Riscos Caso de Desenvolvimento Guia de Modelagem de Negócios Guia de Interface do Usuário Guia de Modelagem de Caso de Uso Guia de Design Guia de Programação Guia de Teste Manual de Guia de Estilo Plano de Infra-estrutura Plano de Aceitação do Produto Plano de Gerenciamento de Configuração Plano de Documentação Plano de Garantia de Qualidade Plano de Resolução de Problemas Plano de Gerenciamento de Subcontratantes Plano de Melhoria do Processo 1.5 Visão Geral Subseção descreve o que o restante do Plano de Desenvolvimento de Software contém e explica como o documento está organizado. 100 2. Visão Geral do Projeto 2.1 Finalidade, Escopo e Objetivos do Projeto Uma breve descrição da finalidade e dos objetivos deste projeto e uma breve descrição dos produtos que se espera que o projeto libere. 2.2 Suposições e Restrições Uma lista das suposições em que este plano se baseia e de quaisquer restrições como, por exemplo, de orçamento, equipe, equipamento e programação, que se aplicam ao projeto. 2.3 Produtos Liberados do Projeto Uma tabela listando os artefatos a serem criados durante o projeto, incluindo as datas-alvo de liberação. 2.4 Evolução do Plano de Desenvolvimento de Software Uma tabela das versões propostas do Plano de Desenvolvimento de Software e os critérios para a revisão não programada e a republicação deste plano. 3. Organização do Projeto 3.1 Estrutura Organizacional Descreva a estrutura organizacional da equipe do projeto, incluindo as autoridades de gerenciamento e outras autoridades de revisão. 3.2 Interfaces Externas Descreva como o projeto se relaciona com grupos externos. Para cada grupo externo, identifique os nomes de contato internos e externos. 3.3 Papéis e Responsabilidades Identifique as unidades organizacionais do projeto que serão responsáveis por cada uma das disciplinas, detalhamentos do fluxo de trabalho e processos de suporte. 4. Processo de Gerenciamento 4.1 Estimativas do Projeto Forneça a programação e o custo estimado do projeto, assim como a base dessas estimativas, e os pontos e circunstâncias do projeto em que serão feitas novas estimativas. 4.2 Plano do Projeto 101 4.2.1 Plano de Fase Inclua o seguinte: Estrutura de Divisão de Trabalho Uma linha de tempo mostrando a alocação do tempo para as iterações ou fases do projeto Identifique os principais marcos com seus critérios de realização Defina todas as demonstrações e pontos de release importantes 4.2.2 Objetivos da Iteração/Etapa Liste os objetivos a serem atingidos para cada uma das iterações/etapas. 4.2.3 Releases Uma breve descrição de cada release de software e se é uma versão beta, de demonstração etc. 4.2.4 Programação do Projeto Diagramas ou tabelas mostrando as datas-alvo para a conclusão das iterações/etapas e fases, dos pontos de release, das demonstrações e de outros marcos. 4.2.5 Recursos do Projeto 4.2.5.1 Plano de Formação de Equipe Identifique aqui quantas pessoas serão necessárias e o tipo de equipe, incluindo quaisquer experiências ou habilidades especiais, definindo uma programação por fase ou iteração/etapa do projeto. 4.2.5.2 Plano de Aquisição de Recursos Descreva como você pretende localizar e selecionar as pessoas para integrarem a equipe necessária ao projeto. 4.2.5.3 Plano de Treinamento Liste quaisquer treinamentos especiais necessários aos integrantes da equipe do projeto, com as datas-alvo identificando quando os treinamentos deverão ser concluídos. 4.2.6 Orçamento Efetue a alocação de custos em relação à WBS e ao Plano de Fase. 102 4.3 Planos de Iteração/etapa2 Cada plano de iteração será incluído nesta seção através de referências. 4.4 Controle e Monitoramento do Projeto 4.4.1 Plano de Gerenciamento de Requisitos Incluído através de referência. 4.4.2Plano de Controle de Programação Descreva o método a ser adotado para monitorar o progresso em relação à programação elaborada e como executar ações corretivas quando necessário. 4.4.3 Plano de Controle de Orçamento Descreva o método a ser adotado para monitorar os gastos em relação ao orçamento do projeto e como executar ações corretivas quando necessário. 4.4.4 Plano de Controle de Qualidade Descreva o andamento e os métodos a serem usados para controlar a qualidade dos produtos liberados do projeto e como executar ações corretivas quando necessário. 4.4.5 Plano de Elaboração de Relatórios Descreva os relatórios internos e externos a serem gerados, e a freqüência e distribuição de publicação. 4.4.6 Plano de Métricas Incluído através de referência. 4.4.7 Plano de Gerenciamento de Riscos Incluído através de referência. 4.6.8 Plano de Encerramento Descreva as atividades necessárias para que o projeto seja concluído de forma organizada, incluindo a nova designação da equipe, o arquivamento de materiais do projeto, interrogações e relatórios. 5. Planos de Processos Técnicos 5.1 Caso de Desenvolvimento Incluído através de referência. 2 Esse tópico só será preenchido no caso de um processo de desenvolvimento iterativo 103 5.2 Métodos, ferramentas e técnicas Liste os padrões técnicos documentados no projeto etc, através de referências: Guia de Modelagem de Negócios Guia de Interface do Usuário Guia de Modelagem de Caso de Uso Guia de Design Guia de Programação Guia de Teste 5.3 Plano de Infra-estrutura Incluído através de referência. 5.4 Plano de Aceitação do Produto Incluído através de referência. 6. Planos de Processos de Suporte 6.1 Plano de Gerenciamento de Configuração Incluído através de referência 6.2 Plano de Avaliação Parte do Plano de Desenvolvimento de Software. Descreve os planos do projeto para a avaliação do produto e aborda as técnicas, os critérios, as métricas e os procedimentos usados para avaliação - entre eles estarão incluídas inspeções técnicas, inspeções e revisões. Observe que esses procedimentos são um complemento do Plano de Teste, que não está incluído no Plano de Desenvolvimento de Software. 6.3 Plano de Documentação Incluído através de referência. 6.4 Plano de Garantia de Qualidade Incluído através de referência. 6.5 Plano de Resolução de Problemas Incluído através de referência. 6.6 Plano de Gerenciamento de Subcontratantes Incluído através de referência. 6.7 Plano de Melhoria do Processo Incluído através de referência 104 7. Planos Adicionais Planos adicionais se forem necessários devido a contratos ou regulamentos. 8. Anexos Material adicional. 105 Anexo B – Plano de Gerência de Configuração3 <Nome do Projeto> Plano de Gerência de Configuração Versão <X> Histórico da Revisão Data Versão Descrição Autor <dd/mmm/aa> <x.x> <detalhes> <nome> 1. Introdução A introdução do Plano de Gerenciamento de Configuração oferece uma visão geral de todo o documento. Ela inclui a finalidade, o escopo, as definições, os acrônimos, as abreviações, as referências e uma visão geral deste Plano de Gerenciamento de Configuração. 1.1 Finalidade Especifique a Configuração. 1.2 Escopo finalidade deste Plano de Gerenciamento de Uma breve descrição do escopo deste Plano de Gerenciamento de Configuração; o modelo ao qual ele está associado e tudo o que é afetado ou influenciado por este documento. 3 Esse Plano de Gerência de Configuração foi adaptado do Rational Unified Process 106 1.3 Definições, Acrônimos e Abreviações Esta subseção apresenta as definições de todos os termos, acrônimos e abreviações necessários para a correta interpretação do Plano de Gerenciamento de Configuração. Essas informações podem ser fornecidas mediante referência ao Glossário do projeto. 1.4 Referências Esta subseção apresenta uma lista completa de todos os documentos mencionados no Plano de Gerenciamento de Configuração. Identifique os documentos por título, número de relatório (se aplicável), data e organização responsável pela publicação. Especifique as fontes a partir das quais as referências podem ser obtidas. Essas informações podem ser fornecidas por um anexo ou outro documento. 1.5 Visão Geral Esta subseção descreve o conteúdo restante do Plano de Gerenciamento de Configuração e explica como o documento está organizado. 2. Gerenciamento de Configuração de Software 2.1 Organização, Responsabilidades e Interfaces Descreva quem será o responsável pela execução das diversas atividades de Gerenciamento de Configuração (GC). 2.2 Ferramentas, Ambiente e Infra-estrutura Descreva o ambiente de computação e as ferramentas de software a serem utilizadas para desempenhar as funções de GC em todo o ciclo de vida do projeto ou produto. Descreva as ferramentas e os procedimentos necessários utilizados para o controle de versão dos itens de configuração gerados no ciclo de vida do projeto ou produto. 3. O Programa de Gerenciamento de Configuração 3.1 Identificação da Configuração 3.1.1 Métodos de Identificação Descreva como os artefatos do projeto ou produto devem ser nomeados. O esquema de identificação deve abranger o hardware, o software do sistema, os produtos de terceiros e todos os artefatos de desenvolvimento de 107 aplicativos listados na estrutura de diretórios do produto; por exemplo, planos, modelos, componentes, software de teste, resultados e dados, executáveis, etc. 3.1.2 Baselines do Projeto As baselines funcionam como um padrão oficial no qual os trabalhos subseqüentes são baseados. Somente mudanças autorizadas podem ser efetuadas nas baselines. Descreva em que pontos do ciclo de vida do projeto ou produto as baselines devem ser estabelecidas. As baselines mais comuns devem ser definidas ao final de cada uma das fases de desenvolvimento. Elas também podem ser geradas no final de iterações/etapas ocorridas dentro das várias fases ou com freqüência ainda maior. Descreva quem autoriza uma baseline e o que ela contém. 3.2 Controle de Configuração e Mudança 3.2.1 Processamento e Aprovação de Solicitações de Mudança Descreva o processo pelo qual os problemas e as mudanças são submetidos, revisados e dispostos. 3.2.2 Comitê de Controle de Mudança (CCM) Descreva a participação e os procedimentos para solicitações e aprovações de mudança a serem seguidos pelo CCM. processar 3.3 Estimativa do Status de Configuração 3.3.1 Processo de Armazenamento de Mídia e Liberação do Projeto Descreva as políticas de retenção e os planos de backup, erros irreversíveis e recuperação. Descreva também como a mídia deve ser mantida on-line, off-line, tipo de mídia e formato. O processo de liberação deve descrever o conteúdo do release, a quem ele se destina e se há quaisquer problemas conhecidos e instruções de instalação. 3.3.2 Relatórios e Auditorias Descreva o conteúdo, o formato e a finalidade dos relatórios e auditorias de configuração solicitados. Os relatórios são usados para avaliar a "qualidade do produto" em qualquer fase do ciclo de vida do projeto ou produto. Os relatórios sobre defeitos com base em solicitações de mudança podem fornecer alguns indicadores de qualidade proveitosos e, dessa forma, alertar a administração e os desenvolvedores para determinadas áreas prioritárias do desenvolvimento. 108 4. Marcos Identifique os marcos internos e de cliente relacionados ao esforço de GC do projeto ou produto. Esta seção deve incluir detalhes sobre quando o Plano GC deve ser atualizado. 5. Treinamento e Recursos Descreva as ferramentas de software, o pessoal e o treinamento necessários para implementar as atividades de GC especificadas. 6. Controle de Software de Subcontratados e Fornecedores Descreva de que forma o software desenvolvido fora do ambiente do projeto será incorporado. 108 Anexo C – Planilha de Controle de criação baseline <Nome do Projeto> Planilha de Controle de baseline Nº Data Fase/Iteração Nº Evidência Itens de Configuração Nome da CB Número Inserir a data Inserir Número da Fase/Iteração Informe a Caso a baseline seja Preencher o nome seqüencial da criação da Fase/iteração do Iteração/Fase evidência da composta por mais de um da baseline de baseline ciclo de vida geração da IC, relacionar um de cada acordo com as baseline vez. políticas de GC 109 Anexo D – Planilha de Acompanhamento de Mudanças <Nome do Projeto> Planilha de acompanhamento de Mudanças Identificação da Baseline Nº RCM *Aberta/Análise/Aprovada/Reprovada/Atribuída/Em testes/Encerrada Data Situação* 110 Anexo E – Relatório de Controle de Mudanças <Nome do Projeto> Relatório de controle de Mudanças Versão <X> 1. Identificação Informar o número do RCM (seqüencial) Nº do RCM Data de abertura do RCM Informar a data de abertura do RCM <dd/mm/aaaa> Projeto Descrever a sigla e o nome do projeto Cliente Descrever o nome do Cliente Solicitante da Mudança Descrever o nome e a área do Solicitante (Nome/Área) da Mudança 2. Descrição da mudança Descreva detalhadamente a solicitação da mudança, enfatize os motivos, condições, restrições e premissas para a implementação das mudanças, bem como os requisitos que estão sendo modificados. 3. Análise de impacto Descrever aqui o resultado da análise do impacto da mudança, seja de escopo do projeto ou de produto. 3.1 Nos Requisitos Tipo da Mudança Requisito Afetado Tamanho Informar(*) o tipo da Informar o requisito Informar o tamanho em Pontos mudança afetado. por Função (PF) do requisito afetado. (*) I – Inclusão; E – Exclusão; A – Alteração. 111 3.2 Nos Produtos Nome do Produto Afetado pela Mudança (IC) Descreva neste campo qual o produto e/ou componente afetado com a mudança IC – Item de Configuração 3.3 Nos Prazos Informar qual fase/iteração foi afetada e em quantos dias foi afetado. 3.4 Outros Impactos Informar outros impactos como, mudança de recursos, treinamento, qualidade, etc. 4. Estimativa de Esforço Informar no quadro abaixo o perfil profissional que será envolvido na mudança, o esforço em horas. Esforço – em horas Perfil Gerência Análise Implementação 5. Aprovação Informar apenas os papéis envolvidos na aprovação Papel Nome Gerente de Projetos Gerente do Projeto Gerente de GC Analista de GC do Cliente projeto Outros do CCM integrantes Assinaturas Data 112 6. Justificativa Caso o CCM não aprove a mudança deve informar aqui a justificativa da decisão. 7. Anexos Mantenha neste item todos e-mails, documentações, etc que caracterizem a solicitação da mudança. 113 Anexo F – Registro de Auditoria <Nome do Projeto> Registro de Auditoria Identificação Data da auditoria Auditor(es) Tipo de Auditoria: 1. Auditoria física 2. Auditoria funcional 3. Auditoria de procedimentos Identificação da(s) baseline(s) 1. Lista de Verificação de GC Inserir a referência à lista de verificação utilizada na auditoria. 2. Registro de Desvios de GC Nº Desvio Ação 01 Tipo Desvio Responsável Data Corretiva Processo/Produto pelo 02 Situação* Limite Tratamento 03 04 (*) Opções de Situação: Novo, Encaminhado, Suspenso, Parado. 3. Registro de oportunidades de melhorias Nº Oportunidade Tipo 01 de melhoria melhoria de Responsável 02 (*) Opções de Situação: Nova ou Pendente. pelo Tratamento Data Limite Situação* 114 Referência Bibliográfica ASSOCIAÇÃO PARA PROMOÇÃO DA EXCELÊNCIA DO SOFTWARE BRASILEIRO. MPS-BR Guia Geral V1.2.[São Paulo] 2007. 52 p. CAMPOS, Fábio Bianchi. Notas de Aula. Mensagem recebida por <[email protected]> em 05 de jun. 2007. COSTA, Claudio Giulliano Alves da; QUARESMA, Rodrigo Paulo; SABBATINI, Renato Marcos Endrizzi. Uma Revisão sobre Engenharia de Software e sua Utilização no Desenvolvimento de Sistemas de Prontuário Eletrônico de Pacientes. Disponível em: <http://www.medsolution.com.br/claudio/esepep.htm>. Acesso em: 15 jul. 2007. INSTITUTO DE ENGENHARIA DE SOFTWARE. CMMI-SE/SW V1.1 Guidelines for Process Integration and Product Improvement. S.l. 2006. 551 p. KOSCIANSKI, André, SOARES Michel dos Santos. – Qualidade de software: aprenda as metodologias e técnicas mais modernas para o desenvolvimento de software. – 2 ed. São Paulo: Novatec editora, 2007. MOLINARI Leonardo. – Gerência de configuração: técnicas e práticas no desenvolvimento do software. – Florianópolis: Visual Books, 2007. PRESSMAN, Roger S. – Engenharia de software. São Paulo: Pearson education do Brasil, 1995. ______ . ______. 5.ed. – Rio de Janeiro: McGraw-Hill, 2002. ROCHA, Ana Regina Cavalcanti da, MALDONADO José Carlos e WEBER Kival Chaves. – Qualidade de software. – São Paulo: Prentice Hall, 2001. SOMMERVILLE, Ian. – Engenharia de software; Tradução André Maurício de Andrade Ribeiro; revisão técnica Kechi Hirama. – São Paulo: Addison Wesley, 2003. WIKIPÉDIA (Brasil). Qualidade de Sofware. Disponível em: <WWW.WIKIPEDIA.ORG.BR>. Acesso em: 20 jun. 2007. ______. Software. Disponível em: <WWW.WIKIPEDIA.ORG.BR>. Acesso em: 03 jul. 2007. JOMORI, Sergio Massao; DELLA VOLPE, Renato Luiz; ZABEU, Ana Cecília Peixoto. CMM - CMMI Principais conceitos, diferenças e correlações. 115 Disponível em: <http://www.asrconsultoria.com.br/docs/SPIN_BH_CMMI.pdf>. Acesso em: 30 jul. 2007. MACHADO, Marcio P.; SOUZA, Sotério F..- Métricas e Qualidade de Software. Disponível em: <http://fattocs.com.br/download/qualidade-sw.pdf>. Acesso em: 04 jul. 2007. TSUKUMO, Alfredo N. et al. Qualidade de Software: Visões de Produto e Processo de software. In: II ERI da SBC, 1997, São Paulo. Anais... São Paulo: CTI, 1997p. 173-189. Disponível em: <http://www.prodepa.psi.br/sqp/pdf/Qualidade%20de%20Software.pdf>. Acesso em: 18 jul. 2007. MURTA, Leonardo Gresta Paulino. – Gerência de Configuração no Desenvolvimento Baseado em Componentes. [Rio de Janeiro] 2006, 213 p. Tese (Engenharia de Sistemas e Computação) – Universidade Federal do Rio de Janeiro, 2006. Disponível em: http://reuse.cos.ufrj.br/prometeus/publicacoes/odyssey-scm.pdf. Acesso em: 10 ago.2007.