Case Studies in Object-Oriented Analysis and Design (Bk/Disk)by Edward Yourdon, Carl A. Argila (With)
The analysis and design of large, complex software systems are not unlike mathematical proofs; they are presented as finished products. They may be documented with reams of paper or presented as finished models. Rarely, however, do software analysts or designers document the anatomy of their analysis or design. Case Studies in Object-Oriented Analysis and Design offers insight into how object-oriented analysis and design are done--for real systems. It goes beyond presenting terminology, notation, and model structure and offers insight on analysis, design, and project management issues.
Case Studies in Object-Oriented Analysis and Design provides the bridge between the introduction to OOA/OOD and a complex real-world application of the theory. Its topics include:
- How to Find the Right Object
- Building the Analysis Model
- Documenting, Reviewing, and Revising the Analysis Model
- Transitioning into Design
- Building the Design Model
- Implementation Issues
- Transitioning to Object-Orientation
A hands-on, how-to book written for the practitioner, Case Studies in Object-Oriented Analysis and Design presents two realistic, in-depth case studies developed from user problem statement through object-oriented analysis, design, and into implementation. Techniques are applicable to virtually every version of object-oriented analysis and design. Included with the book is a case study diskette containing the case study models together with their implementations. A practical, down-to-earth introduction to object technology, this book can also be used as a template for your own object-oriented project.
Read an Excerpt
PREFACE: As a graduate student in mathematics, one of the authors was forced to endure the presentation of innumerable mathematical theorems. Each theorem was rigorously proved by a learned professor. Each proof was presented as a finished product-elegant and beautiful. As a student, however, the author found the proofs more obscure and confusing than elegant and beautiful!
On one occasion, while presenting a particularly long proof, the professor became confused and uncertain about the next step. With a somewhat pensive expression, he walked to a side blackboard, picked up a piece of chalk and began drawing a figure. He drew circles, arcs, lines and eventually, a look of recognition flashed across his face. He quickly erased what he had drawn, returned to the front of the classroom, and proceeded with the proof! But, as you might imagine, the students were more interested in what the professor had erased than what he was attempting to prove!
The analysis and design of large, complex software systems are not unlike mathematical proofs; they are usually presented as finished products. They may be documented with reams of paper or presented as finished models. Rarely, however, do software analysts or designers document the anatomy of their analysis or design. In the past, a savvy software manager could sneak into the offices of his workers, rummage through their trash cans, and pull out traces of their thinking. With the advent of CASE tools however, that's harder to do! And, few books on software analysis and design go deeply into heuristics.
This situation is particularly egregious in the area of object-oriented analysis and design. Although there arenumerous books on the subject (and more coming out all the time!), few go beyond presenting the terminology, notation and structure of their own unique models. And, when it comes to the genesis of the process establishing an initial set of objects guidance is superficial at best. Yet the wrong choice of objects can have a profound impact on the success of the whole object-oriented development process. As one C++ instructor recently lamented about a class, "These guys are just hacking at the object level! They'll never get any of the object-oriented benefits out of this stuff."
The authors fervently believe that object-oriented analysis and design are real, with real benefits to be gained. But we also believe, quoting H. L. Mencken, that "for every complex and difficult problem there is a simple solution. And it is always wrong." Analyzing and designing large, complex software systems is difficult. Period. Object-oriented approaches don't make analysis and design easier than earlier methods.
They help us build a better product; they help us improve productivity-but they're no panacea. What's missing from the object-oriented analysis and design practitioner's literature, we feel, is more insight into how object- oriented analysis and design are done-for real systems. That's what we've tried to present in this book. Although we present a solution to the case study problems, the nature of the solution is far less important than how we arrived at it. Our principal contribution, we feel, is in presenting insight not technique. Unfortunately, readers seeking the beauty and elegance of a mathematical proof will have to look elsewhere.
After an introduction to the case study problems, we present a synthesis of OOA and OOD methods to develop an analysis model and design model. Separate chapters are devoted to each of the building blocks of the OOA model (Subject Layer, Object-Class Layer, Structure Layer, Attribute Layer and Service Layer), as well as the various components of the OOD model (Problem Domain Component, Human Interaction Component, Task Management Component and Data Management Component). Additional chapters provide some comments on analysis, design and project management issues.
We have produced object-oriented analysis and design models using the notation of the Coad and Yourdon technique. Our methodology however, differs significantly from the Coad and Yourdon approach. Indeed, we have taken advantage of components of other object-oriented methodologies e.g., Ivar Jacobson's ObectOry approach for the discussion of messages between objects where they provided useful illuminations. We believe that the principles demonstrated in this book are applicable to object-oriented analysis and design in general.
We also took advantage of older, more classical structured analysis methodologies; the entity-relationship diagram and event-response model of both case studies proved particularly useful for discovering relevant objects, as well as for providing a deeper understanding of the interactions between objects. Indeed, we strayed even further afield than structured analysis. For instance, a purely linguistic analysis of the narrative user specifications of the two case studies provided a very methodical approach for identifying candidate objects for further investigation.
While object-oriented enthusiasts may have a favorite methodology e.g., Booch, Rumbaugh, Jacobson, Shlaer-Mellor or Coad and Yourdon we have found that there is general acceptance of the notion that one might be able to borrow ideas and concepts from all of them to attack a problem effectively. On the other hand, the notion of using the older, structured methodologies may well offend the purists in the object-oriented camp, who might argue that the same results could have been achieved without any reference whatsoever to textbooks written before the dawn of the object-oriented era. For most veteran software engineers, though, a more pragmatic approach is typically required-especially when faced with a difficult problem that must be solved within the constraints of a tight schedule and budget. From this perspective, it seems foolish to eliminate useful concepts, tools and techniques that have served us well in the past. Though time, money and space prevented us from tackling a problem the size of "Star Wars," we have, nevertheless, selected two very realistic case studies and applied the principles of object-oriented analysis and design to them. One case study has a predominant reactive view and should be of interest to readers in the real-time, embedded systems area. The other case study has a predominant data view and should be of interest to readers in the MIS community. We decided to present both case studies in this book; it is interesting and instructive to see how object-oriented techniques can be applied in such different environments. The reader should be able to make a personal judgment about the relevance and applicability of object-oriented methods to different environments.
Because they are larger than the typical "tic-tac-toe" game exercises one often finds in a software engineering textbook, any serious attempt to analyze and design the case study problems in this book will present some non-trivial difficulties. The authors have used both case studies in numerous seminars and workshops during the past few years; we have been constantly amazed by the degree of intense debate and discussion they create with our students. We believe that the case study designs have been developed to the point where these two systems can be delivered to programmers for implementation. Although we have not discussed implementation issues, we have created Visual Basic(tm) prototypes for both case studies.
However, because of the size of the two case studies, we have not provided fully coded solutions. Since this is not a book that explains object- oriented principles and theory in great detail, we have been forced to make some assumptions about you, the reader. We assume that you are a software engineer with some level of exposure to both structured analysis methodologies and object-oriented analysis/design methodologies. However, we assume that your exposure to OOA and OOD has been limited, at most, to reading one of the popular books in the field, or perhaps to some limited training in a seminar or workshop.
A background like this would be sufficient for you to work on a "tiny" problem, but probably not adequate to tackle your first mission-critical object-oriented application at your job. This book is intended to provide the bridge between that first introduction to OOA and OOD and a complex real-world application of the theory.
Finally, the authors encourage readers to tell us how this material is being used, what problems have been encountered and what successes have been achieved! Our e-mail addresses are below. From time to time, we may post revisions to the materials on our WEB sites, also given below.
New York City
Most Helpful Customer Reviews
See all customer reviews