In-Depth

Wherefore and what now, UML?

Now in its second year as an Object Management Group (OMG) standard, the Unified Modeling Language (UML) is alive and kicking and gaining acceptance by modelers and tools vendors worldwide.

UML's latest version, 1.3, is not standing still but follows a set road map. Version 2.0, in the works, is moving forward to address mappings to a variety of languages and to increase component-based development support using CORBA, Enterprise JavaBeans (EJBs) and COM+. While the UML was formed to help designers work at a high level of abstraction, it is increasingly being combined with another hot technology -- Java. It seems UML may have found something of a soul mate in Java, particularly in today's distributed environments.

UML co-inventor Grady Booch, chief scientist at Rational Software Corp., Cupertino, Calif., and his wife are in the midst of building a house. Not surprisingly, perhaps, he sees that task as a means to draw an analogy between home building and the UML. In Booch's own words: "It would be inconceivable for us to give a pile of money to our builder and say 'Go build it; we'll see you in a year. Just give us a key when you're done.'"

As in software development, there is the long process of requirements gathering, development of the architecture, and then the implementation process itself. "Indeed," continued Booch, "it would be equally inconceivable for us to proceed without a set of blueprints, because they provide the vehicle for us to visualize what we're producing. They also provide a mechanism for communication with various subcontractors, as well as a mechanism for controlling change."

Likewise, the UML is the language of blueprints for software.

Encompassing everyone from business analysts to code warriors to networking people, the UML is a graphical language that maintains a relationship with traditional programming languages. "It's a language for visualizing and addressing issues that can't always be understood in complex systems by looking at the code," said Booch. It is also a language for constructing systems, which means both forward and reverse code generation for a variety of different programming languages.

How is the UML doing under the tutelage of the Framingham, Mass.-based OMG, and where is the language headed? Richard Soley, chairman and CEO of the OMG, credits the UML with creating stability in the marketplace with its single modeling standard. "Essentially, the entire marketplace and all the tools vendors migrated to UML over a short period of time because of OMG's neutral standardization process," said Soley.

Soley also pointed out the importance of realizing that the UML is not just a standalone specification. "Even when the UML was adopted in 1997, it was adopted with the Meta Object Facility (MOF), a repository API for storing and accessing models described in the UML," he said.

Last year, the eXtensible Markup Language (XML) meta data interchange language, XMI, was added to the suite of UML specs. XMI provides integration across repositories that can leverage the XML format in order to talk to each other.

The UML standard has also come to support interoperability between tools for the integration of best-of-breed solutions, Soley asserts. "For example, if you have one modeling tool that does a good job of reverse engineering and another that does a wonderful job of displaying a model on screen, you can expect, since both support UML MOF and XMI, that you will be able to do your reverse engineering with one tool and display the result in another," said Soley. He added that this also lowers development costs because you only have to train to one standard model, the UML.

"Although you've got stability, best practice and support for integration, the UML isn't standing still," promised Soley. "We continue to innovate; revisions and extensions are still underway under OMG's open neutral process. And this year, we've completed all the technical votes and are finalizing the formal votes to adopt the 1.3 spec for the UML."

There will also continue to be mappings between the UML and a variety of languages. For example, there is an effort afoot as part of the Java community right now to produce a UML Enterprise JavaBeans mapping. A mapping to deal with the needs of database administrators is also in the works.

Hello real world

The forward steps of UML are several. IBM Corp. has been using the UML extensively as part of its SanFrancisco frameworks undertaking. These frameworks are built with and documented using the UML, and IBM's WebSphere and VisualAge products have also adopted the UML.

In the real-time arena, pursuing one of the biggest UML undertakings to date, Boeing is developing its next-generation AWACS system, which entails the replacement of a very large Jovial system with some two to three million lines of C++ and Java code. The UML is being used as the blueprint. The work is being integrated by Boeing under a NATO contract, with a variety of contractors throughout Europe. The UML has proven especially effective in communicating across borders.

Efforts are ongoing to extend the UML to support Java, EJBs and all that runs in the Java world. UML Java mappings do exist and are supported within many modeling tools, including, to name a few: Rational Rose for Java from Rational Software; the GDPro visual modeling tool from Advanced Software Technologies Inc. (ASTI), Littleton, Colo.; TogetherJ, which provides UML support and round-trip engineering, from TogetherSoft LLC (formerly Object International Software), Raleigh, N.C; and Jvision, from Object Insight Inc., Ann Arbor, Mich., which automatically generates UML Object Model Diagrams from .java or .class files, enabling an iterative code/design life cycle.

According to Rational's Booch, it was part of the UML's design that it be expressive enough to support both forward- and reverse-engineering to Java. Within the Java community there is now movement to support Enterprise JavaBeans as well. "If you follow the specifications, the UML in some ways leads the EJB spec in that there are some facilities that the UML can cover in modeling that EJB has not yet addressed," said Booch. "Things like associations, for example."

