Object Modeling
Object Modeling
Adkisson
By Heidi P. Adkisson
Special thanks to test readers Geoff Harrison and Tristan Plank for their
invaluable input and suggestions.
Contents
Copyright
01 Introduction
02 Objects
03 Object Relationships
04 Actions
05 Attributes
06 Finishing the Object Model
07 Using the Object Model
08 Capturing Task Flows
09 Real-World Structure and Flow
Resources and References
01 Introduction
Object Modeling
Task Flow Definition
To get the most out of this book, you should have hands-
on experience with user-centered design methods and be
familiar with written system requirements, such as user
stories. Because this book will take you step-by-step through
the process of building object models and task flow
diagrams, no other prerequisites are needed.
About Me
I’ve been in the tech field since 1988 when I was one of
the first employees in a (pre-web) start-up that provided
software to wireless service providers. There, I had the
opportunity to work closely with software developers and
eventually transition into a role overseeing the company's
operations. In 1997, I completed my MBA degree at the
University of Washington.
Figure 1.2
Figure 1.3
Task flow diagram for e-commerce checkout
Additional Resources
I’ve done my best to format the many diagrams and
illustrations in this book to be readable across the range of
reading devices. You can also view any of the diagrams at
objectmodelingfordesigners.com/book
Figure 2.2
Modeling Objects
Today objects and actions are foundational to any user
experience. As we’ll see in the chapters that follow,
modeling a system’s objects can help streamline the
design process and improve design outcomes.
Figure 2.5
Simplified UML class diagram for an ATM. You can also view this diagram at
objectmodelingfordesigners.com/chapter-2
Narrative object model for an ATM. You can also view this diagram at
objectmodelingfordesigners.com/chapter-2
1) Identifying objects
2) Characterizing the relationships between objects
3) Identifying each object’s actions and attributes
The mix of sources you will rely upon depends on the type
of design project at hand, as summarized in Figure 2.9.
Figure 2.9
Identifying Objects
The easiest way to think about objects is that they are the
nouns in a system (rather than the verbs, which represent
actions). Each object is represented by a rectangle in the
model, as shown in Figure 2.10.
Figure 2.10
Narrative object model for an ATM. You can also view this diagram at
objectmodelingfordesigners.com/chapter-2
Figure 2.11
An existing interface
User stories
Identifying Objects from an Existing Interface
By first walking through how to identify objects from an
existing interface, we’ll see examples of how objects are
represented in a design. Menus and button bars typically
provide fruitful “hunting grounds” for objects.
Figure 2.12
Figure 2.14
Objects from Twitter
The lower button bar contains options represented by
unlabeled icons. Figure 2.15 shows the icons and their
associated labels so that we can identify any additional
objects.
Figure 2.15
Options represented in the button bar for a tweet
The last icon in the button bar, which looks like a share
menu, is actually a “more actions” menu. Figure 2.16 shows
this menu with its nouns highlighted.
Figure 2.16
Nouns highlighted in the contextual menu for a tweet
Figure 2.21
Objects identified in the e-commerce user stories
Exercise A: Solution
In Exercise A, you identified the goal statements and
nouns in a sample set of user stories for Slack. You then used
the nouns you identified to create a consolidated list of
objects. Here is the solution:
Figure 3.1
UML class diagram for an ATM. You can also view this diagram at
objectmodelingfordesigners.com/chapter-3
Figure 3.2
Narrative object model for an ATM. You can also view this diagram at
objectmodelingfordesigners.com/chapter-3
Types of Relationships
Using line treatments to indicate relationship types is a
convention of a UML class diagram that I find helpful to carry
forward into the simplified, more narrative object model.
Though I consider line treatments optional (the relationship
statements should carry the freight), indicating the
relationship type can make using the model to inform design
easier.
Association
Aggregation
Component
Inheritance
Object relationships for Twitter. You can also view this diagram at
objectmodelingfordesigners.com/chapter-3
Aggregation
An aggregation relationship indicates an object that is a
group or list of other objects. The line treatment for
aggregation is an open diamond, with the diamond pointing
at the aggregate object.
Figure 3.7
The List object is an aggregate of (User) Accounts.
The Bag, Order, Store, and Wish List objects are all aggregates of Products.
Component Relationship
A component relationship is a type of dependency where
one object is a component of another. The line treatment for
a component is a filled-in diamond attached to the object
that possesses the component or components (Figure 3.10).
Figure 3.10
A Review is a component of a Product.
Figure 3.11
Wish List, Order, and Bag are components of a (User) Account.
Is It a Component—Or an Attribute?
When you model relationships, deciding whether
something is a component of an object or simply an attribute
of an object can be a judgment call. Attributes are covered in
more detail in Chapter 5. However, as a reminder, you can
consider attributes as the data fields associated with an
object.
Inheritance Relationship
Inheritance indicates a parent-child relationship between
two objects where the child object inherits some or all of the
parent’s characteristics. The line treatment for inheritance
relationships is an open triangle that points at the parent
object, as shown in Figure 3.13.
Figure 3.13
Message as the parent object of Direct Message and Tweet
Figure 3.14
(User) Account as the parent of Free Follower Account and Super Follower
Account
Figure 3.15
Product as the parent of Apparel, Housewares, and Consumables
Identifying Relationships
Identifying relationships between objects can be the most
interesting and illuminating part of creating the model.
Relationship building helps you synthesize the system’s
structure as a whole, which lays the groundwork for
architecting the user experience.
Where to Begin?
Reviewing user stories and existing interfaces can help
you identify relationships. It’s easiest to begin by choosing
an object that is key to the experience and then build
relationships out from that object. For example, the Tweet
object is key for Twitter; the Product object is key for an e-
commerce system.
Exercise B: Solution
In Exercise B, you identified relationships between the
objects for Slack. Here’s the example solution (Figure 3.18):
Figure 3.18
Object relationships for Slack. You can view this diagram at
objectmodelingfordesigners.com/chapter-3
Figure 4.1
Narrative object model for an ATM. You can also view this diagram at
objectmodelingfordesigners.com/chapter-4
Identifying Actions
As with objects, you can identify actions by reviewing user
stories or examining an existing interface.
Create
Edit
Delete
Search For
Figure 4.2
The Tweet object with annotated actions
Figure 4.3
Actions identified for a tweet
Embed
Report
Reply
Retweet
Like
Figure 4.5
The Tweet object with actions
Delete
Pin to Your Profile
View Activity
Change Who Can Reply
Figure 4.9
Actions for the Product object
Figure 4.10
The Product object with actions
Figure 4.15
Actions associated with the Product object
Figure 4.16 shows how the main actions for the Tweet
object are presented effectively in a tightly associated
bottom button bar.
Figure 4.16
Actions for a Tweet on its bottom button bar
Exercise C: Solution
In Exercise C, you first used a sample set of user stories
for Slack to identify actions for objects. Here is the solution:
Next, you updated the Slack model with actions for each
object. Figure 4.19 shows the solution.
Figure 4.19
Narrative object model for Slack with objects, actions, and relationships. You
can also view this diagram at objectmodelingfordesigners.com/chapter-4
05 Attributes
Figure 5.1
Attributes in each object’s center pane. You can also view this diagram at
objectmodelingfordesigners.com/chapter-5
Describing Attributes
Figure 5.5 shows another UML notation convention that
we’re adapting for our use: an attribute description, which
appears after the attribute’s name. In this example, we
describe the Text attribute for a Tweet as 280 characters or
less.
Figure 5.5
The Tweet object with the Text attribute
Figure 5.6
The Product object with a Stock Status attribute
Figure 5.7 is an example of a State attribute for a Post
object, part of a blogging application that allows users to
save a post as a draft before publishing it. In this case, there
are two corresponding states: Draft and Published.
Figure 5.7
A Post object with a State attribute
Annotations
Consider what type of annotations would be helpful to
clarify the model or the thought process that went into it. For
example, in the Twitter model (Figure 6.1), we’ve added an
annotation about permissions for specific actions. Particularly
if you’ve developed the model as a team, it can be helpful to
note modeling decisions that might not be clear to others.
For example, for Twitter, I chose to model a Hashtag as a
separate object rather than an attribute of a Tweet—this
decision is something that I could have annotated as part of
the model.
Figure 6.4
Example of an expanded relationship statement
Get Creative!
Above are just some ideas on enhancing your model to
communicate more clearly. Feel free to get creative: add
whatever elements or visual treatments best serve your
purpose.
Exercise E: Solution
In Exercise E, you considered how you would enhance the
Slack model. Figure 6.6 shows an example solution.
Figure 6.6
Enhanced narrative object model for Slack. You can also view this diagram at
objectmodelingfordesigners.com/chapter-6
About the Solution
For Slack, I began by considering how I might group
objects according to function. I could see that there were
objects devoted to actively communicating with others
(shown in yellow), objects that helped organize messages
(shown in blue), and objects for managing accounts (shown
in orange).
Learn by Doing
Object modeling takes practice: the best way to learn is
by doing. If you are in the midst of a project, consider going
back and creating an object model, even if you’re well along
in the design process. If you don’t have a current project and
want some practice, find a system to model—similar to what
we did here for Twitter, e-commerce, and Slack.
Collaborate!
Building an object model can be an effective team
exercise to get a shared understanding of either an existing
system or the requirements for new functionality. For
resources around team modeling, visit
objectmodelingfordesigners.com/resources
Have Fun!
I advise going into the modeling process with a sense of
fun and adventure, to enjoy the discovery and clarity that
object modeling can provide, particularly in a team situation.
Figure 7.1
Aggregate objects in the e-commerce model. You can also view this diagram
at
objectmodelingfordesigners.com/chapter-7
System Vocabulary
Clear and consistent system vocabulary is sometimes an
overlooked (yet easily fixed) factor in system usability. Even
seemingly equivalent terms (such as edit and update) can
cause users to second-guess. Over time, inconsistent labels
can creep into a system, particularly in larger, more complex
systems. If you have an existing system that has grown
organically over time, it can be worth modeling it to capture
its current state and inventory the terms in use. You can also
model a yet-to-be-developed system to help establish the
system vocabulary.
Figure 7.4
Tweet as both an object and an action
Checking for Functional Completeness
The object model can provide a helpful cross-check that
all objects are functionally complete, and that actions, in
particular, haven’t been overlooked.
Create
Edit
Delete
Search For
Figure 7.6
Main actions for a tweet clustered in the lower button bar
Figure 7.7
Actions for a product consolidated to the right on the product image
Figure 8.1
The dual perspectives of structure and flow
Figure 8.2
Common task flow artifacts
Beyond Prototyping
Designers are likely to be most familiar and comfortable
representing flows in a prototype; indeed, today’s design
tools make it quick and easy to “wire together” individual
screens into an interactive prototype. Prototypes can be
crucial artifacts for evaluating the design and
communicating the design intent for development. However,
creating a prototype is not always enough to ensure a good
design outcome.
Figure 8.3
Key task flow artifacts: the task flow diagram, screen flow diagram, and use
cases
Pre-conditions
Choices the user makes
Pre-Conditions
Pre-conditions are the situations existing at the start of a
task flow that determine the flow’s path. A simple pre-
condition for a purchase flow is whether the user is logged in
to an existing account. Users who are logged in have one
purchase path; users who are not logged in have another
(guest checkout).
Figure 8.4
Key flow diagramming symbols for UX
Figure 8.6
Task flow for re-routing power. You can also view this diagram at
objectmodelingfordesigners.com/chapter-8
Swim Lanes
You may need to illustrate task flows that progress across
more than one role, particularly with more complex systems.
In this case, you can create a swim lane for each role. Figure
8.9, a task flow diagram for re-routing power, shows all three
roles involved in the process: Quality Assurance, Distribution
Engineer, and Field Crew.
Figure 8.9
Task flow diagram with swim lanes. You can also view this diagram at
objectmodelingfordesigners.com/chapter-8
Figure 8.10 shows how a use case outline and a task flow
diagram can work together.
Figure 8.10
Task flow diagram with a use case outline. You can also view this diagram at
objectmodelingfordesigners.com/chapter-8
Exercise F: Solution
In Exercise F, you created a task flow diagram for the use
case Request and Complete a Trip. The example solution
is below (Figure 8.12):
Figure 8.12
Task flow diagram for Request and Complete a Trip. You can also view this
diagram at objectmodelingfordesigners.com/chapter-8
Screen flow diagram for Request and Complete a Trip. You can also view this
diagram at objectmodelingfordesigners.com/chapter-8
Figure 8.15
Figure 8.17
Figure 8.18
Task flow diagram for e-commerce checkout. You can also view this diagram at
objectmodelingfordesigners.com/chapter-8
Exercise G Solution
In Exercise G, you used a task flow diagram to create a
screen flow diagram. Figure 8.19 shows the example
solution.
Figure 8.19
Screen flow diagram for e-commerce checkout. You can also view this diagram at
objectmodelingfordesigners.com/chapter-8
Choose the Fidelity of Flow Diagram That Best Suits Your Need
This chapter covered two types of flow diagrams—the
task flow diagram and the screen flow diagram. In some
cases, it makes sense to prepare both, particularly when
requirements are unclear. However, you may find that you
can work directly with a screen flow diagram for more
straightforward flows or updates to existing flows.
Get Creative with Flow Diagramming
Flow diagrams are intended to communicate, so anything
you can do to enhance their clarity is a plus. Feel free to
extend or otherwise adapt the basic conventions presented
here. However, remember that using standard symbols will
make your diagrams easier for others to read and
understand.
Resources
Lucidchart. https://www.lucidchart.com/
Models and diagrams for this book were created using
Lucidchart.
References