Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília – UCB Mestrado em Informática Qualidade de Software Processo de Implantação de Gestão de Qualidade de Software em Empresas Nacionais: O Estudo de Caso do Tribunal de Contas da União Tomás Roberto Cotta Orlandi Resumo Processo de Implantação de Gestão de Qualidade de Software em Empresas Nacionais: O Estudo de Caso do Tribunal de Contas da União A proposta deste trabalho é demonstrar a viabilidade da implantação de um processo contínuo de avaliação de qualidade de software em empresas brasileiras, apresentando a abordagem GQM – Goal, Question, Metric , situando-a no contexto de outras abordagens de avaliação e qualidade de software, que atende não só as expectativas em relação à uma melhora de qualidade dos produtos, mas também a um incremento na produtividade das equipes de trabalho. Palavras-chave abordagem GQM, CMM, Fábrica de Experiência, ISO, QIP, Qualidade de software, SPICE. Tomás Roberto Cotta Orlandi Abstract Orientador Prof. Dr. Walcélio L. Melo The objective of this article is to show the viability of introducing a continuos evaluation process of software quality in Brazilian’s companies, presenting the GQM–Goal, Question, Metric approach, comparing it with others software’s quality approaches, attending the wishes of a better software product’s quality and best productivity of the team working. Keywords CMM, Experience Factory, GQM Approach, ISO, QIP, Software Quality, SPICE Brasília (DF), dezembro de 2000 1 2 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 I. Introdução Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 II. Caracterização dos Produtos e dos Processos Objetivos Gerais : O presente trabalho tem por objetivo apresentar um exemplo da abordagem GQM – Goal, Question, Metric , situando-a no contexto de outras abordagens de avaliação e qualidade de software como ISO,CMM, SPICE e QIP. A implantação da abordagem GQM em empresa nacional, será mostrada através da utilização de um processo padronizado de desenvolvimento, conversão e manutenção de software. Este capítulo visa apresentar os modelos de qualidade de software mais aplicados em empresas ou setores, produtores de software, que de algum modo se preocupam em implementar e manter procedimentos de avaliação e medição, visando uma melhora na qualidade e produtividade dos projetos e sistemas desenvolvidos pela empresa. O Modelo ISO 12207 de Qualidade A proposta é demonstrar a viabilidade da implantação de um processo contínuo de avaliação de software nas empresas nacionais, que atenda não só as expectativas em relação à uma melhora de qualidade dos produtos, mas também a um incremento na produtividade das equipes de trabalho, incorporando naturalmente a cultura de produzir software com testes, inspeções e medições de resultados. Será também demonstrada a viabilidade da manutenção de um programa permanente de qualidade de software, através do treinamento, implantação e aplicação da abordagem GQM, visando uma melhora contínua na qualidade e na produtividade de sistemas. Como produto final são gerados modelos quantitativos, baseados em dados captados, que viabilizam uma análise da qualidade dos software produzidos, possibilitando uma comparação qualitativa do processo de desenvolvimento de sistemas com organizações externas. Em decorrência da implantação dessa abordagem, demonstra-se a implementação e a manutenção de uma estrutura, separada logicamente do desenvolvimento de software, a Fábrica de Experiências. A Fábrica de Experiências (Experience Factory)[1] tem por objetivo armazenar as experiências dos projetos desenvolvidos, em termos de soluções e implementações adotadas, para que as equipes possam fazer reuso posterior das soluções e dos códigos já desenvolvidos. As soluções “empacotadas” na Fábrica de Experiências poderão ser utilizadas também por organizações semelhantes à estudada, ou seja, empresa nacional pública ou privada. Objetivos Específicos: A norma ISO/IEC 12207 objetiva auxiliar organizações na definição de seus processos de software oferecendo uma guia para definição das atividades e tarefas a serem desempenhadas durante as principais etapas que envolvem a construção de um produto de software. A norma agrupa processos de software em três grandes classes – processos fundamentais, processos de apoio e processos organizacionais. A categoria de processos fundamentais compreende os processos que executam as principais funções relacionadas ao ciclo de vida de software. Processos de apoio servem como auxiliares ao processo fundamental de construção, contribuindo para o sucesso e a qualidade do produto gerado. Processos organizacionais são responsáveis pelo acompanhamento do desenvolvimento, compreendendo processos para gerência, melhoria da qualidade, infra-estrutura e treinamento. Cada processo inserido nestas classes está dividido em um conjunto de atividades que, por sua vez, se dividem em um conjunto de tarefas para sua realização. Contudo, a norma não especifica detalhes de como implementar ou executar estas tarefas e atividades. Este é um dos motivos pelo qual o presente trabalho não abordará o modelo ISO 12207 de qualidade pois, no contexto de empresas nacionais em questão, necessitamos especificar os detalhes de como implementar processos de qualidade de software nas organizações. O Modelo SPICE (ISO/IEC 15504) de Qualidade § Apresentar claramente a abordagem GQM e sua forma de aplicação; § Situar a abordagem GQM no contexto geral da qualidade de software; § Mostrar a viabilidade da implantação da abordagem GQM em empresas nacionais (utilizando o estudo de caso do Tribunal de Contas do Distrito Federal – TCDF); § Apresentar uma forma das equipes de trabalho incorporarem naturalmente, no desenvolvimento e manutenção de software, as atividades de testes, inspeções e medições de resultados; § Mostrar o conceito e a forma de implementação da Fábrica de Experiências. A iniciativa de se estabelecer um padrão internacional para melhoria de processos de software levou a ISO/IEC a aprovar em 1993 um novo grupo de trabalho, denominado WG10, a partir do qual se organizou o projeto SPICE (Software Process Improvement and Capability dEtermination) (ISO/IEC 15504-8, 1996) [5]. Analogamente ao CMM, o objetivo principal do SPICE é a elaboração de um padrão ou infra-estrutura (framework) para avaliação de processos de software e para a determinação de sua capacitação ISO/IEC 15504. 3 4 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 A futura norma ISO/IEC 15504 define processos e práticas que podem ser implementados para estabelecer e aprimorar a capacidade de aquisição, desenvolvimento, manutenção, operação e suporte de software em organizações. Estas práticas são organizadas utilizando-se uma arquitetura que combina duas perspectivas: uma perspectiva funcional (análoga à perspectiva da norma ISO/IEC 12207), compreendendo quais os processos que devem existir numa organização e uma outra perspectiva que avalia o nível de capacitação de cada um destes processos (análoga ao CMM). O uso da norma permite que as organizações possam perceber a existência ou não de processos específicos, bem como a capacitação dos que existem, traçando caminhos para a melhoria. crises. Durante as crises, normalmente, são abandonadas as fases de planejamento, havendo um incremento exagerado e desordenado das etapas de codificação e teste. Para esse nível, o CMM não apresenta áreas chave. A caracterização do comportamento no nível 1 é colocado apenas como base de comparação para os demais níveis. O Modelo CMM O Capability Maturity Model (CMM) para Software, compilado pelo Software Engineering Institute – SEI da Carnegie Mellon University (EUA), pode ser entendido como um modelo para avaliação do grau de maturidade das organizações quanto à capacidade produtiva de software. [13] O CMM representa uma proposição de recomendações para empresas, cujo negócio seja a produção de software, que pretendam incrementar a capacidade (ou qualidade) do processo de desenvolvimento de sistemas. O modelo apresentado pelo CMM não se preocupa em “como” a organização implementa, mas, antes, busca descrever “o quê” se espera do processo produtivo de software. O modelo CMM foi utilizado neste trabalho como caminho a ser seguido para nortear as ações de implementação de um modelo de qualidade de software em organizações brasileiras, pois, trata-se de um modelo consagrado e utilizado mundialmente por organizações produtoras de software. O CMM classifica as organizações produtoras de software em cinco grupos (ou níveis) de maturidade, identificando, para cada grupo, as áreas chave do processo de desenvolvimento de sistemas que devem ser observadas na busca da melhoria da capacidade produtiva. Cada área chave possui objetivos que precisam ser alcançados para que a organização seja considerada como tendo atingido determinado nível. Os cinco níveis de maturidade propostos pelo CMM, em grau crescente, são: inicial; repetitivo; definido; gerenciado; e otimizado.[13] Nível 1 - Inicial Nesse nível, o processo de produção de software é efetuado de maneira empírica e ocasionalmente, até mesmo, de forma caótica. Poucos processos são definidos e o sucesso dos projetos depende de esforços individuais e atitudes heróicas dos desenvolvedores. Uma característica das organizações classificadas nesse nível é o comprometimento além da capacidade. A dificuldade da organização em cumprir os compromissos estabelecidos é acompanhada pela sobrecarga do corpo técnico, que fica impossibilitado de seguir as práticas recomendadas para a engenharia de software, gerando, então, sucessivas 5 Nível 2 - Repetitivo Nesse nível de maturidade, existe um gerenciamento básico de projetos com a finalidade maior de acompanhar custos e cronogramas. Porém, o processo aplicado ao desenvolvimento de novos projetos constitui-se basicamente na repetição de práticas já experimentadas com sucesso em projetos similares anteriormente desenvolvidos. Os processos de desenvolvimento podem, assim, ser diferentes de projeto para projeto em organizações considerados no nível 2. O que deve existir, porém, é uma política que sirva como guia no estabelecimento de uma gerência apropriada de processos. Os compromissos assumidos, então, passam a ser mais realistas, pois baseiam-se, agora, em resultados observados em projetos anteriores. A gerência de projetos pode acompanhar melhor os custos, o cronograma e o atendimento aos requerimentos. As áreas chave para o nível 2 estão focadas nas práticas que concernem ao gerenciamento de projetos: • gerência de requisitos; • planejamento do projeto; • acompanhamento do projeto e de desvios; • gerenciamento de subcontratados; • controle de qualidade; e • gerência de configurações. Nível 3 - Definido No nível definido, um processo padrão (ou vários) para desenvolvimento e manutenção de software é documentado e usado por toda a organização. Esse padrão inclui as atividades de engenharia e gerenciamento de software integrados em um todo coerente. O processo padrão é utilizado (e modificado, se necessário) para auxiliar os gerentes e desenvolvedores em uma produção mais eficiente. Um programa de treinamento é implementado em toda a organização para assegurar que o corpo técnico e os gerentes adquiram o conhecimento e habilidade necessários à execução de suas tarefas. A medida que acontecem, os projetos utilizam-se do processo padrão e fazem adaptação desse modelo para ajustá-lo às suas peculiaridades. Sendo, então, esse “processo ajustado” o que realmente é usado nas atividades do projeto. 6 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 O que difere o nível 3 do nível anterior, além das áreas chave relacionadas a seguir, basicamente, é o fato de existir neste nível o “processo padrão” definido, documentado, integrado, ajustado e, principalmente, seguido por toda a organização. O nível 3 do CMM pode ser resumido pelas palavras “padrão e consistência”, uma vez que, nesse nível, as atividades de engenharia e gerenciamento no processo produtivo de software são estáveis e repetitivas. Com uma “linha de produção” estabelecida, os custos, o cronograma e as funcionalidades estão sob controle e qualidade do software é melhor acompanhada. As áreas chave definidas para o nível 3 estão voltadas aos aspectos da organização e do projeto, no sentido de prover uma infra-estrutura que possibilite a institucionalização de um efetivo processo de engenharia e gerência de software para todos os projetos. São áreas chave para o nível 3: • foco no processo da organização (ou estabelecimento de responsabilidades na organização para atividades relativas à produção de software); • definição do processo para a organização; • programa de treinamento; • gerenciamento integrado; • engenharia de produtos; • coordenação intergrupos (ou interação entre grupos de engenharia de software); • revisão de pares. Nível 5 - Otimizado Nível 4 - Gerenciado Nesse nível, passam a ser coletadas e analisadas métricas detalhadas relativas ao processo e à qualidade do produto para acompanhamento e controle do processo. Nesse nível, processo e produto são quantitativamente entendidos e controlados. No nível gerenciado, a organização define objetivos de qualidade que devem ser alcançados para produtos e processos. As atividades de produção de software mais importantes são acompanhadas por meio de um programa de medidas da organização afim de que possam ser observadas a produtividade, a qualidade, etc. Um banco de dados para a organização como um todo é usado para coletar e analisar os dados disponíveis extraídos dos projetos. O processo de software é equipado com um processo de coleta de medidas consistente e bem definido. O nível 4 do CMM pode ser resumido como sendo “quantificado e previsível” porque os processos são medidos e as operações são realizadas dentro de limites quantitativos. Esse nível permite que a organização trabalhe com segurança na previsão do desempenho dos processos e da qualidade dos produtos. As áreas chave para o nível 4 estão direcionadas ao entendimento quantitativo do processo e do produto: • gerenciamento quantitativo do processo; e • gerenciamento da qualidade do produto. 7 No nível otimizado, toda a organização está voltada para um contínuo processo de melhoria. A organização busca identificar, de forma pró-ativa, os pontos fortes e fracos do processo, com o objetivo de evitar erros e melhorar a eficiência. Dados reais de processos são usados para análise da relação custo/benefício, para implementação de novas tecnologias ou para propor mudanças ao processo produtivo. As equipes de software em organizações no nível 5 trabalham na análise de defeitos do processo afim de determinar suas causas, avaliar o processo e prevenir manifestações de erros conhecidos e recorrentes, e, ainda, disseminar os conhecimentos adquiridos pela organização. Em qualquer sistema, existe um desperdício contínuo, em forma de retrabalho, simplesmente por causa de imprevistos. Esforços no sentido de eliminar esses desperdícios resultam em mudanças no sistema pela recondução dessas “causas comuns” de ineficiência. Embora esses esforços para reduzir desperdícios ocorram em todos os níveis de maturidade, essa preocupação constitui o foco do nível 5. O nível 5 do CMM pode ser caracterizado como “de melhoria contínua” porque as organizações identificadas no nível 5 estão continuamente empenhadas em melhorar a capacidade de seus processos. A melhoria pode surgir tanto em função do progresso do próprio processo quanto da aplicação de novas tecnologias e métodos. A aplicação de novas tecnologias ou mudanças no processo são planejadas e gerenciadas como tarefas rotineiras. As áreas chave que constituem o nível 5 buscam enfocar os assuntos que os projetos precisam observar para promover um incremento contínuo e mensurável da qualidade do processo de software. São as seguintes as áreas chave para o nível otimizado: • prevenção de erros; • gerenciamento de mudança tecnológica; e • gerenciamento de mudanças no processo. 8 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Como mostra a figura 1, o CMM, pode ser representado como uma estrutura de cinco níveis de maturidade: • Executar (Do): executar a implementação do plano e a coleta de dados. • Verificar (Check): verificar a melhoria do desempenho usando os dados coletados dos processos e tomando ações corretivas necessárias. • Agir (Act): atuar no sentido de padronizar as melhorias e incorporá-las ao processo. Otimizado 5 Gerenciado 4 Definido 3 Repetitível 2 • • • • Inicial 1 • • • • • • • • • • prevenção de erros; • gerenciamento de mudança tecnológica; e • gerenciamento de mudanças no processo • gerenciamento quantitativo do processo; e • gerenciamento da qualidade do produto. foco no processo da organização; definição do processo para a organização; programa de treinamento; gerenciamento integrado; engenharia de produtos; coordenação intergrupos; revisão de pares. gerência de requisitos; planejamento do projeto; acompanhamento do projeto e de desvios; gerenciamento de subcontratados; controle de qualidade; e gerência de configurações. Por sua vez, o QIP desenvolve-se por meio dos seguintes passos:[1] • Caracterizar: conhecer o ambiente com base nos dados e modelos disponíveis e na instituição. Estabelecer os fundamentos com os processos existentes na organização e caracterizá-los criticamente. • Definir os objetivos: com base na caracterização inicial e nas capacidades estratégicas da organização, definir com objetivos quantificáveis o que seriam projetos bem sucedidos e avaliar o desempenho e melhoria da organização. As exceções aceitáveis são definidas com base nos fundamentos estabelecidos no passo de caracterização. • Escolher os processos: com base na caracterização do ambiente e dos objetivos definidos, escolher os processos apropriados para melhoria bem como as ferramentas e métodos de apoio, certificando-se que esses sejam consistentes com os objetivos. • Executar: executar os processos elaborando os produtos e provendo retorno, a partir do projeto, dos dados que estão sendo coletados para avaliação do alcance dos objetivos. • Analisar: ao final de cada projeto específico, analisar os dados e informações acumuladas para avaliar as práticas correntes, identificar problemas, registrar achados, e fazer recomendações para melhoria de futuros projetos. • Empacotar: Consolidar a experiência adquirida em forma de refinamento do modelo praticado ou mesmo pela adoção de novos modelos e, ainda, por meio de outras formas de estrutura de conhecimento alcançadas no último ou em processos anteriores e armazená-las em uma base de experiências, disponível para uso futuro. Uma caracterização apropriada e sem ambigüidades do ambiente é um pré-requisito para a aplicação correta do paradigma. Essa caracterização requer a classificação minuciosa do projeto, permitindo a identificação de classes de projetos com características e objetivos similares. Assim, pode-se estabelecer o ambiente adequado ao projeto corrente. Com a correta caracterização obtém-se um contexto para a definição de objetivos, para a reutilização de experiências e produtos, para a seleção de processos, para a avaliação e comparação de resultados, e para uma maior exatidão nas previsões. Figura 1 O Paradigma de Aperfeiçoamento da Qualidade - QIP O Quality Improvement Paradigm – QIP (ou Paradigma do Aperfeiçoamento da Qualidade), desenvolvido por Victor Basili e outros [1], é o resultado da aplicação do método científico para resolução do problema de melhoria da qualidade de software. O QIP está diretamente relacionado ao Ciclo Plan/Do/Check/Act (PDCA) de Shewart-Deming[15] largamente utilizado na indústria para implementação de planos de gerenciamento da qualidade. O Processo do Paradigma de Aperfeiçoamento da Qualidade A abordagem PDCA é articulada em quatro fases: [15] • Planejar (Plan): Definir os objetivos e metas do aperfeiçoamento da qualidade, determinar métodos para alcançar esses objetivos e preparar um plano de implementação. Há um grande número de características de projetos e de ambiente que afetam o processo de desenvolvimento e o produto de software, tais como: • fatores de pessoal - números de empregados, nível de especialização, organização de grupo, experiências; • fatores relacionados ao problema - domínio da aplicação, suscetibilidade a mudança, limites do problema; • fatores do processo - modelos de processo, métodos, técnicas, ferramentas, linguagem de programação, outros documentos; • fatores do produto - implantação/entrega, tamanho do sistema, qualidades requeridas; 9 10 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 • fatores dos recursos - máquinas de produção e desenvolvimento, tempo calendário, orçamento, software existente. A Fábrica de Experiência A definição realista dos objetivos é importante para a caracterização do ambiente. É preciso estabelecer modelos e objetivos para os processos e para os produtos. Esses objetivos precisam ser mensuráveis, dirigidos pelos modelos, e definidos para uma variedade de perspectivas, tais como, a do usuário, do cliente, do projeto, da organização, etc. A abordagem GQM - Goal/Question/Metric (demonstrada adiante) [2] é o mecanismo usado pelo Quality Improvement Paradigm para definir e avaliar um conjunto de objetivos operacionais usando métricas. Essa abordagem representa uma sistemática para ajuste e integração de objetivos com modelos de processos, produtos e perspectivas de qualidade de software, baseadas em necessidades específicas do projeto e da organização. Existe uma variedade de dados que podem ser coletados: • Dados sobre recursos - incluem esforço por atividade, fase, tipo ou pessoal, tempo de computador, tempo calendário, etc; • Dados de mudanças e falhas – dizem respeito a mudanças e falhas por vários esquemas de classificação; • Métricas do processo – relativas à definição e à conformidade dos processos, e aos dados concernentes ao entendimento do domínio da aplicação; • Dados do produto – quanto às características lógicas e físicas do produto e quanto à utilização e contexto da informação. Como mostra a figura 2, o ciclo QIP, pode ser representado da seguinte forma: Empacotar Caracterizar Analisar Definir objetivos Escolher processo Executar Figura 2 11 O QIP baseia-se na idéia de que o aperfeiçoamento do processo e do produto de software requer uma acumulação contínua de experiências (aprendizado) em formato que pode ser efetivamente entendido e modificado (modelos de experiências) em um repositório integrado (base de experiências) que pode ser acessado e modificado em conformidade com as necessidades do projeto corrente (reutilização). Para apoiar o paradigma de aperfeiçoamento foi desenvolvida um estrutura distinta do desenvolvimento de software denominada Fábrica de Experiências (Experience Factory – EF).[1] A Fábrica de Experiências é uma estrutura física e/ou lógica que apoia o desenvolvimento de sistemas por meio da análise e sintetização de todos os tipos de experiências, agindo como um repositório para essas experiências e fornecendo-as a outros projetos na medida da demanda, representa um paradigma de mudança do pensamento corrente de desenvolvimento de software. Ela separa os tipos de atividades que precisam ser executadas em diferentes estruturas, reconhecendo que elas verdadeiramente representam processos e enfoques diferentes. Assim, identificam-se duas unidades organizacionais distintas: a Organização Projeto, para o desenvolvimento de sistemas; e a Fábrica de Experiências, para o empacotamento de conhecimentos adquiridos. Na Organização Projeto, são resolvidos os problemas, na Fábrica de Experiência, são entendidas as soluções e empacotadas as experiências para futura reutilização.[1] O Processo da Fábrica de Experiências A Fábrica de Experiências representa o grupo que trabalha na base do conhecimento da engenharia de desenvolvimento de software como um bem da corporação, enquanto a Organização Projeto representa o grupo cujo trabalho é usar aquele conhecimento para produzir os mais avançados produtos da corporação. A Organização Projeto caracteriza o projeto e seu ambiente, define os objetivos para o projeto e escolhe o processo apropriado dadas as características e objetivos. O suporte ao projeto é provido pela Fábrica de Experiências pela articulação das características, formulação de objetivos e seleção do conjunto apropriado de experiências passadas para uso no projeto. [1] Pela abordagem da Fábrica de Experiências, a reutilização não representa apenas o reaproveitamento de código mas de todos os tipos de experiências e do contexto que envolve essas experiências, reconhecendo que as experiências nem sempre são reutilizáveis como foram concebidas, antes elas precisam ser ajustadas e empacotadas para tornar mais fácil o seu acesso e reutilização. Na prática, a abordagem QIP/EF é implementada colocando-se primeiramente a organização em seu lugar, a partir de sua caracterização. Isso significa a coleta de dados para estabelecimento dos fundamentos (baselines) e avaliação dos pontos fortes e fracos da organização a fim de se obter o enfoque nos negócios e objetivos da empresa para o processo de melhoria. A coleta inicial de dados é crítica também para a definição da qualidade do produto que deveria ser aprimorada pelo programa. Dessa forma, a organização define em si mesma um contínuo aperfeiçoamento, mesmo se o nível de maturidade não for muito alto, porque ela aprende a partir do seu próprio negócio, não de um modelo de processo ideal, externamente 12 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 concebido. Melhorias no processo serão baseadas na compreensão do relacionamento entre processo e produto na própria organização. A introdução de novas tecnologias será motivada por problemas locais e o corpo técnico estará mais disposto a utilizá-las. A abordagem GQM O Modelo Goal Question Metric (GQM) Esta apresentação da abordagem Goal/Question/Metric (GQM), utilizada como abordagem na definição do processo de desenvolvimento de software, toma por base o texto de Victor R. Basili, Gianluigi Caldiera e H. Dieter Rombach [2]. Os dois primeiros do Institute for Advanced Computer Science, da University of Maryland (EUA), e o último da FB Informatik, da Universitat Kaiserslautern (Alemanha). Como em qualquer disciplina de engenharia, o desenvolvimento de software requer um mecanismo de mensuração para avaliação e retorno. O procedimento de medir é uma forma de criar uma memória corporativa e um auxílio na resposta de várias questões associadas ao estabelecimento de um processo de software. Um processo de medidas estabelecido auxilia no planejamento de novos projetos, na determinação de pontos fortes e fracos de produtos e processos, na racionalidade para adoção ou refinamento de técnicas em uso, e ainda, na avaliação da qualidade de processos ou produtos específicos. Medir também ajuda, durante o curso de um projeto, a avaliar o seu progresso, tomar as medidas corretivas baseadas nesse julgamento, e avaliar o impacto de tal ação. Algumas questões que poderiam, por exemplo, ser respondidas a partir de um sistema de medida, seriam : • Qual o custo de um novo projeto? • Qual a freqüência de certos tipos de erros? • Qual o impacto da aplicação de determinada técnica na produtividade dos projetos? De acordo com vários estudos realizados sobre a aplicação de métricas e modelos em ambiente industrial, o processo de medida para trazer resultados precisa ser: voltado para objetivos específicos; aplicado a todo o ciclo de vida dos produtos, processos e recursos; adaptado às características e ao contexto da organização, do ambiente e dos objetivos. Como na figura 3, o modelo hierárquico GQM, pode ser representado da seguinte forma: OBJETIVO 1 QUESTÃO MÉTRICA OBJETIVO 2 QUESTÃO MÉTRICA QUESTÃO MÉTRICA A abordagem GQM parte da premissa de que para uma organização adotar um processo de medida definitivo é necessário primeiramente estabelecer os objetivos da própria organização e de seus projetos, definir esses objetivos operacionalmente e, finalmente, criar um ambiente de apoio capaz de interpretar os dados comparando-os com os objetivos estabelecidos. Assim, é importante deixar claro, pelo menos em termos gerais, qual a necessidade de informações da organização, se essas informações podem ser quantificadas e em que momento podem ser colhidas, e se podem ser analisadas em função dos objetivos.[2] A abordagem foi definida originalmente para avaliação de defeitos em um conjunto de projetos no ambiente da NASA Goddard Space Flight Center. A aplicação envolveu um conjunto de estudos de casos e foi expandida para incluir várias abordagens experimentais. Embora a abordagem tenha sido usada originalmente para definir e avaliar os objetivos de um projeto específico, seu uso foi expandido para contextos maiores. A abordagem foi usada como um passo dentro de outra técnica, o Quality Improvement Paradigm (discutido anteriormente neste trabalho), processo de melhoria da qualidade que se utiliza de um ambiente operacional restrito, a Fábrica de Experiência (Experience Factory), que pode, por sua vez, ser entendida como um ambiente experimental com o objetivo de produção e/ou avaliação de software e processos para uso nos demais projetos. Neste trabalho, a utilização de todas estas técnicas, será norteada pelo modelo CMM de qualidade de software. A correta utilização destas técnicas permitirá à organização galgar os níveis de maturidade, através da realização das suas áreas chave para cada nível alcançado. O resultado da aplicação da abordagem GQM é a especificação de um sistema de medidas objetivando um conjunto particular de casos e de regras na interpretação dos dados medidos. O modelo de mensuração resultante possui três níveis:[2 - p 3] 1. Nível Conceitual: no qual é definido um objetivo (Goal) para o objeto a ser medido levando-se em conta o modelo de qualidade que se pretende atingir e o ponto de vista da observação. Podem ser objetos de medida: − Produtos - quaisquer documentos e produtos que são gerados durante o ciclo de vida do sistema: especificações, projetos, programas, lotes de testes etc. − Processos - atividades relacionadas ao desenvolvimento de software normalmente associadas ao dispêndio de tempo: fase de especificação, de projeto, de teste, de interação etc. − Recursos - itens consumidos no processo para gerar os produtos: pessoal, equipamentos, software, espaço físico etc. 2. Nível Operacional: diz respeito a um conjunto de questões (Question) usado para caracterizar a forma de julgamento e garantir que o objetivo, definido no modelo, será atingido. As questões tentam caracterizar o objeto a ser medido (produto, processo ou recurso) com respeito a um padrão de qualidade e buscam identificar a qualidade desse objeto a partir de determinado ponto de vista. MÉTRICA Figura 3 13 14 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 3. Nível Quantitativo: representa os dados que serão apurados/medidos (Metric). Um conjunto de dados é associado às questões formuladas a fim de que sejam traduzidas quantitativamente. Esses dados podem ser objetivos ou subjetivos. - Objetivos - se dependem apenas do objeto que está sendo medido e não do ponto de vista em que são tomados. Por exemplo: número de versões de um documento, horas de pessoal gastas em determinada tarefa, tamanho de um programa etc. - Subjetivos - se dependem, além do próprio objeto que está sendo medido, do ponto de vista em que será analisada a medida. Exemplo: facilidade de leitura de um texto, nível de satisfação do usuário etc. A segunda fonte de informações é a descrição dos processos e produtos da organização, ou, pelo menos, daqueles que estão dentro do escopo do programa de medidas que se pretende efetuar. A partir desse fonte, com a especificação dos modelos de processos e produtos, dentro da maior formalidade possível, deriva-se a coordenada do “objeto” para o objetivo em questão. A terceira fonte de informações é o modelo do negócio da organização, que fornece a coordenada “ponto de vista”. É evidente que nem todos os assuntos e processos são relevantes para todos os pontos de vista na organização. Assim, há que se fazer uma análise da relevância dos objetivos para a organização, antes de se considerar concluída a lista de objetivos. Dessa forma, conclui-se a definição dos “objetivos” para o modelo GQM, tomando-se em conta a estrutura e os objetivos da organização. A partir da especificação de cada objetivo podem-se derivar questões significantes que quantificam o objetivo. Geralmente, são feitos pelo menos três grupos de questões: Assim, um modelo GQM é uma estrutura hierárquica que inicia com a definição de um objetivo (goal), especificando o propósito da medição, os objetos e aspectos desses objetos que serão avaliados, e o ponto de vista em que as medidas serão analisadas. O objetivo é, então, refinado em diversas questões (question). Cada questão é, por sua vez, delineada nas métricas (metric). Há que se observar que uma mesma métrica pode ser usada para responder diferentes questões de um mesmo objetivo; diversos modelos GQM podem, também, ter questões e métricas em comum, desde que seja assegurado que quando da coleta das métricas sejam observados os diversos pontos de vista a que se destinam, pois a mesma medida pode assumir valores diversos dependendo do ponto de vista em que será analisada. O processo GQM Um modelo GQM é desenvolvido a partir de um conjunto de objetivos acerca de qualidade e/ou produtividade definidos para a organização, para a divisão ou para o projeto, tais como satisfação do usuário, entrega de serviço no prazo, melhoria de desempenho.[2 – p 5] A partir da identificação dos objetivos e com base em modelos do objeto em avaliação, derivam-se questões que possam definir esses objetivos de forma mais completa. Por exemplo, se o objetivo é caracterizar um software quanto a determinadas qualidades (e.g., portabilidade), então faz-se necessária a escolha de um modelo para o produto que qualifique esses interesses (e.g., relação de características funcionais que precisam ser implementadas para diferentes arquiteturas). O próximo passo consiste em especificar as medidas que devem ser coletadas a fim de responder às questões e acompanhar a conformidade dos produtos e processos aos objetivos. Por fim, há que se desenvolver os meios de coleta dos dados, incluindo-se mecanismos de avaliação e análise. O processo de identificação de objetivos é crítico para o sucesso da aplicação da abordagem GQM, e será apoiado por passos metodológicos específicos. Para a consecução de um objetivo concorrerão três fontes básicas de informação[2 – p 6]. A primeira fonte diz respeito à política e à estratégia da organização que aplica a abordagem GQM. A partir dessa fonte, com a análise da política da corporação, dos planos estratégicos e, ainda, levando-se em conta os interesses relevantes na organização, derivam-se o “aspecto” e o “propósito” para o objetivo a ser perseguido. 15 G 1. Como se pode caracterizar o objeto (produto, processo ou recurso) com o respeito ao objetivo global de determinado modelo GQM? Exemplo: Q 1: Qual o prazo corrente no atendimento às solicitações de mudanças num sistema em manutenção? Q 2: Existe um processo (documentado) no atendimento às solicitações de mudanças? G 2. Como se podem caracterizar os atributos relevantes do objeto em observação num modelo GQM específico? Exemplo: Q 1: Qual o desvio do prazo no atendimento de solicitações em função do estimado? Q 2: O desempenho da equipe no atendimento de solicitações vem melhorando? G 3. Como podem ser avaliadas as características do objeto que são relevantes com respeito ao aspecto tratado no modelo GQM? Exemplo: Q1: O desempenho tem sido satisfatório sob o ponto de vista do gerente de projeto? Q2: Há melhoria visível no desempenho? Uma vez que as questões tenham sido formuladas, deve-se proceder a associação destas com as métricas apropriadas. Diversos fatores devem ser considerados, dentre eles: − Volume e quantidade dos dados existentes - deve-se buscar maximizar o uso das fontes de dados existentes, desde que estejam disponíveis e sejam confiáveis. − Maturidade dos objetos em medição - devem-se aplicar medidas objetivas para objetos com maior nível de maturidade, e avaliações subjetivas quando se trabalha com objetos instáveis ou informais. − Aprendizado do processo - o uso de modelos QGM requer sempre refinamento e adaptação. Assim, as medidas definidas devem auxiliar não somente na análise do objeto medido, mas também na avaliação do próprio modelo. 16 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Como exemplo de aplicação da abordagem Goal/Question/Metric, apresenta-se a suposição de modelo em que se pretenda melhorar o prazo no atendimento às solicitações de mudança para um determinado sistema em fase de manutenção. O objetivo definido deverá explicitar o propósito (melhorar), o processo (atendimento de solicitações de mudança), o ponto de vista (gerente de projeto), e o aspecto a ser observado (prazo de execução). Esse objetivo deve ser refinado em uma série de questões, que serão respondidas a partir da comparação do tempo coletado com média. O modelo GQM completo seria: [2 – p 8] Métricas Objetivo Propósito Melhoria Aspecto Prazo Objeto (processo) Atendimento das solicitações Ponto de vista Gerente de projetos Questão Q1 Métricas M1 Qual o tempo corrente no atendimento de solicitações de mudança? Média de tempo de cada fase M2 Desvio padrão M3 % de casos acima do limite superior Q2 O processo (documentado) no atendimento de Questão M8 Média de tempo de execução * 100 Padrão de tempo para a fase Uma vez que o modelo GQM esteja definido, faz-se necessária a seleção das técnicas, ferramentas e procedimentos apropriados à coleta de dados. Os dados coletados devem ser mapeados para o modelo e interpretados de acordo com esquemas previamente definidos pela organização. Conclui-se, então, que a abordagem Goal/Question/Metric é uma abordagem para definição de um mecanismo de mensuração que possibilite o acompanhamento e avaliação do processo operacional de produção de software. solicitações é fielmente seguido? Métricas M4 Avaliação subjetiva do gerente de projetos M5 % de exceções identificado durante as revisões Questão Q3 Qual o desvio do prazo no atendimento de Métricas M6 solicitações em função do estimado? M7 Média da execução – média prevista * 100 Média da execução Avaliação subjetiva do gerente de projeto Questão Q4 O desempenho está melhorando? Métricas M8 Questão Q5 Métricas M7 Avaliação subjetiva do gerente de projeto Questão Q4 Há melhoria visível no desempenho? Média de tempo de execução * 100 Padrão de tempo para a fase O desempenho tem sido satisfatório sob o ponto de vista do gerente de projeto? 17 18 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 III. O Ambiente em que foi Implementado o Modelo GQM Neste capítulo são apresentadas as principais características e a missão institucional da instituição aonde foi implantado o processo de melhoria contínua usando o QIP/GQM - o Tribunal de Contas do Distrito Federal e, inserida nessa missão, o papel desenvolvido pelo setor de informática. A missão do TCDF As competências constitucionais do Tribunal de Contas do Distrito Federal são:[3] • apreciar, mediante emissão de parecer prévio, as contas anuais do Governador e julgar aquelas relativas aos administradores e demais responsáveis por dinheiro, bens e valores públicos; • apreciar, para fins de registro, a legalidade dos atos de admissão de pessoal e de concessão de aposentadorias, reformas e pensões; • avaliar a execução das metas estabelecidas no plano plurianual, nas diretrizes orçamentárias e no orçamento anual; • realizar inspeções e auditorias de natureza contábil, financeira, orçamentária, operacional e patrimonial nas unidades administrativas dos Poderes Executivo e Legislativo; • fiscalizar as aplicações do Poder Público em empresas de cujo capital social o Distrito Federal participe de forma direta ou indireta; • fiscalizar a aplicação de recursos repassados ou recebidos pelo Distrito Federal, a qualquer título; • atender às solicitações da Câmara Legislativa relativas às atividades de Controle Externo; • aplicar, em caso de ilegalidade ou irregularidade de contas, as sanções previstas em lei e sustar, se o Tribunal não for atendido, a execução de ato impugnado. No planejamento estratégico para o período de 1999 a 2003 [7] é dado especial relevo ao estabelecimento da missão institucional do TCDF com base nas competências constitucionais acima e nos arts. 77 e 78 da Lei Orgânica do Distrito Federal (LODF) [3]. Esses artigos elucidam que a fiscalização contábil, financeira, orçamentária, operacional e patrimonial dos órgãos e entidades da administração do Distrito Federal, quanto à legalidade, legitimidade, economicidade, aplicação das subvenções e renúncia de receitas é exercida pela Câmara Legislativa - mediante controle externo e pelo sistema de controle interno de cada Poder - com o auxílio do Tribunal de Contas do Distrito Federal. Assim, inferida da essência dos citados dispositivos legais, a missão do Tribunal pode ser enunciada como: “Exercer o controle externo da administração dos recursos públicos do Distrito Federal, em auxílio à Câmara Legislativa, zelando pela legalidade, legitimidade, efetividade, eficácia, eficiência e economicidade na gestão desses recursos.” 19 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Releva notar que o atributo principal do papel da Corte de Contas Distrital é garantir à sociedade segurança quanto à transparência e boa gestão dos recursos arrecadados e gastos pelo Governo do Distrito Federal. O papel do setor de informática A política de informatização do Tribunal tem se pautado pela adoção de soluções que associem qualidade, funcionalidade e economicidade. Nesse contexto, ao setor de informática do Tribunal, denominado Núcleo de Informática e Processamento de Dados – NIPD, compete apoiar a atividade de fiscalização por meio da criação de sistemas de informação para acompanhamento dos gastos públicos, avaliação de riscos e identificação de pontos críticos para auditoria, produção, organização e divulgação de súmulas, decisões, votos, pareceres e instruções. Para auxiliar essas atividades foram desenvolvidos, em especial a partir de 1996, vários sistemas integrados em repositório de informações único.[8] Ao NIPD compete também administrar a rede de microcomputadores, executar e acompanhar a manutenção dos equipamentos de informática, bem como propor a compra de bens e serviços relativos a tecnologia. Adicionalmente, o setor mantém atualizado, com o apoio de diversas Unidades do TCDF, o site www.tc.df.gov.br que permite a qualquer cidadão consultar os documentos públicos produzidos no exercício do controle externo. Por ser um ente público com especial apreço pela boa gestão dos recursos, antes de efetuar investimentos são feitas análises de alternativas com vistas a encontrar a melhor relação custo x benefício. Essa prática, aplicada ao setor de informática será, como apresentado a seguir, motivadora do desenvolvimento de um processo de produção de software. Motivação para o estabelecimento do processo de desenvolvimento Devido ao esforço necessário ao estabelecimento de um processo de desenvolvimento, em especial quando se conta com poucos recursos humanos e materiais, foi fundamental para o empenho na produção do mesmo a existência das motivações a seguir relacionadas. Melhoria da qualidade de produtos Sendo o TCDF um órgão de informatização relativamente recente, a partir de 1995, a equipe responsável pelo desenvolvimento de sistemas teve a oportunidade de construir todo um conjunto de aplicações corporativas, com base nas necessidades identificadas junto aos usuários, integrado e homogêneo. No entanto, o processo de construção dessas soluções foi fortemente influenciado pela experiência profissional dos técnicos e, apesar de ter sido um processo repetitivo, não era explicitado formalmente. Hoje, contando com mais de dez aplicações em produção (150.000 linhas de código fonte em Visual Basic, VB Script, Java, Java Script e HTML), que, portanto, requerem manutenção, e sem modificação no quadro de desenvolvedores (2 analistas e 4 programadores), faz-se necessário aprimorar o processo de trabalho visando a elaboração 20 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 de produtos com menor número de erros possível, que observem a integração e a homogeneidade dos sistemas já desenvolvidos. Planejamento de novas demandas Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 IV. Implementando Um Processo De Melhoria Contínua – Metodologia Empregada Da forma atual, as estimativas de prazo para desenvolvimento ou manutenção de sistemas são baseadas somente na experiência pessoal dos técnicos, sem um acompanhamento efetivo dos prazos. Essa situação, apesar de bastante comum nas organizações, é fator de risco para a credibilidade do setor no caso de falha. Felizmente, desde 1995, os técnicos tem acertado em suas previsões à administração da Casa. No entanto, o acompanhamento sistemático do processo de desenvolvimento de software será fundamental para aperfeiçoar as estimativas de prazos e recursos de novas demandas de sistemas. Mudança de plataforma computacional Com a relativa estabilização da demanda por desenvolvimento de novos serviços e programas ao setor de informática do TCDF, a partir do final de 1998, a equipe técnica iniciou trabalho de busca de alternativas com vistas a reduzir a necessidade de investimentos em informática e identificou grupos de programas que, se substituídos, levariam a essa redução. Esse trabalho subsidiou a Presidência do Tribunal a decidir substituir, até o final do ano de 2002, o sistema operacional Windows 95 pelo Linux nas estações de trabalho do TCDF, proporcionando elevada redução de investimentos com hardware e software [8]. Assim, com vistas a possibilitar essa substituição, será necessário converter todos os sistemas desenvolvidos e configurar aplicativos de escritório que possibilitem ao usuário final usufruir das mesmas funcionalidades hoje disponíveis. Esse fato gerará intenso esforço de codificação que, sem acompanhamento formalizado por meio de um processo de desenvolvimento definido e utilizado por todos os técnicos, poderá inviabilizar a substituição da plataforma computacional proposta pelo fracasso na conversão dos sistemas. Para que seja possível substituir gradualmente as aplicações, optou-se por utilizar a linguagem Java como padrão para a execução dessa tarefa. A linguagem de programação Java permite disponibilizar os sistemas tanto para estações Windows 95 como Linux e irá facilitar a reutilização de código. Conforme podemos observar em, um processo contínuo de melhoria pode ser implementado institucionalmente, independente se a atividade fim da empresa é produzir software ou outra qualquer, seguindo-se alguns passos descritos detalhadamente a seguir:[5] - Montar uma Equipe de Melhoria do Processo: A primeira e mais crítica atividade ao montar uma equipe é a aprovação da gerência para todo o processo de melhoria do software na organização. É importante destacar que nesse processo uma série de recursos devem ser alocados. A equipe designada para essa tarefa, preferencialmente em tempo integral, deve ser composta de técnicos experientes, com credibilidade dentro da organização, podendo contar também com a participação de pesquisadores e consultores externos. Hoje já é amplamente reconhecido que uma equipe de melhoria dos processos da organização deve ser mantida em uma estrutura separada do desenvolvimento de software. Essa equipe deve ter um mandato, ou tempo de duração bem definido, por exemplo: o tempo de ser implantado um processo de qualidade com certificação ISO 9001. Nesse ambiente em que foi implementado o Modelo GQM, a montagem da equipe de melhoria dos processos foi o primeiro passo dos trabalhos. Os profissionais mais experientes foram alocados e levantaram todos os processos do TCDF, propondo melhorias nos que não se enquadravam plenamente no novo processo de informatização da organização. O levantamento desses processos foi feito por 6 (seis) analistas de sistemas durante um mês, dedicados exclusivamente à esta tarefa. - Modelar os Processos Existentes: Modelar os processos existentes em uma organização pode servir para vários propósitos e agregar diversos benefícios. No contexto de melhoria de processos, modelos de processos descritivos são úteis para se entender a maneira como as coisas funcionam e para comunicar esse entendimento. Algumas questões básicas que necessitam serem respondidas em uma modelagem de processos são: - Quais são as atividades do processo ? - Quais são as dependências entre essas atividades ? - Quando as atividades iniciam e terminam ? - Quem são os atores que executam essas atividades ? - Quais são as interdependências entre estes atores ? 21 22 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Fontes de informação para responder essas questões indicam que devem ser utilizadas entrevistas com os membros da organização, inspeções nas documentações dos processos (quando existirem), inspeções nas documentações de gerência do projeto e também observações diretas na equipe de desenvolvimento. Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 formulários. Foi selecionado o Sistema de Acompanhamento de Processos para uma análise preliminar da metodologia a ser empregada. Foram levantados os problemas apresentados na versão do sistema e classificadas a s falhas segundo critérios de gravidade estabelecidos pelo gerente de informática. - Definir e Documentar um Plano de Ação: Os modelos de processos que foram desenvolvidos serão usados em passos subsequentes do processo de melhoria. Um bom sinal é quando os desenvolvedores penduram partes dos modelos em seus ambientes de trabalho, significa que estão sendo úteis para o dia a dia dos seus trabalhos. No TCDF, os prováveis processos a serem informatizados, foram modelados e descritos de forma a explanar claramente as atividades intrínsecas de cada um, as dependências entre essas atividades, o tempo de duração de cada uma delas, os atores que as executam e as interdependências entre estes atores. Uma vez que os processos estão modelados e seus pontos fortes e fracos estão bem entendidos, um plano de ação deve ser definido. Para o Software Engineering Process Group Guide o plano de ação é definido como: “Uma resposta formal, escrita da avaliação (do processo) e o ‘mapa’ para sua melhoria”. O plano de ação é extremamente importante por várias razões, dentre elas podemos citar: é solicitado para conseguir uma mudança do orçamento para as próximas fases (avaliação das soluções, mudanças nos processos), é crucial para transferir as informações corretas para a gerência e para os desenvolvedores sobre a importância e as dificuldades do que será realizado. - Conduzir uma Análise Qualitativa: A meta desse estágio é identificar as causas e os mecanismos internos que indiquem os problemas de custos e riscos elevados, relacionados à qualidade dos produtos entregues e à eficiência do processo de desenvolvimento de software. A equipe de melhoria de processos da organização, citada anteriormente, poderá ser responsável pela análise contínua desse problemas. Uma modelagem dos processos bem definida, ajudará a diferenciar os verdadeiros problemas dos aspectos irrelevantes. Nesse contexto, existem três técnicas principais para se fazer a análise qualitativa: entrevistas estruturadas, análise eventual dos problemas e questionários bem definidos e bem desenhados. No contexto da análise qualitativa, essas técnicas se complementam, pois, permitem uma checagem cruzada das informações levantadas. A análise eventual é usualmente iniciada quando é reportado um problema vindo da fase de testes, ou já da operação, de um determinado sistema. Para executar a análise eventual alguns procedimentos são recomendados: - Selecione um sistema, ou versão, relevante para a organização; - Obtenha todos os relatórios de problemas; - Classifique as falhas de programas de acordo com tipos e níveis de gravidade; - Determine as causas de maior gravidade de falhas em termos de erros humanos e falhas nos processos; - Desenvolva recomendações para mudanças de processos e valide-as com os participantes da análise eventual; - Refine as linhas gerais da análise eventual e a nomenclatura utilizada para auxiliar futuras análises. A execução destes procedimentos assume que a organização tem processos bem definidos e modelos organizacionais. No TCDF, como os processos já haviam sido modelados e bem definidos, nesta fase foram elaborados também os procedimentos de coleta de dados e desenhados os 23 - - Um possível esboço de alto nível de plano de ação pode ter o seguinte formato: Melhora corporativa dos objetivos e motivações; O plano de ação dos diversos grupos e participantes do processo de melhoria, suas responsabilidades e prerrogativas; Os passos da melhoria, suas conexões com os objetivos corporativos e seus critérios de entrada e saída; As fases que conduzem para os critérios de saída de cada passo de melhoria, os riscos e incertezas associados a cada fase e os planos de contingência correspondentes, os gerentes encarregados de monitorar e organizar as fases de execução; O conjunto de atividades envolvidas em cada fase de cada passo, os participantes em cada atividade e suas responsabilidades; O esforço e o custo para cada passo e fase, com intervalos indeterminados; Os benefícios esperados baseados em experiências externas e em informações existentes sobre qualidade e produtividade da organização. Como Plano de Ação para o TCDF foi estabelecida uma metodologia que contempla: procedimentos de desenvolvimento e manutenção de sistemas, estabelecimento de um fluxo de solicitações de sistemas, o Sistema de Acompanhamento do Desenvolvimento de Sistemas – SADS, que permite o registro do processo e a extração das métricas estabelecidas (todos estes itens podem ser vistos no Anexo I deste documento). - Montar um Programa de Medição: A princípio um programa de medição é geralmente projetado para: prover uma base quantitativa de comparações para futuras mudanças de processos, melhor entendimento dos requisitos que tenha ou não sido identificados na análise qualitativa precedendo a medição, e finalmente, fazer com que o processo de tomada decisões seja menos arriscado provendo informações gerenciais corretas e no tempo certo sobre produtos de software e os processos utilizados para desenvolvê-los. Em várias ocasiões já foi percebido que o êxito de um 24 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 programa de medições está no seu direcionamento para as metas e objetivos da organização. Para transferir a tecnologia para a memória da organização, alguns pré-requisitos devem ser observados. Primeiro, a estrutura de recompensa deve ser mudada para refletir as metas da tecnologia transferida. Por exemplo, se a cultura atual da organização recompensa a produtividade, então a introdução de métodos estruturados de análise e projeto, que diminuem a rapidez da execução das primeiras fases do projeto, são improváveis de serem adotados pela organização ou, caso sejam adotadas pela organização, o seu uso efetivo será improvável. Segundo, deve haver um número de consultores especialistas na tecnologia disponível para resolver os problemas e, se necessário, prover treinamento para os membros da organização. Os passos usuais de um processo de medição podem ser resumidos da seguinte forma: - Definir metas corporativas e de medidas; - Derivar modelos e medidas que pareçam adequados no contexto específico de medições; - Definir procedimentos de coleta de dados para coletar dados válidos e corretos; - Treinar os participantes em procedimentos de coleta de dados; - Testar a coleta de dados e validar os procedimentos em projetos piloto, simplificando e refinando-os quando necessário; - Expandindo o uso das medições em toda a organização; - Analisar os dados coletados para verificar a utilidade destes dados e a exatidão dos modelos; - Refinar modelos, medidas e procedimentos de coleta de dados, voltar ao passo 4. Algumas fontes usuais de problemas quando são implementados programas de medição: - A coleta de dados não voltada para as metas; - As metas de medição não estão claramente especificadas e/ou claramente comunicadas aos colaboradores; - Muitas metas a serem coletadas de uma só vez. Conflito entre as metas da alta gerência com as metas operacionais e vice-versa; - Desenvolvedores têm que coletar muitos dados; - A equipe encarregada do programa de medição não teve o treinamento adequado e/ou não tem experiência suficiente. Por ser o TCDF uma organização pública, que contém processos e procedimentos estabelecidos em leis, as mudanças dos processos muitas vezes tornam-se problemáticas e até impossíveis de serem realizadas. Neste cenário, mudar a organização é praticamente inviável. O que é factível, e que já está em curso, é a proposição de mudanças sistemáticas e paulatinas na execução de processos e procedimentos. Esta proposição é feita demonstrando-se os aspectos favoráveis e desfavoráveis destas mudanças, encaminhandoas para posterior decisão das autoridades competentes, gestoras destes processos. Neste capítulo os autores apresentaram uma abordagem ascendente para a melhoria prática do processo de produção de software e seus produtos. Estes passos devem ser vistos como uma implantação do Paradigma de Aperfeiçoamento da Qualidade – QIP. A fim de facilitar sua aplicação em diferentes organizações de desenvolvimento e manutenção de software, os autores montaram um conjunto de passos e diretrizes deste paradigma, baseados em suas experiências adquiridas, conduzindo estudos quantitativos e qualitativos, em diversas organizações públicas e privadas. Neste passo da metodologia foram feitas as entrevistas recomendadas na abordagem GQM, onde foram definidas as metas corporativas e de medidas. Foram aplicados os procedimentos de coleta de dados e implantadas as rotinas de utilização formulários desenhados anteriormente, sendo treinados os funcionários responsáveis pela captação e alimentação dos dados. Este passo não apresentou problemas, pois, a coleta dos dados foi voltada para as metas estabelecidas nas entrevistas, as metas de medição foram claramente especificadas. Não houve uma sobrecarga no trabalho dos desenvolvedores para coletar os dados toda a equipe foi treinada no processo de coleta de dados. - Mudar os Processos e a Organização: Após o Projeto Piloto e a revisão dos seus resultados, a tecnologia deve ser transferida para a memória da organização. Tudo que pôde ser observado no Projeto Piloto deve ser usado para ensinar a tecnologia, as formas e materiais de seu treinamento para a organização. Também os procedimentos de coleta de dados talvez tenham de ser modificados para levar em conta as lições aprendidas no Projeto Piloto. 25 26 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Bibliografia V. Conclusão, Perspectivas e Futuros Trabalhos O presente trabalho tem por objetivo apresentar a fundamentação teórica e um caso prático da abordagem QIP/GQM aplicada em uma empresa brasileira, o Tribunal de Contas do Distrito Federal – TCDF. Nos principais modelos de qualidade de software apresentados neste trabalho, o modelo CMM foi o escolhido por nortear de forma objetiva e direta, as ações de implementação de modelos de qualidade de software em empresas nacionais. [1] BASILI, Victor R.; CALDIERA, Gianluigi; ROMBACH, H. Dieter. The Experience Factory. Institute for Advanced Computer Studies / Department of Computer Science / University of Maryland (EUA); & FB Informatik / Universität Kaiserlautern (Alemanha). In: http://www.cs.umd.edu/projects/SoftEng/tame/ tame.html. O Paradigma de Aperfeiçoamento da qualidade – QIP estabelece premissas fundamentais para que uma organização possa melhorar cada processo de software: caracterizar o ambiente, definir os objetivos, escolher os processos, analisar os dados e informações e finalmente “empacotar” as experiências adquiridas nesse projeto realizado. Essas experiências devem ser armazenadas na Fábrica de Experiências, para que possa ser estabelecida uma continuidade do processo de melhoria de software nas organizações. [2] ____. The Goal Question Metric Approach. Institute for Advanced Computer Studies / Department of Computer Science / University of Maryland (EUA); & FB Informatik / Universität Kaiserlautern (Alemanha). In: http://www.cs.umd.edu/projects/SoftEng/tame/ tame.html. A abordagem GQM, objeto de estudo deste trabalho, é utilizada como mecanismo ou técnica, para que seja implementado um programa permanente de avaliação e melhoria da qualidade de software das organizações. Esta técnica foi escolhida principalmente pela sua abordagem objetiva e abrangente na condução dos trabalhos de melhoria da qualidade de software dentro das organizações. [3] BRASIL. CÂMARA LEGISLATIVA - DF. Lei Orgânica do Distrito Federal, Brasília: Câmara Legislativa, 1993. Conforme foi citado anteriormente, o presente trabalho será a parte inicial da dissertação de mestrado que versará sobre a viabilidade de se implantar e manter modelos de qualidade de software em empresas brasileiras, visando a melhoria contínua dos produtos de software dessas empresas. Para tanto, pretende-se implementar a abordagem GQM. com todas as suas implicações, em outra empresa nacional. Contaremos com a colaboração da equipe do Núcleo de Informática do TCDF para orientar a implantação de todo o processo, que deverá se dar primeiramente em uma equipe de desenvolvimento de software provavelmente da ECT Correios do Brasil. - [4] BRASIL. CONGRESSO NACIONAL. Constituição Federal, Brasília: Congresso Nacional, 1988. [5] BRIAND, Lionel; EL EMAM, Khaled; MELO, Walcélio L. An Inductive Method for Software Process Improvement: Concrete Steps and Guidelines. In: Elements of Software Process Assessment and Improvement. Los Alamitos, California (EUA): IEEE Computer Society, 1999.384 p. p. 113-130. [6] DION, Ray. Starting the Climb Towards the CMM Level 2 Plateau. In: Elements of Software Process Assessment and Improvement. Los Alamitos, California (EUA): IEEE Computer Society, 1999. 384 p. p. 259-269. [7] DISTRITO FEDERAL (Brasil). Tribunal de Contas do Distrito Federal DF. Plano Estratégico do Tribunal: PLANEST; Período 1999-2003, Brasília: TCDF/DIPLAN, 1998. [8] ____. Tecnologia da Informação – Triênio 2000-2002, Brasília: TCDF/NIPD, 1999. [9] JOHNSON, Donna L.; BRODMAN, Judith G. Tailoring the CMM for Small Businesses, Small Organizations, and Small Projects. In: Elements 27 28 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 of Software Process Assessment and Improvement. Los Alamitos, California (EUA): IEEE Computer Society, 1999. 384 p. p. 239-257. [10] MCGARRY, Frank; PAGE, Gerald; BASILI, Victor; et al. Software Process Improvement in The NASA Software Engineering Laboratory. Technical Report CMU/SEI-94-TR-22. ESC-TR-94-022. Dezembro,1994. NASA/Goddard Space Flight Center; Computer Sciences Corporation (EUA); & University of Maryland (EUA). In: http://www.cs.umd.edu/projects/SoftEng/ tame/tame.html. [11] NASA. Sample SEL Data Collection Forms: Development Estimates Form and Report Form. In: http://sel.gsfc.nasa.gov/data/ forms.htm. [12] NASA. Software Process Improvement Guidebook. NASA – Janeiro, 1996. NASA-GB-001-95. In: http://www.ivv.nasa.gov. [13] PAULK, Mark C.; WEBER, Charles V.; CHRISSIS, Mary Beth. The Capability Maturity Model for Software. In: Elements of Software Process Assessment and Improvement. Los Alamitos, California (EUA): IEEE Computer Society, 1999. [14] PRESSMAN, Roger S. Engenharia de Software. Tradução de José Carlos Barbosa dos Santos. São Paulo: Makron Books, 1995. 1056 p. p. 721-875. [15] EDWARD DEMING, Out of the Crisis, MIT Center of Advanced Engineering Study, MIT Press, Cambridge, MA, 1986 29 30 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 ANEXO I Modelo GQM aplicado ao desenvolvimento de sistemas no TCDF Considerando o contexto e as razões acima descritos estabeleceu-se o seguinte modelo Goal, Question, Metric, adiante detalhado, para a área de desenvolvimento de sistemas do Tribunal de Contas do DF. Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Objetivo Propósito Avaliar G2 Aspecto Tempo Objeto Conversão dos sistemas em Visual Basic (VB) para Java Ponto de vista Gerente Questão Q3 Qual o tamanho do sistemas originais (VB)? Métricas M11 Quantidade de arquivos dos sistemas originais M12 Quantidade de linhas de código (LOC) dos sistemas Objetivo Propósito Melhoria Questão Q4 Qual o tamanho dos sistemas convertidos? G1 Aspecto Qualidade Métricas M13 Objeto Sistemas Desenvolvidos (produto) Quantidade de arquivos dos sistemas convertidos para Java Ponto de vista Gerente M14 Questão Q1 Quantidade de erros encontrados pelo usuário? Quantidade de linhas de código (LOC) dos sistemas convertidos para Java Métricas M1 # mensal de ocorrências de manutenções corretivas Questão Q5 Qual o tempo necessário para conversão? Métricas M15 Tempo total de conversão por sistema em VB M16 Tempo médio de conversão de uma LOC em VB para Java M2 # mensal de ocorrências de erros que afetam o desempenho dos sistemas M3 # mensal de ocorrências de erros que afetam o funcionamento de pelo menos uma função Métricas M17 M16 por arquivo VB M4 # mensal de ocorrências de erros que afetam o funcionamento de pelo menos um sistema Objetivo Propósito Avaliar M5 # mensal de ocorrências de erros que geram informações inconsistentes G3 Aspecto Planejamento Objeto Processo de Desenvolvimento de Sistemas Ponto de vista Gerente Questão Q2 A qualidade dos produtos está melhorando? Métricas M6 % de variação do último mês com relação a média acumulada para M1 M7 % de variação do último mês com relação a média acumulada para M2 M8 % de variação do último mês com relação a média acumulada para M3 M9 % de variação do último mês com relação a média acumulada para M4 M10 % de variação do último mês com relação a média acumulada para M5 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Questão Q6 Qual a diferença entre o esforço (tempo) estimado e o realizado? M27 # mensal de erros encontrados na leitura de código que afetam o funcionamento de pelo menos uma função Métricas M18 (Esforço real - Esforço estimado) por ocorrência e fase M28 M19 (M18 / Esforço estimado) * 100 por ocorrência e fase # mensal de erros encontrados na leitura de código que afetam o funcionamento de pelo menos um sistema M20 Média de M19 por objetivo e fase M29 # mensal de erros encontrados na leitura de código que que geram informações inconsistentes Questão Q7 Qual a diferença entre os prazos previstos e realizados? M30 Métricas M21 (Data de início real - Data de início estimada) em dias por ocorrência e fase # mensal de erros encontrados nos testes de integração e implantação M31 M22 Média de M21 por objetivo e fase #mensal de erros encontrados nos testes de integração e implantação que afetam o desempenho dos sistemas M23 (Data de fim real - Data de fim estimada) em dias por ocorrência e fase M32 M24 Média de M23 por objetivo e fase # mensal de erros encontrados nos testes de integração e implantação que afetam o funcionamento de pelo menos uma função M33 Objetivo Propósito Avaliar G4 Aspecto Qualidade # mensal de erros encontrados nos testes de integração e implantação que afetam o funcionamento de pelo menos um sistema Objeto Processo de Desenvolvimento de Sistemas M34 Ponto de vista Gerente # mensal de erros encontrados nos testes de integração e implantação que que geram informações inconsistentes Questão Q8 Qual o número de erros identificados pela equipe de desenvolvimento durante a elaboração do sistema? Q9 Qual a relação entre os erros encontrados pelo usuário e os erros identificados durante a elaboração do sistema? Métricas M25 # mensal de erros encontrados na leitura de código M35 M1 / (M25 + M30) M26 # mensal de erros encontrados na leitura de código que afetam o desempenho dos sistemas M36 M2 / (M26 + M31) M37 M3 / (M27 + M32) M38 M4 / (M28 + M33) M39 M5 / (M29 + M34) Q10 Qual a origem (fonte) dos erros encontrados? M40 # mensal de erros encontrados pelos usuários por fonte de erro M41 # mensal de erros encontrados na leitura de código por fonte de erro M42 # mensal de erros encontrados nos testes de integração e implantação por fonte de erro M43 M40 / (M41 + M42) Questão Questão Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Objetivo G1 - Melhoria da Qualidade dos Sistemas Desenvolvidos Procura-se aqui ter condições de dimensionar a melhoria dos produtos entregues aos usuários finais, utilizando-se como indicador principal a quantidade de erros percebida pelos usuários. Para esse objetivo foram definidas duas questões: 1. Q1 - Qual a quantidade de erros encontrados pelos usuário? - procura dimensionar os vazamentos de erros não encontrados na produção do sistema, permitindo quantificar os transtornos causados aos usuários. Em resposta a essa questão foram extraídas as seguintes medidas: 1.1. M1 = Número mensal de ocorrências de manutenções corretivas - contabiliza todas as ocorrências de erros encontradas pelos usuários independentemente de sua gravidade; 1.2. M2 = Número mensal de ocorrências de erros que afetam o desempenho dos sistemas - constituem um subgrupo de M1 e foram destacadas pois prejudicam o desempenho do sistema; 1.3. M3 = Número mensal de ocorrências de erros que afetam o funcionamento de pelo menos uma função - constituem outro subgrupo de M1 e foram destacadas pois prejudicam o desempenho de pelo menos uma função (tipicamente uma tela de transação) do sistema; 1.4. M4 = Número mensal de ocorrências de erros que afetam o funcionamento de pelo menos um sistema - constituem outro subgrupo de M1 e foram destacadas pois prejudicam o desempenho de pelo menos um sistema (toda uma aplicação); e 1.5. M5 = Número mensal de ocorrências de erros que geram informações inconsistentes - constituem outro subconjunto de M1 e foram destacadas pois provocam o armazenamento ou exibição de informações inconsistentes. 2. Q2 - A qualidade dos produtos está melhorando? - visa avaliar a evolução da qualidade dos produtos entregues por meio da comparação das métricas da Q1 acima descritas ao longo do tempo. Em resposta a essa questão foram extraídas as métricas abaixo: 2.1. M6 = Percentual de variação do último mês com relação a média acumulada para M1 - obtida pela divisão da medida de M1 para o último mês pela média de M1 nos meses anteriores ao último mês multiplicado por 100; Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 para M4 - cálculo idêntico ao de M6 utilizando como parâmetro M4; e 2.5. M10 = Percentual de variação do último mês com relação a média acumulada para M5 - cálculo idêntico ao de M6 utilizando como parâmetro M5. Objetivo G2 - Avaliar o tempo de conversão de sistemas em Visual Basic para Java Tendo em vista a mencionada estratégia de substituição do sistema operacional utilizado no TCDF, faz-se necessário reescrever todos os sistemas em produção na linguagem Java para que os mesmos possam continuar sendo utilizados. Esse objetivo visa aperfeiçoar as estimativas de conversão dos sistemas por meio da análise das seguintes questões: 1. Q3 - Qual o tamanho dos sistemas originais em Visual Basic? - essa questão é relevante para dimensionar a tarefa a ser executada. Para respondê-la são medidos: 1.1. M11 = Número de arquivos fonte por sistema - agrupam-se os arquivos dos sistemas desenvolvidos e em desenvolvimento em diretórios de trabalho específicos e procede-se a contagem. Essa métrica é extraída por apuração automática em lote, pelo próprio sistema de apoio ao processo, não necessitando de preenchimento de formulários; e 1.2. M12 = Número de linhas de código por sistema - somam-se as linhas de código, observada a sintaxe do Visual Basic, dos arquivos que compõem os sistemas de informação. Essa métrica é extraída por apuração em lote não necessitando de preenchimento de formulários. 2. Q4 - Qual o tamanho dos sistemas convertidos em Java? - assim, pode-se avaliar o impacto de substituição da linguagem em termos de tamanho (LOC) dos sistemas convertidos e acompanhar o progresso do processo de conversão. Para responder a essa questão são medidos: 2.1. M13 = Número de arquivos dos sistemas - contagem efetuada de forma idêntica a M11 para os diretórios dos sistemas em Java; e 2.2. M14 = Número de linhas de código por sistema - soma efetuada de forma idêntica a M12 para os diretórios dos sistemas em Java. 2.2. M7 = Percentual de variação do último mês com relação a média acumulada para M2 - cálculo idêntico ao de M6 utilizando como parâmetro M2; 3. Q5 - Qual o tempo para conversão dos sistemas? - questão principal para o objetivo pretendido pois informa o esforço realizado até o momento e permite estimar a tarefa restante. Para responder a essa questão são extraídas as seguintes medidas: 2.3. M8 = Percentual de variação do último mês com relação a média acumulada para M3 - cálculo idêntico ao de M6 utilizando como parâmetro M3; 3.1. M15 = Tempo total de conversão por sistema - soma das horas de trabalhadas para conversão de cada sistema até o momento; 2.4. M9 = Percentual de variação do último mês com relação a média acumulada 3.2. M16 = Tempo médio de conversão de uma linha de código em VB para Java - Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 soma de todo o tempo de codificação em Java para conversão dividida pelo tamanho (em linhas de código VB) de todos os arquivos convertidos até o momento; e 3.3. M17 = Tempo médio de conversão de uma linha de código em VB para Java por arquivo VB - soma de todo o tempo de codificação em Java para conversão do arquivo dividida pelo tamanho (em linhas de código VB) do arquivo - possibilita avaliar a evolução da eficiência do trabalho e a complexidade da conversão de cada arquivo. Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 desenvolvimento de sistemas; 2.3. M23 = (data de fim real - data de fim estimada) em dias agrupado por ocorrência e fase - mede a precisão no planejamento do fim de cada fase do processo de desenvolvimento - valores negativos indicam fases concluídas antes da data estimada; e 2.4. M24 = Média de M23 agrupada por objetivo e fase - indica se há variação sensível entre as previsões de término por objetivo e/ou fase do processo de desenvolvimento de sistemas. Objetivo G3 - Avaliar o planejamento do processo de desenvolvimento de sistemas Objetivo G4 - Avaliar a qualidade do processo de desenvolvimento de sistemas O processo de desenvolvimento de sistemas implantado contempla o planejamento de prazos e recursos. No entanto, para a efetividade do planejamento é necessário avaliar o seu grau de precisão e efetuar as correções necessárias. 1. Q6 - Qual a diferença entre o esforço (tempo) estimado e o realizado? - questão que possibilita verificar a precisão do planejamento de recursos; no caso do TCDF, o principal recurso para desenvolvimento de sistemas é a hora de trabalho dos técnicos. Assim, foram estabelecidas as seguintes medidas: 1.1. M18 = (esforço real - esforço estimado) agrupado por ocorrência e fase (entendase fase do processo de desenvolvimento como: especificação, codificação, leitura de código, e teste de integração e implementação) - diferença em minutos entre o esforço real e o esforço estimado - valores negativos expressam estimativas a maior e valores positivos estimativas a menor; 1.2. M19 = (M18 / esforço estimado) * 100 agrupado por ocorrência e fase - indica o percentual de erro das estimativas com relação ao esforço previsto; 1.3. M20 = Média de M19 agrupada por objetivo (entenda-se objetivo da ação da equipe de desenvolvimento em cada ocorrência: manutenção corretiva, manutenção evolutiva ou desenvolvimento de um novo sistema) e fase - permite avaliar se há discrepâncias significativas entre as previsões feitas para cada tipo de objetivo e dentro de cada objetivo por fase do processo de desenvolvimento de sistemas. 2. Q7 = Qual a diferença entre os prazos previstos e reais? - possibilita aferir a precisão das estimativas de datas de início e fim de cada fase do processo de desenvolvimento. Para essa aferição são computados: Com a implantação do processo de desenvolvimento de sistemas pretende-se reduzir o número de erros encontrados pelo usuário, ou seja, erros após a entrada do sistema em produção, estabelecendo-se pontos de teste no processo de desenvolvimento de sistemas com a execução das atividades de leitura de código e teste de integração e implantação. Assim, para avaliar a efetividade do processo em termos de identificação de erros e redução de vazamentos (erros encontrados pelos usuários) foram definidas as seguintes questões: 1. Q8 - Qual o número de erros identificados pela equipe de desenvolvimento durante a elaboração do sistema? - possibilita aferir a eficácia das atividades de teste implantadas com o processo de desenvolvimento de sistemas. Para essa questão são medidos: 1.1. M25 = Número mensal de erros encontrados na leitura de código - totaliza a quantidade de erros identificados na fase de leitura de código pela equipe de desenvolvedores a cada mês; 1.2. M26 = Número mensal de erros encontrados na leitura de código que afetam o desempenho dos sistemas - indica a quantidade de erros identificados na fase de leitura de código que prejudicam o desempenho do sistema pela equipe de desenvolvedores a cada mês; 1.3. M27 = Número mensal de erros encontrados na leitura de código que afetam o funcionamento de pelo menos uma função - indica a quantidade de erros identificados na fase de leitura de código que prejudicam o desempenho de pelo menos uma função (tipicamente uma tela de transação) do sistema pela equipe de desenvolvedores a cada mês; 2.1. M21 = (data de início real - data de início estimada) em dias agrupado por ocorrência e fase - mede a precisão no planejamento do início de cada fase do processo de desenvolvimento - valores negativos indicam fases iniciadas antes da data estimada; 1.4. M28 = Número mensal de erros encontrados na leitura de código que afetam o funcionamento de pelo menos um sistema - indica a quantidade de erros identificados na fase de leitura de código que prejudicam o desempenho de pelo menos um sistema (toda uma aplicação) pela equipe de desenvolvedores a cada mês; 2.2. M22 = Média de M21 agrupada por objetivo e fase - indica se há variação sensível entre as previsões de início por objetivo e/ou fase do processo de 1.5. M29 = Número mensal de erros encontrados na leitura de código que geram informações inconsistentes - indica a quantidade de erros identificados na fase de Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 leitura de código que provocam o armazenamento ou exibição de informações inconsistentes pela equipe de desenvolvedores a cada mês; 1.6. M30 = Número mensal de erros encontrados nos testes de integração e implantação - totaliza a quantidade de erros identificados na fase testes de integração e implantação pela equipe de desenvolvedores a cada mês; 1.7. M31 = Número mensal de erros encontrados nos testes de integração e implantação que afetam o desempenho dos sistemas - indica a quantidade de erros identificados na fase testes de integração e implantação que prejudicam o desempenho do sistema pela equipe de desenvolvedores a cada mês; 1.8. M32 = Número mensal de erros encontrados nos testes de integração e implantação que afetam o funcionamento de pelo menos uma função - indica a quantidade de erros identificados na fase testes de integração e implantação que prejudicam o desempenho de pelo menos uma função (tipicamente uma tela de transação) do sistema pela equipe de desenvolvedores a cada mês; 1.9. M33 = Número mensal de erros encontrados nos testes de integração e implantação que afetam o funcionamento de pelo menos um sistema - indica a quantidade de erros identificados na fase testes de integração e implantação que prejudicam o desempenho de pelo menos um sistema (toda uma aplicação) pela equipe de desenvolvedores a cada mês; 1.10. M34 = Número mensal de erros encontrados nos testes de integração e implantação que geram informações inconsistentes - indica a quantidade de erros identificados na fase testes de integração e implantação que provocam o armazenamento ou exibição de informações inconsistentes pela equipe de desenvolvedores a cada mês; 2. Q9 - Qual a relação entre o número de erros identificados pelo usuário e os erros identificados durante a elaboração do sistema? - possibilita a comparação entre as quantidades de erros encontrados pelos usuários dos sistemas (vazamentos) e de erros encontrados pela equipe de desenvolvimento de sistemas nas fases de leitura de código e testes de integração e implantação. Para efetuar essa comparação são extraídas: 2.1. M35 = M1 / (M25 + M30) - compara o total de erros encontrados pelo usuário com o total de erros encontrados pela equipe de desenvolvimento a cada mês. Valores acima de 1 indicam que os usuários estão encontrando mais erros do que a equipe de desenvolvimento; 2.2. M36 = M2 / (M26 + M31) - análoga a métrica anterior limitando a comparação aos erros que afetam o desempenho dos sistemas; 2.3. M37 = M3 / (M27 + M32) - análoga a métrica anterior limitando a comparação aos erros que afetam o funcionamento de pelo menos uma função; 2.4. M38 = M4 / (M28 + M33) - análoga a métrica M36 limitando a comparação aos Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 erros que afetam o funcionamento de pelo menos um sistema; e 2.5. M39 = M5 / (M29 + M34) - análoga a métrica M36 limitando a comparação aos erros que geram informações inconsistentes 3. Q10 - Qual a origem (fonte) dos erros encontrados? - visa caracterizar a origem dos erros para auxiliar na redução dos mesmos. As fontes de erro possíveis no processo de desenvolvimento implantado são: codificação, especificação, modificação anterior e requerimentos do usuário. Para caracterizar as origens dos erros são medidos: 3.1. M40 = Número mensal de erros encontrados pelos usuários por fonte de erro agrupa mensalmente os erros encontrados pelos usuários de acordo com a fonte de erro indicada pelo analista responsável pela resolução da ocorrência; 3.2. M41 = Número mensal de erros encontrados na leitura de código por fonte de erro - agrupa mensalmente os erros encontrados pela equipe de desenvolvimento na fase de leitura de código classificados de acordo com o técnico responsável; 3.3. M42 = Número mensal de erros encontrados nos testes de integração e implantação por fonte de erro - agrupa mensalmente os erros encontrados na fase de testes de integração e implantação pela equipe de desenvolvimento de sistema classificados de acordo com o técnico responsável; e 3.4. M43 = M40 / (M41 + M42) - compara os erros encontrados pelos usuários e pela equipe técnica de acordo com a fonte de erro indicada. Todas essas métricas são obtidas automaticamente por meio dos sistemas de apoio ao processo de desenvolvimento implantado, descrito no próximo capítulo. Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 AberturaMestrado de chamado ao Universidade Católica de Brasília, em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Início NIPD na intranet por usuário Não É relativo ao desenvolviment o de sistemas O processo de desenvolvimento de sistemas no TCDF Devido ao crescimento do parque computacional do TCDF e, consequentemente, das solicitações de serviços ao setor de informática - que envolvem desde a criação de um novo sistema de informação até a instalação de um ponto elétrico foi necessário disciplinar e categorizar as demandas com vistas a facilitar o acompanhamento das mesmas tanto pela gerência como pelos próprios usuários. Para isso foi implantado, em maio de 1999, um aplicativo na intranet do TCDF que possibilita aos usuários efetuarem suas solicitações e acompanharem o andamento dos serviços. Fim Sim Elaboração de Cronograma de Desenvolvimento de Sistemas - CDS Análise de Requerimentos do usuário Esse sistema se mostrou adequado para as demandas relativas a manutenção de equipamentos, dúvidas de usuários, instalação de programas, etc., mas não permitia maior detalhamento das fases relativas ao processo de desenvolvimento de sistemas. Assim, considerando a importância de disciplinar o processo de desenvolvimento, as razões que motivaram sua implantação descritas no item contexto da aplicação do processo, o modelo GQM definido e a maturidade da equipe de desenvolvimento, foram criados os documentos contendo o processo de desenvolvimento de sistemas, os formulários que suportam esse processo e desenvolvido o Sistema de Acompanhamento do Desenvolvimento de Sistema no TCDF - SADS - que permite o registro do processo e a extração das métricas estabelecidas (anexo 4). Processos que fogem ao escopo deste trabalho Elaboração da especificação (projeto) Não Projeto aprovado 1 Teste de integração e implementação Abaixo, apresenta-se de forma esquemática o diagrama do processo de desenvolvimento praticado no TCDF. Codificação Correções Leitura de Código Correções Sim Não Correção após teste Sim Correção após leitura de código Fim 1 Não Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 As atividades realizadas pelos participantes do processo, segundo o papel que exercem, são as seguintes: Usuário Analista Abre chamado Abre CDS2 Equipe Prog. 1 1 Analisa requerimentos Elabora projeto RTF3 Codifica Prog. 2 Prog. 3 Preenche REF4 Preenche REF Lê código Testa Secretária Gerência Merece destaque o fato de que o processo definido foi adequado à forma de trabalho dos técnicos e à cultura e disciplina já em uso. O trabalho de definição do processo permitiu conhecer melhor a forma de atuação da equipe e promover ajustes de procedimentos. Digita REF Análise da aplicação do processo O acompanhamento do processo de desenvolvimento de sistemas realizado a partir de novembro de 1999 possibilitou obter os resultados apresentados neste tópico, segundo o modelo GQM apresentado anteriormente. Para melhor compreensão dos mesmos as análises serão realizadas para cada objetivo definido, tomando-se por base as métricas obtidas até 23 de junho do corrente relacionadas no anexo 2. Implantação Conclui CDS Preenche RSA5 Digita CDS Preenche RSA Preenche RSA Preenche RSA Vale notar que esse processo vem sendo ajustado, desde setembro de 1999, para se adequar às necessidades do setor de informática. Inicialmente, foram utilizados formulários mais detalhados para as fases de codificação, baseados nos utilizados pelo SEL/NASA (anexo 3), que se mostraram de difícil preenchimento e aceitação por parte da equipe técnica. Assim, complementarmente ao registro de tempo feito por meio do RSA, o registro do tamanho dos sistemas e programas é feito por rotina de apuração semanal. Os resultados obtidos da análise dessas métricas não necessariamente representam uma tendência neste momento, uma vez não há ainda uma base consolidada para comparação. Restando dizer que essas medidas passam a representar a formação de conjunto de indicadores para análises futuras mais consistentes. Digita RSA Objetivo G1 - Melhoria da Qualidade dos Sistemas Desenvolvidos Extrai métrias Avalia resultados Legenda: 1 - Programador - técnico do NIPD atuando como programador; 2 - CDS - Cronograma de Desenvolvimento de Sistemas - modelo no anexo 1; 3 - RTF - Relatório da Reunião de Revisão Técnica Formal para Especificação de Sistema - modelo no anexo 1 - não é digitado; 4 - REF - Relatório de Erros e Falhas - modelo no anexo 1; 5 - RSA - Relatório de Semanal de Atividades - modelo no anexo 1; Da observação das métricas apuradas para este objetivo pode-se constatar o aumento do número de erros encontrados pelos usuários no período. A variação de 133% na métrica M6 reflete esse aumento e aponta para a necessidade de melhor acompanhamento do processo de desenvolvimento estabelecido. Há que se considerar, porém, que a grande maioria dos erros encontrados não se originam de produtos do atual processo de desenvolvimento, resultam de sistemas em produção antes da implantação deste processo. Objetivo G2 - Avaliar o tempo de conversão de sistemas em Visual Basic para Java O resultado mais expressivo para avaliação desse objetivo é a métrica M16 que representa o tempo médio de conversão de uma linha de código VB para Java. Por essa medida cada linha de código VB é convertida para Java em 1,71 minutos, em média. Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Assim, pode-se comparar o tempo médio de conversão com a média de conversão por arquivo (M17) e identificar quais funções consumiram mais recursos ou são mais complexas. A partir da associação entre as medidas M16 (tempo médio de conversão) e M12 (LOC dos sistemas a serem convertidos) pode-se obter uma estimativa do tempo necessário para a completa conversão dos sistemas. Por exemplo, o Sistema de Acesso às Bases de Dados - SABD, atualmente em conversão, por essa medida, requer 550 horas para estar totalmente convertido em Java. Uma vez que já foram realizadas 216 horas de conversão para esse sistema (M15), pode-se deduzir que resta um esforço de 334 horas para conclusão de sua conversão. Objetivo G3 - Avaliar o planejamento do processo de desenvolvimento de sistemas Quanto ao planejamento de recursos, pode-se constatar, pela variação média de erro de estimativa de horas a serem despendidas na realização de uma tarefa (M20) por objetivo e fase do processo de desenvolvimento, que as estimativas para manutenção (corretiva ou evolutiva) tendem a ser maiores que os tempos realizados. Por outro lado, as estimativas para desenvolvimento de novas funcionalidades tem sido menores que os tempos reais. Relativamente às estimativa de datas para início e conclusão de cada fase por objetivo (M22 e M24), verifica-se uma tendência de acerto para a previsão de início e de superestimação das datas de término. Os erros de estimativa, de um modo geral, decorrem do fato de a base de informações do processo estabelecido estar ainda em construção. Além disso, observa-se uma tendência dos técnicos em não acompanharem os resultados de suas previsões. Objetivo G4 - Avaliar a qualidade do processo de desenvolvimento de sistemas O resultado dessa avaliação é ainda pouco expressivo. Com o curto período de observação e a falta de hábito dos técnicos, os números apontados nesse objetivo mostram-se muito modestos, o que inviabiliza uma melhor análise e indica necessidade de reforçar a orientação para uso correto do processo. MODELOS DE FORMULÁRIOS APLICADOS NO TCDF Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Cronograma para Desenvolvimento/Manutenção de Sistema – CDS Nº OCORRÊNCIA: DATA CONCLUSÃO: / / Descrição : Objetivo OBJETIVO: Desenvolvimento Manutenção Evolutiva Formulário destinado ao acompanhamento do atendimento às solicitações registradas no SSUF. Manutenção Corretiva Fonte do erro Gravidade do erro Requerimento do Usuário não permite funcionamento do sistema Especificação Codificação não permite funcionamento de alguma função Modificação Anterior gera informações inconsistentes erro menor ou desvio dos padrões PERÍODO ESTIMADO Início Fim PERÍODO REAL ESFORÇO ESTIMADO Fim Início Campos compromete desempenho do sistema Cronograma: FASE INSTRUÇÃO DE PREENCHIMENTO DO CRONOGRAMA para DESENVOLVIMENTO/MANUTENÇÃO DE SISTEMAS CDS Requerimentos / / / / / / / / Especificação / / / / / / / / Codificação / / / / / / / / Leitura de Código / / / / / / / / Testes / / / / / / / / Responsável(eis) Nº Ocorrência Data Conclusão: Matrícula Nome Descrição Objetivo Fonte do erro Gravidade do erro Detalhes sobre: Banco de Dados; Acessos; Serviço; Configuração de Servidor; Estação de Trabalho; etc. Cronograma Período estimado Período real Esforço estimado Responsáveis Detalhes Elaborado por: Cadastrado por: Em: / / número de registro da ocorrência no SSUF indique a data de conclusão da implementação da funcionalidade matrícula do funcionário que preenche o formulário. nome do funcionário resumo do que está sendo desenvolvido/modificado. indique o objetivo da implementação, conforme o caso: Desenvolvimento, Manutenção Evolutiva ou Manutenção Corretiva somente em caso de manutenção corretiva, indique a origem do erro. somente em caso de manutenção corretiva, indique o nível de gravidade do erro para cada fase informar: data de início e término previstos dos trabalhos; preenchimento posterior, indicando as datas reais de realização dos trabalhos tempo em minutos previsto para consecução de cada fase nome do responsável pela execução da fase informar detalhes que devem ser observados quando da colocação do sistema em produção, tais como: tabelas, stored procedure, views etc, que devem ser atualizadas no banco de dados; configurações específica para o servidor de rede ou estação de trabalho; alteração de serviços auxiliares, compilação simultânea de outros sistema, etc. Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Relatório de Erros e Falhas – REF TIPO DE VERIFICAÇÃO : Leitura de Código Nº OCORRÊNCIA: Linha Teste de Integração Matrícula: Nome: ARQUIVO FONTE: REFERÊNCIA 1 FONTE 2 GRAVIDADE Descrição INSTRUÇÃO DE PREENCHIMENTO DO RELATÓRIO DE ERROS E FALHAS - REF Objetivo Formulário destinado ao registro de erros ou falhas detectados durante a Leitura de Código ou Teste de Integração de determinada funcionalidade. Campos Tipo de Verificação marque Leitura de Código ou Teste de Integração, conforme o caso. Matrícula matrícula do funcionário que preenche o formulário. Nome nome do funcionário Nº Ocorrência número de registro da ocorrência no SSUF Arquivo fonte nome do arquivo fonte, inclusive extensão, que está sendo criado ou alterado. Deve ser escrito com a maior nitidez possível. Referência informar o número a que se refere o erro de acordo com a lista de verificação de erros e falhas Linha número da linha do código a que se refere o erro Fonte origem do erro, conforme legenda abaixo no formulário Gravidade nível de gravidade do erro, conforme legenda abaixo no formulário 1 2 Fonte do Erro: Gravidade do Erro: REQ – Requerimento do Usuário; ESP – Especificação ; COD – Codificação; MOA – Modificação Anterior FS – não permite Funcionamento do Sistema; FF – não permite Funcionamento de alguma Função; DS – compromete Desempenho do Sistema; EM – Erro Menor ou desvio dos padrões; II – gera Informações Inconsistentes Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Universidade Católica de Brasília, Mestrado em Informática, Qualidade de Software, UCB-QSW-TR-2001/07 Relatório Semanal de Atividades – RSA Matrícula.: Dia INSTRUÇÃO DE PREENCHIMENTO DO RELATÓRIO SEMANAL DE ATIVIDADES - RSA Nome: Atividade 1 Tempo nº Ocorrência Arquivo Fonte (inclusive extensão) Arquivo VB (somente em caso de conversão p/ Objetivo Formulário de preenchimento manual para inserção semanal de dados no Sistema de Acompanhamento do Desenvolvimento de Sistemas – SADS, com a finalidade de acompanhar o dispêndio de tempo no atendimento às ocorrências registradas no Sistema de Solicitações do Usuário Final - SSUF. Campos 1. 2. 3. 4. 5. 6. Matrícula: matrícula do funcionário que preenche o formulário. Nome: nome do funcionário Mês/ano: mês e ano de referência Dia: dia de referência do preenchimento Atividade: indicar sigla de acordo com a legenda abaixo do formulário Tempo: tempo gasto na execução da atividade em minutos, já descontadas todas as interrupções 7. Nº Ocorrência: número de registro da ocorrência no SSUF 8. Arquivo fonte: nome do arquivo fonte, inclusive extensão, que está sendo criado ou alterado. Deve ser escrito com a maior nitidez possível. 9. Arquivo VB: informar o nome do arquivo visual basic que está sendo convertido para java. 10. Cadastrado em: informar a data de cadastramento do formulário no SADS 11. Por: assinatura ou nome do responsável pela digitação do formulário no sistema. 1 Atividade: REQ – Requerimento do Usuário; ESP – Especificação ; RTF – Reunião de Revisão Técnica Formal; COD – Codificação; LER – Leitura de Código; CAL – correção após leitura de código; TII – teste de integração e implementação; CAT – correção após teste; ADM – Administração/Análise de Dados; DOC - Documentação