quinta-feira, 14 de abril de 2011

METRICAS DE SOFTWARE

Edilson J da Costa Jr. RA: 0901397652
Kleber Patrick Marques Martins RA : 0970475207


METRICAS DE SOFTWARE
Como utilizá-las no gerenciamento de projetos de software.
O que são Métricas De Software:
A medição é algo comum no mundo da engenharia. Infelizmente, a engenharia de software está longe de ter uma medição padrão amplamente aceita e com resultados sem nenhum fator subjetivo. Temos dificuldade em concordar sobre o que medir e como avaliar o resultado das medições obtidas.

Métricas de softwares nos possibilitam realizar uma das atividades mais fundamentais do processo de gerenciamento de projetos que é o planejamento. A partir deste, passamos a identificar a quantidade de esforço, o custo e as atividades que serão necessárias para a realização do projeto.

As métricas de software, do ponto de vista de medição, podem ser divididas em duas categorias: medidas diretas e indiretas. Podemos considerar como medidas diretas do processo de engenharia de software o custo e o esforço aplicados no desenvolvimento e manutenção do software e do produto, a quantidade de linhas de código produzidas e o total de defeitos registrados durante um determinado período de tempo. Porém, a qualidade e a funcionalidade do software ou a sua capacidade de manutenção são mais difíceis de serem avaliadas e só podem ser medidas de forma indireta.

Também podemos dividir as métricas de software, sob o ponto de vista de aplicação, em duas categorias: métricas de produtividade e de qualidade. As métricas de produtividade se concentram na saída do processo de engenharia de software e métricas de qualidade indicam o quanto o software atende aos requisitos definidos pelo usuário.

A garantia da qualidade é uma das principais preocupações da indústria do desenvolvimento de software.
A maior parte das empresas utiliza esse tipo de aplicação para gerir seus negócios, produtos e relacionamento com clientes, necessitando maior, confiabilidade e qualidade.
Existem diversas medidas de garantia de qualidades fundamentais para o sucesso de qualquer tipo de aplicação de software, de dados quantitativos, e capaz de informar que aspectos do produto atendem ou não ao padrão de qualidade espeficicado, além de permitir a avaliação dos benefícios de novos métodos e ferramentas de engenharia de software, o entendimento e aperfeiçoamento do processo de produção,avaliação do retorno do investimento e tornar o gerenciamento de projetos baseado em fatos não em ''achismos''.
Para medir software,são utilizadas diversas métricas que são como tipo de medições aplicadas a um sistema de software,documentação ou processo relacionado.através dessas métricas e possível determinar o esforço ou tempo para realização de uma tarefa ou o tamanho do produto.As métricas de software são facilmente calculadas.

Quais as vantagens de utilizar métricas no desenvolvimento de
sistemas?

Diminuir:
Defeitos;
Prazo de entrega;
Desperdício;
Custo;

Aumentar:
Satisfação do cliente;
Produtividade dos recursos;
Visibilidade das ações;
Qualidade do gerenciamento;

Utilização de métricas

Existem dois tipos de métricas no contexto de desenvolvimento de produtos de software:
. As métricas diretas que são realizadas em termos de atributos observáveis como esforço, tamanho e custo;
.As métricas indiretas ou derivadas,que podem ser obtidas através de outras métricas,como por exemplo,complexidade,confiabilidade ,e facilidade de manutenção.Quanto ao contexto podem ser aplicada em produtos ou em processos. Quando as métricas incidem diretamente, são chamadas de métricas de predição, quando em processo de software são chamadas de métricas de controle e sua aplicação normalmente e realizada em processos ja maduros e controlada.
Para Obter resultados, as métricas devem ser aplicadas em um ciclo constante. (medição, análise de resultados, tomada de decisão, interpretação das decisões) .Alguns cuidados também devem ser tomados no processo de medição,momento e a escolha do conjunto de métricas mais relevantes a serem aplicadas e a comparação entre produtos através da aplicação da métricas.

Segundo especialistas, para medir artefatos de softwares através de métricas significativas, as medições devem ser redefinidas de acordo com objetivos específicos. Brasili desenvolveu o GQM.

O GQM é uma metodologia que permite a definição sistemática, o estabelecimento e a exploração adequada de um programa de métricas de software orientado aos objetivos da empresa. O método GQM foi originalmente proposto por Basili; Caldiera; Rombach (1994) para avaliar os defeitos de um conjunto de projetos da NASA Goddard Space Flight Center. Posteriormente, o uso do GQM foi expandido e tem sido adotado para medir e melhorar a qualidade em organizações de desenvolvimento de software. De acordo com os mesmos autores, o método proposto contém três níveis: Conceitual (Objetivo); Operacional (Questões) e Quantitativo (Métricas). O objetivo é definido para um objeto (um produto, um processo, ou um recurso utilizado por um processo). As questões são utilizadas para definir um caminho para alcançar um determinado objetivo. As métricas são definidas através de um conjunto de dados associados a cada questão de forma quantitativa. Solingen e Berghout (1999).

.





Algumas Métricas Comumente Utilizadas

Softwares podem ser medidos baseados em diversos tipos de perspectivas: Tamanho e Complexidade.
Para medição do tamanho na etapa de levantamento de requisitos,podem utilizar como métrica o numero de requisitos utilizados.Já Na fase de projeto,o tamanho pode ser medido em função do numero de classes e,na fase de codificação, a partir do numero de linhas do código fonte.

Algumas das principais Métricas baseadas nos tipos de medição citados:

