Forside > Bøger > Reviews of OOA&D > Smith review
Review of Object-Oriented Analysis & Design - UML

Review of Mathiassen, Munk-Madsen, Nielsen og Stage: Object-Oriented Analysis & Design.

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 appreciate, 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 proveproductive in light of those activities.

The Foreword 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 Foreword 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 duringanalysis, 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 andSequence 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 ofgood 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 learnfrom 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 moretime 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.

This page updated on September 19th 2000. Reformatted February 1st 2002.