Você está na página 1de 9

Mtricas para anlise de complexidade de programas orientados a objetos

Autor: Joo Marcelo Moraes Fernandes *

Professor Orientador: Dra. Las do Nascimento Salvador **

Resumo No contexto da Engenharia de Software, uma mtrica corresponde s definies, coletas, analises e agilidades sobre uma medio com o objetivo de melhorar a qualidade do software desenvolvido por uma organizao. O uso de mtricas tornou-se uma ferramenta fundamental para as fases de planejamento e acompanhamento de projetos, considerada das atividades mais importante no processo de desenvolvimento de um software. O presente artigo pretende investigar algumas Mtricas existentes no contexto da orientao a objeto, estudando suas principais caractersticas. Ser abordado tambm um projeto proposto para a criao de um avaliador de mtricas em softwares orientados a objetos usando a ferramenta JavaCC.

Introduo

Mtricas so padres de medidas usadas para avaliar atributos de alguma caracterstica especfica, tais como qualidade ou complexidade. No estudo da Engenharia de Software, Mtricas so processos de definies, coletas, anlises e agilidades sobre medio ou mensurao, pelos quais nmeros ou smbolos so associados a atributos, com o objetivo de descrev-los de acordo com um conjunto de regras claramente definidas [1]. A mensurao produz como resultado um conjunto de medidas, que um mapeamento entre um atributo emprico e uma escala matemtica [1]. De uma forma geral as medidas podem atender aos seguintes objetivos: Conhecimento: Coletam-se as informaes para se ter um conhecimento mais preciso de um item ou processo. Avaliao: Usam-se as informaes quantitativas para verificar se um produto ou atividade atende aos critrios de aceitao.

* Curso de Sistemas de Informao da Universidade Salvador UNIFACS ** Grupo de Pesquisa em Engenharia de Software e Aplicaes (GESA/NUPERC)

Controle: Usam-se os dados para acompanhar alguma atividade. Previso: Usam-se as informaes para se obter indicadores de tendncias ou estimativas.

As mtricas so ferramentas essenciais ao gerenciamento de projetos de softwares, isso ocorre porque existe uma crescente exigncia pela melhoria da qualidade do software, atravs do desenvolvimento dentro dos prazos, custos estimados e atendendo as expectativas do cliente [3]. Essas mtricas devem prover informaes que ajudem na tomada de decises de acordo com os objetivos e estratgias da organizao a que se prope fazer o software. Alguns desses objetivos podem ser: melhorar a qualidade do planejamento do projeto; reduzir os custos de trabalho no processo; melhorar a qualidade de desenvolvimento e do produto resultante; reduzir os custos de falha; aumentar a produtividade e aperfeioar continuamente os mtodos de gesto de projeto.

Nos ltimos anos esto sendo desenvolvidas vrias pesquisas na rea da Engenharia de Software com base na qualidade e principalmente usando-se o paradigma orientado a objeto. A evoluo desse paradigma originou um novo conjunto de mtricas especficas para processos de desenvolvimento de softwares, entre as quais nmero de mtodos por classes, profundidade de herana de classes, nmero de subclasses, acoplamento entre objetos, respostas de classes e nvel de coeso de mtodos [3].

Este artigo tem como objetivo central avaliar Mtricas no contexto da construo de um software usando o paradigma orientado a objeto. Essa discusso envolve os seguintes objetivos especficos relacionados abaixo: Revisar o conceito de Mtricas de software e sua caracterizao. Apresentar Mtricas de software orientado a objeto. Apresentar uma proposta para a implementao dessas Mtricas.

O documento organizado da seguinte forma: a prxima seo apresenta o conceito de Mtricas de Software e sua caracterizao; na terceira seo sero apresentadas Mtricas para Programas Orientados a Objetos, mostrando o conceito de objetos e os tipos de mtricas associadas a este paradigma; A seo seguinte abordar um projeto de um avaliador de mtricas em softwares orientados a objetos, exibindo

