ISBN-10:
0137488807
ISBN-13:
9780137488803
Pub. Date:
05/01/1998
Publisher:
Prentice Hall Professional Technical Reference
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design / Edition 1

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design / Edition 1

by Craig Larman

Hardcover

Current price is , Original price is $69.33. You
Select a Purchase Option (Older Edition)
  • purchase options
    $58.23 $69.33 Save 16% Current price is $58.23, Original price is $69.33. You Save 16%.
    Currently Unavailable for Shipping
    Please check below for Buy Online, Pick up in Store.
  • purchase options

Product Details

ISBN-13: 9780137488803
Publisher: Prentice Hall Professional Technical Reference
Publication date: 05/01/1998
Edition description: Older Edition
Pages: 528
Product dimensions: 8.33(w) x 10.36(h) x 0.99(d)

About the Author


Craig Larman has been developing software since 1978, and has been teaching object-oriented programming to adult students since 1986. He holds a B. Sc. and M. Sc. in computer science, and is the creator of the GRASP patterns, designed for users new to the object paradigm. He has personally taught and mentored more than 2,000 students, and is currently Principal Instructor at ObjectSpace, a company specializing in object technology.

Read an Excerpt

Preface


Congratulations and thank you for reading this book! You hold in your hands a practical guide and roadmap through the landscape of object-oriented analysis and design. Here is how it will benefit you.
Design robust and maintainable object systems.

First, the use of object technology is proliferating in the development of software-even more so with the widespread adoption of Java-and mastery of object-oriented analysis and design is critical for you to create robust and maintainable object-oriented systems. It also opens up new opportunities for you as an architect, analyst, and designer.
Follow a roadmap through requirements, analysis, design and coding.

Second, if you are new to object-oriented analysis and design, you are understandably challenged about how to proceed through this complex subject; this book presents a well-defined activity roadmap so that you can move in a step-by-step process from requirements to code.
Use the UML to illustrate analysis and design models.

Third, the Unified Modeling Language (UML) has emerged as the standard notation for modeling; so it is useful for you to be conversant in it. This book teaches the skills of object-oriented analysis and design using the UML notation.
Improve designs by applying the "gang-of-four" and GRASP design patterns.

Fourth, design patterns communicate the "best practice" idioms and solutions that object-oriented design experts apply in order to create systems. In this book you will learn to apply design patterns, including the popular "gang-of-four" patterns, and most importantly the GRASP patterns which communicatevery fundamental principles of responsibility assignment in object-oriented design. Learning and applying patterns will accelerate your mastery of analysis and design.
Learn efficiently by following a refined presentation.
Fifth, the structure and emphasis in this book is based on years of experience in training and mentoring people in the art of object-oriented analysis and design. It reflects that experience 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 exercise.

Sixth, it exhaustively examines a single case study-to realistically illustrate the entire object-oriented analysis and design process, and goes deeply into thorny details of the problem; it is a realistic exercise.
Translate to code.

Seventh, it shows how to map object-oriented design artifacts to code in Java.
Design a layered architecture.

Eighth, it explains how to design a layered architecture and relate the graphical user interface layer to domain and system services layers. This is a matter of practical importance that is often overlooked.
Design a framework.

Finally, it shows you how to design an object-oriented framework and specifically applies this to the creation of a framework for persistent storage in a database.
Objectives
The overarching objective is this:

