Chapter 1. Introduction

Umbrello UML Modeller is a UML diagramming programme which I am developing using an open bazaar development method. It is written in C++ and uses the libraries available from KDE, the K Desktop Environment for Unix. My project consists of both developing the programme and managing the other developers and users.

1.1. Background and Context

1.1.1. UML

UML is The Unified Modelling Language[uml-specification], a specification for creating diagrams to model software systems. It was created as an open standard and based on best practice and experience from previous software modelling languages. The original authors of UML - Booch, Rumbaugh and Jacobson - had each previously independently devised their own software modelling techniques called OOSE, OMT and Booch. By 1997 they had created a unified language which became UML. UML is now standardised by the Object Management Group who develop a number of technology standards in the area of distributed computer technology, notably CORBA.

Modelling is instrumental in developing software of any significant complexity. It allows a scale of abstraction from the problem which is significantly higher than any programming language. It is used in the stages of development that bridge the requirements and the implementation. Using UML as a standard language ensures that all developers working on the system can understand the diagrams.

In theory UML is independent from the implementing language, although certain aspects of it can be considered to be more similar to Java and C++ than other languages. It is entirely based around the object orientated paradigm and unsuitable for other language styles.

UML defines several "views", i.e. diagram types, onto a single model of the system and a model can have several different diagrams of the same type showing different parts of the system, different layers of abstraction of the system or areas of the system at various times during its lifecycle.

There are 9 diagram types in UML. They fall roughly into what is called the 4+1 categories of logical, process, development, physical (deployment) and scenario. Scenario is the +1 view, the use case diagrams created for this view are said to be laid over the top of the others because the use case view motivates the architectures in the other views while not being directly related to the implementation.

As an example of how UML is used, here are some diagrams from a previous project of mine:

A Use Case Diagram - the pilot is an outside user and is associated with a scenario which will occur as part of the program

A Class Diagram - a single class used in the program

A Sequence Diagram - models the method calls

These diagrams indicate how UML is flexible enough to be able to show different abstractions of the final programme. The use case diagram has no direct relationship to the final code but instead gives an idea of the interactions involved. The class diagram gives an outline of the classes involved while the sequence diagram goes right down to the level of showing which methods are called. In theory a program could be created entirely from UML without ever touching code but in practice implementation details mean this is not possible.

UML itself is defined in a higher level modelling language called The Meta Object Facility[mof]. MOF diagrams look a lot like UML although there are some inconsistencies between the two. MOF is also used for other modelling languages such as The Common Warehouse Metamodel.

There is an XML language called XML Metadata Interchange[xmi]. XMI is a container specification which can be used for arbitrary metadata models. Specifications of XMI exist for MOF and UML.

1.1.2. Bazaar Development Method

Umbrello is Free Software. This means it can be freely distributed (and sold) or modified by anyone who has a copy of it. The bazaar development method, which was first formally introduced in The Cathedral and the Bazaar[cathedral-bazaar], capitalises on these freedoms to allow controlled contributions from any interested developer. Developers are motivated by the desire for a programme which they need and which is of a quality they find acceptable to use. Because developer motivation is for the end result (rather than because they're paid to do it) the final software is often of a higher quality than proprietary software. Software developed in this method is typically more secure and stable compared to proprietary software because of the larger number of developers - "Given enough eyeballs, all bugs are shallow"[cathedral-bazaar]. With enough people looking at the code, problems will be quickly recognised and fixed. It is also one of the few development methods to overcome the limitation cited in The Mythical Man Month[mythical-man-month] that adding more developers to a project will only make it later; because the developers work in their own time their learning of the system does not significantly impact on the work of more advanced developers. New developers can help each other and work at a pace with which they feel comfortable.

One of the first and most successful projects to use this method was Linux, a Unix-style operating system kernel, and there have been many other successes since then.

1.1.3. Umbrello UML Modeller

UML Modeller (as it was originally called) was written by a university student as part of a final year project. I joined its development in early 2001 at the time of its first public release when I found it lacked some features I required and created binary packages for it. Over the next year development on the programme was inconsistent: a number of features were added but unpolished and the file format was changed but development was not actively encouraged. The author would sometimes not be heard from for several months and there were no new releases. The original author left in the summer of 2002 and gave me full permissions over the project in September.

Umbrello is first and foremost a UML diagramming tool for developers. It is not a toy or a research vehicle. It is the most advanced Free Software tool in its class and in terms of features is beginning to compete with its commercial competition. It consists of over 65,000 lines of code including comments and is made up of almost 300 files/classes. It is currently ranked in the top 10% of Sourceforge.net projects for activity, even though most of the development now occurs outside of Sourceforge.net.

It is hard to judge the number of users but the latest version has had over 10,000 individual downloads and its inclusion into KDE will increase the number of users considerably. The number of active developers is almost as hard to tell but numbers at least half a dozen. The developers mailing list has about 450 postings a month.

1.1.4. Technologies Used

Umbrello uses a number of technologies and resources. It is written in C++ for Unix-style operating systems. The libraries used are almost all provided by KDE[kde] which itself is build on a cross platform widget set called Qt made by Trolltech[trolltech].

The programme is hosted at Sourceforge.net[sourceforge.net], a site which provides web space, mailing lists, bug trackers and other resources to Free Software projects. When Umbrello became part of KDE some of the resources used were moved over to those used by KDE.