A group involved with the Java JSR process, a separate specification process, is working on an EJB UML mapping that basically addresses the issue of developing EJB applications but modeling them in the UML itself.

The right tools

Until recently, tools support for Java and the UML has been somewhat lagging, perhaps due to the fact that the UML evolved from OMT and other methods where the tools typically generated C++. However, many more tools have moved to support Java; since the UML is well poised for object modeling, and Java is an object-oriented language, most in the industry agree that the combination works quite well.

In one of the industry's largest commercial Java implementations to date, Merant plc, Mountain View, Calif., developed its PVCS series of software configuration management products for the Java language from scratch. The project included somewhere in the order of a couple of thousand classes and several million lines of code.

"We were looking for a development environment that would allow us to support both Windows and Unix GUI development," said Kerstin Baird, user interface architect at Merant. "We had used other C++ toolkits before, but we saw Java's potential."

When the project was undertaken two- and-a-half years ago, modeling tools that supported the Java/UML combination were not readily available. When Advanced Software Technologies Inc. (ASTI) released Java support for its GDPro visual modeling tool, Merant brought the tool in just in time for the addition of new features and enhancements to the PVCS family.

Merant chose GDPro based on its interfaces, its focus on UML specifics, and its customization for code generation. The benefits of GDPro were immediately recognized. "In our original Java development project we drew our object models by hand using Visio and its UML extensions," said Merant's Baird. "Visio helps you paint a pretty picture, but that's all it's going to do for you. Using GDPro, we can take our design, generate code from it, do the reverse engineering, and try out some existing code to see what it's doing.

"We've used GDPro to successfully reverse engineer our entire application, which is a major feat in itself," she added. There have been a few issues along the way but, according to Baird, ASTI has been very responsive to those. "ASTI likes working with us because we have such a large body of Java code that pretty much any feature out there, or any nuance to the language, we've used somewhere."

ASTI and Merant have also been working together on forward engineering. "They're [ASTI] working on round-trip engineering for Java. I can essentially draw class diagrams, generate code from it, implement some features in the code and then go back to design, picking up any changes I made in the code along the way, and then go back out to the code again," said Baird.

All of Merant's Java development has some C++ in it as well, but there is a well-defined interface between where the Java leaves off and C++ picks up. The company has been able to generate and reverse engineer code for both pieces.

According to Greg Schottland, president and CEO at ASTI, Java is also going to be the birthplace of the next generation of component technology. "We've all been saying it would be great to have building blocks to build software, but the only place that's happening is in white papers today," he said. "But with all the attention on Java- Beans, EJB and the real use of components, we have a specification that every Java programmer knows about. It's clear to us that component-based development will be realized in Java like never before."

Another Java/UML fit is for those folks developing Java applications under the timeframe of the Internet world, where six months is equal to 10 years of clock time. People are under pressure to get things done quickly and, in many cases, they are starting new applications.

This makes it necessary to bring design in up front. "People are at a point where they're willing to look at things they haven't looked at before, because they have a real need to do it right and to do it faster," said Schottland.

For Schottland, the reverse engineering side is exciting. "For example, I have a Java application and I want to understand it. I need to take that Java code and produce some models. The UML is great here, in that it gives greater visibility into an application than you have by just looking at the source code."

Steve Perry, systems architect at Acxiom Corp., Conway, Ark., agrees that the UML and Java dovetail very nicely together. "Object-oriented development is here to stay, and so is the Web," maintains Perry. "The Web has changed the way people do business, so we're going to have to change the way we do software to match that. I think Java is one way we can do that."

Perry, a UML evangelist, takes object-oriented development using the UML very seriously. "Using UML is a good thing; you can certainly do object-oriented development without using the UML, but I wouldn't recommend it," he said. "Java, being a pure object-oriented language, definitely fits in; if you're going to be doing any Java down the road, you really need UML to do it."

The biggest benefit of UML, according to Perry, is that you can use a single common language all the way through your development process. "What that means to us is that when we get ready on the back end to do the engineering, it gives us a complete picture of what our requirements look like, along with traceability," he noted.

Acxiom Corp. provides data products, data integration services, mailing list services, modeling and analysis, and information technology outsourcing services to companies worldwide. Acxiom uses the UML in its development projects, which to date have been C++-based. To provide data to customers in new ways such as via the Internet, Acxiom is branching off into object-oriented programming and has been looking at Java.

"As an architect, I see a huge benefit in using the UML," said Perry. "You need to use it from the get-go, from when you're initially talking to customers. Then move it into analysis and
design. This gives us a common language for building software blueprints, which is important.

"People like to draw pictures, but we've never had a standard way to do that," continued Perry. "For example, when someone gets up to draw something on a whiteboard, some folks draw blocks, while some draw blobs. There's no standard way of unambiguously communicating a message through the picture that's being drawn."

With the UML, people can draw a sequence diagram if talking about how objects in the system might interact. "No code would even have to be written yet, but we're starting to think through our system. We have a language for communicating our artifacts as we move through the process, so it's more seamless," said Perry. "We don't just throw things over the wall, leaving people to wonder how we got here."

