Book Reviews

The following book reviews are the copyright of their respective authors and no part should be reproduced without the express permission of the author. Publishers and Authors of the books reviewed may reproduce the whole or extracts of a review for their book. To request copyright permission please email

All the reviews herein are the opinions of the reviewer and are not necessarily the views of Birmingham Perl Mongers and its members. If you feel a review or comment has been made in error, please contact to rectify the situation.

Other Books

Static Link:

Learning UML
Title:Learning UML
Author(s):Sinan Si Alhir
Publisher:O'Reilly Media
Reviewer:Jon Brookes

Attack of the Stick Men

An introductory section at the start of the two sections, 'Fundamentals' and 'Structural Modeling', gives an overview of what Unified Modeling Language (UML) is, together with a brief history of it's development. Referring back to this overview is useful in a first time reading, when wondering 'where does this bit fit in?'

UML is unsurprisingly based on the 'Object Oriented' paradigm and if the reader is uncertain as to the basic concepts of this, there is a walk through the ideas of this 'way of thinking' also in this introductory section.

As a 'language', UML is introduced as just that, as if having words, adjectives, sentences. There is very little 'case study' in the way the reader may have encountered in other 'Design Methodology' texts. Mostly, ideas are taken from generic concepts such as 'order', 'invoice', 'printer' etc and put together in short illustrative tutorial / lecture style. The reader would not find this text out of place as recommended reading that accompanies a series of lectures or seminars.

There are exercises that the reader, serious about the content, should pay close attention to at the end of each main section. This really is the only way to appreciate a language conceptually, whether in the case of UML or any programming language. Interestingly, the concept of UML as an extendible language is brought out in the last section, 'Beyond UML', where the idea of 'modularity', 're-use' and 'extending UML' is talked about.

The section on 'Use-Case Diagrams' puts across how this aspect of UML models who and what does what in a system and as such is a tool kit for modeling the world around us. The reader found this similar to the idea of 'functional analysis'. At this point it should be said - what diagrammatic tool set would be without stick men? The stick men are out in force in this section, all doing things, things that stick men do. I saw a lot of these stick men all the way through from pages 97 to 106 and that was just the start. There is much to know and appreciate about Use-Case diagrams such as 'generalizations', 'dependencies', and 'communicate associations'. All of which are discussed in depth and demonstrated - by the stick men.

Now on to 'Component and Deployment Diagrams. Having modeled the world to bits and stick men have done their thing, its time to plan the way in which we deploy our systems, the staging of this and it's dependencies. At this point it is good to do the exercises on page 117, before the Dilbert principles start to re-emerge into ones consciousness, and this all fails to be a useful tool to expedite the accurate and efficient design and deployment of new systems.

The latter sections deal with 'State Diagrams' and 'Activity Diagrams', which for this reader were the main reason for looking into UML, as they seem to be adaptable and directly related to the 'event driven' method of programming. This is very useful for designing and keeping track of the ongoing development of, for example, web applications. At least that is 'IMHO'. This technique is obviously fed to from the rest of the UML tools and techniques, but if page count is anything to go by, there is less of it than previous sections on the 'reality modeling stuff'. I would have liked to see more here and maybe even some pseudo code examples.

This book is in some way a disappointment to this reader, who found a lot of detail crammed into a small space with very long grammatically technical sentences. For a 'language that has taken the industry by storm' I somehow expected some 'success stories' or 'first hand experiences' of how this thing has worked well and maybe examples of how NOT to use it. Many sections start with 'I am going to talk about ...', and although not a nice thing of me to pick on, but I couldn't help feeling I was in an auditorium again madly scribbling down notes and thinking that this new skill is going to get me a job out there in computer land. Then going 'out in computer land' only to find out, some years later, that 'structured analysis and design' methods just AREN'T used, and far too many times programmers just 'hack into the next century' oblivious to the consequences. This is where there is perhaps an opportunity missed - to convince those not yet converted.

If the 'craft' of programming is to benefit those doing it and those it is done for, UML and techniques like it need to be more widely adopted and adhered to. Tools that properly utilize inputs from said tools should be more prevalent also. This text does not refer much to software solutions that 'harness' UML. This surprised me.

Just hope the stick men all get along and get the job done.

Should you buy it? Well, it's short and has a lot of detail in it if you already have the job of doing UML, but don't know all of it's bits and need to find them out fast. Yes, this would be good for that. But if you are looking to be converted / convinced / cogitated into using it you may need to do some other background reading - especially if you are doing a report to your managers to justify it's widespread use in your organization.

- Jon Brookes, Mar 2004