Object Modeling for Designers: An Introduction

How an Object Model Can Help

Why haven’t design systems proven to be a silver bullet? One problem is that design systems are often focused at the component level (or use the component level as a starting point). The systems then fail to mature beyond a collection of components.

Brad Frost’s Atomic Design Methodology

Roots of Object Modeling

The whole idea of interface objects stems from the development of the graphical user interface (GUI). With a GUI, users could directly interact with objects represented on-screen; it was a radical departure from the command-line interfaces in use at the time. The Xerox Star system, released in 1981, was the first commercially-available system with a GUI — and served as inspiration for the Apple Lisa (in 1983) and later the Apple Macintosh (in 1984).

A command line interface
Xerox Star 8010, 1981. Note the window with the conference paper: they are talking about objects and actions! These are key constructs underlying a GUI.
A simple use case diagram for a banking system.
An example UML Class Diagram for an ATM.
Books promoting object-oriented interface design. You can still purchase these today via Amazon.

The Narrative Object Model

What I am proposing is a simplified object model I call a Narrative Object Model — narrative because it substantially replaces the UML notation with plain-English narrative. Also, while the Class Diagram is highly structured, following the rules of UML, the Narrative Object Model is lighter-weight and more flexible.

Creating a Narrative Object Model

In this next section, we’ll walk through the process of creating a model, breaking the process into three steps:

Source Materials for the Model

Creating the model starts with identifying the source materials you have available. What sorts of artifacts do you have that describe or otherwise depict intended functionality?

Identifying Objects

Below is a screen capture of a Tweet from Twitter.com. We have a button bar below the Tweet and a menu (shown expanded) to the right. We’ll use these to identify some nouns (aka objects).

The button bar (bottom) and menu (right) can be a source for identifying objects.
  • Copy Link to Tweet
  • Embed Tweet
  • Report Tweet
  • I don’t like this Tweet
  • An Account, represented in this case by the account name Fine Cooking Mag (an instance of the Account).
  • A Moment, indicated by the menu item “Add to new Moment.”
  • A Direct Message, indicated by the envelope icon which means “Send Direct Message.”
Objects identified from a Tweet’s button bar and menu.
A set of initial object rectangles.

Relationship Between Objects

Revisiting the UML Class Diagram, you’ll note there is a somewhat cryptic notation scheme for depicting relationships between objects. This scheme involves notating multiplicity of the relationship and showing relationship types using different line-end treatments.

A UML Class Diagram uses various line notations to describe the relationships between objects.
Narrative Object Model describing the relationships between objects.
  • An Account can send a Direct Message
  • An Account can publish Tweets
  • Tweets can be curated into groups call Moments

Identifying Actions

Next, let’s identify some Actions associated with a Tweet. We can again use the button bar and menu as a starting point:

Actions (highlighted in yellow) identified using a Tweet’s button bar an menu.
The object Tweet with its associated actions.
Narrative Object Model for Twitter showing the relationship between objects and each object’s actions.

Identifying Attributes

It’s easiest to think of attributes as the data fields associated with each object. Attributes are what characterize each instance of an object; they listed are in the middle pane of the object rectangle, as shown below for the Tweet object:

The object Tweet with attributes (middle pane) and actions (lower pane).

Building Out the Model

Next, let’s look at our model more fully built-out, with some additional elements added to it.

Narrative Object Model for Twitter
  • Indicating which objects are the core system objects (in bold outline)
  • Using traditional UML line-end treatments to characterize relationships further
  • Using color to associate objects with a similar purpose

Indicating Core System Objects

Not every object is of equal importance in a system. Some objects represent a system’s unique value proposition or are otherwise central to the experience. It usually makes sense to design conventions for the core objects first and then extend the conventions out to other objects in the system.

Indicating Specific Types of Object Relationships

In the model, it can be helpful to represent specific types of relationships. Relationship types illuminate more about the objects and how they might be treated from a design perspective.

  • Association
  • Aggregation
  • Component
  • Inheritance

Association Relationship

The simplest type of relationship is an association. Here we are showing the relationship between an Account and a Tweet with a plain line. In our Narrative Object Model, the line contains a verbal description of the relationship; the description includes reference to both objects (in bold).

An association relationship, indicated by a plain line.

Aggregation Relationship

An aggregation relationship indicates an object that is merely a collection or list of other objects. For example, in Twitter users can add Tweets to a collection called a Moment. A Moment is a kind of collection of Tweets.

