Computing Topics
Scotland   
The rest of the World   
Me again
The Unified Modelling Language
Background
The Unified Modelling Language or UML has been developed as a
notation for software engineering by Grady Booch, James Rumbaugh
and Ivar Jacobsen of Rational Corp. These three engineers each
had published object oriented methodologies and there were
strongly divided opinions amongst OO practitioners as to which
methodology was best.
To avoid these wars escalating the 'three amigos' got
together(over a period) and produced a notation which
encompassed the best of their individual notations and which
worked with most OO methods. The notation was gradually refined
and extendeed and now forms a basis for almost any kind of
software engineering approach whether OO or not.
Strengths of UML
UML has several strengths which lift it above any of the
methods and notations which preceded it:
- Breadth of coverage
    
 - UML covers the entire software lifecycle from
    requirements capture through to physical design and
    deployment. It encompasses both dynamic and static elements
    and provides focus for both timing critical and data
    critical systems.
 
- Standardisation
    
 - UML has brought together the 3 main strands of OO
    notation. It has also been accepted by Coad who was a
    minority player. Only Schlaer-Mellor stand apart from UML.
    Standardisation of notation is vital for the software
    industry if it is to move on to more important topics and
    start to share ideas in a consistent way as other
    engineering disciplines do.
 - Industry backing
    
 - Most tool manufacturers, recognising both the weight of
    support and the advantages of standardisation, are providing
    UML support in their CASE tools. More will surely follow.
 - Extensibility
    
 - UML provides a mechanism for extending the notation by
    means of 'stereotypes'. This is undoubtedly a good thing but
    does lead to some unfortunate side effects(see below).
 
Weaknesses of UML
UML has in my opinion three serious deficiencies:
- Lack of Graphical Separation
    
 - UML uses a relatively small number of shapes to
    represent a large number of concepts. This homogeny results
    in diagrams where it is difficult to determine content
    easily. It is even at times difficult to determine what the
    diagram represents at first glance(classes or objects,
    static or dynamic relationships)
    
 - Overuse of Stereotypes
    
 - This is a related point to the above but takres it a
    stage further. Many of the design elements which had a
    distinct appearance in the individual notations have been
    merged and separated only by the stereotype notation.
    Examples include: metaclasses, class categories, interface
    classes etc. The result is that diagrams cannot be easily
    understood visually but rather individual labels must be
    read to distinguish the nature of the items. As mentioned 
    above stereotypes are a great way of adding new 
    features to the notation but they should not be used for 
    fundamental OO features.
    
 - Reduced emphasis on Physical Design
    
 - Despite Booch providing a rich and useful set of icons
    for physical design, and the fact that none of the other
    notations offered anything similar UML has removed many of
    these leaving only the package (sometimes stereotyped as 
    a subsystem, and possibly with COM interface lollipops) and
    the Node(whether active or passive) Tasks, processes,
    interfaces, implementation, module have all gone the way of
    the dodo. Physical design is often neglected by software
    engineers and this de-emphasis in UML can only encourage 
    that trend.
    
Practical Experiences with UML
In balance I believe UML to be a good thing. I have used it
on several small projects and most recently I have documented a
large non OO system using UML. Primarily I used the Physical
notational elements although State charts and even Object and
Class diagrams were occasionally utilised to illustrate
concepts.
Feedback, even from those not familiar with UML, has been
positive and reinforces my belief that UML can form the basis of
a Universal Modelling language for the software industry whether
describing OO systems or not.
As CASE support improves and the computiung press continue to
use UML in articles practitioners will become familiar with the
notation and use it. Hopefully we will soon be able to compare
designs with the same ease that electronics and civil engineers
have done for decades. 
Send feedback on this article to me 
 here