Databorough – A Division of FRESCHE LEGACY

Modernizing CA 2E (Synon) code

 

Since its introduction, CA 2E (Synon) has become the most successful 4GL tool on IBM i. The CA 2E development environment combines a rich and precise model of designs and specifications with powerful code generation capabilities.

Even with this powerful set of features, however, many companies now face real pressure to modernize their business applications beyond the scope and capability of what CA 2E can offer. The challenge is to move forward without discarding decades of investment in design, evolution and fine tuning stored in the CA 2E model.

Fresche’s X-2E Modernize is the solution for modernizing any CA 2E application. X-2E Modernize automatically re-factors and generates an MVC Web application using OO methods in Java or RPG Free (Flex & Silverlight UI soon to be added). Fresche’s X-2E Modernize takes advantage of CA 2E application architecture to automatically convert applications.

Since CA 2E forces users to organize code into screen designs, action diagrams, business logic and database components, X-2E Modernize uses this internal 2E model to extract design information in a structure that maps cleanly into a modern MVC/OO/RESTful architecture. X-2E Analysis currently generates a JSF / Facelets UI version or a newer AngularJS UI with RESTful Web Services. The design metadata can also be used to generate new interfaces.

 

What is unique about CA 2E applications and how can Fresche’s X-2E products help modernize them?

CA 2E forces users to organize code into screen designs, action diagrams, business logic and database components. Consequently, by working with the internal CA 2E model, it is possible to extract design information in a structure that maps cleanly into a modern MVC/OO/RESTful architecture.

To be clear, it is only possible to do this by converting the CA 2E model itself into the target architecture and code. Conversion processes that attempt to translate the CA 2E-generated RPG code will result in volumes of unnecessary, unrecognizable, unmaintainable code. The following diagram shows the modern aspects of the CA 2E model that allow for straightforward modernization:

 

 

Just to be clear, it is only possible to do this by converting the 2E model itself into the target architecture and code. Conversion processes that attempt to translate the 2E-generated RPG code will result in volumes of unnecessary, unrecognizable, unmaintainable code.

 

 

The following diagram shows how design recovery from the 2E model can be used to feed the analysis and redesign processes.

 

How does CA 2E design recovery feed the analysis and redesign process?

 

 

This diagram provides an overview example of how CA 2E model information can be automatically reengineered into a modern architecture and set of languages.

 

How does CA 2E design recovery feed automatic reengineering?

 

 

In manual reengineering projects the existing CA 2E information shown above would be recovered and used to feed the requirement and design phases. This type of information is all recoverable with Fresche’s X-2E Analysis product and can be output in numerous formats, including Word, Excel, XML, DDL/SQL, UML diagrams (Activity, Class and Use Case) and so on.

 

In automated reengineering projects Fresche’s X-2E Modernize product contains intelligent robots that recover knowledge chunks and reassemble them into a new system. Importantly, this new system realizes all the goals described below for best practice reengineering.

 

Best Practice Architecture

The software engineering world is a long way from settling on any single best architecture or programming language. But it's pretty clear by now that over the last 10-20 years some favored practices have emerged. These include:

 

MVC design pattern – Model-View-Controller, as in a Model layer of components that contains business logic, a View layer that contains the outward presentation, and a Controller layer that handles events in the other layers and directs process flow.


Object Orientation – organization of code into objects, the proper term being classes, and those classes containing functions. Those functions being either callable from other classes, or protected, so they can only be called from within their own class.


RESTful interaction – in particular, the most salient point of REST being that server components have no inherent knowledge of session state. Session information that needs to be preserved between work flow activities (screens) is preserved and represented from client-side memory, or via session management functions within the application server software.

 

Reuse 2E Model (not generated Code)
Synon applications are developed and maintained in an architected model that was ahead of its time for business applications. Aside from enforcing a structured approach to development, the CA 2E model keeps UI, business logic and IO separate, and organizes them with an early form of object oriented design concepts. The result today is that Synon application logic is completely recoverable and reusable for transforming into a modern architecture and language.

Modern & Maintainable Code Base
Because Fresche’s X-2E Analysis converts code by first converting the CA 2E model to RPG in an MVC/OO/RESTful pattern, this intermediate code can also be viewed and compared to aid in the comprehension of how the conversion took place. The Java or RPG Free code is then generated from this as an MVC JEE JSF Spring/Hibernate application code base using modern coding standards for optimum maintainability.

New Call-to-action New Call-to-action New Call-to-action