Object-Oriented Analysis & Design

Lars Mathiassen, Andreas Munk-Madsen,
Peter Axel Nielsen and Jan Stage.
ISBN: 87-7751-150-6
Edition: 1st edition
Published: 2000
Pages: 456

Reviews by:

Dr John R. Venable   
Senior Lecturer
Curtin University of 
Technology
Alistair Cockburn
Senior Consultant
Humans and Technology
Salt Lake City, UT, USA   .
Stephen K. Smith
Senior Software Engineer
Campus Pipeline, Inc.

Review by:

Dr John R. Venable
Senior Lecturer 
Curtin University of Technology

This terrific book provides a clear and practical introduction to object-oriented analysis and design. It is based upon a clear and easy-to-understand conceptualization of the role of information systems andof their development. It combines this basis with a logical, coherent, and straightforward approach to development that addresses major development issues, including problem exploration and definition, user participation, social and organizational concerns, architectures without performance bottlenecks, as well as effective documentation. Most importantly, it emphasizes what is important over what is just window-dressing, addressing the rationale for why the method is constructed in the way it is. The book does all of this in a simple, readable style replete with concise chapter summaries and examples along the way and contrasting comprehensive case studies at the end.


Dr John R. Venable,
Senior Lecturer, 
Curtin University of Technology

Review by:

Alistair Cockburn
Senior Consultant
Humans and Technology
Salt Lake City, UT, USA.

I thought to write a short review of this book. I can't. These authors perform an amazing job in this college-level text, which will also be useful as a study guide to anyone short of a bona-fide OO design expert. As a sceptical, experienced methodologist, project consultant, and OO designer, I did not think it was possible to describe specific useful techniques for design, and also give the student useful information about the context of the project itself. Nor did I think it was possible to capture in one book the specificity of recommendations needed for college-level instructional material, with the openness of opinion needed for ongoing personal development, and also the hints for tailoring work habits to specific and varying projects.

This is a book written by people steeped in the OO design tradition, the socially aware "Scandinavian school" of software design, and the understanding of "methods" as an individual self-education process. They are expert in each of these areas, and it shows in the completeness, confidence, and openness of the chapters and the book as a whole.

The result is that the newcomer to object technology gets to see a portfolio of requirements, analysis and design techniques in a remarkably readable and succinct form. Brevity and clarity of developer expression is emphasized throughout (thank goodness!) and is demonstrated in the writing of the book itself. Woven around the specific techniques are notes and checklists for understanding where to tailor or supplement the ideas. The reader gets to see how a set of experts would view a project, what checklists they would use, as they think about whether the software should be developed with a dominant eye to the architecture or the application domain.

Those more expert will pick up good advice about how to tailor the design approach for different projects, and deal with user interface design. Those most expert will appreciate the uncanny subtlety with which the authors have balanced the needs of being specific with the needs of being flexible.

Beyond the obvious set of design techniques, here are five areas I particularly enjoyed seeing in the book: ...a small framework for recording out the social context in which the system will be built, as well as its technology, application area and responsibility; ...the steady reminder in each chapter to study recurring and useful "patterns", patterns that occur in the OO model, in its behavior, in the system architecture, even in the project setup. People who develop a habit of noticing useful patterns will get steadily better over time....inclusion of a screens-as-statecharts notation for describing the user interface flow. This is among the few books that includes this notation....the section on tailoring the developer's approach to projects. I expected handwaving, and found instead good and specific tips....notes for mapping the design techniques and notations to the different programming languages.

Frankly, I think everyone but the most experienced of my network of colleagues would benefit from studying the content of this book, since it is so rare to find social issues, architectural issues, and project-tailoring issues so neatly tied to the task of designing software. Far from "academic" (in the pejorative sense of "not having enough to do with the 'real world'"), this book superbly prepares the student for the real world. I think that the student coming out of a course based on this book will have in his/her working style a readiness to learn and adapt to project situations and technology, exactly as we need. I am really only worried that there may be a shortage of instructors who appreciate the value of the book's project-contextual content - it would be a waste to only teach the OO design techniques, and omit the lessons in keeping the techniques effective.