Help students and developers create better object-oriented designs through the application of a set of explainable principles and heuristics.
By studying and applying the information and techniques presented here, you will become more adept at understanding a problem in terms of its processes and concepts, and designing a solid solution using objects.
Intended Audience
This book is for the following audience:

  • Developers with experience in an object-oriented programming language, but who are new-or relatively new-to object-oriented analysis and design.
  • Students in computer science or software engineering courses studying object technology.
  • Those with some familiarity in object-oriented analysis and design who want to learn the Unified Modeling Language notation, apply patterns, or who want to sharpen and deepen their analysis and design skills.

    Prerequisites
    Some prerequisite knowledge is assumed-and necessary-to benefit from this book:

  • Knowledge and experience in an object-oriented programming language such as C++, Java, or Smalltalk.
  • Knowledge of fundamental object technology concepts, such as class, instance, interface, polymorphism, encapsulation, and inheritance.
    Fundamental object technology concepts are not defined.

    Book Organization
    The overall strategy in the organization of this book is that object-oriented analysis and design topics are introduced in an order similar to that of a software development project running across two iterative development cycles. The first development cycle introduces analysis and design. In the second development cycle, new analysis and design topics are presented and existing ones are explored more deeply.
    Figure 1. The organization of the book follows that of a development project.

    Motivation for this Book
    Object technology holds great promise, but its potential will not be fully realized without the appropriate skills. It is my goal to promote the successful adoption of object technology through the skillful activity of object-oriented analysis and design, and to promote the acquisition of related abilities, because I observe these are critical for the successful creation and maintenance of significant systems.

    Acknowledgments
    Thanks to all the users and students of the UML and object-oriented analysis and design who I have tried to assist; they are my best teachers.
    Special thanks to the reviewers of this book (or portions), including Kent Beck, Jens Coldewey, Clay Davis, Tom Heruska, Luke Hohmann, David Norris, David Nunn, Brett Schuchert, and the entire Mercury team. Thanks to Grady Booch for reviewing a tutorial related to this work, and to Jim Rumbaugh for some feedback related to the relationship between the UML and process.
    For insightful feedback on process and models, thanks to Todd Girvin, John Hebley, Tom Heruska, David Norris, David Nunn, Charles Rego, and Raj Wall.
    Many thanks to Grady Booch, Ivar Jacobson, and Jim Rumbaugh for the development of the Unified Modeling Language; creating an open, standard notation in the current Tower of Babel environment is most welcome. In addition, I have learned much from their teachings.
    Thanks to my colleague Jef Newsom for providing the case study Java solution. Thanks to my publisher at Prentice-Hall, Paul Becker, for believing that this would be a worthwhile project.
    Finally, a special thanks to Graham Glass for opening a door.

    About the Author
    Craig Larman has a B.Sc. and M.Sc. in computing science and since 1978 has been developing large and small software systems on platforms ranging from mainframes to microcomputers, using software technologies ranging from 4GLs to logic programming to object-oriented programming.
    In the early 1980s he fell in love with artificial intelligence and knowledge systems programming techniques, from which he received his first exposure to object-oriented programming (in Lisp). He has taught and worked with object-oriented programming in Lisp since 1984, Smalltalk since 1986, C++ since 1991, and recently Java, in conjunction with teaching a variety of object-oriented analysis and design methods. He has assisted over 2,000 students in learning object technology topics.
    He is currently Principal Instructor at ObjectSpace, a company specializing in distributed computing, agents, and object technology.
    Craig may be reached at clarman@acm.org

Table of Contents

I. INTRODUCTION.

1. Object-Oriented Analysis and Design.
2. Introduction to a Development Process.
3. Defining Models and Artifacts.

II. PLAN AND ELABORATE PHASE.

4. Case Study: Point-of-Sale.
5. Understanding Requirements.
6. Use Cases: Describing Processes.
7. Ranking and Scheduling Use Cases.
8. Starting a Development Cycle.

III. ANALYZE PHASE (1).

9. Building a Conceptual Model.
10. Conceptual Model-Adding Associations.
11. Conceptual Model-Adding Attributes.
12. Recording Terms in the Glossary.
13. System Behavior-System Sequence Diagrams.
14. System Behavior-Contracts.

IV. DESIGN PHASE (1).

15. From Analysis to Design.
16. Describing Real Use Cases.
17. Collaboration Diagrams.
18. GRASP: Patterns for Assigning Responsibilities.
19. Designing a Solution with Objects and Patterns.
20. Determining Visibility.
21. Design Class Diagrams.
22. Issues in System Design.

V. CONSTRUCT PHASE (1).

23. Mapping Designs To Code.
24. Program Solution In Java.

VI. ANALYZE PHASE (2).

