SoMoX
SoMoX - SOftware MOdel eXtractor. Reverse engineers software component models from source code. The component extraction supports basic components, composite structures, interfaces, ports, as well as connectors. The extracted models are suitable to improve understanding of existing software and enable further quality analyses. Analyses for software performance, reliability, and maintenance are already available as part of a complementary tool chain [1][2]. SoMoX extraction is based on the evaluation of multiple source code metrics. The Extraction can be guided by metric settings which allow the adaptation of SoMoX to the specific component definitions and needs of individual projects. Currently, SoMoX supports source code of the languages C/C++, Delphi, and Java. However, its general source code model can be easily extended to further programming languages. SoMoX has been developed within the context of the EU project Q-ImPrESS.
SoMoX is the successor of ArchiRec.
SoMoX Versions
The current code repositories related to SoMoX are listed at SoMoX/Development
The latest SoMoX version uses an JDT-based version of JaMoPP as its backend (see SoMoX/Development).
Previously, SoMoX was available with three additional backends:
SoMoX Installation
SoMoX is available as an Eclipse update site.
SoMoX-Modisco
- install an Eclipse Juno 4.2: http://www.eclipse.org/downloads/packages/eclipse-classic-421/junosr1 or a later Eclipse version.
- install SoMoX from the Update Site: http://sdqweb.ipd.kit.edu/eclipse/somox/nightly/
SoMoX-JaMoPP
- install an Eclipse modeling framework.
- install EMFText 1.4.1 from Marketplace (Help > Eclipse Marketplace) or from EmfText (Help > Install New Software)
- install JaMoPP from JaMoPP updateseite (Help > Install New Software)
- install SoMoX-JaMoPP from SoMoX-JaMoPP updateseite (Help > Install New Software)
Q-ImPrESS
If you are looking for the (older) SoMoX release that resulted from the Q-ImPrESS project and is integrated in the Q-ImPrESS toolchain, follow the Q-ImPrESS tooling installation instruction. The Q-ImPrESS version is based on SISSy, produces an SAMM instead of a PCM component model and includes complementing features such as:
- Maintainability and Cost Estimation Tooling
- Architecture Alternatives Design Evaluation
- All-In-One Eclipse Update Site
This version of SoMoX was based on Eclipse 3.5 and integrated with the Q-ImPrESS toolchain.
Using SoMoX
1. Create the Java and Inventory Model.
2. Then set DEEP_ANALYIS and SERIALZE_TARGET true. If you expect to extract a large model, you should also uncheck 'Open model in editor after discovery'.
2.1 Add the libs
2.2 In the Blacklist Tab: Select all except the code you want to analyse
3. Create a new SoMoX launch configuration. Select the project and the java2kdm.xmi file.
Intepreting the results
If you are interested in the top-most composite components only, simply open the last composite component entries from the "model/internal_architecture_model.samm_repository" file. The more to the end of the list of composite components a component is, the later was the iteration it was created it. Thus, it is a more abstract component.
Limit the reverse engineering scope
You have one major option to limit the information present in the reverse engineered model. You can blacklist classes and packages in the run configuration of SoMoX ("Launch Simple Model Analyzer") and the run configuration tab of "Q-Impress Reverse Engineering" in the "Metrics Configuration > Blacklist" tab. Here you can either specify a regular expression or in case of the "Launch Simple Model Analyzer" additionally pick blacklisted items in the package tree. A blacklist regular expression is for example of the format "java.*|javax.*" to exclude tha Java Libraries.
Blacklisting Settings
Default Blacklist Setting for Java-based systems:
java\..*|javax\..*
Other common libraries to exclude:
junit\..*|org\.apache\..*
Details on metric results and intermediate steps
In case you want more insights into the metrics calculation, you can switch on the "ALL" logging level in the "Common" tab of the run configuration. If enabled, the console output contains the metric details. Furthermore, in the "model/dotClusterTrace" folder graphs of the different iterations are present in the dot format. The dotty viewer [6] can open that graph format.
Result Visualisation
Hyperbolic Tree Visualisation for large systems
Repository editor for smaller systems
Documentation
- SoMoX Metric Documentation (PDF) (Thanks to Henning Hager for providing the documentation)
- "Reverse Engineering Component Models for Quality Predictions" Publication on SoMoX BibTeX
- Publication on ArchiRec (the predecessor of SoMoX) BibTeX
- Screencasts on the Q-ImPrESS reverse engineering approach
- GAST2SEFF
Get in Contact
Related Articles
- SoMoX/Development/Build Migration
- SoMoX/Roadmap
- SoMoX/Development/Getting Started
- SoMoX/Development/Architecture
- SoMoX/Development/SAMM to PCM Migration
- Beagle - Component Behaviour Reverse Engineering
- SoMoX/C-Metrics
- SoMoX/SISSy
- SoMoX/MoDisco
- SoMoX/Change Impact Case Study
- SVN (user credentials: anonymous/anonymous)
Related Papers
- [http://subs.emis.de/LNI/Proceedings/Proceedings184/P-184.pdf#page=38 Travkin, Detten and Becker: Towards the Combination of Clustering-based and
Pattern-based Reverse Engineering Approaches]