This provides a more seamless transition from one development phase to another, and also provides traceability. "If done correctly, one can track all the way back from where we are today to the original requirement," said Perry. "Engineers need to know where something came from and why we need to do this. If they can see something that's an actual user equirement, we're going to wind up with better software. Software that doesn't meet the users' needs is useless, and most times the problem is that we're not communicating."

More tools support

While Java and the UML have been successfully implemented together, is this a match made in heaven for tools suppliers with roots in other languages? According to Jeffrey Hammond, product manager at Rational Corp., it is.

"We're still selling a bit more to C++ developers right now, but it's been around a bit longer," said Hammond. "But I can see Java actually being the dominant language for our product where we are selling modeling tools.

"Of the various languages available for implementation -- VB, C++, C and COBOL -- Java probably maps the best to UML," continued Hammond. "Java interfaces map well to UML interfaces, and Java packages map well to UML packages -- it's a very clean mapping. In terms of expression, Java's a great language to work in with the UML."

For Rational, Java/UML support has meant creating a mapping document. "We line up all the different entities and concepts in UML and in the language we want to support, and then we map all those things," he noted. Success can depend greatly on the language itself, "But with Java, it was mostly drawing straight lines from package to package and from interface to interfaces, and Java class to UML class operation attributes," said Hammond.

While this straight line mapping approach works just fine, "There are some more in-depth things that can be done," said Hammond. "Java has things such as exceptions and errors that are really just classes, and that's what they're mapped to right now for us in the world of UML," he said. "But you could conceivably introduce additional stereotypes in UML to support those types of constructs."

Compuware Corp., Farmington Hills, Mich., has also worked with the UML approach for some time and links to the Rational Rose modeling tools with its Uniface 4GL environment. As an open environment, Uniface also supports Java.

A push for XMI

Dr. Guus Ramackers, product manager at Oracle Corp., Redwood Shores, Calif., pointed out that Case tools and modeling tools have never been able to communicate very well, even with efforts such as AD/Cycle and CDIF. Today, tools vendors are being asked by some customers to support the UML and XMI, which uses a standardized format to allow each tool to build a bridge to import/export XMI.

There are big advantages to the UML and XMI, according to Ramackers. "Users can migrate their model to a new tool any time, with no lock-in," he said. "Users can also make use of a suite of tools to address their problems, and there is no loss of information when going from one tool to another. This also facilitates round-trip engineering.

"I think the reason the UML is so successful in distributed systems is because it allows you to not just define the systems interfaces, but to also define the business logic behind those interfaces, in a standardized manner," continued Ramackers.

There are some real implementations. Virtually every major CASE tool is supporting the UML in some form. The notation is there, and increasingly the model is being supported. Not all tools support the XMI interchange format, but a very broad base of vendors have committed to UML and XMI. More support for these technologies should be seen in the next six to 12 months.

Of course, there remain some of the usual complaints heard throughout Java's brief lifetime -- performance and availability of different virtual machines are commonly cited. UML may not immediately help here. In fact, some designers are quite naturally suspicious of high-level tools such as UML, simply because they allow people to work more abstractly with their code.

Tower Technology, Austin, Texas, has moved to resolve some of those performance problems. Having decided in 1996 that Java was the language that could replace the bulk of C++ programming on the server, the company moved to "dress up" the language to improve certain performance issues.

Tower Technology offers TowerJ in the Java deployment space because people want to use Java for productivity gains, but they also want C++-like performance. There is no direct involvement between TowerJ and the UML because TowerJ uses Java Byte code as input. A compile process separates TowerJ from the UML, which is geared to work with development tools to generate source code. The company does, however, recommend that its customers use the UML and iterative development.

In fact, the OMG has circulated requests for proposals (RFPs) that would offer a UML profile for scheduling, performance and timing (read: "real-time" UML). In the meantime, if companies have good compiler technology at their disposal to handle all the detailed performance issues, UML may free them to concentrate on an important part of performance: overall system architecture and design.

Using UML as a road map

In an update of UML activities, Cris Kobryn, chief technologist at the E.solutions unit of Dallas-based EDS, noted the following UML 1.3 highlights: complete specification of activity graphs to improve various business modeling techniques; refactoring of the definitions of relationships, which will make them easier to learn and apply; and the architectural alignment of UML with the MOF and XMI facilities, which will make it easier for tools vendors to support meta data repositories and model interchange.

What is next for the UML? The Revision Task Force is working toward UML 1.4, which will include the refinement of extension profile mechanisms to improve support for user customization, as well as simplification and clarification of collaborations modeling.

The next major UML revision, 2.0, is
expected to be out sometime in 2001. This revision will streamline the kernel and further refine its alignment with other technologies. To increase customization options, there is also a plan to further refine the extension mechanism. Component-based development support will be increased in support of CORBA, EJB and COM+. Support for modeling enterprise architecture views will also be improved, and new mechanisms will be defined for model versioning and diagram interchange using XMI.