Given the need to enhance or transform a large existing ABL application, one is often hampered in the task by limited or out of date documentation. This project seeks to create a tool set that will read existing ABL code and the corresponding database to build a UML model of the application. This model can then be used for analysis and potentially can serve as the basis for future changes.
This project will consist of three stages:
1. Defining a UML "Profile" for ABL so that there are appropriate UML stereotypes to express the structural realities and relationships of ABL code and the corresponding dictionary.
2. Creating a tool for loading Progress dictionary information into a UML modeling tool using these stereotypes.
3. Creating a tool which will read and analyze ABL code and then load this information into a UML modeling tool using the stereotypes of the Profile.
This work is now in production and is described in the presentation attached below which was given at the 2008 Progress Exchange conference.
The model created will be a Platform-Specific Model (PSM) in UML terms, i.e., one that is very closely tied to the specifics of the implementation and language. Once this has been accomplished, we will move on to five additional stages:
4. Creating tools to generate ABL code from the PSM so that the model can be changed and revised code generated without having to modify the source by hand.
5. Creating tools to create Platform-Independent Models (PIM) and Computation Independent Models (CIM) from the PSM so that the model can be analyzed and worked on at greater levels of abstraction.
6. Creating tools for transforming various aspects of the models to modernize the structure.
7. Creating tools for generating new PSM models with a revised architecture from the transformed CIMs and PIMs.
8. Generating code with modernized architecture from the transformed models.
These latter stages will evolve over a period of time providing immediate benefit for analysis.
See the Open Source project at The OpenEdge Hive.
See my presentation on this subject from Exchange 2008.