Table of Contents
| 1 | Object-oriented analysis and design | 3 |
| 2 | Iterative, evolutionary, and agile | 17 |
| 3 | Case studies | 41 |
| 4 | Inception is not the requirements phase | 47 |
| 5 | Evolutionary requirements | 53 |
| 6 | Use cases | 61 |
| 7 | Other requirements | 101 |
| 8 | Iteration 1 - basics | 123 |
| 9 | Domain models | 131 |
| 10 | System sequence diagrams | 173 |
| 11 | Operation contracts | 181 |
| 12 | Requirements to design - iteratively | 195 |
| 13 | Logical architecture and UML package diagrams | 197 |
| 14 | On to object design | 213 |
| 15 | UML interaction diagrams | 221 |
| 16 | UML class diagrams | 249 |
| 17 | GRASP : designing objects with responsibilities | 271 |
| 18 | Object design examples with GRASP | 321 |
| 19 | Designing for visibility | 363 |
| 20 | Mapping designs to code | 369 |
| 21 | Test-driven development and refactoring | 385 |
| 22 | UML tools and UML as blueprint | 397 |
| 23 | Quick analysis update | 401 |
| 24 | Iteration 2 - more patterns | 407 |
| 25 | GRASP : more objects with responsibilities | 413 |
| 26 | Applying GoF design patterns | 435 |
| 27 | Iteration 3 - intermediate topics | 475 |
| 28 | UML activity diagrams and modeling | 477 |
| 29 | UML state machine diagrams and modeling | 485 |
| 30 | Relating use cases | 493 |
| 31 | More SSDs and contracts | 501 |
| 32 | Domain model refinement | 507 |
| 33 | Architectural analysis | 541 |
| 34 | Logical architecture refinement | 559 |
| 35 | More object design with GoF patterns | 579 |
| 36 | Package design | 613 |
| 37 | UML deployment and component diagrams | 621 |
| 38 | Designing a persistence framework with patterns | 625 |
| 39 | Documenting architecture : UML & the N+1 view model | 655 |
| 40 | More on iterative development and agile project management | 673 |
Forewords & Introductions
Thank you for reading this book! If I can answer a question, or for consulting or coaching a team (in OOA/D, UML, modeling, iterative and agile methods), please contact me at www.craiglarman.com.
This is a practical introduction to object-oriented analysis and design (OOA/D), and to related aspects of iterative development. I am grateful that the previous editions were extremely popular worldwide. I sincerely thank all the readers!
Here is how the book will benefit you.
Design Well—First, the use of object technology is widespread, so mastery of OOA/D is critical for you to succeed in the software world.
Learn a Process Roadmap—Second, if you are new to OOA/D, you’re understandably challenged about how to proceed; this book presents a well-defined iterative roadmap—an agile approach to the Unified Process—so that you can move in a step-by-step process from requirements to code.
Learn UML for Modeling—Third, the Unified Modeling Language (UML) has emerged as the standard notation for modeling, so it’s useful to be able to apply it skillfully.
Learn Design Patterns—Fourth, design patterns communicate the “best practice” idioms OO design experts apply. You will learn to apply design patterns, including the popular “Gang-of-Four” patterns, and the GRASP patterns. Learning and applying patterns will accelerate your mastery of analysis and design.
Learn from Experience—Fifth, the structure and emphasis in this book are based on years of experience in education and mentoring thousands of people in the art of OOA/D. It reflects thatexperience by providing a refined, proven, and efficient approach to learning the subject, so your investment in reading and learning is optimized.
Learn from a Realistic Study—Sixth, it exhaustively examines two case studies—to realistically illustrate the entire OOA/D process, and goes deeply into thorny details of the problem.
Design to Code, with TDD & Refactoring—Seventh, it shows how to map object design artifacts to code in Java. It also introduces test-driven development and refactor.
Layered Architecture—Eighth, it explains how to design a layered architecture and relate the UI layer to domain and technical services layers.
Design Frameworks—Finally, it shows you how to design an OO framework and applies this to the creation of a framework for persistent storage in a database.
Educator and Web ResourcesYou may find related articles of interest at www.craiglarman.com.
Hundreds, if not thousands, of teachers use the book worldwide; it’s been translated into at least ten languages. At my website there are a variety of educator resources, including all the book figures organized into Microsoft PowerPoint presentations, sample OOA/D PowerPoint presentations, and more. If you’re an educator, please contact me for resources.
I am collecting material from existing educators using the book, to share with other educators. If you have anything to share, please contact me.
Intended Audience—an Introduction!This book is an introduction to OOA/D, related requirements analysis, and to iterative development with the Unified Process as a sample process; it is not meant as an advanced text. It is for the following audience:
- Developers and students with some experience in OO programming, but who are new—or relatively new—to OOA/D.
- Students in computer science or software engineering courses studying object technology.
- Those with some familiarity in OOA/D who want to learn the UML notation, apply patterns, or who want to deepen their analysis and design skills.
PrerequisitesSome prerequisites are assumed—and necessary—to benefit from this book:
- Knowledge and experience in an object-oriented programming language such as Java, C#, C++, or Python.
- Knowledge of fundamental OO concepts, such as class, instance, interface, polymorphism, encapsulation, and inheritance.
Fundamental OO concepts are not defined.
Java Examples, But...In general, the book presents code examples in Java due to its widespread familiarity. However, the ideas presented are applicable to most—if not all—object-oriented technologies, including C#, Python, and so on.
Book OrganizationThe overall strategy in the organization of this book is that analysis and design topics are introduced in an order similar to that of a software development project running across an “inception” phase (a Unified Process term) followed by three.
- The inception phase chapters introduce the basics of requirements analysis.
- Iteration 1 introduces fundamental OOA/D and how to assign responsibilities to objects.
- Iteration 2 focuses on object design, especially on introducing some high-use “design patterns.”
- Iteration 3 introduces a variety of subjects, such as architectural analysis and framework design.