Skip to main content

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

  • Close [x]

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

  • Close [x]

Architecture tip: User interface design using the OODA loop

A checklist for getting your user interface design off to the right start

Tom Hammell (tshammell@us.ibm.com), Staff Software Engineer, IBM
Photo of Tom Hammell
Tom Hammell is a staff software engineer with IBM and works on developing software for enterprise data management. He has more than 20 years of experience developing software. He has published numerous articles on Java™ topics, ranging from Swing development to unit testing and has published a book on test-driven development. He also lectures frequently on Java topics. He holds a bachelor's degree in electrical engineering and a master's degree in computer science from Stevens Institute of Technology.

Summary:  The OODA loop was developed by the Air Force as part of its study of air combat. This observe-orient-decide-act (OODA) cycle models the human brain’s decision-making process. This article explains how UI architects can use the ideas of the OODA loop to design user interfaces (UIs) that give users better situational awareness and are more intuitive to use. In this article, learn the basics of the OODA loop, and find out how it can be applied to UI design. The end of this article features a checklist you can use to help with the initial design of your UI.

Date:  12 Mar 2008
Level:  Introductory PDF:  A4 and Letter (43KB)Get Adobe® Reader®
Also available in:   Chinese

Activity:  3273 views
Comments:  

What is the OODA loop?

The Air Force has studied air combat since World War I. Over the years, different theories of air combat have evolved and culminated with the development of the OODA loop by John Boyd.


Figure 1. The OODA Loop
The OODA Loop

Figure 1 shows the basic steps in the loop and how they are related. The OODA process is complex and a full explanation is outside the scope of this brief article, but the pictures offer a good overview. The key to understanding the OODA loop is understanding how information is fed back and forward between each step and how all the pieces work together as a whole. The basic steps can be defined as follows:

  • Observe—Gather information from the environment about the problem that you are trying to solve.
  • Orient—Use the information gathered to form a mental model of the circumstances. That is, synthesize the data to assess the situation in your mind. As more information is received, you deconstruct old mental models, then create new ones to better fit the situation. Note that different people require different levels of details to perceive an event. We often imply that the reason some people cannot make good decisions is that those people are bad decisions makers. However, the real reason most people make bad decisions is that they fail to place the information that they do have into its proper context. This is where orientation comes in. The orientation step should take into account the users' experience and skill level. It should also emphasize the context in which events occur, so the user can make better decisions on how to act. Orientation is what helps turn information into knowledge. And knowledge, not information, is the real predictor of good decision making.
  • Decide—Consider options and select a course of action that you think will help you solve the problem.
  • Act—Carry out the conceived decision and test the result. Once you observe the result of the action, you feed back this information to the beginning of the loop and start the process over again. Note that in combat (or in competition), you want to cycle through the four steps faster and better than the enemy, which is probably working through its own OODA loop.

How to use the OODA loop for UI design

So what do air combat and the OODA loop have to do with UI design? A lot, actually. The OODA loop is a good model for how people interact with their environments and how they make decisions to solve problems. A UI is simply a piece of software that helps a user solve a problem—whether that problem is how to find a book from Amazon.com or how to control a nuclear reactor.

A good UI should help people quickly go through the OODA process. First, it should show them the information that they need to solve a problem (allow them to observe). Next, it should present the information in a way the makes it easy for them to understand the problem (orient them to the situation). Then it needs to show them the possible actions that can be taken (present them with the opportunity to decide). Finally, it should provide feedback on the results of the action that was taken (enable them to see the results of their actions).

A well-designed UI should allow a user to carry out tasks as quickly and efficiently as possible. There have been many studies about UI design and how to improve it. The result of these studies is usually a set of guidelines to use when you create a UI. The guidelines often dictate how to format different types of data or what color and font to use for text. Although these types of conventions give a consistent look a feel to the UI and improve usability, they do not provide much help in the initial design of the UI.

If you look at a UI as a piece of software used to make a decision, you can use the OODA loop as the model for the decision process when you're designing a UI. Just put yourself in the users' position and try to create a set of screens that will help them gather information and make decisions as fast as possible. Look at the UI as an implementation of the OODA loop, and come up with a list of questions that you should ask at each step in the design process to help the user quickly make decisions.

To start the UI design process, the first question that you should ask is

What is the problem that this UI solves?

This question is important because the answer helps you, as a designer, determine the domain of the problem. The description of the problem to be solved should be as specific as possible. Something like, “The user needs to monitor the temperature of a nuclear reactor to ensure it stays below a certain range, and the user needs to be able to shut down the reactor if the temperature is above the temperature range,” is a very specific answer to the problem.

Observe

After you identify the problem that the user is trying to solve, the next question to ask is

What data does the user need to understand the problem domain?