Analise de Pontos de Função (APF):
é uma técnica de medição das funcionalidades fornecidas por um software do ponto de vista de seus usuários. Ponto de função (PF) é a sua unidade de medida, que tem por objetivo tornar a medição independente da tecnologia utilizada para a construção do software. Ou seja, a APF busca medir o que o software faz, e não como ele foi construído.


Números de linhas de códigos (LOC, KLOC) O modelo LOC, é a técnica de estimativa mais antiga.
Esse Medição pode auxiliar o engenheiro de software a determinar o tamanho de uma aplicação já construída ou estimar o esforço a ser considerado para a obtenção de uma produto a ser desenvolvido.

Complexidade Ciclomática (CC)


Fornece uma medida quantitativa da complexidade lógica de um programa.Através dessa métrica é possível definir o numero de caminhos possíveis de um algoritmo através do seu numero de condições (IF,FOR WHILE,DO E SWITCH).



METRICAS DE CHIDAMBER & KEMERER (CK) este conjunto possui seis métricas para sistemas OO e é conhecido como CK Métricas. As CK métricas podem ser utilizadas para analisar acoplamento e complexidade muito bem, mas elas analisam parcialmente atributos específicos de OO como: polimorfismo, herança e encapsulamento.


1. WMC (Weighted Methods per class-Metodos ponderados por classe) :
cálculo do número de serviços por classe. Um alto WMC mostra que a classe tende a se tornar específica e seus serviços possuem características que atendem a necessidades individuais, restringindo sua reutilização. O número de serviços mostra ainda qual o nível de esforço deve ser despendido para o teste da complexidade da classe






2. DIT (Depht of the inheritance tree-Profundidade da arvore de herança): mede a distância, ao longo da árvore de herança entre uma classe qualquer e a raiz da árvore. Quando maior é o valor de profundidade da classe, mais métodos foram herdados e maior será a complexidade ligada ao funcionamento do código.






3. (NOC (Number of Children)-Numero de Filhos) mede o número de classe diretamente derivadas a partir de uma dada classe. Neste caso, se o valor de profundidade for elevado indica a re-utilização de código.






4. CBO (Coupling Between Object Classes-Acoplamento entre classes de objetos): O acoplamento de uma classe A para uma classe B é dado pelo número de métodos de B chamados a partir de A, adicionando ao número de atributos B referenciados por A.



5. LCOM (Lack Of Conhesion In Methods-Falta De Coesão Em Métodos):
Mede a coesão de uma classe e é calculada através do método de Henderson-Sellers. Se m(A)

é o número de métodos que acessam o atributo A, LCOM é calculada como a média de m(A) para todos os atributos, subtraindo o número de métodos m e dividindo o resultado por (1 - m). Um valor baixo indica uma classe coesa, enquanto um valor próximo de1 indica falta de coesão;






6. RFC (Response For A Class-Resposta De Uma Classe): é o número de métodos que pode ser invocado em resposta a uma mensagem enviada por um objeto. Quanto maior elevado for o valor da métrica, maior a complexidade de funcionamento. Como conseqüência, provavelmente mais teste devem ser realizados para assegurar a ausência de defeitos.





Métricas De Lorenz & Kidd
Conjunto de quatro métricas chamadas de LK,baseiam-se como as métricas CK,no calculo quantitativo de alguns aspectos fundamentais da Orientação a Objetos .como os atributos,métodos,herança,coesão e acoplamento.A diferença entre Métricas Lk e as métricas Ck, e em relação a metodologia empregada em seu calculo.

1. CS (Class Size-Tamanho Da Classe):
CS: número de serviços e atributos locais e herdados de superclasses. Os serviços e atributos Públicos das classes localizadas hierarquicamente acima e os da própria classe em questão compõe o CS. Um grande CS torna a classe muito específica, pois sua estrutura atende a particularidades, o que restringe a reutilização, requerendo ainda maior esforço de testes, já que a classe se torna mais complexa





2. NOO (Number Of Operations Overriden By A Subclass-Numeros De Operações Rdefinidas Por Uma Subclasse):
NOO: os métodos definidos nas superclasses são herdados pelas subclasses, mas, quando esses não atendem à necessidade individual da subclasse, podem ser redefinidos, ferindo assim a abstração implícita na superclasse. Um alto índice de NOO indica um problema estrutural. Se muitas subclasses hierarquicamente mal projetadas






3. NOA (Number Of Operations Added By A Subclass-Numeros de Operações Adicionadas Por Subclasse):
Noa: se a classe contém um alto número de operações e atributos privados, ela torna-se muito específica, diminuindo as possibilidades de reaproveitamento. Pode-se dizer que um alto NOA pode indicar uma falha de modelo. Muitas particularidades mostram que a classe não está bem posicionada na hierarquia, já que suas características principais deveriam estar implícitas nos seus ancestrais




4. SI (Specialization Index-Indice De Especialização):
SI: número de serviços adicionados, eliminados ou redefinidos. Indica o nível de especialização das classes ou as alterações efetuadas para atender à necessidade individual daquela classe.








Conclusão

As métricas de software são medidas quantitativas acerca de processos ou produtos de software. Nosso artigo mostra algumas das mais conhecidas métricas e exemplifica o uso de algumas deles através de exemplos simplificados, com o propósito de acentuar a importância de sua utilização em um projeto. As métricas são capazes de indicar de pontos em que são necessários maiores esforços de teste de acompanhamento.Através de ferramentas e possível coletar um grande numero de métricas com menor esforço,e que viabiliza a implantação de processos de medição em qualquer tipo de sistema, desde os mais simples até os mais críticos,o que contribui para a qualidade do produto final,

Bibliografia

Engenharia de Software Magazine
http://revista.universo.edu.br/index.php/1studospesquisa2/article/viewFile/69/69



Nenhum comentário:

Postar um comentário