25. Choosing Development Cycle 2 Requirements.
26. Relating Multiple Use Cases.
27. Extending the Conceptual Model.
28. Generalization.
29. Packages: Organizing Elements.
30. Polishing the Conceptual Model.
31. Conceptual Model-Summary.
32. System Behavior.
33. Modeling Behavior in State Diagrams.

VII. DESIGN PHASE (2).

34. GRASP: More Patterns for Assigning Responsibilities.
35. Designing with More Patterns.

VIII. SPECIAL TOPICS.

36. Other UML Notation.
37. Development Process Issues.
38. Frameworks, Patterns, and Persistence.
Appendix A. Recommended Readings.
Appendix B. Sample Development Activities and Models.
Bibliography.
Glossary.
Index.

Preface

Congratulations and thank you for reading this book! You hold in your hands a practical guide and roadmap through the landscape of object-oriented analysis and design. Here is how it will benefit you.
Design robust and maintainable object systems.

First, the use of object technology is proliferating in the development of software-even more so with the widespread adoption of Java-and mastery of object-oriented analysis and design is critical for you to create robust and maintainable object-oriented systems. It also opens up new opportunities for you as an architect, analyst, and designer.
Follow a roadmap through requirements, analysis, design and coding.

Second, if you are new to object-oriented analysis and design, you are understandably challenged about how to proceed through this complex subject; this book presents a well-defined activity roadmap so that you can move in a step-by-step process from requirements to code.
Use the UML to illustrate analysis and design models.

Third, the Unified Modeling Language (UML) has emerged as the standard notation for modeling; so it is useful for you to be conversant in it. This book teaches the skills of object-oriented analysis and design using the UML notation.
Improve designs by applying the "gang-of-four" and GRASP design patterns.

Fourth, design patterns communicate the "best practice" idioms and solutions that object-oriented design experts apply in order to create systems. In this book you will learn to apply design patterns, including the popular "gang-of-four" patterns, and most importantly the GRASP patterns which communicate very fundamental principles of responsibility assignment in object-oriented design. Learning and applying patterns will accelerate your mastery of analysis and design.
Learn efficiently by following a refined presentation.
Fifth, the structure and emphasis in this book is based on years of experience in training and mentoring people in the art of object-oriented analysis and design. It reflects that experience 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 exercise.

Sixth, it exhaustively examines a single case study-to realistically illustrate the entire object-oriented analysis and design process, and goes deeply into thorny details of the problem; it is a realistic exercise.
Translate to code.

Seventh, it shows how to map object-oriented design artifacts to code in Java.
Design a layered architecture.

Eighth, it explains how to design a layered architecture and relate the graphical user interface layer to domain and system services layers. This is a matter of practical importance that is often overlooked.
Design a framework.

Finally, it shows you how to design an object-oriented framework and specifically applies this to the creation of a framework for persistent storage in a database.
Objectives
The overarching objective is this:

