A Plataforma Connecta

Belo Horizonte, Brasil - 2015

 

A plataforma Connecta é um recurso para análise da qualidade de softwares desenvolvidos em linguagem Java. Ela foi proposta por Kecia Ferreira, em sua dissertação de mestrado [1], e tem sido evoluída pela mesma pesquisadora, em sua tese de doutorado [2] e atualmente, junto com um grupo de estudantes de graduação. O objetivo desses trabalhos é alcançar uma plataforma para medição e análise de dados de evolução de software.

A ferramenta tem sido aplicada na realização de estudos experimentais de medição de software, propagação de modificações em software e evolução de software [3-6,8-10].

O manual de uso da ferramenta está disponível aqui.

Um vídeo da ferramenta pode ser visto aqui.

Faça o download da ferramenta aqui.

 

Connecta permite a coleta e análise de métricas gerais do sistema, métricas de cada uma de suas classes, além de sua visualização no formato do modelo Little House (Ferreira, 2011), bem como a comparação entre passos de sua evolução.

São métricas do sistema:

Total de classes: é o número de classes totais do sistema. Esse tipo de avaliação permite verificar a evolução do sistema em relação à quantidade de classes existentes.

Total de conexões: é o número de conexões totais do sistema. Esse tipo de avaliação permite verificar a evolução do sistema em relação à quantidade de conexões existentes.

COF (Fator Acoplamento): para a avaliação de acoplamento o conceito de relação cliente-servidor entre classes constituintes de um software. Segundo esse conceito, uma classe A é cliente de uma classe servidora B quando A referencia pelo menos um membro de B, seja este membro uma variável de instância ou um método. Uma relação entre duas classes corresponde à existência de uma conexão entre elas. Em um software com n classes, o maior número possível de conexões é n2 – n. A métrica COF é dada pela razão entre o número total de conexões existentes entre as classes do software e maior número possível de conexões para software.

Estabilidade: avalia a estabilidade do sistema e de classes particulares, considerando, além da quantidade de conexões, o grau de acoplamento entre os módulos, bem como o grau de coesão interna dos módulos. A ideia do cálculo desta métrica é obter para cada par de módulos a probabilidade de um ser alterado em decorrência da alteração do outro. O cálculo desta probabilidade considera o grau de coesão dos módulos envolvidos, o grau de acoplamento direto e indireto entre eles.

K3B – Modelo de predição de amplitude de propagação de modificações contratuais em software orientado por objetos: O modelo estima o número de passos de modificações em um software constituído por n módulos no qual inicialmente i desses módulos sofrerão modificações.

DIT (Depth of Inheritance Tree): a profundidade das árvores de herança presentes na estrutura de um software impacta na sua conectividade, pois quanto mais profunda uma árvore de herança, maior o número de conexões envolvidas na hierarquia. Assim, diante de um alto grau de conectividade do software, a profundidade das árvores de herança é um aspecto importante a ser analisado. DIT indica a posição de uma classe na árvore de herança da qual ela faz parte. Com DIT, é possível identificar as hierarquias de maior profundidade e, a partir daí, verificar a necessidade de reestruturação das mesmas.