informaes sobre o JavaCC e informando os passos bsicos de implementao; por fim as consideraes finais.

2 Mtricas de Software

Mtricas so usadas para auxiliar o gerente do projeto na tomada de decises, com relao s trs etapas do ciclo de vida de um projeto: definio do custo e tempo necessrio; determinao do estado do projeto, do esforo para complet-lo e a qualidade do produto. Com esse auxilio o gerente do projeto pode identificar os problemas ocorridos em reas especficas, tornando mais fcil fazer ajustes no escopo, no cronograma e no plano de trabalho.

Portanto, para que as mtricas sejam implementadas, necessrio que se mostre realmente teis. Uma Mtrica ser til e de qualidade, se colaborar para a compreenso de um processo em estudo ou um dos seus produtos resultantes [6]. Alm disso, a mtrica deve ser vlida, confivel e prtica. Uma mtrica vlida se ela quantifica o que ns queremos medir. Ela confivel se aplicao correta do seu algoritmo produz o mesmo resultado dadas s mesmas condies. Alm disso, uma Mtrica prtica quando barata, fcil de computar e fcil de interpretar [4].

O estudo das Mtricas fica mais fcil quando separamos em duas categorias fundamentais: -Mtricas de processos que so aquelas que se relacionam com o gerenciamento do processo na construo do sistema, essas mtricas se preocupam apenas com a ultima avaliao e a avaliao anterior; e -Mtricas de produtos que so aquelas que se relacionam com a qualidade, pois tem como principal objetivo medir a qualidade dos sistemas, essas mtricas se preocupam apenas com a avaliao do produto em um momento particular.

Mtricas devem fazer parte de uma estratgia completa de melhoria no processo de desenvolvimento de software [4]. Alm disso, elas devem ser passiveis de serem automatizadas para que os dados relevantes possam ser mais rapidamente e facilmente

coletados e processados [4]. de extrema importncia que as Mtricas sejam independentes de plataformas e de linguagens, para que elas possam ser aplicadas o quanto antes no processo de desenvolvimento de software.

3 Mtricas para Programas Orientados a Objetos (OO)

Linguagens orientadas a objetos so linguagens baseadas na composio e interao entre diversas unidades chamadas objetos. Objetos so conjuntos complexos de dados e conjuntos de funes que podem ser aplicadas a cada um desses dados. Esses objetos so capazes de armazenar estado atravs de seus atributos e reagir a mensagens enviadas a eles, podendo se relacionar e enviar mensagens a outros objetos. Observa-se que h diferenas considerveis entre as linguagens convencionais e as orientadas a objetos, tais como mecanismos de classe, herana, polimorfismos e encapsulamento, que so implementados somente pelas linguagens orientadas a objetos.

Atualmente, verifica-se a necessidade de se classificar as mtricas de software mais adequadas ao paradigma orientado a objetos, pois o paradigma que mais evolui e o mais estudado[3].

No contexto de orientao a objeto, mtricas associadas s classes podem ser usadas para avaliao da reusabilidade. Algumas Mtricas so de uso abrangente, enquanto outras so dependentes do paradigma de programao ou da linguagem em questo [6]. O que se pode perceber que os resultados variam muito dependendo do processo utilizado para o desenvolvimento.

Existem vrias propostas para Mtricas OO que levam em considerao as caractersticas bsicas e interaes do sistema como: nmero de classes e mtodos, linhas de cdigo por mtodo, profundidade mxima da hierarquia de classes, entre outros. Tais mtricas baseiam-se na anlise detalhada do sistema.

A maioria das medidas examina atributos em termos dos conceitos de OO. Para tanto, necessrio coletar um nmero significativo de contagens, ou seja, necessrio

tomar valores de vrios projetos, dimension-los selecionando as classes, os mtodos e os atributos desejveis para medir o tamanho e a complexidade de um novo software.

