Inventing technology to fill the gaps
Countrywide Home Loans, the nation's largest independent home loan provider, has embraced component-based development in a big way, with an intranet-based loan origination application that is about to be rolled out to nearly 700 branches and 4,000 users nationwide. The system, based primarily in Visual Basic, C++, Web front ends, and back-end systems consisting of hundreds of local SQL Server databases, is fed from an AS/400 source.
A prime driver for the use of components was that they were flexible enough to allow Countrywide to work around bandwidth and server availability constraints. "Components can provide key functions, while allowing us to retain the luxury of deploying them anywhere as part of a multitier solution," said Michael Moore, senior MIS vice president.
But that flexibility came at a price, primarily because Countrywide jumped onto the component-based development bandwagon before the bandwagon took off. It often found itself in the position of inventing technology to fill the gaps.
Countrywide began its next-generation loan origination system more than two years ago, developing an application based on OCX controls, the forerunner of COM/DCOM components. It proved a bleeding-edge exercise. For starters, the goal was to take the power and flexibility of client/server to the Web environment. The application required hundreds of input fields at a time when the typical upper limit for a Web page was at most 20. Because data input was complex, it required a way to maintain database connectivity, a function taken for granted in the Windows environment, but not possible from one HTML Web page to the next. The solution? Countrywide had to develop its own system for maintaining transaction state before Java or other Web development tools had such capabilities available.
The firm would have liked to use object modeling to design the application. It briefly used Rational Rose from Rational Software Corp., Cupertino, Calif., before the tool developed the ability to generate Visual Basic code. Countrywide would have also liked a development environment that could generate OCX, later ActiveX/COM wrappers, automatically. At least it got that capability in midstream, when Visual Basic 5 and Visual C++ came out.
Still, the company had to cross the minefield of what Moore called "DLL hell," while mixing and matching internally developed and third-party OCXes. The problem was that third-party developers had incompatible versions that were not always updated to the current Microsoft standards.
Change management was a critical challenge, given the enterprise scale of the application. For instance, a borrower component used in more than a dozen screens often had to be augmented with additional properties (or attributes) in some screens. This, in turn, impacted previous occurrences of the item in other screens. It would have also been nice to have an integrated bug reporting and change management tool to deal with these contingencies. Instead, Countrywide had to rely on an internally developed Lotus Notes application.
Nevertheless, in spite of the lack of integrated, end-to-end life-cycle tools, the development team of more than 100 people achieved significant reuse of business objects. Moore gave the following example. Within a "collection" component, or super object, there are borrowers who each have a combination of assets, liabilities and employment histories -- items that are reused dozens of times throughout other parts of the overall loan application.
According to Moore, the big payback for reuse was not necessarily in putting the same items into multiple dialog boxes, but in the way it allowed the group to view the business in a more objective light. "The real benefit came from dividing the application into components that were meaningful to our business. They ended up being reused in ways that we never anticipated."
Tony Baer is principal with onStrategies, a New York-based consulting firm, and editor of Computer Finance, a monthly journal on IT economics. He can be reached via
e-mail at firstname.lastname@example.org.