The new software exploration tool Moose2Model is currently under development in Pharo Smalltalk and based on the Moose Analysis platform. See also the blog Legacy Code – Storing the mental model in diagrams.
An extractor (SAP2Moose) is available to extract model data to file. Moose can then be used to analyse. Extractors to Moose are also available for other languages, there is therefore no restriction to ABAP or SAP.
The SAP2Moose extractor is not restricted to ABAP Objects. It extracts also functions, reports, tables, WebDynpro ABAP and to some extend SAP BW coding. This fits to a typical customer IT, where a lot of different logic and data bearing entities are used.
This allowed me to draw fascinating diagrams of SAP applications and explore features that I would not have seen otherwise. My impression is, that this is a good way to explore new coding and get an overview over the structure. The most valuable advantage compared to the UML class diagram is that relations between methods and attributes are shown. This is more detailed than an UML class diagram. This helps to understand legacy application where normally too much details are missed if dependencies are restricted to classes.
But my current job is not to analyse applications on a high level. My duty is to analyze details of complex applications and add changes to them. And to have in mind all side effects that could cause errors. And to be able to really use this tool, I needed a way to make diagrams that fit to the way I (and many other developers) work. But for everyday work I missed features:
- It was easy to drag elements of a diagram in Moose, but there was no simple way to keep such customization when the diagram is opened the next time.
- Diagrams where often very big, and it was difficult to show only the elements of interest
- I needed a way to comment elements
- To help during development I needed a tool that provided many small features that where adapted to the workflow of a developer.
Moose was originally developed in other languages and was ported 2008 to Pharo Smalltalk, because this is an environment that allows for easy adapting and developing of applications. Pharo runs in a virtual machine and is written in Smalltalk itself. All coding can be changed and analyzed, it is therefore easy to adapt Moose if needed. This can be done in the virtual machine without need for compiling or in most cases even restarting an application. This gives a developer who works full time in SAP projects a chance to develop a software exploration tool that provides the features needed.
The new application is named Moose2Model. It is currently hosted on github as Moose2Model, the internal name space is RWDiagram. It is not restricted to SAP ABAP or to the mse files that are provided by SAP2Moose. Smalltalk coding can be analyzed also, I do this to while developing the tool. Java, C and many other languages (as soon as an extractor is available) should work also (But is not tested currently).
It works fine for me and I use it for existing and new applications. It generates customized diagrams like this: .
I checked the available literature on Software Exploration Tools to get a hint on how to improve it. See for instance Margaret-Anne Storey “Designing a Software Exploration Tool Using a Cognitive Framework” (DOI: 10.1007/978-1-4615-0457-3_5) and Seonah Lee and Sungwon Kang “What situational information would help developers when using a graphical code recommender?” (DOI: 10.1016/j.jss.2016.02.050) pdf
The challenge is to develop an application that fits to the needs of developers and has a chance to be adopted for everyday work. It should be as easy as possible to implement and use. So that the benefits outweigh the additional complexity of the tool.
I plan to do the needed changes to the current Software Evaluation Tool to achieve this.
Already done (This will be updated and grows with time):
- Simplify installation, a preconfigured virtual machine can now be downloaded on SAP2Moose.org.
- Jump directly into the code in Eclipse using ADT links (Windows only) – Available with SAP2Moose v0.5.1 and Moose2Model v0.2.0
- Provide a graphical user interface to simplify the usage (Moose2Model v1.0.0)
- Improve the diagrams, provide an option to show whether all or only some of the connected elements are displayed (Moose2Model v1.0.0)
- No need to use Moose or the Pharo Playground. This simplifies using and learning the tool.
Planned are (This will be updated and shrinks with time):
- Allow text input for diagram elements that are not extracted (Comparable to the plantUML class diagram)
- Provide a history
- Provide a preview feature to show what is around the currently displayed elements (This is now not so much needed anymore as diagrams can now be much easier changed
- Allow searching in layouts
- Provide a redo button
Please give me feedback, either by comments to this blog or by opening issues in github. What do you need?
I will update this blog during implementation.