|
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.
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.
|
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.
|