News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 
Download Current Issue
ISSUE 2/1/2010 PDF

Need Back Issues?
DOWNLOAD HERE

Receive the print Edition?


 
blogs tab
Visual Studio 2010 Release Candidate Available Today
A Visual Studio 2010 release candidate is available on MSDN.
02/09/2010 09:45 AM EST

Is Microsoft eyeing Office subscription pricing?
Microsoft may be preparing to offer a new Office pricing option called "union," which charges the same for cloud as on-premises.
02/01/2010 09:38 AM EST

Facebook rewrites PHP runtime
Facebook is about to open source its own PHP runtime, written from scratch for speed.
01/30/2010 08:53 PM EST

 

Events calendar tab
2/9/2010 to 2/13/2010
San Francisco
IDG World Expo

2/10/2010 to 2/12/2010
San Francisco
BZ Media

2/17/2010 to 2/25/2010
Atlanta
Python Software Foundation

2/19/2010 to 2/20/2010
Los Angeles
SCALE

2/21/2010 to 2/24/2010
Las Vegas
IBM


 
Most Read Latest News Blog Resources

Learning UML 2




September 1, 2005 — 
It’s a paradox that object-oriented systems are both easier to maintain and more complex than procedural systems. That’s one of the reasons, I think, that I’ve had poor luck with hybrid/procedural systems. Hybrid systems seem to combine the bad points of both approaches (difficult maintenance and too much complexity) without the benefit of either.

Even pure OO systems are complicated, however, and without some sort of road map, it’s almost impossible to write, much less maintain, the code. That road map is, more often than not, a set of Unified Modeling Language diagrams that present the structure of the code in graphical form. UML underwent a significant extension last year, adding a bunch of drawing elements and tweaking the existing elements. These modifications were not met with universal praise.

Some of the elements, for example, are experimental. They are concepts that someone on the committee thought would be a good idea but which were not used in practice, and might never be used. Some UML users, including myself, worried that putting an experimental idea into a standard would add complexity without much benefit. Whatever your feelings on the new elements of UML, it will behoove you to learn about them.

Unfortunately, the official OMG UML 2.0 standard is literally thousands of pages of incomprehensible gobbledygook. (Get it from www.uml.org/#UML2.) It’s an interesting comment on the standard that Martin Fowler’s “UML Distilled, Third Edition: A Brief Guide to the Standard Object Modeling Language” (Boston: Addison-Wesley, 2004) presents everything of importance in 175 pages. Fowler’s book is a great way to come up to speed with UML if you’re already familiar with both OO and visual modeling. He just presents the notation, assuming that you already know the concepts the notation represents. If you already know UML, this is the book for you.

On the other hand, if you’d like a more tutorial-based introduction to UML, the second edition of “The Unified Modeling Language User Guide,” by Grady Booch, James Rumbaugh and Ivar Jacobson (Boston: Addison-Wesley, 2005), just came out. Though Booch & Co. are a bit more academic in their language than I’d like, their presentation is solid, thorough, and like Fowler, vastly more accessible than the actual OMG standard. Booch’s book will be better if you’ve never seen UML before.

These two books complement each other nicely. Booch presents a better introduction for the uninitiated, and Fowler provides a better quick reference. (There are also a bunch of online UML references, including my own at www.holub.com/goodies/uml. Google “uml reference” to find others.)

The one downside to both of these books is that they present UML out of context. That is, they present the notation but don’t explain how you might create a UML drawing in the process of design.

Put another way, UML is just a notation, in the same way a sentence diagram is a graphical representation of a sentence’s structure or an ERD diagram represents the structure of a database. Learning sentence diagramming does not teach you how to write sentences. Learning Robert Martin's ERD notation does not teach you how to design databases.

Many people confuse “learning UML” with “learning OO Design.” Indeed, I am often approached by people who ask me to teach a UML class, when they really want a design-using-UML class. Learning UML is like learning the syntax of a programming language. Don’t confuse that with learning how to program.

If you already know how to design a database, then learning Fowler’s ERD system will be a snap. The drawings will make perfect sense to you, and you’ll intuitively understand what they’re for and how they work. If you’re new to databases, a book on ERD diagrams that simply explains the notation will seem incomprehensible. Similarly, if you already know how to design, learning UML is trivial, but without that background, it will be difficult for you to see the value in UML.

The drawback of books such as Booch’s and Fowler’s is that they can’t really put UML into context. This omission is not a flaw—it just goes with the territory. OO Design is a topic so large that it simply can’t fit into a single book. Learning design is as complicated as learning programming—it takes two or three years of solid work to get good at it.

Consequently, UML—and both books—will be difficult if you don’t already know why UML is useful. You have to learn UML in the context of learning OO Design so that you start with an understanding of the concepts the pictures represent. The Booch book does contain some discussion of process, but it’s sketchy. I’ll talk about a few good OO Design books in future columns. If you do know some design, however, I highly recommend Booch’s and Fowler’s books.

Allen Holub is an architect, consultant and instructor in C/C++, Java and OO Design. Reach him at www.holub.com.


Share this link: http://www.sdtimes.com/link/28816
 

Add comment


Name*
Email*  
Country     


  • Comment
  • Preview
Loading