Solving SAP problems without reading code – Extract a FAMIX model to Moose
There is now an open source project started to extract code information for analysis using Moose. It was first presented at the SAP Inside Track 2016 Frankfurt.
It can be used to draw diagrams like this:
The program is available on Github:
A complete description on how to use it is given in the wiki.
Moose is a free open source platform for software and data analysis built in Pharo.
Extraction is done using FAMIX. FAMIX is optimized to support multiple languages and can contain detailed information needed for software analysis and refactoring (See for instance this article to explain why: Why FAMIX and not UML ?).
For an overview over Moose see Moose.
Open Roassal examples for lots of examples for diagrams together with sources.
Open Moose -> Meta Browse for details on FAMIX.
The extractor is implemented in a single ABAP program that reads only informations about the code, but not the code itself.
Moose is implemented in Pharo. Pharo is an open source implementation of the programming language and environment Smalltalk. See the official project homepage Pharo – Welcome to Pharo! for further informations.
It is recommended to download Moose 6 and run it using Pharo 5 as there are more visualization options able than in Moose 5.
- Plan to invest some time in learning Pharo. It is cool software, but also different. I like to say “It is software developed by Aliens for Aliens”. Many thinks work, but not always the way I expect.
- Smalltalk uses three mouse buttons, left, right and middle. To start moose perform a left mouse click on the desktop and choose the Moose Panel.
- To execute code, select the whole code and choose right mouse click “Do it and go”. If not only the selected line is executed, this is in most cases leading to an error.
- If part of a script are red: add declarations for small talk variables enclosed in | | at the start of a script. Example “methods := ” methods is read. Add | methods | at the top. Small talk variables are not typed so stating the variable is sufficient.
- Install the program found on github.
- Install Pharo 5 (Add the 4.0 Sources to the folder)
- Download an Image of Moose 6 (You may store it at some other place)
- Start the Pharo exe and choose the Moose image.
- Click on the desktop with the left mouse button and choose the Moose Panel.
- Import the MSE file with the icon in the upper right.
- Click on the model. Click on all classes choose visualization -> Blueprint complexity.
What can be done?
The extractor is not yet in a status where it is sufficiently complete for most productive usages.See the requirement and issues on github for the actual situation.But basic information on methods, classes, interfaces and packages can now be extracted from SAP to Moose to learn and experiment.
Report issues on bugs or requests for improvements.
Fork the repository and start to improve the extractor.
What is planned?
Extract also non ABAP programs, like SAP BW data flows, …
I would like to thank especially:
Damir Majer for many helpfull discussing and especially for inviting Tudor Girba to the SAP Inside Track Munich 2015
Tudor Girba for many valuable informations and tips on how to use Moose and FAMIX
Enno Wulff for making a 7.31 version available and many discussions to improve the extractor and to give hints on what can be done
And all colleagues that made this tool possible!