OBJECT-ORIENTED ANALYSIS AND DESIGN
Le temps est un grand professeur, mais malheureusement il tue tous ses élèves (Time is a great teacher, but unfortunately it kills all its pupils.) —Hector Berlioz
● ● ● ●
Describe the book goals and scope. Define object-oriented analysis and design (OOA/D). Illustrate a brief OOA/D example. Overview UML and visual agile modeling.
What Will You Learn? Is it Useful?
What does it mean to have a good object design? This book is a tool to help developers and students learn core skills in object-oriented analysis and design (OOA/D). These skills are essential for the creation of well-designed, robust, and maintainable software using OO technologies and languages such as Java or C#. What’s Next?
This chapter introduces the book goals and OOA/D. The next introduces iterative and evolutionary development, which shapes how OOA/D is presented in this book. The case studies are evolved across three iterations. next chapter
Preface (educator resources)
Iterative, Evolutionary & Agile
1 – OBJECT-ORIENTED ANALYSIS AND DESIGN
The proverb “owning a hammer doesn’t make one an architect” is especially true with respect to object technology. Knowing an object-oriented language (such as Java) is a necessary but insufficient first step to create object systems. Knowing how to “think in objects” is critical! This is an introduction to OOA/D while applying the Unified Modeling Language (UML) and patterns. And, to iterative development, using an agile approach to the Unified Process as an example iterative process. It is not meant as an advanced text; it emphasizes mastery of the fundamentals, such as how to assign responsibilities to objects, frequently used UML notation, and common design patterns. At the same time, mostly in later chapters, the material progresses to some intermediate-level topics, such as framework design and architectural analysis. UML vs. Thinking in Objects The book is not just about UML. The UML is a standard diagramming notation. Common notation is useful, but there are more important OO things to learn— especially, how to think in objects. The UML is not OOA/D or a method, it is just diagramming notation. It’s useless to learn UML and perhaps a UML CASE tool, but not really know how to create an excellent OO design, or evaluate and improve an existing one. This is the hard and important skill. Consequently, this book is an introduction to object design. Yet, we need a language for OOA/D and “software blueprints,” both as a tool of thought and as a form of communication. Therefore, this book explores how to apply the UML in the service of doing OOA/D, and covers frequently used UML. OOD: Principles and Patterns How should responsibilities be allocated to classes of objects? How should objects collaborate? What classes should do what? These are critical questions in the design of a system, and this book teaches the classic OO design metaphor: responsibility-driven design. Also, certain tried-and-true solutions to design problems can be (and have been) expressed as best-practice principles, heuristics, or patterns—named problem-solution formulas that codify exemplary design principles. This book, by teaching how to apply patterns or principles, supports quicker learning and skillful use of these fundamental object design idioms. Case Studies This introduction to OOA/D is illustrated in some ongoing case studies that are followed throughout the book, going deep enough into the analysis and design so that some of the gory details of what must be considered and solved in a realistic problem are considered, and solved. Use Cases OOD (and all software design) is strongly related to the prerequisite activity of requirements analysis, which often includes writing use cases. Therefore, the case study begins with an introduction to these topics, even though they are not specifically...