Overview
The SOMIX suite is designed to give developers an overview of complex software landscapes. The suite contains extractors that create a model of the software in the SOMIX metamodel format. The SOMIX model is then used by special tools to create visualizations.
Software diagrams can become outdated very quickly if they are maintained manually. In SOMIX Suite, generation information is saved when a diagram is saved. A user can easily generate a diagram for a new software version. Diagrams are therefore easy to keep correct.
The positions of elements in a diagram do not change when a diagram is created for a new software version. This makes it easier to find your way around a diagram.
Multiple diagrams are created by users. Each diagram covers a specific aspect of a software. Diagrams can be commented and easily customized.
Diagrams are usually more detailed than typical architecture diagrams.
A SOMIX metamodel is not a unique description of a software. An extractor maps the software to multiple entities of type grouping, code, and data. There is no unique way to do this. This gives more freedom in how a model is generated. An extractor should provide a model that is useful and sufficiently similar. A model should also be complete, meaning that every part of the software should map to the model. However, often multiple parts of the software are mapped to the same unit of the model. This should be done in a way that is easy for users to understand.
Existing
Extractor from SAP applications to the SOMIX metamodel -
http://www.sap2moose.org. Recent versions of this extractor now provide a SOMIX metamodel by default rather than a FAMIX metamodel anymore.
Visualization -
http://www.moose2model.org. This replaces the Moose2Model application in Smalltalk.
Planned
It is planned to provide extractors from JavaScript and Python to SOMIX.
Details
Extractor for SAP applications - SAP2Moose
This extractor can easily be installed in the ABAP stack of an SAP system by inserting code into a simple ABAP report. The tool extracts only the names and couplings of software components. It never extracts code. But it provides links to code.
SAP2Moose is in productive use since 2016.
The SAP2Moose extractor is available from the following repository:
https://github.com/SAP2Moose/SAP2Moose.
Visualize SOMIX models - Moose2Model 2
Moose2Model 2 replaces Moose2Model. It is in productive use since May 2022.
It can be used to
- Generate force-directed graphs of a complete SOMIX model and
- Diagrams of selected parts of a software application.
Moose2Model 2 includes demo model (It can therefore be run without access to an SAP system where SAP2Moose is available).
The Moose2Model visualization tool is available from the following repository:
https://github.com/Moose2Model/Moose2Model2,
Examples
A part of a force-directed graph of the demo model:
The same diagram with technical labels. Shown is also the context menu for one of the elements:
An example of a diagram for a limited part of a software. Diagrams are not optimized to look pretty. They are optimized to be usable while working in the code:
Lines are straight. This doesn't look good, but it makes it easy to see where a line goes. Since elements can be moved easily, it is only a limited problem in practice when lines cross other elements.
Data is symbolized by blue disks, code by orange squares. Groupings are indicated by dashed lines that frame all contained and displayed codes and data. Blue lines visualize accesses to data, gray arrows represent calls to code. Colors are generally light, this is less distracting from text and highlighted elements:
A detail from a diagram. The lines are transparent so that the texts below them are easier to read. Many lines run above the code with the name ADD_ATTRIBUTE. Due to the transparency the text is nonetheless easily readable:
Please note that elements can be moved simply with the mouse. Each repositioning of an element is saved with the generation information of a diagram. This makes it less problematic if elements or lines are not well placed.
SOMIX
The SOMIX metamodel is specified in the following repository:
https://github.com/Moose2Model/SOMIX.
Recent changes
The SOMIX Suite is an enhancement of the SAP2Moose and Moose2Model projects. The most important changes are:
Visualization now in JavaScript
The visualization (Moose2Model) is now implemented in JavaScript. It can be run directly from files on your local computer. For convenience, you can also run it directly from the website
http://www.moose2model.org, The visualization tool runs always locally on your computer. No data is exchanged with external servers.
This has the following benefits:
- Easier handling
- A frontend which is better adapted to this kind of software visualization
New metamodel SOMIX
The metamodel FAMIX is now replaced by SOMIX. FAMIX is a metamodel in which different types of software are explicitly included. In SAP2Moose and Moose2Model the types Package, Class, Methods and Attributes of FAMIX were used in a special way. This was confusing.
SOMIX now explicitly uses the types Grouping, Code and Data. This makes it easier to understand what is actually being modeled.
Acknowledgments
This work was funded by CubeServ GmbH.
Further reading
Winkler, Rainer Wolfgang, A Software Metamodel Restricted to Key Aspects of a Software System for Developers and a Method to Keep Manually Drawn Diagrams Up-to-Date and Correct. Available at SSRN:
https://ssrn.com/abstract=4049604 or
http://dx.doi.org/10.2139/ssrn.4049604 .