"What we don't like is needless complexity."
Richardson, Ruby, RESTful Web Services, 2000


"In reality, in even the simplest project, developers do some amount of modeling, albeit very informally. ... Even in the realm of disposable software … modeling can help the development team better visualize the plan of their system ..."
Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified Modeling Language User Guide, 2005


"Just as the transition from black-and-white photography to color is so profound, the transition from black-and-white modeling to color is an awesome one."
Coad, Lefebvre, De Luca, Java Modeling In Color With UML, 1999


"Object modeling addresses the 'what' of the business; its concern is only with what is to be built, never why or how. Prior to the object modeling session, a good object architect inquires about the 'why' questions, and raises a red flag if no one at the client site knows the answers. Clients not clear on their strategy are not ready to discuss what they want to build."
Jill Nicola, Mark Mayfield, Mike Abney, Streamlined Object Modeling: Patterns, Rules, and Implementation, 2001


"Inheritance was all the rage in the early days of object-oriented development. But over time, designers have discovered that inheritance is effective only within certain contexts. Composition, in tandem with interfaces … is far more common, far more generally useful, and much closer to the heart of good object-oriented design."
Peter Coad, Mark Mayfield, Jonathan Kern, Java Design: Building Better Apps and Applets, 1996


"When doing analysis you are trying to understand the problem. To my mind this is not just listing requirements in use cases. ... Analysis also involves looking behind the surface requirements to come up with a mental model of what is going on in the problem. ... Some kind of conceptual model is a necessary part of software development, and even the most uncontrolled hacker does it."
Martin Fowler, Analysis Patterns: Reusable Object Models, 1996


"Use case modeling, when used in isolation and performed incorrectly, may lead to certain types of problems.... the possibility of ending up with a functional model instead of an object model. … Use cases authored by different developers may describe the same thing differently. … When domain analysis is performed in conjunction with use case modeling, it reduces the risk of a functional design. … Domain analysis pinpoints the language to be used to create textual descriptions in the use cases."
Frank Armour, Granville Miller, Advanced Use Case Modeling: Software Systems, 2001


"The fundamental reason to use UML involves communication. ... Natural language is too imprecise and gets tangled when it comes to complex concepts. Code is precise but too detailed. So I use UML when I want a certain amount of precision but I don't want to get lost in the details."
Martin Fowler, Kendall Scott, UML Distilled: A Brief Guide to the Standard Object Modeling Language, 2000


Some notes about the Unified Modeling Language (UML)

The trouble comes when people feel compelled to convey the whole model or design through UML. A lot of object model diagrams are too complete and, simultaneously, leave too much out. ... Nor is UML a very satisfying programming language
Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software ---- (more words of wisdom on UML...)

Introduction to the Unified Modeling Language

The first five articles form a 5 part mini-series introducing UML to Java developers published on www.informit.com. Following this is summary information for UML 2.x

This is followed by articles on the UML 2.1. I use UML all the time as it is the best general purpose modelling notation for software systems available. However, there are things about it I'd like to change and one or two of them are discussed below.

UML Tools

In 2010 I spent some time playing with Altova’s UModel, Sparx Systems Enterprise Architect, and Visual Paradigm. For working with class diagrams, none of these are as easy to use as Borland Together, due to many little things like:

  • dragging and dropping attributes and operations form one class to another to cut or copy and paste.
  • not being bombarded with clutter around a class as soon a I select it
  • being able to select an attribute or operation without having to select it’s class first.

I used to complain about Together’s ease of use problems but I now believe starting I had it quite good, and I am still addicted to Together’s LiveSource approach.

I wanted to try IBM’s RSA but I had so many problems trying to install it that I gave up.

Follow me on Twitter...