The answer to this question will determine what information needs to be gathered from the problem domain. It may require collecting information from a database, querying a Web service, or getting data from a previous user action. It is important to make sure you have a good idea of all the information that a user would need to fully understand the problem. The information to collect includes external data from the environment as well as internal information fed back from the other parts of the UI.

Orient

Now that you have gathered the information, the next question to ask is

How can I present the data in a way that will give the user a comprehensive picture of the problem domain?

You need to determine how to organize and present the data. This will involve reformatting and combining data to present it in a model that will give the user a clear mental picture of the problem domain. When determining how to present the data, you need to take into account the user's previous knowledge and experience. That brings up another set of questions:

What type of user will be using the UI? What type of experience and knowledge does the user have about the problem? How does the user turn information into knowledge?

You should find out the level of familiarity the user has with the system, what type of experience the user has, and so on.

This picture should be constantly updated as the underlying data changes, so the user understands not only the current state of the problem domain but also how changes affect the domain.

The key here is to understand how the user views and interacts with the domain so that you can present it in a format that is familiar to the user.

Decide

The model presented to the user may be very simple or very complex. If the model is simple—for example, a table with a list of invoices that need to be paid—the decision can be as simple as, "Pay the invoices that are due." If the model is complex—perhaps a diagram showing a nuclear reactor going critical—the decisions on how to prevent a meltdown will be complex. The UI should provide guidance on these decisions.

The question here is

What actions are associated with each part of the model?

The answer to this question will help you determine how to add actions (buttons, context-sensitive menus, check boxes, and so on) that will let the user know what actions are associated with each part of the model. The various actions enable users to make decisions that will affect the model.

Act

After the user acts, it is important that he or she receives feedback on the result of the action. If the user paid an invoice, you may want to display a message saying the invoice has been paid and then update the table, marking the status of the invoice as "paid." The question to answer here is

After an action has been taken, how should the model be updated to show the result of the action?

The answer to this question is critical to success of the user interface. The quicker the user understands the results the actions taken, the sooner the user can understand whether he or she has solved the problem or needs to take more actions.

After you have answered questions for each part of the OODA loop, the last question to ask is.

What information should be fed forward or fed back between the different parts of the UI to help improve the user’s knowledge of the state of the model?

The UI should present a model to the user that is consistent with his or her particular view of the problem being solved. As outside information changes and as the user takes actions, the changes need to be reflected in the model as quickly as possible. Quickly presenting changes to the model will improve the user’s situational awareness and allow the user to make better decisions.

If you can answer all of these questions in sufficient detail, you can use the answers to create use cases, documentation, and a number of other artifacts needed in the design and implementation of the UI.

Of course there is much more to the process of UI design. Answering the questions will get you started on the design, but you will need to continue to refine it. Refining is where usability practices like defining a consistent look and feel, creating prototype screens, and getting user feedback come in. If you take the time to think about the answers to the questions and follow some simple usability practices, you should be well on your way to creating a good UI.


UI designer's checklist

Developers working on UI design should try to understand the OODA loop and use it in the initial design of the UI. The focus should be on understanding the problem that the UI is solving and providing UI that helps the user make quick decisions. If you use the questions in the checklist to help guide your design, you should be able to design a UI that users will enjoy using.

Checklist questions

  1. What is the problem that this UI solves?
  2. What data does the user need to understand the problem domain?
  3. How can I present the data in a way that will give the user a comprehensive picture of the problem domain?
  4. What type of user will be using the UI? What type of experience and knowledge does the user have about the problem? How does the user turn information into knowledge?
  5. What actions are associated with each part of the model?
  6. After an action has been taken, how should the model be updated to show the result of the action?
  7. What information should be fed forward or fed back between the different parts of the UI to help improve the user’s knowledge of the state of the model?

Resources

About the author

Photo of Tom Hammell

Tom Hammell is a staff software engineer with IBM and works on developing software for enterprise data management. He has more than 20 years of experience developing software. He has published numerous articles on Java™ topics, ranging from Swing development to unit testing and has published a book on test-driven development. He also lectures frequently on Java topics. He holds a bachelor's degree in electrical engineering and a master's degree in computer science from Stevens Institute of Technology.

Report abuse help

Report abuse

Thank you. This entry has been flagged for moderator attention.


Report abuse help

Report abuse

Report abuse submission failed. Please try again later.


developerWorks: Sign in


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


Rate this article

Comments

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Architecture
ArticleID=294644
ArticleTitle=Architecture tip: User interface design using the OODA loop
publish-date=03122008
author1-email=tshammell@us.ibm.com
author1-email-cc=

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

For articles in technology zones (such as Java technology, Linux, Open source, XML), Popular tags shows the top tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), Popular tags shows the top tags for just that product zone.

For articles in technology zones (such as Java technology, Linux, Open source, XML), My tags shows your tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), My tags shows your tags for just that product zone.

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Special offers