An aggregation relationship, indicated by an unfilled diamond.

Component Relationship

A component relationship is a type of dependency relationship where one object is a component of another. For Twitter, a Hashtag is an important component of a Tweet. The concept of a Hashtag is entirely dependent upon the idea of a Tweet — if you remove the concept of a Tweet from the system, the concept of Hashtag necessarily ceases to exist.

A component relationship, indicated by a filled-in diamond.

Inheritance Relationship

Last but not least is the inheritance relationship. This is a parent-child relationship where the children objects inherit all or some of the parent object’s characteristics.

An inheritance relationship, shown by an unfilled arrow.

Indicating Objects with a Similar Purpose

Large models can become visually complex. To make them easier to read, it’s helpful to color-code objects that share a similar purpose. For example, for Twitter I’ve used three categories of objects:

  • Core Experience (blue)
  • Categorization & Discovery (green)
  • Account Management (orange)

A More Real World Model

I’ve used Twitter to create an example model since it’s a relatively simple, well-known system. For simple systems, the objects and their relationships might be self-evident. However, that’s not usually the case with more complex systems, where the object model can provide a concise representation of an otherwise incoherent underlying structure.

Narrative Object Model for an enterprise workflow management system.

Mastering Object Modeling

Object modeling takes some practice: the best way to learn is by doing. If you are working on a current project, go back and create an object model, even if you’re well along in the design process. If you don’t have a current real-world project, it’s easy to model existing systems on the web, as we did here for Twitter.

  • Start with the easy stuff — for example, just identifying some objects.
  • For larger systems, it may make sense to create two or more smaller models and then bring them together.
  • Build out the model over time, in a series of shorter work sessions.
  • Do just enough to serve your purpose; avoid analysis paralysis.
  • Two people may model the same system slightly differently, and that’s OK.

Using the Model

Of course, we aren’t creating models solely as an analytical exercise. We want to use the model to improve design outcomes.

  • A system’s signature elements
  • Objects that are similar either in purpose or function
  • What might be functionally incomplete
  • Controlled vocabulary terms

Identifying the System’s Signature Elements

The rise of ready-made design systems such as Google Material Design has meant it’s easier than ever for an organization to get started on their design system. The risk with using publicly available components (or deriving directly from them) is that your application looks and feels like all the other ones out there. One way to avoid this is by first developing conventions for your core objects — those that are central to the experience — making the design of those objects distinctive. These collectively become the system’s signature elements, extended and built upon for the remaining design conventions. This approach has been proposed both by Dan Mall in “Distinct Design Systems” and by Emmet Connolly in “The Full Stack Design System.”

Identifying Objects Similar in Function or Purpose

Another way to view the model — and drive design conventions — is to identify those objects with a similar function or purpose and design those objects as a unit. For example, aggregate objects are often lists or collections that are inherently similar in function. By designing conventions for these objects concurrently, you can avoid the case where you’ve created a design based on one object but then discover it doesn’t appropriately extend to a substantially similar object.

  • Core experience
  • Categorization & Discovery
  • Account Management
  • System Users
  • Roles in a Transaction
  • Components of a Transaction
  • Work Management

Identifying What Might be Functionally Incomplete

When designing new functionality, the object model can provide a helpful cross-check that all objects are functionally complete — and that actions, in particular, haven’t been overlooked.

Identifying Controlled Vocabulary Terms

A common problem with systems that have grown over time (or have functions built by different teams) is inconsistent vocabulary. Sometimes inconsistencies are relatively minor (Edit vs. Update) but they can also be foundational (Task vs. Assignment).

Keeping a Clear Relationship Between an Object and Its Associated Actions

During screen-level design work, the object model can serve as a reference to make sure there is a clear association between an object and its associated actions. Though this may sound like remedial advice, I’ve encountered many a system with illogically dispersed actions. Typically, this happens over time where new functions are placed where there’s available screen real estate rather than where they would more logically fit into the experience.

Wrapping Up

In this article, I’ve attempted to lay out the case for object modeling. I consider object modeling a skill in my UX tool belt, along with conducting research, facilitating workshops, journey mapping, persona development, and the like. These are all inputs which, depending upon the needs of the project, contribute to successful design outcomes.

The Book…

My book on object modeling is now available! The companion website has additional model examples from the book.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Heidi Adkisson

Heidi Adkisson

Principal UX Designer & Partner at Blink UX • Crafting better enterprise experiences since 1988