NCSS-Statistic
The following figure shows the Non-Commentary Source Statements
(NCSS) for the JOELib project.
Calculated with JavaNCSS
JOElib contains also directly modified source code from other
developers: for example the modified CML code of Egon Willighagen (joelib.io.types.cml),
the modified 2D rendering of Dr. Christoph Steinbeck (joelib.gui.render)
and other packages like Acme or com.obrador which are part of
the source tree. All details are given below and can be found in the header
of the source code files and in the utilities
section of the tutorial. All binary libraries used are not listed at all,
although their functionality is used.
So yes, the idea of open source is to use other source code,
too. This will avoid to invent the wheel twice, but will this also improve
the software design ? I say: "Only if there is time to redesign it!"
See details given below:
Software engineering - Redesign using Eclipse, PMD and CAP
The definition of the software engineering problem
is given in the german script "Softwaretechnik"
by Prof.
Klaeren.
English readers should refer an english book and can get a feeling
for this problem by requesting the Encyclopedia
Britannica for the terms: system engineering and engineering:
"Engineering is based principally on physics, chemistry,
and mathematics and their extensions into ... thermodynamics, ... and systems
analysis. A great body of special knowledge is associated with engineering;
preparation for professional practice involves extensive training in the application
of that knowledge. ..."
"Systems engineering is ... a technique for applying
knowledge from other branches of engineering and disciplines of science in
effective combination ..."
So sooner or later the functionality will grow and grow, also
the complexity and the dependencies. So beside the functionality the quality
of the software can be measured using different metrics available in the PMD
project. This extensive statistic was introduced after the 04-06-21
release, so you can see that we are now trying to reduce the PMD warnings
:-)
Furthermore the source code was analyzed using the Code
Analysis Plugin (CAP) to measure the stability metric (lower distance
values to the instability/abstractness line are better). We used Eclipse
for the refactoring and we are definitely sure that we would never had started
without it. The interface extraction, getter/setter generation and the dependecny
resolving is absolutely fantastic and highly important.
| |
|
|
Cross-links to larger images are available for JOELib
and JOELib2
|
| |
JOELib release 2004-08-27
|
JOELib2 release 2005-01-18
|
Package
|
| Entry |
Distance
|
Distance
|
|
| 1 |
71
|
25
|
joelib.molecule / joelib2.molecule
|
| 2 |
6
|
7
|
joelib.desc / joelib2.feature |
| 3 |
46
|
8
|
joelib.data / joelib2.data |
| 4 |
53
|
27
|
joelib.util / joelib2.util |
| 5 |
22
|
13
|
joelib.molecule.types / joelib2.molecule.types |
| 6 |
48
|
63
|
joelib.desc.result / joelib2.feature.result |
| 7 |
28
|
5
|
joelib.io / joelib2.io |
| 8 |
79
|
36
|
joelib.util. iterator / joelib2.util.iterator |
| 9 |
83
|
35
|
wsi.ra.tool |
| 10 |
18
|
62
|
joelib.desc.types / joelib2.feature.types.atomlabel |
| 11 |
95
|
35
|
joelib.util.types / joelib2.util.types |
| ... |
...
|
...
|
... |