Archimetrix - Iterative Architecture Recovery and Reengineering
Archimetrix is a tool-supported reengineering process that combines different reverse engineering approaches to enable an iterative recovery and reengineering of component-based software architectures. It is developed by the Software Engineering Group at the University of Paderborn.

Archimetrix combines clustering and pattern detection techniques to recover the architecture of a software system from source code. While the clustering extracts a software architecture based on source code metrics, the pattern detection is used to detect design deficiencies in the architecture. Archimetrix supports the reengineer by identifying components that are especially relevant for the detection of design deficiencies. It also ranks the detected deficiencies so the reengineer can focus on the important problems. Once the deficiencies are removed, the clustering can be used again to get a clearer view of the now improved software architecture.
Archimetrix currently offers the following features:
- Analysis of Java, C++, and Delphi code
- Recovery of a component-based architecture from the code
- Identification of components that are likely to contain deficiencies
- Detection of design deficiencies
- Ranking of deficiencies by their negative impact on the recovered architecture
- Recommendation and automated execution of reengineering strategies to remove bad smells
- Preview of the influence of selected reengineering strategies on the architecture.
Publications related to Archimetrix
M. Platenius, M. von Detten, S. Becker:
Archimetrix: Improved Software Architecture Recovery in the Presence of Design Deficiencies. In
Proceedings of the 16th European Conference on Software Maintenance and Reengineering. 2012
[
Show Abstract]

Maintaining software systems requires up-to-date models of these systems to systematically plan, analyse and execute
the necessary reengineering steps. Often, no or only outdated models of such systems exist. Thus, a reverse engineering step is
needed that recovers the system’s components, subsystems and connectors. However, reverse engineering methods are severely impacted by design deficiencies in the system’s code base, e.g., they lead to wrong component structures. Several approaches exist today for the reverse engineering of component-based systems,
however, none of them explicitly integrates a systematic design deficiency removal into the process to improve the quality of the reverse engineered architecture. Therefore, in our Archimetrix approach, we propose to regard the most relevant deficiencies with respect to the reverse engineered architecture and support reengineers by presenting the architectural consequences of removing a given deficiency. We validate our approach on the Common Component Modeling Example and show that we are able to identify relevant deficiencies and that their removal leads to an improved reengineered architecture.
[
Show BibTeX]

@inproceedings{PvDB12,
author = {M. Platenius AND M. von Detten AND S. Becker},
title = {Archimetrix: Improved Software Architecture Recovery in the Presence of Design Deficiencies},
booktitle = {Proceedings of the 16th European Conference on Software Maintenance and Reengineering},
year = {2012}
}
O. Travkin, M. von Detten, S. Becker:
Towards the Combination of Clustering-based and Pattern-based Reverse Engineering Approaches. In
Proceedings of the 3rd Workshop of the GI Working Group L2S2 - Design for Future 2011 (Karlsruhe, Germany). February 2011
[
Show Abstract]

Reverse Engineering, i.e. the analysis of software for the purpose of recovering its design documentation, e.g. in form of the conceptual architecture, is an important area of software engineering. Today, two prevalent reverse engineering approaches have emerged:(1) the clustering-based approach which tries to analyze a given software system by grouping its elements based on metric values to provide the reverse engineer with an overview of the system and (2) the pattern-based approach which tries to detect predefined structural patterns in the software which can give insight about the original developers’ intentions. These approaches operate on different levels of abstraction and have specific strengths and weaknesses.In this paper, we sketch an approach towards combining these techniques which can remove some of the specific shortcomings.
[
PDF] [
Show BibTeX]

@inproceedings{TDB11,
author = {O. Travkin AND M. von Detten AND S. Becker},
title = {Towards the Combination of Clustering-based and Pattern-based Reverse Engineering Approaches},
booktitle = {Proceedings of the 3rd Workshop of the GI Working Group L2S2 - Design for Future 2011},
year = {2011}
}
M. von Detten, S. Becker:
Combining Clustering and Pattern Detection for the Reengineering of Component-based Software Systems. In
Proceedings of the 7th International Conference on the Quality of Software Architectures, QoSA 2011 (Boulder, Colorado, USA). ACM Press, 2011
[
Show Abstract]

During the software lifecycle, software systems have to be continuously maintained to counteract architectural deterioration and retain their software quality. In order to maintain a software it has to be understood first which can be supported by (semi-)automatic reverse engineering approaches. Reverse engineering is the analysis of software for the purpose of recovering its design documentation, e.g., in form of the conceptual architecture. Today, the most prevalent reverse engineering approaches are (1) the clustering-based approach which groups the elements of a given software system based on metric values in order to provide an overview of the system and (2) the pattern-based approach which tries to detect pre-defined patterns in the software which can give insight about the original developers' intentions.
In this paper, we present an approach towards combining these techniques: we show how the detection and removal of certain bad smells in a software system can improve the results of a clustering-based analysis.
We propose to integrate this combination of reverse engineering approaches into a reengineering process for component-based software systems.
[
PDF] [
Show BibTeX]

@inproceedings{vDB11,
author = {M. von Detten AND S. Becker},
title = {Combining Clustering and Pattern Detection for the Reengineering of Component-based Software Systems},
booktitle = {Proceedings of the 7th International Conference on the Quality of Software Architectures},
year = {2011}
}
M. Platenius:
Reengineering of Design Deficiencies in Component-Based Software Architectures. Master's thesis, University of Paderborn, October 2011
[
PDF] [
Show BibTeX]

@mastersthesis{Pla11,
author = {M. Platenius},
title = {Reengineering of Design Deficiencies in Component-Based Software Architectures},
school = {University of Paderborn},
year = {2011}
}
O. Travkin:
Kombination von Clustering- und musterbasierten Reverse-Engineering-Verfahren. Master's thesis, University of Paderborn, 2011 . In German.
[
PDF] [
Show BibTeX]

@mastersthesis{Tra11,
author = {O. Travkin},
title = {Kombination von Clustering- und musterbasierten Reverse-Engineering-Verfahren},
school = {University of Paderborn},
year = {2011}
}