Whitehorse Rides to Modeling's Rescue

Modeling has enormous potential, but software modeling tools are too complicated and little used. Microsoft aims to change that with Whitehorse.

The promise of modeling has always been enormous, but it's a promise that has been under-realized.

So many software projects fail when moved into production that it would behoove companies to do more to ensure they were designing a viable application before the app's code is written. It would be even better for modeling to generate the code for the application from the model, thus ensuring that what is modeled is exactly what you get in the final product. And there are several high-end applications on the market that rely on industry-standard Universal Modeling Language (UML) to model and design applications to do some of that work for you. However, you still have a lot of work to do at this stage of the process—enough so that the promise of modeling tools remains unfulfilled.

UML is a powerful enabling technology—and a bottleneck. For example, UML is language-agnostic, which has both its positives and negatives. On the positive side, it lets you design applications based on the best design, abstracting away the language entirely. You can adapt your model to the infrastructure you have in place. But on the negative side, the models you create have no intrinsic relationship to the infrastructure you're using. It's often a bit of a kludge to represent the information in your model exactly the same way in your application.

The biggest problems occur once the code described by the model is created. You must reflect the changes you make in the code back into the model, so they remain in sync. This is critical because if you ever want to overhaul or make changes to the application, it would be ideal to do so from the model level, not the code level. This means the model needs to be in sync with the code level, or you're going to be creating a great deal of extra work for your programming teams. However, the effort required to keep the application and model in sync can quickly spiral out of control, to the point where it's not worth the effort.

Few companies even try. FTP's own research indicates that fewer than 5 percent of developers take advantage of modeling tools. Industry analysts cite a similar number, leading to an inescapable conclusion: The promise of modeling tools is not being fulfilled. It takes too much effort to use them, and they are too complex for everyday developers to take the time to learn their intricacies and their idiosyncrasies.

Microsoft aims to change this in the next version of Visual Studio .NET, code-named Whidbey. Whidbey will ship with Whitehorse, which includes three separate modeling tools intended to simplify modeling in general and create service-oriented applications in particular. The three modeling tools are a class designer, a distributed service designer, and a logical data center designer.

Whitehorse's class designer shows you the structure of your Common Language Runtime code, lets you autogenerate code, and reflects code changes back in the model. One interesting aspect of Microsoft's approach: Your code and the model are always in sync. Microsoft says it achieved this by not relying on that modeling stalwart, UML. Keith Smart, an architect with Microsoft's Visual Studio Enterprise Tools Group, explained in a recent interview: "We [didn't use UML because we wanted to avoid] type mismatches while giving developers the ability to visualize what they're doing."

Whitehorse lets you look at the code and its underlying object model, as well as at your larger project and how the various elements and Web services fit together—including services you merely consume. The goal of the distributed service designer is to let you keep the designer in sync with the project structure in Visual Studio and the artifacts deposited in Visual Studio that represent the concept of a Web service, much as the class designer lets you keep your code and object model in sync. The final designer, the logical data center designer, lets you take a snapshot of your infrastructure and test whether the existing infrastructure supports the application you're building.

Together, the modeling tools that comprise Whitehorse attempt to bridge the limitations presented by today's modeling tools. If it works—and we won't know that for some time—it has the potential to change the way you program for the better, letting you focus on the business logic rather than the application's code plumbing.


comments powered by Disqus

Subscribe on YouTube