Unified Modeling Language

From GSLISWiki

Jump to: navigation, search

From Wikipedia, the free encyclopedia.

"In software engineering, Unified Modeling Language (UML) is a non-proprietary, third generation modeling and specification language. However, the use of UML is not restricted to software modeling. It can be used for modeling hardware (engineering systems) and is commonly used for business process modeling and organizational structure modeling. The UML is an open method used to specify, visualize, construct and document the artifacts of an object-oriented software-intensive system under development. The UML represents a compilation of "best engineering practices" which have proven successful in modeling large, complex systems, especially at the architectural level."

Go to Wikipedia for a more thorough description, including some sample diagrams.

UML is maintained by the Object Management Group

[edit] UML in practice

In practice, class diagrams are much more used than any of the other diagrams. Also, some diagrams are not widely used, such as Collaboration diagrams and are being phased out in the new version of UML, 2.0. UML is technically non-proprietary, but practicioners use a variety of proprietary modeling tools which support different versions of the specifications, causing some compatibility problems between toolsets. They also tend to be expensive if they support code generation.

The industry standard UML modeling tool used to be Rational Rose. After Rational was purchased by IBM they released the Eclipse-compatible 'upgrade' Rational XDE, which doesn't support collaboration diagrams, the metadata model within Rose, and Rose scripting, which makes upgrading very difficult. IBM released in December Rational Software Architect which is supposed to address some of the problems with XDE.

UML isn't universal, and complex models are notoriously difficult to maintain. Since they usually represent complex code they add an additional failure point in a software application lifecycle. There are competing software engineering methodologies such as eXtreme Programming and Agile which focus on faster code development cycles instead of structured modeling.

Personal tools