Dependometer

"Verify the to-be architecture against the reality of the code"

Overview: What is the Dependometer?

Dependometer performs a static analysis of physical dependencies within a software system. Dependometer validates dependencies against the logical architecture structuring the system into classes, packages, subsystems, vertical slices and layers and detects cycles between these structural elements. Furthermore, it calculates a number of quality metrics on the different abstraction layers and reports any violations against the configured thresholds.

Currently, Dependometer is available for projects written in Java, C++ or C#.

Motivation for Architecture Validation

„It is the dependency architecture that is degrading, and with it the ability of the software to be maintained" Robert C. Martin 2000

„Cyclic physical dependencies in large, low-level subsystems have the greatest capacity to increase the overall cost of maintaining a system" John Lacos 1996

Design is a quality criteria

„For software to be tested effectively, it must be designed from the start with that goal in mind - Testability, like quality itself, cannot be an afterthought: it must be considered from the start - before the first line of code is ever written" John Lacos 1996.

The main features are:
  • Use a logical architecture description in terms of layers and subsystems and their physical mapping (n Packages implement a Subsystem) and check logical architecture violations.
  • Analyze the dependency architecture between layers, subsystems, resulting vertical-slices, packages, compilation-units (java files) and types (classes and interfaces)
  • Analyze cycles between elements
  • Calculate a bunch of metrics for all elements - this includes metrics from John Lakos, Robert C. Martin and Craig Larman.
  • Define thresholds and receive feedback upon their violation
  • Simulate via simple refactoring definitions and cutting unwanted dependencies changes to the physical structure possibly enhancing refactoring.
  • Create a complete HTML presentation. This provides browsing capabilities from layer (logical element) to compilation-unit (physical element) for a discussion which physical elements cause the logical architecture to break.
Advantages
  • Fast analysis of prohibited dependencies and cycles
  • Refactorings simulation
Disadvantages
  • Definition of logical architecture is time consuming and must be maintained during project lifetime (dependometer.properties.xml)
Limitations
  • Dependencies are visualized on class level only. Concrete code lines must be analyzed manually. (Future improvement addressed by the planned Eclipse plugin!)
Projects

Dependometer Java | C# | C++ | Maven-Plugin

Quick Access
Last changed Apr 17, 2011 18:59 by Oliver Rohr

Thanks to Bernhard we have included a new kind of tangle view in Dependometer. A tangle is a largest set of entities in which each entitiy is (directly or indirectly) depending on each other, thus it is - in the simplest case - a single cycle, but can also include many, many cycles.

Following versions have increased due to this new feature in dependometer-core:

Posted at Feb 28, 2011 by Oliver Rohr | 0 comments
Last changed Jul 05, 2010 22:20 by Oliver Rohr

Due to some improvements and bug fixes we added some time ago to the dependometer-core module, several new Dependometer versions are finally available now!

  • Dependometer Java: 1.2.4
  • Dependometer C++: 1.2.4
  • Dependometer C#: 0.9.1
  • Dependometer-Maven-Plugin: 0.9

The following features have been added (new for the standalone versions):

  • result-template is now automatically generated in the result directory, i.e. the template needs no longer to be copied manually
  • a simple XMLWriter output listener writes metrics and cycles to an XML file if configured

In addition several bug fixes are delivered:

  • external comp. units were aggregated under a so called 'no_compilation_unit' which had introduced some side effects
  • standalone versions: the details were opened in a tab in the background
  • standalone versions: CCD metric calculation fixed
  • a bugfix with the java source file parser if characters were escaped in a certain way
Posted at Jul 05, 2010 by Oliver Rohr | 0 comments
Last changed Jan 28, 2010 10:55 by Oliver Rohr

Integrate Dependometer in your Maven project. Simply follow the instructions in the documentation to run Dependometer during Maven site generation:
Dependometer Maven Plugin.

Dependometer results will be available as project report on your Maven site.

Posted at Jan 28, 2010 by Oliver Rohr | 0 comments
Last changed Jan 06, 2010 21:52 by Carsten Kaiser

As another module within the Dependometer toolset, a first version of Dependometer for C# is now available for download.
This release is regarded an alpha version since not all C# language features are supported yet.

Supported C# language features are:
*Abstract Classes
*Abstract Methods
*Alias directives
*Attributes (Metadata)
*Assertions
*Classes
*Coupling
*Delegates
*Enums
*Exceptions
*Generics
*Inheritance
*Interfaces
*Layers
*Namespaces
*Packages
*Static
*Structs

Following C# language features are currently ignored/skipped:
*PointerType
*PrimitiveType

For further details see Dependometer for C#.

Please help us to improve it! Just check it out on source.valtech.com or even better join our community by reporting defects, contributing patches or discussing new ideas and feature requests.

The Dependometer development team

Posted at Jan 06, 2010 by Carsten Kaiser | 0 comments
Last changed Aug 24, 2009 12:17 by Ingomar Otter

Folks,
I would like to suggest to dump the Messplatz and integrate Dependometer into Sonar instead. Thus we can make use of Sonar's comprehensive infrastructure and avoid reinventing the wheel.
What do you think?

Posted at Aug 24, 2009 by Ingomar Otter | 7 comments

Labels

project project Delete
dependometer dependometer Delete
java java Delete
architecture architecture Delete
cpp cpp Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.