Existem quatro categorias bsicas no desenvolvimento de Mtricas para softwares Orientados a Objetos, so elas: Tamanho do Sistema: avalia o tamanho e a complexidade do sistema. Tamanho de Classe ou Mtodo: avalia o tamanho e as caractersticas das Classes e do Mtodo. Acoplamento e Herana: avalia a interdependncia entre as classes, ou seja, relaes numerosas indicam complexidade no sistema. Classes ou Mtodos Internos: avalia a complexidade interna das classes e dos mtodos. Verifica a documentao do sistema.

As Mtricas apresentadas so apenas algumas entre tantas existentes. recomendvel que seja utilizado uma ou mais Mtricas para medir um projeto, dando mais segurana na analise e concluso do projeto. Outras mtricas importantes so a FPA (Analise por Ponto de Funo), que mede a complexidade do software pela quantificao de funcionalidade e COCOMO (Construtive Cost Model), que busca medir esforo, prazo e tamanho de equipe.

Uma importante observao que mtricas de tamanho no sistema no possuem valores padres que possam ser comparados para avaliar o sistema que est sendo construdo. O tamanho do sistema depende inteiramente da quantidade de funcionalidade que est inserida dentro do mesmo. Outras mtricas, no entanto, tm valores padres. Por exemplo, o tamanho de um mtodo razoavelmente consistente entre os diversos sistemas [4].

4 Avaliador de mtricas para Programas Orientados a Objetos

Est sendo proposto em um projeto de iniciao cientifica da Universidade Salvador UNIFACS (Grupo de Pesquisa em Engenharia de Software e Aplicaes

(GESA)), sobre a responsabilidade do Autor: Joo Marcelo Moraes Fernandes e da Professora Orientadora: Dra. Las do Nascimento Salvador, a implementao de um avaliador de Mtricas orientadas a objetos, esse avaliador vai analisar o cdigo fonte de um projeto e avaliar a sua qualidade e complexidade.

Inicialmente deve-se definir as mtricas que sero implementadas, onde muito importante escolher Mtricas de Processos para avaliar a complexidade do projeto, como por exemplo: quantidade de classes e mtodos internos. Essas Mtricas devem ser vlidas e confiveis, pois verificam o quo bem documentado est o cdigo do sistema. Devemos inserir tambm Mtricas de produto para avaliar a qualidade do projeto, por exemplo: tamanho de classe ou mtodo, ainda que classes e mtodos possam ser medidos e caracterizados de vrias formas.

Depois de escolher as Mtricas que devem ser implementadas e tendo o conhecimento profundo da gramtica da linguagem escolhida, neste caso uma linguagem orientada a objeto, pode com a ajuda de uma ferramenta especfica implementar as Mtricas propostas. A ferramenta escolhida para ajudar na implementao dessas Mtricas foi o javaCC.

4.1 Ferramenta JavaCC (Java Compiler Compiler)

JavaCC um gerador de parser,ou seja, uma ferramenta usada para ler uma gramtica e converter em um programa Java, e tambm um analisador lxico e sinttico que reconhece se um determinado texto pertence a gramtica especificada. Atravs de uma gramtica para o uso do JavaCC, ser gerado cdigo fonte de um parser para a linguagem escolhida.[6]

Para implementar Mtricas de cdigo fonte usando o JavaCC necessrio seguir uma seqncia de passos bsicos [6]. Passo 1 Definio/Adaptao da Gramtica da linguagem para o JavaCC (ex: Java, C++, C);

Passo 2 Criao do cdigo fonte auxiliar em Java para a anlise lxica e sinttica; Passo 3 Definio da Mtrica a ser implementada. Passo 4 Anlise do cdigo obtido no passo 2 (parser) para a implementao das mtricas desejadas; Passo 5 Instrumentao/adaptao do parser para a medio (este o passo que requer maior esforo); Passo 6 Teste dos resultados da Mtrica implementada, caso seja necessrio deve-se voltar ao passo 4 para rever as definies da mtrica pretendida;

Baseado no conhecimento da linguagem, no parser gerado e na definio das Mtricas torna-se possvel a sua implementao da linguagem desejada.