Alistair Cockburn
Senior Consultant 
Humans and Technology 
Salt Lake City, UT, USA.


Review by:

Stephen K. Smith
Senior Software Engineer
Campus Pipeline, Inc.

After 14 years of working with computers, from mainframes to minicomputers to microcomputers to LANs to the Internet, I am finally doing Object-Oriented software development on shipping code. It has been 14 years of hard work and endless learning, like the college years that preceded it. Effective and efficient learning activities are very much appreciated, given the demands of tight schedules and the ever changing technical landscape. When asked to review this book, it was with some reluctance that I accepted, being in the midst of intensive prototyping as part of Analysis and Design. However, at work, we are actively tuning our A&D and implementation processes, so I hoped there was a chance that reading this book might prove productive in light of those activities.

The Forward says that "It is written in a refreshingly mild style, open-minded and gentle and easy to read." A curious description to apply to a technical book. When I think of technical books, three purposes come to mind: (1) Teach you what you don't know; (2) Clarify and organize what you do know; (3) Provide a reference for easily refreshing the memory with the seemingly endless details that we have to deal with. It was with these three purposes in mind that I began reading. As I neared the end of the book, the description found in the Forward was understood and appreciated. The reading is easy, even when the concepts are new and not yet fully understood.

This is at once an academic work, a pedagogical resource, and a handbook for professionals. The Literature sections at the end of each chapter reference key works from many diverse authors. There are exercises for teachers and student in a classroom setting. It would make an excellent text in an upper level under-graduate or lower level graduate college course. And of course, there is plenty of easily applicable information of the kind that professionals need at their finger tips. Since the methodologies presented are not dependent upon any one set of tools, anyone doing OOA&D can benefit.

Essential elements of the methodology centered around iterative efforts and multiple views of the problem and solution spaces. The authors use the concept of a system context divided into a Problem Domain and an Application Domain. Since these terms were new to me, learning to differentiate them was not easy. The power of the division was easily appreciated as the book progressed. They play an essential role during analysis, architecture, and design activities.

Well known concepts are applied to the task of OOA&D throughout the book: requirements, criteria ranking for trade-off analysis, prototyping, cohesion .vs coupling, patterns, component and functional design, Use Cases, Events and objects, Business Rules, State Chart and Sequence Diagrams, Connecting Components, Aggregation .vs Inheritance, UML, strategy and practices, and the place of documentation in the process. Some purists with expertise in some of these areas may find the presentation in the book to be too brief in important areas. I don't think the role of the book is to be all things to all software developers, but to be the place where many tried and true ideas and activities come together, with a goal of improved software quality and reduced time to market. It shows how to use a lot of important tools together, with excellent results. Like the Lego blocks the authors use in an analogy, the book shows how various approaches can be brought to bear on solving the analysis and design problem in a flexible way.

A lot of things are best learned through a combination of theory and application, indirect and direct, lecture and experience. This book is no different. There are a lot of concepts in this book that need to be applied to be fully grasped. However, there is a wealth of holistic understanding presented here that would require many years of good experience to gain directly. Given the potential to do things poorly or be ineffective as a software developer, for various reasons, there is a lot to be gained from skipping some direct experiences and learn from other's experience. As I read the book, I felt I was being presented with the opportunity to save myself a great deal of time with experience, comparative reading, and synthesizing of ideas. That leaves me more time for assimilating the things that are best learned in a hands-on environment.

At the beginning I indicated that I hoped there was a chance that reading "Object Oriented Analysis & Design" might prove productive. It has been both effective and efficient as a learning experience. So much so that today, I ordered a copy for my personal library.

Stephen K. Smith
Senior Software Engineer
Campus Pipeline, Inc.

 

 

 

 

Previous

Home