Nationwide Building Society has spent the last two years building a new home loan application, to support new business processes and to enforce consistent business behavior across all means of delivery, from its branches to the Internet to its third party intermediaries. This application has been converted to use MicrosoftÂ® .NET.
The first deployment of this new version will be for the intermediary market, an important channel for new loan business.. The existing application represents 30-40 man-years of development effort in a proprietary language, involving over 200 business processes.
Nationwide has written a translator that converted this existing application automatically to 14 MB of Visual BasicÂ® .NET code and 10 MB of XSD schemas, the latter in turn being used to generate 40 MB of strongly typed dataset code.
The translation effort has been accomplished by a team of three people, working part time for about a year, with a total effort of about 1 man-year.
David Green was the architect of this effort. "I joined the IBM labs at Hursley, England out of university, back in 1977, and wound up working on SNA. I went from there in 1981 to work for a local newspaper company in Norwich as a general programmer, then to American Express in Brighton a year or two later, to work as a comms specialist on systems supporting ATMs and authorization phones across Europe, then to Nixdorf (later Siemens) in Sheffield to do comms for financial apps in 1985, then to Nationwide in 1994.
"So, I guess you could say I have a technical background, but I think my main interest these days is in how to express business functions clearly, accurately and maintainably - the shift having been progressive over the last 15 years. When it comes to compilers and languages, I'm a bit of an amateur - I wind up dabbling to get to where I'm really trying to go."
Motivation: Easier Maintenance, Better Scaling
The key reason that Nationwide have undertaken this effort is to be able to retire the proprietary material involved in the current live system in favor of that provided out of the box by .NET. Not only do they remove some 200,000 lines of C++ from the maintenance roster, but also the .NET equivalent infrastructure is more powerful, with better support for scaling and stateless operation than the current live system.
Translation: CodeDOM to the Rescue
This whole effort relies on the ability to generate the .NET code automatically. This is made possible by the fact that the current live system is written in a proprietary script language, for which Nationwide have both a parser and runtime support. The generator takes the tree produced by the proprietary parser, and uses the .NET CodeDOM to generate Visual Basic .NET code.
One consequence of using the CodeDOM is that the generated code could just as easily be produced in C#, just by changing a few lines of code in the generator. The same thing could be done for any system for which high quality, complete metadata is available â in the Nationwide case this just happens to take the form of proprietary script language.
100% Generated Code
Dave Green reports that the new application is 100% generated. "What we're working on now is automatically correlating the output of the .NET code and the old application. We're taking extensive debugging snapshots of both applications and comparing them. We'll eventually put the entire new application through the acceptance test of the original, and automatically verify its correctness without examining any generated code at all."