Unified Modeling Language

The Unified Modeling Language (UML) is a graphical language for designing and architecting object-oriented software. This language unified the techniques of three distinguished methodologists: James Rumbaugh, Grady Booch, Ivar Jacobson. The UML is standardized by the Object Management Group and was promoted by the Rational Software Corporation.

UML defines thirteen different diagrams that are divided into three categories: structural, behavioral, and interation diagrams. UML focusses on modeling of software, and version 1.0 models were considered non-executable. Despite this, many integrated development environments integrate some of the diagrams in with software development. Version 2.0 of UML adds the Object Constraint Language which allows rules be defined on elements. The Object Management Group also promotes Model Driven Architecture (MDA), in which models can be transformed into other models and ultimately into software. The OMG defines an XML Metadata Interchange format (XMI) which allows UML models to be saved to files.

UML is no longer tested in the SCEA exam, but it is an essential skill tested by the SCEA part 2 project. In this project you are given a business domain model and a set of Use Cases. You must design a system to accomplish these requirements as four types of UML diagrams:

  • Class Diagram, showing the system's static classes and the relationships between them.
  • Component Diagram showing how functionality is split between major software components.
  • Deployment Diagram defining the hardware setup of the system.
  • Interaction between components defined by Sequence Diagrams or Collaboration Diagrams. These diagrams show the same information but in different formats. Collaboration diagrams are no longer part of UML in version 2.0.

This project defines an architecture similarly to Philippe Kruchten's "4+1 View Model of Architecture". In this methodology, an architecture is defined by the scenarios (use cases) and four design views:

  • Logical View: describes the organization of static software modules.
  • Development View: addresses the functional requirements of the system and identifies major design packages, subsystems, and classes.
  • Physical View: Shows the executables and run time components mapped onto underlying platforms.
  • Process View: Addresses the concurrent aspect of the system at run time.

UML Tools

UML has been around for over ten years, so you'd think that there would be a lot of excellent tools available. Unfortunately, UML is a complex graphical language, so all of the tools exhibit some frustrating user interface problems. The market for UML tools is relatively small and specialized, so the free tools tend to lack many functions and the commercial tools tend to be extremely expensive.

Here is a short sample of potential UML editors:

Tool Platform Price  
Violet Java and Eclipse Free Easiest tool to use.
Doesn't generate deployment or component diagrams. Doesn't export XMI.
ArguUML Java Free  
Poseidon CE Java $56 per year Commercialized version of ArgoUML.
MagicDraw PE Java $149  
NetBeans UML NetBeans Free Plug-in to Sun's NetBeans IDE.
Doesn't generate deployment or component diagrams at this time.

Sample Architectures

On its own, the SCEA project isn't a particularly challenging development task. However, it's not enough to design a system that accomplishes the requirements. Instead, you must demonstrate that you've learned Sun's model of JEE 5 design, and express that design in the way that the graders are expecting. As such, it would be helpful to see an example or two of JEE architecture.

The SCEA Study Guide by Cade and Roberts contains a case study sample of architectural design. This book cover's the J2EE version of the SCEA, but the authors may be working on an update for JEE 5.

When Sun first debuted J2EE, it also provided the Java Pet Store Demo as a prototypical enterprise application. This program has taken a lot of criticism and the Pet Store probably contributed to the unpopularity of EJBs. To Sun's credit, this application has been cleaned up and updated for JEE 5. It now demonstrates JPA and JavaServer Faces as an Web-centric application.

Another sample from Sun is the Java Adventure Builder, which is a Web-centric GUI coupled to an EJB back-end, and utilizes web services. The Adventure Builder is written for J2EE. It is a bigger, more ambitious program than the Pet Store.

Suggested Reading

  • UML Distilled, 3rd Edition by Martin Fowler
    Everyone has this book on their shelf. It's short and is a good introduction to UML. Possibly it's a little too introductory, and doesn't include as many examples as a person would like.
  • UML 2.0 in a Nutshell, by Dan Pilone.
    Really excellent introduction to UML with many examples.