The Connecta
Platform
Belo Horizonte, Brasil - 2015
Connecta is a tool that allows
gathering object-oriented software metrics; predicting change impact
propagation, exploring the software networks, and comparing the structure of two
versions of a software system. The tool performs such analyses on Java software
systems.
Connecta was proposed by Kecia Ferreira, in her Master Thesis [1], and has been
evolved by the same researcher, in her PhD Dissertation [2]. Connecta is, now, an ongoing project whose aim is to
provide a platform for measuring and analyzing data of software systems.
The tool has been used to allow
research on software measurement, change propagation impact, and software
evolution [3-6,8-10].
A description of the main features
of Connecta is here.
A vídeo
of Connecta is available here.
The metrics in the system level
gathered by Connecta are the following:
Total classes: the total
number of system classes. This type of evaluation allows you to check the
evolution of the system in relation to the amount of existing classes.
Total connections: the number
of total system connections. This type of evaluation allows you to check the
evolution of the system in relation to the amount of existing connections.
COF (coupling factor): for the evaluation of coupling the concept of client-server between constituent classes of
software. According to this concept, a class A is
client of a server class B when A references
at least one member of B, which is an instance member variable or
method. A relationship between
two classes corresponds to the
existence of a connection between them. In a software system with n classes, the maximum possible number of connections is
n² -n. The
COF metric is given
by the ratio between the total
number of connections between the
software classes and the maximum number of connections for software.
Stability: evaluates the
stability of the system and of particular classes,
considering the number of
connections, the degree of coupling between the modules as well as the degree of internal cohesion of the modules. The idea
of the calculation of this metric
is to get for each pair of modules the probability of one be changed due to
the change of the other. The
calculation of probability considers the degree
of cohesion of the modules involved
and the degree of direct and
indirect coupling between them.
K3B -
Model prediction range
of spread of contractual changes in object-oriented
software: The model estimates the number of modification steps in a software
system constituted by n modules in which, initially,
‘x’ of these modules will suffer
modifications.
Metrics of classes are
the following:
Component in the Little House are In, Out, Disconnected,
Tubes, Tendrils and
LSCC (largest strongly
connected component), where:
·
LSCC: is the largest component strongly
connected to the software. In this component, from a class is possible to achieve any other class within LSCC.
Thus, all classes within this component are directly or indirectly dependent on other classes of LSCC.
·
In: classes
belonging to this component may use any other software
class, but they are not used by the classes that do not belonging in.
·
Out: classes belonging to this component can be used for any other software class, but
use only classes belonging to 'out'.
·
Tendril: classes of this component use its own classes or out classes. In addition, a tendril class
can be used only by classes of itself or
belonging to tubes class or In class.
·
Tubes: classes of this component use its own classes, out or tendril
classes. In addition, a class of tubes can be used only by classes of itself or
classes belonging to ‘In’.
·
Disconnected: corresponds to the
class that has no connection to
another class in the software system.
DIT (Depth of Inheritance
Tree):
the depth of inheritance trees present in the structure of a software impacts on
its connectivity, because the deeper
an inheritance tree, the greater the number
of connections involved in the
hierarchy. Thus, faced with a
high degree of software connectivity,
the depth of the inheritance tree is an important aspect
to be analyzed. DIT indicates the
position of a class in the inheritance
tree of which it is part. With
DIT, It is possible to identify the deeper hierarchies and
thus verify the
need to restructure them.
Number of public attributes (#AP): is the
number of public attributes defined in the class. This metric can be used to
evaluate the evolution of the size class in terms of public attributes.
Number of public methods (#MP): the number
of public methods defined in the class. This type of evaluation allows you to
check the progress of the class relative to the amount of services provided by
it.
LCOM (Lack of Cohesion
in Methods): the internal cohesion of a class impacts on connectivity because
classes with a low cohesion tend to perform more services. Thus, to
reduce connectivity is important
to identify the classes with
low degree of cohesion in the system to be able to analyze the need to restructure them. LCOM is a useful metric
in this regard, as it indicates a lack of cohesion between
the methods of a class.
Impact of Change:[1] expected of number of classes
changed due to an
alteration in the class.
COR - Responsibility Cohesion: [2] this metric is given by 1 / r, where r is the
number of disjoint sets of
methods in a class. Each of these sets consists
of similar methods. Two methods are considered similar to use an attribute or a class method in common. For example, if there are two sets in the class, COR results in 0.5. This is
an indication that the class has two responsibilities. When there is only one set in the class, COR results in 1, which is an indicator of high cohesion.
Undergraduate students that served in the Connecta Project
Talita Orfanó - 2015
Rafael Prates - 2014
Andréa Sá - 2013
Gabriel Calegari (Visoft [7], a tool integrated to Connecta
in 2013) - 2012
Roberta Coeli - 2012
References
[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