Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process / Edition 2

Hardcover (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $1.99
Usually ships in 1-2 business days
(Save 96%)
Other sellers (Hardcover)
  • All (43) from $1.99   
  • New (3) from $50.00   
  • Used (40) from $1.99   
Sort by
Page 1 of 1
Showing All
Note: Marketplace items are not eligible for any coupons and promotions
Seller since 2015

Feedback rating:



New — never opened or used in original packaging.

Like New — packaging may have been opened. A "Like New" item is suitable to give as a gift.

Very Good — may have minor signs of wear on packaging but item works perfectly and has no damage.

Good — item is in good condition but packaging may have signs of shelf wear/aging or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Acceptable — item is in working order but may show signs of wear such as scratches or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Used — An item that has been opened and may show signs of wear. All specific defects should be noted in the Comments section associated with each item.

Refurbished — A used item that has been renewed or updated and verified to be in proper working condition. Not necessarily completed by the original manufacturer.

Brand new.

Ships from: acton, MA

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Seller since 2015

Feedback rating:


Condition: New
Brand new.

Ships from: acton, MA

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Seller since 2008

Feedback rating:


Condition: New

Ships from: Chicago, IL

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Page 1 of 1
Showing All
Sort by


The first edition of Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design quickly emerged as the leading OOA/D introduction; it has been translated into seven languages and adopted in universities and businesses worldwide. In this second edition, well-known object technology and iterative methods leader Craig Larman refines and expands this text for developers and students new to OOA/D, the UML, patterns, use cases, iterative development, and related topics.

Put simply, the book shows newcomers to OOA/D how to "think in objects." It does so by presenting three iterations of a single, cohesive case study, incrementally introducing the requirements and OOA/D activities, principles, and patterns that are most critical to success. It introduces the most frequently used UML diagramming notation, while emphasizing that OOA/D is much more than knowing UML notation. All case study iterations and skills are presented in the context of an "agile" version of the Unified Process -- a popular, modern iterative approach to software development. Throughout, Larman presents the topics in a fashion designed for learning and comprehension.

Among the topics introduced in Applying UML and Patterns are: * requirements and use cases, * domain object modeling, * core UML, * designing objects with responsibilities, * "Gang of Four" and other design patterns, * mapping designs to code (using Java as an example), * layered architectures, * architectural analysis, * package design, * iterative development, and * the Unified Process. For a more detailed list of topics, please see the accompanying table of contents.

Foreword by Philippe Kruchten, the lead architect of the Rational Unified Process.

"Too few people have a knack for explaining things. Fewer still have a handle on software analysis and design. Craig Larman has both."
—John Vlissides, author, Design Patterns and Pattern Hatching

"This edition contains Larman's usual accurate and thoughtful writing. It is a very good book made even better."
—Alistair Cockburn, author, Writing Effective Use Cases and Surviving OO Projects

This is the book that teaches introductory 00AD by using a single case study throughout the book (for the first edition, often cited as a strong advantage). Since OOAD ideas must be communicated in some language, the popular UML diagramming notation is also taught, as a vehicle for expressing OOAD thoughts.

Read More Show Less

Product Details

  • ISBN-13: 9780130925695
  • Publisher: Pearson Education
  • Publication date: 7/1/2001
  • Edition description: Second Edition
  • Edition number: 2
  • Pages: 627
  • Product dimensions: 8.35 (w) x 10.33 (h) x 1.15 (d)

Meet the Author

Craig Larman serves as Director of Process and Methodology at Valtech, a leading international e-business consulting group. He is known throughout the international software community as an expert in object technologies, patterns, the UML, modeling, and iterative development. Since the 1980s, Larman has been helping people learn objects and iterative development, having personally guided thousands of developers. He is also the co-author of Java 2 Performance and Idiom Guide, and holds a B.Sc. and M.Sc. in Computer Science from Simon Fraser University in Vancouver, B.C.
Read More Show Less

Read an Excerpt

Chapter 17: Design Model: Use-Case Realizations with Grasp Patterns

To invent, you need a good imagination and a pile of junk.
—Thomas Edison


  • Design use-case realizations.
  • Apply the GRASP patterns to assign responsibilities to classes.
  • Use the UML interaction diagram notation to illustrate the design of objects.


This chapter explores how to create a design of collaborating objects with responsibilities. Particular attention is given to the application of the GRASP patterns to develop a well-designed solution. Please note that the GRASP patterns as such or by name are not the important thing; they are just a learning aid to help talk about and methodically do fundamental object design.

This chapter communicates the principles, using the NextGen POS example, by which an object-oriented designer assigns responsibilities and establishes object interactions—a core skill in object-oriented development.


The assignment of responsibilities and design of collaborations are very important and creative steps during design, either while diagraming or while programming.

The material is intentionally detailed; it attempts to exhaustively illustrate that there is no “magic” or unjustifiable decisions in object design—assignment of responsibilities and the choice of object interactions can be rationally explained and learned.

17.1 Use-Case Realizations

To quote, “A use-case realization describes how a particular use case is realized within the design model, in terms of collaborating objects” [RUP]. More precisely, a designer can describe the design of one or more scenarios of a use case; each of these is called a use-case realization. Use-case realization is a UP term or concept used to remind us of the connection between the requirements expressed as use cases, and the object design that satisfies the requirements.

UML interaction diagrams are a common language to illustrate use-case realizations. And as was explored in the prior chapter, there are principles and patterns of object design, such as Information Expert and Low Coupling, that can be applied during this design work.

To review, Figure 17.20 (near the end of this chapter) illustrates the relationship between some UP artifacts:

  • The use case suggests the system events that are explicitly shown in system sequence diagrams.
  • Details of the effect of the system events in terms of changes to domain objects may optionally be described in system operation contracts.
  • The system events represent messages that initiate interaction diagrams, which illustrate how objects interact to fulfill the required tasks—the use case realization.
  • The interaction diagrams involve message interaction between software objects whose names are sometimes inspired by the names of conceptual classes in the Domain Model, plus other classes of objects.

17.2 Artifact Comments

Interaction Diagrams and Use-Case Realizations

In the current iteration we are considering various scenarios and system events such as:

  • Process Sale: makeNewSale, enterItem, endSale, makePayment
If collaboration diagrams are used to illustrate the use-case realizations, a different collaboration diagram will be required to show the handling of each system event message. For example (Figure 17.1)...

Figure 17.1 Collaboration diagrams and system event message handling.

On the other hand, if sequence diagrams are used, it may be possible to fit all system event messages on the same diagram, as in Figure 17.2....

Read More Show Less

Table of Contents

1 Object-Oriented Analysis and Design 3
2 Iterative Development and the Unified Process 13
3 Case Study: The NextGen POS System 29
4 Inception 35
5 Understanding Requirements 41
6 Use-Case Model: Writing Requirements in Context 45
7 Identifying Other Requirements 83
8 From Inception to Elaboration 107
9 Use-Case Model: Drawing System Sequence Diagrams 117
10 Domain Model: Visualizing Concepts 127
11 Domain Model: Adding Associations 153
12 Domain Model: Adding Attributes 167
13 Use-Case Model: Adding Detail with Operation Contracts 177
14 From Requirements to Design in this Iteration 193
15 Interaction Diagram Notation 197
16 GRASP: Designing Objects with Responsibilities 215
17 Design Model: Use-Case Realizations with GRASP Patterns 247
18 Design Model: Determining Visibility 279
19 Design Model: Creating Design Class Diagrams 285
20 Implementation Model: Mapping Designs to Code 301
21 Iteration 2 and its Requirements 319
22 GRASP: More Patterns for Assigning Responsibilities 325
23 Designing Use-Case Realizations with GoF Design Patterns 341
24 Iteration 3 and Its Requirements 383
25 Relating Use Cases 385
26 Modeling Generalization 393
27 Refining the Domain Model 411
28 Adding New SSDs and Contracts 431
29 Modelling Behavior in Statechart Diagrams 437
30 Designing the Logical Architecture with Patterns 447
31 Organizing the Design and Implementation Model Packages 475
32 Introduction to Architectural Analysis and the SAD 485
33 Designing More Use-Case Realizing with Objects and Patterns 507
34 Designing a Persistence Framework with Patterns 537
35 On Drawing and Tools 567
36 Introduction to Iterative Planning and Project Issues 575
37 Comments on Iterative Development and the UP 589
38 More UML Notation 603
Bibliography 609
Glossary 615
Index 621
Read More Show Less


Thank you for reading this book! 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 first edition was received as a popular introduction to OOA/D throughout the world, translated into many languages. Therefore, this second edition builds upon and refines-rather than replaces-the content in the first. I want to sincerely thank all the readers of the first edition.

Here is how the book will benefit you.

Design robust and maintainable object systems.

First, the use of object technology has proliferated in the development of software, and mastery of OOA/D is critical for you to create robust and maintainable object systems.

Follow a roadmap through requirements, analysis, design, and coding.

Second, if you are new to OOA/D, you are understandably challenged about how to proceed through this complex subject; this book presents a well-defined roadmap-the Unified Process-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 OOA/D 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 the GRASP patterns which communicate fundamental principles of responsibility assignment in object 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 thousands of people in the art of OOA/D. 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 OOA/D 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 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 technical services layers.

Design a framework.

Finally, it shows you how to design an object-oriented framework and applies this to the creation of a framework for persistent storage in a database.


The overarching objective is this:

Help students and developers create object 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 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 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 OOA/D who want to learn the UML notation, apply patterns, or who want to sharpen and deepen their analysis and design skills.


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

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

Fundamental object technology concepts are not defined.

Java Examples

In general, the book presents code examples in Java or discusses Java implementations, due to its widespread familiarity. However, the ideas presented are applicable to most—if not all—object-oriented programming languages.

Book Organization

The 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 iterations.

  1. The inception phase chapters introduce the basics of requirements analysis.
  2. Iteration 1 introduces fundamental OOA/D and how to assign responsibilities to objects.
  3. Iteration 2 focuses on object design, especially on introducing some high-use "design patterns."
  4. Iteration 3 introduces a variety of subjects, such as architectural analysis and framework design.

Web-Related Resources

  • Please see for articles related to object technology, patterns, and process.
  • Some instructor resources can be found at

Enhancements to the First Edition

While retaining the same core as the first edition, the second is refined in many ways, including:

  • Use cases are updated to follow the very popular approach of Cockburn01.
  • The well-known Unified Process (UP) is used as the example iterative process within which to introduce OOA/D. Thus, all artifacts are named according to UP terms, such as Domain Model.
  • New requirements in the case study, leading to a third iteration.
  • Updated treatment of design patterns.
  • Introduction to architectural analysis.
  • Introduction of Protected Variations as a GRASP pattern.
  • A 50/50 balance between sequence and collaboration diagrams.
  • The latest UML notation updates.
  • Discussion of some practical aspects of drawing using whiteboards or UML CASE tools.

About the Author

Craig Larman serves as Director of Process for Valtech, an international consulting company with divisions in Europe, Asia, and North America, specializing in e-business systems development, object technologies, and iterative development with the Unified Process.

Since the mid 1980s, Craig has helped thousands of developers to apply object-oriented programming, analysis, and design, and assisted organizations adopt iterative development practices.

After a failed career as a wandering street musician, he built systems in APL, PL/I, and CICS in the 1970s. Starting in the early 1980s-after a full recovery- he became interested in artificial intelligence (having little of his own), natural language processing, and knowledge representation, and built knowledge systems with Lisp machines, Lisp, Prolog, and Smalltalk. He plays bad lead guitar in his part-time band, the Changing Requirements (it used to be called the Requirements, but some band members changed...).

He holds a B.Sc. and M.Sc. in computer science from Simon Fraser University in Vancouver, Canada.

Craig can be reached at and

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)