Enterprise software applications are used to complete tasks internal to a company. These could be related to employee payroll, supply chain management, etc. Such applications can also have direct impact on customers of a company. Typical use cases include teller operations in a bank branch and hotel/flight booking.
Back in the 1990’s (when I started my career as a software developer), few of such applications provided direct access to end customers. 17 years later, as I see software development frameworks evolve, they also make me feel nostalgic about how things used to be done.
plus ça change, plus c’est la même chose — The more things change, the more they stay the same.
In the 1990’s, one of the ways to develop an enterprise application was using a software named Cool:Gen. This software had some history to it an it also had some future based on acquisitions. I do not know if Cool:Gen exists in some form today, but it was an excellent example of building applications across different platforms. Cool:Gen supported the features of a concept called CASE — Computer Aided Software Engineering. CASE was a popular concept in 1990’s. Cool:Gen had some cool things going in its favor:
- Functional requirements are put under different business components using the tool.
- Logical entities can be created along with their relationships with other entities. This is the typical Entity Relationship Diagram that is used for decades now to visualize a database schema.
- Cool:Gen supported creation of physical database tables from logical entities.
- For applications with UI, page navigations based on events and data transfer objects can be setup. This is like creating a sequence diagram and converting it into actual page navigation logic.
- UI pages can be created using a common code syntax which is portable on Windows and Mainframe. This gets converted to VC++/DLL/EXE in case of Windows and CICS screens in case of IBM Mainframe.
- Creation of Batch programs is possible with the same coding syntax. Applications can then be deployed on a Mainframe as COBOL/CICS application. This was a powerful feature as creating a CICS application is not for the faint hearted.
This 1990’s framework supported configuration based page navigation, ORM like database integration and code once-deploy all features. All these concepts are still relevant today and we see the newer frameworks like AngularJS, Hibernate (this is an older one, I must admit), NodeJS and Spring striving hard to makes these concepts simplified for the average developer.
Cool:Gen’s USP was in creating client-server application with great ease. Early 2000’s saw a proliferation of web based technologies and software frameworks using Java, .Net and other platforms. Web browser based applications were projected as the future and client-server frameworks were condemned to be on their deprecation path. With the advent of powerful mobile platforms like iOS and Android, application development has gone full circle and is back to a client-server like world. There are differences of course, but the underlying concepts of client-server are being relived. This is what I meant when I said the more things change, the more they stay the same.