quarta-feira, 8 de janeiro de 2014

Métricas - Linhas Gerais

Toda ciência busca obter dados confiáveis sobre seu objeto de estudo, convencionou-se ao longo da história que dados ditos como “confiáveis” são aqueles que podem ser matematicamente demonstrados, permitindo assim análises e comparações a seu respeito. “Nenhuma investigação humana pode realmente ser chamada ciência se não poder ser demonstrada matematicamente” (DA VINCI apud KOSCIANSKI; SOARES, 2006, p. 26). As medições auxiliam na quantificação dos dados coletados para que estes sirvam como informações úteis aos pesquisadores.

 Uma definição técnica sobre medição é dada como sendo o “uso de uma métrica para se obter um valor (o qual pode ser numérico ou categoria), obtido através de uma escala, a um atributo de uma entidade” (NBR ISO/IEC 9126-1). Portanto, sabendo que a medição é o ato de se usar uma determinada métrica e que as medições propiciam dados que servem como base para as investigações humanas, cabe ainda definir o termo métrica. As métricas são utilizadas em diversos aspectos da vida humana, desde a contagem do tempo até a construção de moradias. Sua definição é moldada de acordo com o contexto em que esta está inserida, em matemática a métrica é o conceito que generaliza a ideia geométrica de distância. No contexto de qualidade de software a norma NBR ISO/IEC 9126-1 define métrica como um método de escala e medição definidos, incluindo métodos para categorização de dados qualitativos, podendo ser internas ou externas, e diretas ou indiretas. 

Convencionou-se o uso de diferentes métricas ao longo da história, muitas delas eram adotadas de forma arbitrária, por exemplo, como no caso de medidas de comprimento que eram definidas através da medida de partes do corpo dos reis de cada país. Essa adoção de  11métricas de forma arbitrária causava problemas relativos a falta de padronização. Devido a essas discrepâncias entre as métricas utilizadas, percebeu-se a necessidade de um padrão que pudesse servir como uma base comum para as medições. Alguns sistemas métricos foram estabelecidos ao longo da história, dentre eles destacam-se: O Sistema Imperial (Imperial System) e o Sistema Métrico Decimal. 

O Sistema Imperial é uma coleção de unidades métricas que segundo a Wikipedia foi primeiramente definido na Grã-Bretanha em um ato sobre pesos e medidas em 1824. As unidades foram introduzidas no Reino Unido e suas colônias e estão vigentes ainda hoje juntamente com o Sistema Métrico Decimal. O Sistema Imperial define dentre muitas medidas, por exemplo, a milha que corresponde a 1609.344 metros e o pé que corresponde a 30.48 centímetros. O Sistema Métrico Decimal foi instituído no final do século XVIII (WIKIPEDIA) tendo sua primeira adoção oficial sido realizada na França no ano de 1791 após a Revolução Francesa. Esse sistema tinha como objetivos ser um sistema de uso universal e estabelecer uma base comum de padrões de métricas. Ele oficializou toda a base métrica decimal utilizada até os dias de hoje tais como, por exemplo, o centímetro e o metro, servindo ainda como base para o sistema de kilograma e de contagem de tempo que foram extensões do sistema métrico decimal. 
Atualmente o Sistema Internacional de Unidades (SI) é, segundo dados do Bureau International des Poids et Mesures (BIPM2), o sistema de medições mais adotado no mundo. Ele é um sistema que evoluiu do Sistema Métrico Decimal que teve algumas unidades adicionadas em 1971 tais como o grama e o kilograma. O SI segundo a Wikipedia é um conjunto de definições que visa uniformizar as medições e é utilizado como um guia onde diversas unidades métricas podem ser consultadas. Portanto os sistemas métricos estabeleceram uma base comum para a análise, controle e comparação de dados quantitativos coletados através das medições.

 A administração de projetos, as pesquisas científicas, a engenharia e a indústria em geral são alguns dos setores que utilizam e desenvolvem os sistemas métricos. A Engenharia de Software faz o uso de métricas para o desenvolvimento, administração e avaliação de seus projetos e produtos de  software. 

Métricas de Software para processos



Devido a importância dos processos no ciclo de vida do software bem como, sua forte relação com a qualidade final do produto, foram desenvolvidas ao longo do tempo métricas que auxiliam no gerenciamento e controle dos processos de software. Uma definição para métricas de processos é dada por Kan (1995, p. 83) como sendo métricas que podem ser usadas para auxiliar no desenvolvimento e manutenção dos processos de software.
As métricas segundo Pressman (2002, p. 506) conduzidas durante os primeiros estágios do processo de software fornecem aos engenheiros de software um mecanismo consistente e objetivo para avaliar a qualidade do software em desenvolvimento. 
Na visão de Sommerville (2003, p. 477) a melhoria de processo é uma prática iterativa e de longo prazo e que deve ser apoiada através de métricas de processos que auxiliem os gerentes fornecendo dados quantitativos que demonstrem as variações existentes nas características de um processo para que o mesmo possa ser aperfeiçoado. Sommerville (2003, p. 477) ainda lista algumas dessas características dos processos de software como pode-se observar a seguir: 
  • Facilidade de compreensão: Até que ponto o processo está explicitamente definido e com que facilidade se pode compreender a definição do processo? 
  • Visibilidade: As atividades de processos culminam em resultados nítidos, de modo que o progresso do processo seja externamente visível? 
  • Facilidade de suporte: Até que ponto as atividades do processo podem ser apoiados por ferramentas CASE
  • Aceitabilidade: O processo definido é aceitável e utilizável pelos engenheiros responsáveis pela produção do produto de software? 
  • Confiabilidade: O processo está projetado de tal maneira que seus erros sejam evitados ou identificados antes que resultem em erros no produto? 
  • Robustez: O processo pode continuar, mesmo que surjam problemas inesperados? 
  • Facilidade de manutenção: O processo pode evoluir para refletir os requisitos mutáveis da organização ou melhorias de processos identificadas? 
  • Rapidez: Com que rapidez pode ser concluído o processo de entrega de um sistema, a partir de uma determinada especificação? 


As métricas de processo podem demonstrar através de dados quantitativos aos gerentes valores correspondentes a algumas das questões que se deseja saber através das características listadas a cima apoiando assim suas decisões com dados quantitativos que podem auxiliar no melhoramento dos processos de software. Existem ainda segundo Sommerville (2003, p. 484) três classes de métricas de processos que podem ser coletadas: 

  • O tempo gasto para um processo em particular: Esse pode ser o tempo total dedicado ao processo, o ‘tempo de calendário’, o tempo gasto no processo por engenheiros individuais, etc. 
  • Os recursos requeridos para um processo em particular: Os recursos podem ser o esforço total calculado em pessoa-dia, os custos relacionados a equipamentos de hardware bem como, custos de viagens etc. 
  • O número de ocorrências de um evento em particular: Exemplos de eventos que podem ser monitorados são o número de defeitos descobertos durante a inspeção de código, o número de mudanças nos requisitos que foram solicitados, o número médio de linhas de código modificadas em resposta a uma mudança nos requisitos é um exemplo dessa classe de métrica a ser coletada. 



Essas categorias de medições de processo podem ser utilizadas para descobrir se houve mudanças relativas a eficiência de um processo e ainda mudanças que influenciam na qualidade do software. 

O objetivo das métricas classificadas como métricas de processos, portanto, é auxiliar no controle, gerenciamento e evolução dos processos de software através de dados quantitativos possibilitando um nível de qualidade mensurável.