<< Cyrus Montakab | Home | Satyam auctioned - Tech Mahindra is new owner >>


Resistence is Futile ... You will be Translated

Well, your COBOL legacy Applications will be translated

I think the modernization projects to-date represent the tip of the iceberg. Most of the effort is yet to come, since great majority of COBOL systems are still untouched (perhaps re-hosted, but still in Cobol). My guess is that once the credit crunch is over, and organization with a "slimmed-down" development resources find the business is picking up, there will be a sudden surge of Modernization activity. What would most organizations do?

In the long run, with diminishing COBOL resources, the Real choice available to organizations are:

  • COTS (Subject for another discussion topic)
  • Re-document, re-design, re-write (Expensive and Risky - how many large Software projects can you name which were delivered late, over-budget, or eventually canned. Yes there are many successful ones, but there are many failed ones also. I said "risky" not "impossible" :)
  • Use a "Intelligent" Translation (if one exists) to get a good starting point, then enhance the translations
  • Outsource (make it some one else's problem)
In the long run we know there won't be any COBOL developers left, and people will have to change the system. The real question is when would most people make the move. If everyone decides to move all at once, my guess would be there isn't enough Analysis and Developers to do the job.

So, IMHO the only solution is an "Intelligent" automated solution (Translator). My company, SoftwareMining has been working on such a solution for a looooooooong time. Producing a "1-to-1" or "literal" translation was the relatively easy bit. We did that in 10% of the total time. The remaining 90% was teaching it about material such as "what constitutes a good programing practice", "new programming Patterns (there is a Patterns book on every java developers desk - check it out)", "Old programming patterns (what did the original programmers want to do thru this pattern... " .

So, here is the question: if you had a modernization project with a modest budget which didn't allow a "re-document & extract rules", re-design from scratch, and rewrite, then what would you be happy with? Here is my initial semi-technical list

  • Change the language to a modern language
  • Try to understand what the program is doing, and reproduce its functionality in the new language (don't use "Literal" translation). For example COBOL Move statement should not be translated to the function call   "move(x, y)"
  • Use object orientation, with proper layering, separation of business and data, etc
  • Use Frameworks to control as much "non-business" logic as possible (e.g. deployment, screen handling)
  • Identify code duplications , or un-referenced code, unrefernced variables
  • Try to remove legacy architectures (GO TO, REDEFINE, ...)
  • Try to refactor/break-down large programs. The method "ProcessOrder" should belong to "Order" class, not that massive program which does about 2000 different things.

I am sure you can think of a few items yourself. I left out a few hoping other people will get involved, and adding to the list. We can now do the above automatically, and because it is automated - it can be done cost-efficiently and fast. The result can be tested quickly (Regression and System testing), leaving plenty of time (and more budget) for a 2nd stage enhancement: further refactoring (much easier in Eclipse than anything else), apply SOA or MVC pattern, integrate with other systems, enhance, ... Each simple and small steps to be followed by testing, testing and more testing.

To conclude, I would be interested in the your views of other factors which makes Intelligent Translation an acceptable choice.

Watch This space: In my next blog I will try to go into more technical detail ... provide some detail on how the above issues can be tackled "intelligently".

Re: Resistence is Futile ... You will be Translated

Hey, maybe some of us WANT to be translated:-)

Perhaps you do this already, but to your list of modernization steps I would add this "obvious" point that is not quite so obvious in much of the mainframe world: Generate unit test drivers for each class in the translated system.

The COBOL systems I work on, in addition to being monstrous piles of accumulated patches, lack any facility for repeatable unit tests. This is more an aspect of the corporate culture than of the development tools, though to be sure, gigantic monolithic multi-purpose programs do tend to discourage the belief that it is even possible to come up with a repeatable unit test. It is much more common to develop an entire set of unrelated upgrades with NO unit testing, and assume that the QA cycle will smoke out the bugs.  That would be wonderful, except QA tends to focus on a few well-known functional tests that may not even hit the revised code.  Most developers I work with would be very glad to discover that their newly-translated system came with a handy set of unit test programs and data.

Re: Resistence is Futile ... You will be Translated

Very, very good point. Actually - we are working on that :)

It works like this: During the translation, the "paragraphs"  (<span style="font-style: italic;">OO method</span>) get parameterised, ie the data-classes used within the "methods" will be passed to it. The input/output of the <span style="font-style: italic;">method</span> can therefore be isolated, and we can automatically generate a Unit test script to test these.

Putting together valid test data can also be achived semi-automatically. But I better shut-up now before giving away too much of the company IP!

Add a comment Send a TrackBack