IDEA Logo

Design Recovery and Metric-Based Analyses for Java Software Systems


Overview
Design Recovery
Metric-Based Analyses
Screenshots
Download
References
Overview
 IDEA is a tool  for redocumentation and analysis of software systems written in the Java programming language. It is based on the Unified Modeling Language (UML), a graphical language for modeling and representation of object-oriented software systems. The core functionalities of IDEA are static design recovery and abstraction using UML class diagrams, and metric-based analysis, using a standard metric suite and two extended forms of class diagrams.

Static Design Recovery
IDEA uses a parser that is based on ANTLR to capture the information from Java source codes. Not only the static structure, but the entire information, including static method traces, are captured and stored in a repository that bases on our Java metamodel. The information from static traces is used e.g. for advanced analyses such as resolution of container classes, but also for calculation of metrics. As a "side effect", it is possible to generate UML activity diagrams that represent the static control flow of methods.

IDEA design recovery scheme


For the actual design recovery, the Java models are translated in a standardized process to UML models (i.e. instances of the UML metamodel). Then, the user is able to perform different abstraction steps on the model to recover the original abstract design from the implementation level model. Currently supported are for example recognition of inverse (bidirectional) associations, static recognition of multiplicities, association classes and qualifiers, aggregation and general resolution of Java container classes.

Metric-Based Analyses
To get a deeper understanding of the examined software architecture, we combine object-oriented product metrics with two extended forms of class diagrams: Metric dependency diagrams show metrics as (optionally weighted) dependency arrows in a class diagram. Instead of  working with plain metric values, we split the metrics up to visualize the individual relationships between separate classes. As some of the model elements measured by the metrics are not expressible by UML class diagrams (e.g. inter class dependencies caused by local variables or parameters), we employ a second extended form of class diagrams, called class context diagrams, to fill this gap.

Screenshots
Currently, two frontends are developed for IDEA. The first uses the CASE tool Together for graphical rendering of diagrams and layout, while the second is an experimental prototype, using free graph layout libraries.

Together output of IDEA
The IDEA prototype GUI

Download

As the tool is currently undergoing a major revision, no download is available at the moment.



References
  • Ralf Kollmann and Martin Gogolla. Metric-Based Selective Representation of UML Diagrams. In Tibor Gyimóthy and Fernando Brito e Abreu, editors, 6th European Conference on Software Maintenance and Reengineering . IEEE, Los Alamitos, 2002. Best Paper Award.
  • Ralf Kollmann and Petri Selonen and Eleni Stroulia and Tarja Systä and Albert Zündorf. A Study on the Current State of the Art in Tool-Supported UML-Based Static Reverse Engineering. In Elizabeth Burd and Arie van Deursen, editors, 9th Working Conference on Reverse Engineering . IEEE, Los Alamitos, 2002.
  • Ralf Kollmann and Martin Gogolla. Application of UML Associations and Their Adornments in Design Recovery. In Peter Aiken and Elizabeth Burd, editors, Proc. 8th Working Conference on Reverse Engineering (WCRE) . IEEE, Los Alamitos, 2001.
  • Ralf Kollmann and Martin Gogolla. Selektive Darstellung von Programmstrukturen mit UML. In Proc. 3rd Workshop on Software-Reengineering (WSR), Bad Honnef, Germany, 2001.
  • Ralf Kollmann and Martin Gogolla. Capturing Dynamic Program Behaviour with UML Collaboration Diagrams. In Pedro Sousa and Jürgen Ebert, editors, Proc. 5th European Conference on Software Maintenance and Reengineering. IEEE, Los Alamitos, 2001.
  • Martin Gogolla and Ralf Kollmann. Re-Documentation of Java with UML Class Diagrams. In Eliot Chikofsky, editor, Proc. 7th Reengineering Forum, Reengineering Week 2000 Zürich, pages REF 41-REF 48. Reengineering Forum, Burlington, Massachusetts, 2000.


Contact the author:

Dipl.-Inf. Ralf Kollmann -- kollmann@tzi.de