Object-Oriented Analysis and Design

Sarnath Ramnath and Brahma Dathan

Published by






Reviewed by

Kawal Banga MBCS CITP CEng


9 out of 10

I’ve avoided doing a course or reading a book end-to-end on object-oriented analysis and design, or OOAD for short, until now.

I was pleasantly surprised how readable this book was, even for someone with my limited knowledge and hands-on experience of Java (albeit I did study basic Java on an MSc course many years ago, and write lots of Java code). However, I wasn’t taught OOAD!   

The authors claim to have written the book in response to having taught OOAD at universities for over 10 years, but never having come across a book that provided a comprehensive introduction to OOAD. I think they might have succeeded, although I haven’t read any other books on OOAD to make a comparison against. 

Now, this book has taken me the most time to review (sorry editor!) of all the books I have ever reviewed for BCS. That’s because it has Java code to explain all of the OOAD concepts, and I insisted on understanding most of the code.

I would say that about 25 per cent of the book is Java code. Now, this may be off-putting for those who don’t know Java and have no desire to learn it, but as the preface states ‘The reader not familiar with Java ... can get a good feel of the entire OOAD process even without examining the code’.  

The book is clearly aimed at undergraduate students, but I would suggest it is useful for anyone wanting to learn OOAD, particularly practising or budding Java programmers. 

The book is written in three parts. Part I covers the basics of OO; Part II covers OO analysis, design and implementation, and also refactoring; and Part III covers some more advanced design issues. 

There is a very useful 15-page introduction to Java in Appendix A, which all those who are not familiar with Java should read first. Also, the book covers a fair amount of UML - use cases, interfaces and a host of UML diagrams including, but not limited to, the activity, sequence, structure and state machine diagrams. 

About 15 design patterns (e.g. Iterator, Singleton and Adapter), which are implemented in Java, are also covered. A whole chapter is devoted to software architectures, also referred to as architectural patterns. The MVC (model, view and controller) architectural pattern gets an in-depth discussion, and the repository, the client server and the pipe and filter patterns get a brief mention.

The book is certainly singing the virtues of the principle of ‘good design leads to good code’ and OOAD certainly is supportive of this. A chapter is also devoted to finite state modelling, as it is claimed that use cases are inadequate for modelling systems whose behaviour depends upon what state the systems is currently in. The software operation of a microwave oven is used as a detailed example of applying OOAD using finite state machines.

The final chapter is devoted to the OOAD of a distributed OO client/server application system. This is addressed using two alternative approaches - using Java Remote Method Invocation (JRMI) and as a web-based applet using HTTP POST and GET commands. 

Some useful examples are used throughout the book to illustrate the concepts and a much longer case study, a simple library system for issuing books, is used throughout most of the book to illustrate the OOAD analysis, design and implementation process. There are also some very useful discussion, further reading and exercise sections at the end of each chapter.   

Is this book perfect?  Well, in terms of content, surprisingly, there is no concluding chapter! Also, I found the high level (one or two sentence) descriptions of some of the design patterns to be not as good as those that originally appeared in the classic book 'Design Patterns' by ‘the gang of four’, Gamma, Helm, Johnson and Vlissides.

In terms of cosmetics, the quality of the print is occasionally poor in that every so often, a letter is poorly printed, e.g. fading or flowing into another letter. However, this is not to the extent that anything is unreadable. There were also a few typographical errors.

A book on OOAD that is also an introductory text on Java, UML, design and architectural patterns and software architectures is a bargain not to be missed.

Further information: Springer

February 2012