The promise of object-oriented programming tools has been to separate the different components of writing applications – business logic, user interface, and data access methods, such that they can be reused and can evolve independently of each other. But programmers have often felt stymied by the immaturity and difficulties encountered in using these tools as a way of transitioning existing software applications into the Internet age.
After one such transition, one such developer, Joe Buffington, CTO of Geranos Solutions, a software architecting consultancy, promised himself he would not take on another similar task. But, using the IdeaBlade DevForce 3.0 Object Relational Mapping tools, he has discovered that this kind of transition is much easier than it used to be.
Buffington said, “I swore I would never do it again. It is painful trying to take an application that robust and feature rich and trying to do it in a new technology.” At the time, he used PowerBuilder, a popular 4GL tool from Sybase that came with a user framework. All he needed to do was build the business object framework. He said, “It took a lot of time to build business logic and business objects. Trying to map business objects to relational objects is not easy.”
He has been working on revamping a set of applications for the construction industry that dates back as much as thirty years. This includes some original client/server software, along with two other major pieces the company has acquired, which all provide different kinds of best-of-breed functionality for the construction industry. Some of these different pieces have overlapping features, and the company wanted to create a single application that included the best features of all three, and which could evolve to support newer interfaces over time.
When the first application was written over 30 years ago, it did not have a relational database, and the user interface was not as robust as what is possible with the current generations of operating systems.
Other tables, other screens
The application itself has 400-500 tables and hundreds of different screens. Buffington said that because they have three different applications, and each one has things it does better than the others, they wanted to create a single application that included the best of breed features of the three. He noted, “It is not as simple as reverse engineering the code and slapping on a new user interface. There are a lot of requirements gathering and analyzing similar modules and in some cases, they are introducing new features they could have never done before because of the limitations of the technology.
Buffington wanted to find a business object framework that would allow him to build business objects consistently and have verification and validation, and could talk to the data access layer between the object model and the relational database. He also wanted something that would support C# and .NET 2.0.
“The more I got into the ORM tools and mappings, the more I was impressed than five to eight years ago when they were unsophisticated and hard to use,” he noted. “Anyone can build an ORM mapper that maps employees, customers, and sales orders. What becomes more difficult is when you are trying to have business objects relate to each other and have an inheritance chain.”
“Sometimes you have different types of relationships, sometimes more than one object, and sometimes many to many object relationships,” he continued. “A lot of the times, the tools did not handle that well.”
Since then, the tools have matured. Buffington explained, “What I found now, especially with DevForce version 3, was that it was extremely easy to take a relational database, map it to business object and put in the business structures, and they provided a way to link business layers to the UI layer. If I had to build this from scratch, it would have taken a team of a couple of developers three to six months before we got it do what we wanted to do. Without this type of tool, even building a simple data entry form would have been complex. You would have to write code to select data from the database and create the right insert statements. Our programmers estimate we are saving 20 to 30% on development time because we don’t have to write all of the data access methods."
Front end caching
The application is being developed using Infragistics controls for the UI, which integrates well with DevForce. For the UI, the programmers only have to worry about putting the controls in the right place. Once the programming has been finalized, a UI person can select a single style for the whole application, and implement it using a single style sheet with one line of code.
One of the added benefits of using DevForce is that it has components that enable the client application to cache data on the client. This reduces the amount of traffic to the server by at least 50%, and also enables the application to run offline when the network is down or offline.
“What we do as an architecture team is transparent to the programmer in terms of how they are getting data. We can control how often data is cached and how often it is refreshed. This lets the programmer solve the business logic,” Buffington said.
Another feature that Buffington is excited about, but has not yet used is the ability to use the DevForce framework to redeploy the application across three-tiers. In this scheme, a .NET 2.0 Web services layer allows the application to be pushed to web clients or PDAs. He said, “Without any additional coding on my part, I can run this application on three-tiers for customers that need this.”