COBOL Software Modernization
COBOL Software Modernization
The digital economy is expanding faster and faster. This results from recurrent advances in information technology (IT). There is a virtuous circle such that, in turn, more and more (often unpredictable) innovative usages boost IT. These usages are social and, in a broad sense, economical. More generally, the impact of IT on business is immense nowadays.
In this dynamical context, two decades ago software became the premier economy sector in terms of revenue. Substantial overturning occurred: the progress and multiplication of operating systems (LINUX, Windows, OS X, etc.) and associated product lines (e.g. mobile variants), the development and increasing re(use) of open-source software, outsourcing in developing countries, etc. United States and Europe tried to keep their advanced positioning through "differential software engineering": inventing new programming languages like Java or C#, new software development approaches like agile development, model-driven development (MDD), new software architecture paradigms like service-oriented architecture (SOA) and related middleware like Java Enterprise Edition (Java EE) or .NET and new computing paradigms like mobile computing, cloud computing or Internet computing as the superset of all modern computing paradigms.
However, a great paradox persists, as technological entry costs, human involvement, the acquisition of new technologies and take-up initiatives, etc., are not easily and straightforwardly controllable. In other words, the great majority of people and teams in software development continue to use "old" technologies. First, a very good reason for this is that information systems on the top of these cannot be thrown overboard. Second, development hides maintenance. Challenges relate to software evolution not to software creation, especially from scratch. Seacord in [SEA 02] highlights this point as follows: "For large enterprise systems, a strategy of design for evolvability is a need. This approach does not distinguish between development and maintenance; maintenance is simply continued product development ".
Therefore, there is a natural temporal gap between the emergence of any high tech software. and its daily use with total conviction and ensured return on investment.
In this sector, COmmon Business-Oriented Language (COBOL) remains a representative programming language. Namely, in 1997, 310 billion lines of software were in use and more than 220 billion lines were in COBOL (source: Wikipedia). Beyond this, five billion lines of new COBOL were developed every year, nowadays leading to an incommensurable mass of code. In fact, most enterprise software today is based on legacy technologies because COBOL had this ever-contested lead role. More recently, programming in (newer) COBOL also continues to have an impact on software architecture due to COBOL's inevitable "adaptation" to the Internet. Unfortunately, what also comes up with older COBOL is a set of specific infrastructures (computers called "mainframe computers" or "mainframes" for short), proprietary operating systems and middleware platforms, for instance Customer Information Control System (CICS); COBOL professionals who have a very particular background, culture, state of mind, etc., were/are also a great component of the overall COBOL influence on today's running software.
As observed, COBOL is thus not a closed world without any link to the Internet computing in general. That is the reason why going on with COBOL is always technically possible. Strategically, COBOL software evolution strongly depends upon proprietary solutions that limit interoperability in reasonable costs, innovation and liberty in general, to better adapt information systems to business. There is indeed an increasing demand for reactivity: IT, information systems must leverage the business instead of, as it