words which conduct the search in the repository
and obtain the measurement tools most valued by
users. According to the reading of the ISO 25010
standard, a set of keywords used for searching the
Web site www.sourceforge.net has been adopted.
Tools have been identified associated with the
languages. NET (VB.NET and C # adding), Java and
C / C + +, since these are the most popular
development frameworks according to the TIOBE
Programming Community Index, updated in January
2011. To complete the previous selection, we
include additional groups of tools. First, we consider
also those freeware tools for .NET static code
analysis boosted by Microsoft (FxCop and
StyleCop). Even so, it is clear that they are not
currently used separately and that they are already
included in the .Net IDE.
Coupling and cyclomatic complexity have been
widely acknowledged as the most valuable metrics
to assess maintainability of object-oriented systems
(Li, S. 1993). Thus, we were also interested in
reviewing open-source projects that support the
extraction of such metrics. Although some of the
previous tools are able of returning the values for
such metrics, they are not focused on analyzing
coupling and cyclomatic complexity. In particular,
we looked at JavaNCSS y JDepend as the most
representative. However, we could have included
any other similar tools instead of these ones.
Finally, we include other free tools analyzed in
other studies (Lincke, Lundberg & Löwe
2008)(Plösch et al. 2009). Table 3 lists all tools
selected and it specifies the basic metrics that can be
obtained on this basis. In this way, with these open
source tools, companies (especially SMEs) can
measure aspects of maintainability according to ISO
25010.
4.2 Assessments by Experts
Between the second half of 2009 and during 2010,
we have conducted initial assessments in the
development process in more than 20 software
companies. The aim of these reviews has been
providing companies with a snapshot of the current
status of their processes, practices and tools used in
the development process. At the end of the
evaluations we have informed the companies about
the missing features and activities needed to improve
its development process.
Quality managers and software developers, as
part of the company evaluation, have been
interviewed to collect information about code static
analysis and testing tools used on its projects.
Results show that there is no extensive use of this
kind of tools. The data collection has taken into
account the tool list presented in Table 3.
According to the obtained results, there are two
main types of tools that companies implement.
First, those associated to the analysis of the
source code and the search for potential problems
(PMD, FxCop). However, the style analysis tools
closely related to the ones mentioned above are not
used widespread. This is due to the big amount of
default rules of this type of tools. That forces
companies to invest a great amount of time and
resources tailoring their own rule set. Likewise, did
not have a standard code convention manual, what
made the successful implementation of this practice
very complex (even in an automated way).
The second type of more used tools has been
those associated to unit tests. However, unit test
practice was not completely widely used. Only some
specific tests were executed, according to some
client needs. Although coverage was taken into
account, neither a deep analysis was applied nor any
decisions were taken.
5 QUALITATIVE ALIGNMENT
OF THE TOOLS
This section aims at putting forward clarifications
and contributions from some of the tools mentioned
in the previous section. To this end it is concluded
that some of the tools and metrics could measure
additional subcharacteristics already discussed.
5.1 Java NCSS
JavaNCSS supports tree different measures gathered
over JAVA source code, namely the Non-
Commenting Source Statements (NCSS), the Lines
Of Code (LOC) and the Cyclomatic Complexity
(CC). We can look at these measures as primary
support for all subcharacteristics. So this is an
indispensable tool for measurement of
maintainability. NCSS provides a good indicator on
how easy it would be to understand or follow the
source code under evaluation. As well, NCSS is
related with testability since the number of non-
commented statements can be used as a clue towards
understanding if the code is easy to test. On the other
hand, the relationship of analyzability with CC is out
of doubt. In fact, the number of cycles has been
traditionally accepted as a measure to assess the
complexity of any software component. Therefore,
ICSOFT 2011 - 6th International Conference on Software and Data Technologies
114