Migration of 7 million lines of RPG code to 3 million lines of Java code and 700 thousand lines of model code. The model code generates 1 million lines of XHTML and 4.3 million lines of Java code resulting in about 60% of the system being generated from models significantly improving product lifecycle management and maintenance.
"Cornerstone has a solid conversion technology and the wherewithal to implement it, much faster than we thought possible and giving us the ability to continue to convert newer versions of the software until very close to the end of the project. In particular the G4 tooling was able to add science to the art of software refactoring, bringing deep insights and facts that helped us to decide the shape of the project in a timely fashion”.
i2S is a European product vendor with its headquarter in Porto, Portugal. i2S is specialized in developing and supporting core insurance systems for Life and Property & Casualty systems, covering the full spectrum of insurance products. i2S is market leader in Portuguese and Angolan markets and is presented in several European countries, with more than 25 years of market presence and 30 customers.
The i2S insurance Life System consisted of around 15 million lines of code, divided approximately 50/50 in RPG and Java. The database and RPG systems run on IBM iSeries Hardware; the Java sub-system is executed on an IBM Websphere Application Server. Data management is done in IBM DB2. The user interface is a web browser, with IBM Webfacing Technology making the interactive RPG programs operable via the web.
Although the overall system has been integrated into different customer scenarios as only a part of an overall insurance landscape, i2S has the goal of making the system more modular and marketing individual modules, something that i2S wasn’t able to achieve before this project.
i2S is known for having a functionally rich application and for identifying several international growth opportunities which couldn’t be capitalized until it broadened its platform offering and could support customers who are Oracle shops. Existing customers were also keen to see i2S complete its transition roadmap from RPG to Java, which was based on a more manual and gradual approach.
The basic idea of an automatic model-based approach is to view the existing source code as a model. After transforming it, associated code generators produce either Java or textual models based on domain-specific languages (DSL). In comparison to Java, DSLs are significantly more expressive in certain areas.
More code generators produce Java or XHTML-artefacts consistent with the textual models and the target architecture within the scope of the future development process. This ensures the best abstraction level possible necessary for the future development and service for all parts of the system.
Within the future development process and matching the textual models as well as the target architecture, further code generators convert the textual models into other artefacts such as Java or XHTML. This ensures that all parts of the system are at their respective best level of abstraction for later development and maintenance.
Migrating an entire system automatically is extremely complex, so an iterative approach is necessary. On a growing code base, tools are developed step by step until the necessary migration rules are detected and implemented. This allows the maximum influence of i2S on architecture, DSLs and on mapping from RPG to Java. At the end it is literally only a push on a button to turn old into new.
The project team consisted of people from Itemis, Cornerstone and i2S. The project duration was 13 months.
Itemis and Cornerstone were responsible for target architecture, the reference implementation, DSLs, code generators, migration rules and the cross-sectional library, which emulates parts of the RPG runtime.
i2S was responsible for the overall project management, for providing code and contacts, as well as the inspection and testing in all respects.
Several workshops were arranged to clarify important requirements and conditions. i2S received extensive information on
Before commissioning the actual migration project, a proof-of-concept (POC) was done. This POC was based on available information and used a small portion of the RPG code. It gave i2S many insights, gave the collaboration a try, and demonstrated the general suitability for this project.
At the beginning of the migration project a working reference implementation was created, which served as a blueprint for the automated transformation and for the code generators. It was based on the architecture requirements.
Parallel to this, the "intake" of the code to be migrated was done, as well as outlining the domain-specific languages in cooperation with i2S. Under the responsibility and headed by i2S, the preparations of software testing were started.
In iterations of about 2 months the migration rules, the RPG runtime library, the domain-specific languages and the code generators were extended to enable them to exponentially migrate more code. In the first iteration, 8 RPG programs were migrated, then another 20, then 100 and so forth, until the 8th iteration finally translated almost 7000 RPG programs automatically.
During this time i2S could advance and maintain the existing RPG system. In the end there was a final step, migrating the entire code.
Competent and high qualified staff of i2S was available throughout the project to provide feedback and to answer questions regarding the legacy system. The project, carried out at three sites, required close communication between all parties.
An enormously important task was the assessment and – as soon as possible – the execution of the migrated code, which was under the responsibility of i2S. This feedback allowed improving the migration rules created so far. At the end of the project a know-how transfer took place, enabling i2S to continue using the new architecture and the model-based tools without external help.
The migration project was completed in December 2014. About 7 million lines of RPG code are turned into about 3 million lines of Java code and about 700,000 lines of model code. The model generates about 1 million lines of XHTML code and 4.3 million lines of Java code. That is, approximately 60 percent of the migrated system is generated from new models.
Please do not hesitate to contact us when you like to obtain more information. You can contact any of the following people who will be glad to answer any questions that you might have about this project.
Mr. Marco Perestrelo, CTO Product Engineering at i2S
Mr. Wolfgang Neuhaus, board member at itemis AG
Mr. Gianni Balistreri, Technical Director at Cornerstone Technology B.V.