Olá
Sobre o JDepend, ferramenta free para examinar seu código e verificar impacto de eventuais mudanças: Managing Your Dependencies with JDepend
[list]
. . .
JDepend is an open source software program available for download at http://www.clarkware.com. The download includes the source code, JUnit test cases, documentation, pre-build .jar files, an ANT build script, and a sample application for testing purposes. The online documentation covers all of the features available for setting up, configuring, and running JDepend
. . .
Once you understand the JDepend metrics, you may want to automate their collection within your normal build and release cycle. Fortunately, there are optional Ant tasks for doing just that. If you are using Ant 1.5, you can use an XSL stylesheet to transform your JDepend XML output into an HTML report. These reports can be used as a regular part of your quality or metrics program. Turbine and Maven are two projects utilizing this feature.
[/list]
Lá estão algumas métricas que se podem obter com o JDepend:
[list]
CC Concrete Classes
The number of concrete classes in this package.
AC Abstract Classes
The number of abstract classes or interfaces in this package.
Ca Afferent Couplings
The number of packages that depend on classes in this package. Answers the question “How will changes to me impact the rest of the project?”
Ce Efferent Couplings
The number of other packages that classes in this package depend upon. Answers the question “How sensitive am I to changes in other packages in the project?”
A Abstractness
Ratio (0.0-1.0) of Abstract Classes (and interfaces) in this package. AC/(CC+AC)
I Instability
Ratio (0.0-1.0) of Efferent Coupling to Total Coupling (Ce/(Ce+Ca)).
D Distance from Main Sequence
The perpendicular distance of a package from the idealized line A+I=1. Answers the question “How balanced am I in terms of Abstractness and Instability?” The range of this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence (balanced) and D=1 indicating a package that is as far from the main sequence as possible (unbalanced).
[/list]
[]s
Luca