Unified Modeling Language Simplifies Development Process
Even before the announcement that Windows 2000 would contain 30 million lines of code, it was clear to the computer industry that software has been getting bigger and more complex. Almost to the point where programmers are struggling to visualize the architecture of medium-sized development projects.
As this trend continues, application development tool vendors are building modeling features into their products to help programmers see their projects from a bird's eye view. Recent releases include Visual Modeler, a component of Microsoft's Visual Studio suite based on Rational Software's (www.rational.com) Rose modeling tool; BridgePoint 4.0, a Windows NT-based software development tool suite from Project Technology Inc. (www.projtech.com); and Visual CASE 6.0, an object-oriented design and modeling tool that integrates with Visual C++, from the Stingray division of Rogue Wave Software (www.roguewave.com).
Increasingly, modeling tools like those listed above are based on the Unified Modeling Language (UML), a standard created by the Object Management Group (www.omg.org) in November 1997. With UML, software designers can create a model of what they want to build by visually representing classes, behaviors, and relationships between classes.
Modeling has several benefits for developers working on large-scale projects. For, one it can make multitier development less intimidating, according to Michael Jones, Visual CASE product manager for Rogue Wave. "Development teams are getting larger and larger, and there's more of a thought process that developers have to do about where they're getting their data, what clients they're targeting," Jones says. "There have been so many people who have been talking about how modeling can help with large-scale applications."
Also, software built on an underlying model can withstand evolution, according Grady Booch, chief scientist at Rational Software and creator of the Booch Method of software design. "There comes a point if you have lost control of the architecture that it becomes so brittle that every time you touch it you have to rearchitect the thing," Booch says. "As you bring in new teams and adapt to new requirements, UML can provide a base architecture."
Many modeling tools are designed to generate code automatically. With Visual CASE, for example, developers can create classes in UML that can be automatically created in the Visual C++ development environment. "People are requesting modeling tools to be more productive," Jones says. "They don't just want a tool to draw diagrams. They want something behind those diagrams."
In some ways, designing a model with UML is similar to programming in a rapid application development (RAD) language like Visual Basic. But there are fundamental differences between modeling and rapid prototyping, according to Steve Mellor, founder of Project Technology and co-creator of the Shlaer-Mellor Method of software design. When building a rapid prototype, the developer creates a graphical user interface to demonstrate how the application will look to an end user. Models, on the other hand, represent the internal structure of the application and show the components needed to build it.
In the past, modeling was part of a formalized method of software design. In the 1970s and 1980s, a variety of methods competed for developers' attention. UML is a standardized language that is now being used in place of method-specific proprietary languages.
When Rational's Booch and others began working on what was to become the UML, they had planned to create a standardized method that encompassed not only the language but also the process of software design. Instead, they developed the UML as requested by the OMG. Independently, they created the Unified Process, which has not been adopted as a standard. Project Technology's Mellor thinks that it won't be, at least not yet. "I don't think it's time yet to standardize on a method because the methods are so different," Mellor says.
Booch agrees that it would be impossible to create a single method appropriate for every project, but he says it would be possible to create a framework that included universal elements of the design process that could be adapted to fit a particular project's needs.
Those needs depend on the kind of software being created. Software to run an air traffic control system requires a highly formalized process, but software for a kiosk does not. When creating disposable or standalone software, a formal process of any kind can be overkill, Booch says.
Today, modeling and the UML are being applied in some cases independently of a formal method. "We want to let them do their development how they want to do it," says Bill Loeb, Visual CASE development lead, when asked if his company's tool is designed to be used with a formal method.
For the most part, development teams rely on the "heroic programmer" method, which amounts to adding programmers as a project grows in complexity. But, Booch says, "heroic programming is not a sustainable business practice."
For development projects that rely on Microsoft tools, Visual C++ programmers are more likely to use a process or to use modeling than Visual Basic programmers. Microsoft's interest in modeling has grown in recent years, as shown by the Visual Modeler tool in Visual Studio. Microsoft was the first partner to join Rational in the UML effort, Booch says. "I don't think the NT class of developers are any more or less likely to use formal methods," he says.
As the use of modeling grows among both NT and Unix developers, so will the use of UML. "UML has absolutely monstrous market pull," Mellor says. "The adoption rate isn't very high yet, but it's going to grow incredibly fast."