The client had a mission-critical long living system written in multiple languages. The system offered a rich user interface built through many interconnected forms. Furthermore, an important feature of the system consisted in a proprietary language that could be used to customize or to create new modules.
Over more than a decade of development, a large amount of sources has accumulated. While the proprietary tools offered some support for developing in this language, they offered no analysis infrastructure, and because of that mistakes could easily occur.
We were mandated to create a dedicated infrastructure for supporting the assessment of programs written in this language and to relate them to the overall forms structure.
One challenge was posed by the lack of documentation of both the language and the format of the exported forms. Thus, we started with a reverse engineering effort. We adopted an iterative approach through which we combined:
After two dozen days of effort, we produced a first working version of the importer that could be used to produce a picture of the systems. Using this importer, we enabled the team to start encoding their own concerns to ease development and maintenance. It soon became apparent that the automatic checking revealed many areas for improvement. Thus, the team adopted the process of continuous assessment and checked these concerns on a regular basis.
Another byproduct of this project consisted in a set of interactive browsers and visualizations meant to ease program comprehension. These were also used to ease the dialogue between the technical team and management concerning the status of the systems.