Help students and developers create better object-oriented designs through the application of a set of explainable principles and heuristics.
By studying and applying the information and techniques presented here, you will become more adept at understanding a problem in terms of its processes and concepts, and designing a solid solution using objects.
Intended Audience
This book is for the following audience:

  • Developers with experience in an object-oriented programming language, but who are new-or relatively new-to object-oriented analysis and design.
  • Students in computer science or software engineering courses studying object technology.
  • Those with some familiarity in object-oriented analysis and design who want to learn the Unified Modeling Language notation, apply patterns, or who want to sharpen and deepen their analysis and design skills.

    Prerequisites
    Some prerequisite knowledge is assumed-and necessary-to benefit from this book:

  • Knowledge and experience in an object-oriented programming language such as C++, Java, or Smalltalk.
  • Knowledge of fundamental object technology concepts, such as class, instance, interface, polymorphism, encapsulation, and inheritance.
    Fundamental object technology concepts are not defined.

    Book Organization
    The overall strategy in the organization of this book is that object-oriented analysis and design topics are introduced in an order similar to that of a software development project running across two iterative development cycles. The first development cycle introduces analysis and design. In the second development cycle, new analysis and design topics are presented and existing ones are explored more deeply.
    Figure 1. The organization of the book follows that of a development project.

    Motivation for this Book
    Object technology holds great promise, but its potential will not be fully realized without the appropriate skills. It is my goal to promote the successful adoption of object technology through the skillful activity of object-oriented analysis and design, and to promote the acquisition of related abilities, because I observe these are critical for the successful creation and maintenance of significant systems.

    Acknowledgments
    Thanks to all the users and students of the UML and object-oriented analysis and design who I have tried to assist; they are my best teachers.
    Special thanks to the reviewers of this book (or portions), including Kent Beck, Jens Coldewey, Clay Davis, Tom Heruska, Luke Hohmann, David Norris, David Nunn, Brett Schuchert, and the entire Mercury team. Thanks to Grady Booch for reviewing a tutorial related to this work, and to Jim Rumbaugh for some feedback related to the relationship between the UML and process.
    For insightful feedback on process and models, thanks to Todd Girvin, John Hebley, Tom Heruska, David Norris, David Nunn, Charles Rego, and Raj Wall.
    Many thanks to Grady Booch, Ivar Jacobson, and Jim Rumbaugh for the development of the Unified Modeling Language; creating an open, standard notation in the current Tower of Babel environment is most welcome. In addition, I have learned much from their teachings.
    Thanks to my colleague Jef Newsom for providing the case study Java solution. Thanks to my publisher at Prentice-Hall, Paul Becker, for believing that this would be a worthwhile project.
    Finally, a special thanks to Graham Glass for opening a door.

    About the Author
    Craig Larman has a B.Sc. and M.Sc. in computing science and since 1978 has been developing large and small software systems on platforms ranging from mainframes to microcomputers, using software technologies ranging from 4GLs to logic programming to object-oriented programming.
    In the early 1980s he fell in love with artificial intelligence and knowledge systems programming techniques, from which he received his first exposure to object-oriented programming (in Lisp). He has taught and worked with object-oriented programming in Lisp since 1984, Smalltalk since 1986, C++ since 1991, and recently Java, in conjunction with teaching a variety of object-oriented analysis and design methods. He has assisted over 2,000 students in learning object technology topics.
    He is currently Principal Instructor at ObjectSpace, a company specializing in distributed computing, agents, and object technology.

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design 4.2 out of 5 based on 0 ratings. 6 reviews.
ziobrando on LibraryThing 5 months ago
The clearest book about the software development process. The title is somewhat misleading, this is not a book only about UML, but digs deep into the whole software lifecycle showing which artifacts you need at every stage of the development process, and which information to expect in each one of them. If yo still haven't got what the UML is really for, this is the book.
AlexTheHunn on LibraryThing 6 months ago
I acquired this book as a result of a course I took. I have never really had the opportunity to use UML on the job. But the idea sounded great. This book supports the excellent ideas inherent in this approach.
Guest More than 1 year ago
I find this book to be very informative for all those indivisuals who are interested in learning UML. This book was used as a reference book in my bachelors degree in a design course. The best part of this book is the detail with which even minor things like Concept model is explained + the way in which all Designs Patterns are explained. Way to go!!!
Guest More than 1 year ago
This book seems to have all the terminology and covers all the concepts, but I couldn't digest the information because the presentation was pure textbook drone. If you are looking for a more conversational style of text, developer to developer, which is to the point, this book is NOT a good buy. On the other hand, if you like formatted text boxes and meaningless bullet points with textbased prose, this is right on the money. One redeeming feature of the book is its many examples of UML diagrams and OO artifacts.
Guest More than 1 year ago
After reading through chapter one I was involved. I expected this to be another average text book reading, but it shocked me. My initial thought after reading this was it can actually help me to understand my job responsibilities better. As a Business Analyst I must apply the methods in this book on a daily basis, and the way the information is outlined and the illustrations the author provides are great guides to enhancing the knowledge you need to know and may already know. So this is a must for those who use OO technology on a frequent basis.
Guest More than 1 year ago
good cover to cover...easy to understand... lacks a small bit of consistency in examples...this book used in many colleges... A great place to start...