Quantidade de atributos públicos (#AP): é o número de atributos públicos definidos na classe. Esta métrica pode ser utilizada para avaliar a evolução do tamanho da classe em termos de atributos públicos.

Quantidade de métodos públicos (#MP): é o número de métodos públicos definidos na classe. Este tipo de avaliação permite verificar a evolução da classe em relação à quantidade de serviços providos por ela.

LCOM (Lack of Cohesion in Methods): a coesão interna de uma classe impacta na conectividade porque classes pouco coesas tendem a realizer mais serviços. Assim, para a redução da conectividade, é importante identificar as classes com baixo grau de coesão no sistema, para que se possa analisar a necessidade de reestruturação das mesmas. LCOM é uma métrica útil neste aspecto, pois indica a ausência de coesão entre os métodos de uma classe.

Impacto de Alteração: expectativa de número de classes alteradas em decorrência de uma alteração na classe.

COR - Coesão de responsabilidade: esta métrica é dada por 1/r, onde r é o número de conjuntos disjuntos de métodos em uma classe. Cada um desses conjuntos consiste de métodos similares. Dois métodos são considerados similares se usam um atributo ou um método da classe em comum. Por exemplo, se há dois conjuntos na classe, COR resulta em 0.5. Isso é um indicador de que a classe possui duas responsabilidades. Quando há apenas um conjunto na classe, COR resulta em 1, o que é um indicador de alta coesão.

 

 

A ferramenta identifica o componente de Little House ao qual cada classe do software analisado pertence:

·         LSCC: é o maior componente fortemente conectado no software. Nesse componente, a partir de uma classe é possível alcançar qualquer outra classe dentro de LSCC. Com isso, toda classe dentro desse componente é direta ou indiretamente dependente das demais classes de LSCC.

·         In: classes pertencentes a esse componente podem usar qualquer outra classe do software, mas não são usadas por classes que não pertenças a In.

·         Out: classes pertencentes a esse componente podem ser usadas por qualquer outra classe do software, mas usam somente classes pertencentes a Out.

·         Tendril: classes desse componente usam classes do próprio componente ou de Out. Além disso, uma classe de Tendril pode ser usada somente por classes do próprio componente ou que pertençam a Tubes ou a In.

·         Tubes: classes desse componente usam classes do próprio componente, de Out ou de Tendril. Além disso, uma classe de Tubes pode ser usada somente por classes do próprio componente ou que pertençam a In.

·        Disconnected: classe nesse componente não possui conexão com outra classe fora dele.

 

Alunos que atuaram no Projeto Connecta durante Iniciação Científica

Talita Orfanó - 2015

Rafael Prates - 2014

Andréa Sá - 2013

Gabriel Calegari (Visoft [7], ferramenta integrada a Connecta em 2013) - 2012

Roberta Coeli - 2012

 

 

Referências

[1]  K. A. M. Ferreira, Avaliação de conectividade em software orientado por objetos. Brazil: Master Thesis.Computer Science Department, Federal University of Minas Gerais, 2006.

[2]  K. A. M. Ferreira, Um modelo de predição da amplitude de propagação de modificações contratuais em software orientado por objetos. Brazil: Doctoral Dissertation.Computer Science Department, Federal University of Minas Gerais, 2011.

[3]  K. A. M. Ferreira, M. A. Bigonha, R. S. Bigonha, and B. M. Gomes, “Software evolution characterization - a complex network approach,” in X Brazilian Simposium on Software Quality - SBQS’2011, Curitiba, Paraná, Brazil, 2011, pp. 41–55.

[4]  K. A. M. Ferreira, R. C. N. Moreira, and M. A. S. Bigonha, “Identificação de padrões de características estruturais em software orientado a objetos,” in Brazilian Symposium on Software Quality, 2012, pp. 1–15.

[5]  K. A. M. Ferreira, R. C. N. Moreira, M. A. S. Bigonha, and R. S. Bigonha, “The evolving structures of software systems,” in Workshop on Emerging Trends in Software Metrics, 2012, pp. 161–170.

[6]  K. A. M. Ferreira, R. C. N. Moreira, M. A. S. Bigonha, and R. S. Bigonha, “A generic macroscopic topology of software networks - a quantitative evaluation,” in Brazilian Symposium on Software Engineering, 2012, pp. 161–170.

[7] G. L. Calegari and K. A. M. Ferreira, “Visualização de software baseada no modelo Little House,” in Brazilian Symposium on Software Quality, 2014, pp. 1–15.

[8]  G. L. Calegari. Uso de métricas de Redes Complexas na avaliação de qualidade de software orientado a objetos. Undergraduate Final Project. Federal Center for Technological Education of Minas Gerais, 2015.

[9]  R. P. F. Trindade. A dança das classes: Análise do comportamento das classes na evolução de software. Undergraduate Final Project. Federal Center for Technological Education of Minas Gerais, 2015.

[10] M. M. Ferreira, K. A. M. Ferreira, and H. T. Marques-Neto, “Mapping the potential change impact in object-oriented software,” in 30th The 30th ACM/SIGAPP Symposium On Applied Computing (ACM-SAC’2015), 2015, pp. 1654–1656.

 

Contact

kecia@decom.cefetmg.br