COBOL, 4GL, minicomputers… - this terminology sounds forgotten nowadays together with phonograph records and punch cards. Unbelievably, in the enterprise world you still can meet these dinosaurs functioning, especially in big companies like international banks or world-wide manufacturers.
Migrating legacy to modern tech stack has always been the core business and main expertise of Transformix - a software development company based in San Diego, CA. Mixing their vast experience in modernizing legacy software with CUBA Platform features they show great results in this area. Learn more about their experience in this article.
Legacy Applications vs. Modern Applications
Charles Finley, original post is here
At the risk of over simplification, I believe that a “modern application” can be illustrated with the help of the image in Figure 1. For the most part, when legacy applications are mentioned one usually thinks of monolithic applications that were written in older programming languages such as COBOL with terminal based user interfaces that usually use data stores such as ISAM, flat files and proprietary database management systems. The left most bottom of the diagram shows this type of application. As the diagram shows, application architectures have evolved into web and mobile user
Figure 1 – Modern Application
Interfaces that can be loosely coupled with external applications often based in the cloud. The diagram does not show that applications developed today are most often able to be hosted on virtualized servers and/or in containers. The diagram also does not show that applications developed today are developed with newer programming languages and with a number of different database technologies.
This dichotomy between legacy applications both from a feature and usability point of view and from the point of view of the cost and relative difficulty to host the applications provide increasingly strong motivations for stakeholders to replace or modernize these legacy applications.
What is the CUBA-Platform?
The CUBA-Platform provides a full-stack architecture for building 3 tier applications and includes widely used common features for enterprise apps such as soft deletion, data-aware components, file storage, as well as high level modules: authentication and authorization, audit of data and others. This class is most appropriate for developing ERP-like systems, line of business applications or custom software for the corporate segment.
On the surface, the CUBA-Platform seems to be mainly suited to building custom applications from scratch. However, a closer look reveals a platform that provides the ability to reuse existing databases, auto generate domain models from existing databases, automatically create REST APIs from existing artifacts, standardize front-end by using prebuilt responsive UI templates, turn existing business logics into standard services and integrate any REST based third party services without coding. These features make the CUBA-Platform ideally suited for integration of a full stack JAVA framework with legacy applications.
What are TransformixTools?
TransformixTools for CUBA-Platform are a number of custom engineering components and adapters that link legacy applications to the CUBA Platform among these are database adapters, terminal screen adapters, COBOL services integration components, Eclipse plugins, etc. These tools serve as CUBA-Platform plugins to facilitate the integration of the legacy application to CUBA features.
What is ModernizationInPlace™
For the stakeholders of legacy applications for enterprise customers, ModerinzationInPlace™ is an innovative approach to software development and efficient open source technology that helps developers integrate existing legacy applications with the full stack CUBA-Platform enterprise development framework. This non-invasive approach transforms the application into a multi-model development platform in which existing tools can be used to extend and enhance existing legacy application code while at the same time modern development tools can be used to enhance and extend application functionality. Therefore, ModernizationInPlace™ makes customizations and upgrades to the application functionality relatively painless.
Main characteristics:
- ModernizationInPlace™ is a framework for enhancing the application’s business layer (with web service APIs) and database
- Tools from Transformix allow the application user interface to be supplemented with browser access which allows combining existing internal applications screens, like Legacy applications (mainframe green screen applications), with external Web services and Web pages with standard Web sites designed without integration interfaces (APIs), XML information and databases.
- The CUBA-Platform an open source full stack JAVA framework provides an open source foundation.
- Based on a JAVA technology stack, using best practices for designing business application’s database, business layer object model and web API
- No hidden magic, the generated server application is a regular REST web services that can be debugged using its source and the popular JAVA IDE’s.
Toward the Multi-model Applications Platform
Figure 2 – Multi-model Applications Platform
Yes Virginia it is possible to have your cake and eat it too. At least in so far as legacy applications are concerned. By that I mean it is possible to allow for continuing development in the legacy paradigm in parallel with development in newer paradigms. Figure 2 illustrates an environment in which an application that was built for an HP 3000 in COBOL with a proprietary HP TurboIMAGE database management system has been migrated to Linux with a PostgreSQL RDBMS. This is done with only minimal changes to application sources. In this environment the COBOL applications still use the same APIs they used on the HP 3000. For example, database calls are TurboIMAGE calls and screen IO calls are VPLUS calls. However, using the combination of the CUBA-Platform with the TransformixTools enhancements makes it possible to show the terminal based user interface in a web browser and the database can be accessed using SQL. Therefore, at the same time that the legacy programs are used the application can be enhanced in much the same way as a newly developed JAVA based CUBA application is enhanced. Further, the developers who work on the application as a CUBA application do not need to have an HP 3000 knowledge or skills to do their jobs.
Five Steps to ModernizationInPlace™
Figure 3 provides a high level overview of how the Multi-model Applications Platform is implemented. A SQL accessible database is needed in order to take full advantage of the features the CUBA-Platform has to offer. Therefore, the first step is to migrate the application data access to allow for multi-model SQL access. This means that the original application will still be able to access the data using the original APIs while at the same time other applications such as CUBA will be able to use SQL to access that same data. Step two is to allow browser access to the application screens. In this second step also includes the installation of the CUBA-Platform alongside the application. The application takes on the characteristics of a multi-model application once the CUBA-Platform is installed. This means that from then on the application can be extended and enhanced with modern tools by developers with little or no knowledge of the legacy programming environment.
What follows is an expanded version of the 5 steps toward a multi-model applications platform.
Step One - A Multi-model Data Platform
A commonly used “trick” in migrations is to provide a simulated legacy system API on top of a relational database. This allows the existing application to access the data using the same database calls or APIs as always while at the same time providing alternative industry standard interfaces to newer and commercially available off the shelf applications. This is the approach Transformix uses. Here are some examples:
HP 3000 TurboIMAGE or Eloquence Database to RDBMS
TransformixTools provides a TurboIMAGE API that allows applications originally written for the HP 3000 to have the data and schema’s migrated to Oracle, PostgreSQL, MSSQL, IBM DB2 or IBM Informix with few or no changes to the application programs. Other applications can then access the data using standard APIs such as SQL.
MS Access to RDBMS
Microsoft Access lets you easily create databases to store and present your data in forms and reports. When starting, a database may be very simple and trivial, but over time, it may become more important as you add data, features, and even share it with others. It gains a life of its own and the overall design becomes critical.
Figure 3 – ModernizationInPlace 5 Steps
One of the most important architectural designs is splitting the database into a front-end and back-end database. This is how Access is designed to let you support multiuser databases and significantly simplify how you enhance the application over time.
Separating your application and data databases enables you to support multiple users and upgrade the application without wiping out their data. Assuming the application doesn’t change that often, the separation also makes it easier to just backup the data database since only that is changing every day.
Splitting a database is a relatively simple concept. You take an existing Access MDB/ACCDB database with its tables, queries, forms, reports, macros, modules, etc. and divide it into two databases:
- The “Back-End” database just contains the tables
- The “Front-End” database contains the application objects (everything except the tables) and links to the tables in the back-end database
This design is especially useful in multi-user environments where the back-end database is stored on a network and contains the shared data. Each user then has a copy of the front-end database on their desktop pointing to the shared database.
In multi-user environments, the front-end database can also contain tables that are private to the user. These local tables can store the user’s settings, selections, temporary or intermediate tables for processing data or reports, etc.
Once the database is split, using ODBC to access it from MS Access and using MS Access as a frontend allows the backend to be access with the CUBA-Plaform.
Microfocus ISAM to Ctree
FairCom’s No+SQL technology provides flexibility with an ISAM application’s data architecture by allowing data ISAM of any type to be stored within your record structure, without pre-defined schemas. At the same time, it supports industry-standard SQL (relational) interfaces and high-performance NoSQL (non-relational) interfaces to the same data at the same time.
C-treeACE is an ANSI-compliant SQL database with support for everything you expect from an RDBMS including stored procedures, triggers, user-defined functions, ODBC, JDBC, and a wealth of standard interfaces. c-treeACE provides simultaneous access to the same data via NoSQL interfaces for the ultimate in performance.
TransformixTools provides a CUBA-Platform interface to C-tree SQL.
Informix 4GL to Aubit4gl and RDBMS
Aubit 4GL project is a Open Source project to make a free, GNU/GPL, Informix-4GL and x4GL compatible development tools (compiler, tools, libraries), and continue to extend functionality and tools needed to write most efficient, stabile and productive applications in business related, database oriented applications. Aubit 4GL compiler is software that translates x4GL programming language into executable programs, enabling fast and productive creation of database oriented applications utilizing 4GL with embedded SQL and C programming languages, using ODBC and native connections to databases, and GTK+ for GUI, or Ncurses for CUI, and HTML/JavaScript for web browser presentation layers.
Once the database is in RDBMS CUBA-Platform can be used to extend and enhance the application.
Step Two - Browser UI
TransformixTools provides solutions based on the CUBA-Platform and Vaadin that turn legacy application user interfaces into browser based interfaces.
Terminal Emulation
Our terminal emulation solution provides an instant web browser based terminal emulator to key business systems, including UNIX, VMS system, on any device with zero client software installation, all centrally managed. The Transformix solution is based on the CUBA-Platform. Therefore, at this step the CUBA-Platform is installed and made available to the application developers. Example Stansoft Aubit4gl.
VPLUS API Intercept
Another technique we use is the terminal API intercept approach. The best example is our VPDM HP VPlus replacement. We convert the HP VPLUS forms file to JAVA classes and create an xmlrpc-based intercept library that implements a plug-compatible replacement for VPLUS calls.
MS Access Forms
This solution is based on the CUBA-Platform as well. The TransformixTools DBForms solution includes software tools that turn MS Access forms to web pages written in JAVA code and available for viewing through Internet browser. A prerequisite step is to turn MS Access tables and queries into in their turn are converted to RDBMS. For now, this solution is limited to PostgreSQL.
Step three - Enhanced Browser
A composite application (also known as a “Mashup”) is a Web site component or application displaying mixed content combined from heterogeneous sources. End-users don’t have to know from which underlying sources and applications this aggregated information is coming. In its simplest implementation, adding relatively simple external enhancements to a legacy user interface such as dropdowns or type-ahead search can greatly enhance the user experience with the application. These two features require database access that is separate from the original application and they can be implemented without modifying the original application. Figure 4 shows how what the user sees on their desktop is a further composite of the original application screen and a Google Map which is made available through a REST API and the CUBA-Platform. This too does not require a modification of the original application.
Figure 4 – Composite Application Screen
The use of the CUBA-Platform in Step Two is not only of benefit for creating the browser UI in the first place, it also makes it possible to extend and enhance the application from the user’s point of view without changing the original application.
Step Four - Mobile and Web Services
The CUBA-Platform was introduced to the application environment in Step Two as a vehicle to facilitate enhancing the user interface to the application. Step Three gave us the opportunity to explore how CUBA can help further enhance user interfaces. In Step Four we begin to look at the real power of the platform. It provides a no Code and Low Code Platform that allows you to reshape how you interact with your legacy UNIX, or VMS system as well as your Windows, Linux or MAC system. With legacy terminal based applications as we have seen it gives us tools to help change green screen user experiences into contemporary interfaces that are delivered over the web. This gives you the freedom to adapt and evolve business processes, quickly realizing new efficiencies and gaining instant ROI and tactical advantages that are simply not available elsewhere, what’s more, this can be done by a super user or Citizen Developer.
Web Services
REST APIs are all the rage these days. The use of REST and other HTTP(S) based APIs have become the lingua franca of the world of computing. The CUBA-Platform is built on top of REST APIs and it plays very well with REST APIs provided by others. The use of CUBA as a modernization foundation for legacy systems transforms your host environment into a dynamic component of your business systems interface layer, normally confined to the transaction layer of the enterprise, these new tools will unleash your investment in your host system to freely interact with and feed tertiary business systems, increasing the availability, timeliness and integrity of key business data.
A Bit More About Developing with the CUBA Platform
At its highest level, the CUBA-Platform consists of the Design time CUBA Studio which works in concert with either Intellij IDEA IDE or Eclipse IDE. At runtime, it uses a JAVA application server, usually, Apache Tomcat.
Figure 5 – CUBA High Level Overview
CUBA Studio is a specialized tool for rapid application development that streamlines building applications upon CUBA Platform. With Studio, applications are up and running within minutes. It also accelerates modernizing legacy applications by scaffolding the data model and CRUD UI on top of an existing database.
Studio is designed to be used in parallel with a Java IDE (Figure 6) , so developers do not have to abandon their beloved working environments. The focal point of the development process is the studio. Projects are open in Studio and most of the configuration and enhancement is managed with Studio in conjunction with the IDE. Moreover, testing and debugging are managed through Studio as well.
Figure 6 – Studio with IDE
Applications developed using the CUBA Platform occupy three tiers as shown in Figure 7, they are, the database tier, the middle tier and the client tier. These tiers are connected using REST and HTTP APIs.
Figure 7 – CUBA High Level Application Architecture
Using this architecture, the same backend can be used for web, desktop, mobile and REST API applications.
Step Five - loosely Coupled Web Services
One of the most important ideas in the world of software engineering is the concept of loose coupling. In a loosely coupled design, components are independent, and changes in one will not affect the operation of others. This approach offers optimal flexibility and reusability when components are added, replaced, or modified. Components that can operate independently and have a well-defined communication channel are loosely coupled.
The architecture of the CUBA-Platform is built to support this loose coupling of components. Therefore, when legacy applications are integrated with the CUBA-Platform it allows their features and components to be used with the same flexibility as more recently developed application components.
Summary and Conclusions
ModernizationInPlace™ is the Transformix Computer Corporation approach for converting legacy applications into future-proof enterprise applications with the CUBA-Platform. This approach helps organizations create a multi-model applications platform that allows legacy applications and application extensions written in the CUBA-Platform provided full stack JAVA framework to work side by side. Using this approach the sought after benefits of application modernization are achieved quickly and at low risk.