6 Consideraes Finais

Neste artigo foram passadas as caractersticas principais e desejveis que uma mtrica de software deve ter. Primeiramente foi conceituado e informado sobre a importncia das mtricas na fase de Gerenciamento do projeto e na construo de um sistema. Essas mtricas so de extrema importncia para se ter uma melhora na qualidade do planejamento do projeto, fazendo com que reduza bastante o seu custo. Depois foram mostradas as trs caractersticas fundamentais em uma mtrica: validade, confiabilidade e praticidade.

Foi abordada a utilizao das Mtricas no paradigma (OO), pois o paradigma que mais evolui e mais tem estudos junto aos outros. Foi apresentada tambm a proposta de um avaliador de Mtricas para analisar a complexidade e qualidade de um projeto. importante salientar que de extrema necessidade a validao das Mtricas recm implementadas, realizando testes, validando o cdigo adicionado no parser e comparando o resultado das Mtricas com outras ferramentas [6].

Por fim, medir importante primeiramente para controlarmos os projetos e assim, podermos gerenci-los. Podemos medir para avaliar a proximidade que estamos dos objetivos que definimos para o projeto quanto qualidade, esforo, custo e requisitos. Por essa razo, o uso de Mtricas tem se tornado uma grande vantagem estratgica.

7 Bibliografia

[1] BORGES, Eduardo Pereira. Um modelo de medio para processos de desenvolvimento de software. 2003. 154f. Dissertao de Mestrado Departamento de Cincias da Computao, Instituto de Cincias Exatas da Universidade Federal de Minas Gerais, Belo Horizonte. Disponvel em: <http://www.wppf.uaivip.com.br/pesquisa/DissertacaoEduardo.pdf >

[2] CAMPLO, Gabriela M. Carneiro. A utilizao de mtricas na gerncia de projetos de software: uma abordagem focada no CMM nvel 2. 2002.135f. Trabalho (PsGraduao em Cincia da Computao) Centro de Informtica, Universidade Federal de Pernambuco, Recife. Disponvel em <http://www.cin.ufpe.br/~hermano/download/dissertacoes/dissertacaoFinalRevisadaGa briela.pdf.>. [3] CARVALHO, Gonalo Lages de. Mtricas de Modelao de Software. 2004. Disponvel em <http://berlin.inescid.pt/cadeiras/pfsi/PFSI2003/SEMINARIO/pdfs/metricas-goncalocarvalho.pdf>.

[4] MENESES, Jav Barbosa de. Inspector um Processo de Avaliao de Progresso para Projetos de Software. 2001. 189f. Trabalho ( Ps- Graduao em Cincias da Computao) Centro de Informtica, Universidade Federal de Pernambuco, Recife. Disponvel em <http://www.cin.ufpe.br/~gmp/docs/papers/dissertacao-inspector-final.pdf>

[5] PRICE, Ana Maria de Alencar; TOSCANI, Simo Sirineo. Implementao de Linguagens de Programao: Compiladores. 9. ed. Rio Grande do Sul: Sangra Luzzato, s.d. [6] BOUDOUX1, Marcelo; CARNEIRO, Glauco2; MENDONA, Manoel2. Implementando Mtricas de Cdigo Fonte Usando JavaCC. S.d. Artigo(1Curso de Cincia da Computao da Universidade Salvador UNIFACS e 2Grupo de Pesquisa em Engenharia de Software e Aplicaes (GESA/NUPERC) da Universidade Salvador UNIFACS.)

[7] SANTANNA, Cludio Nogueira. Manutenibilidade e Reusabilidade de Software Orientado a Aspectos: Um Framework de Avaliao. 2004. Dissertao de Mestrado Programa de Ps Graduao em Informtica da PUC- Rio.

[8] MAIA, Jose Ricardo. Use mtricas adequadas: garanta a qualidade de projeto orientado a objeto. Disponvel em: < http://www.euax.com.br>

Você também pode gostar