An interaction design (ID) pattern is a general repeatable solution to a commonly-occurring usability problem in interface design or interaction design. An ID pattern usually consists of the following elements:
As numerous people have worked on the patterns in Human Computer Interaction in recent years, the concept of an ID patterns is known under different names; e.g. interaction patterns, user interface (UI) patterns, usability patterns, web design patterns, and workflow patterns. These patterns share a lot of similarities and basically all provide solutions to usability problems in interaction and interface design. Some patterns are known under different names (or even the same name) in different pattern collections.
Patterns originated as an architectural concept by Christopher Alexander (1977). Patterns and pattern languages for describing patterns are ways to describe best practices, explain good designs, and capture experience in a way that it is possible for others to reuse this experience. In addition to the patterns Alexander defined a set of rules e.g. a pattern language in which patterns could be meaningfully combined. Design pattern (computer science) are extensively used by software engineers for the actual design process as well as for communicating a design to others. Software patterns first became popular with the object-oriented Design Patterns: Elements of Reusable Object-Oriented Software book. Since then a pattern community has emerged that specifies patterns for all sorts of problem domains: architectural styles, object oriented frameworks, domain models of businesses and interaction design. The first substantial set of interaction design patterns was the Common Ground pattern collection, developed by Jenifer Tidwell. Many other collections and languages followed, such as Martijn van Welie's Interaction Design Patterns. Several books have recently been published about Web and UI design patterns, including:
|
|
|
Author |
Martijn van Welie http://www.welie.com/patterns/gui/undo.html |
|
Problem |
Users do actions they later want reverse because they realized they made a mistake or because they changed their mind. |
|
Use when |
You are designing a desktop or web-based application where users can manage information or create new artifacts. Typically, such systems include editors, financial systems, graphical drawing packages, or development environments. Such systems deal mostly with their own data and produce only few non-reversible side-effects, like sending of an email within an email application. Undo is not suitable for systems where the majority of actions is not reversible, for example, workflow management systems or transaction systems in general. Both novice and expert users may want to reverse their actions, either because of mistakes or changes in intention. Expert users may want to use the history of their actions for more specific manipulation of the data in the application. For example, in a graphical modeling application, users may want to undo work on some specific object while keeping later work done on other objects. |
|
Principle |
Error Management (Safety) (Norman, 1988) |
|
Solution |
Maintain a list of user actions and allow users to reverse selected actions. Each 'action' the user does is recorded and added to a list. This list then becomes the 'history of user actions' and users can reverse actions from the last done action to the first one recorded. This is also called a Linear Multi-level Undo. Interacting with the historyThere are two variations on how to show the history of actions to the users. First there is the standard 'office-like' way where the 'Edit' menu contains both 'Undo' and 'Redo' functions with their keyboard shortcuts. Often there is also a widget in the toolbar that can show the last items in the history. By dragging the selection in the list, actions can be undone. A second variant is to work with primarily with the history list itself and moving a slider or scrollbar to move back in history and undo actions. Photoshop uses such a variant. Displaying actionsActions in the history are usually displayed using a text label such as 'Create circle', 'Typing',' New contact'. Such labels only name the function and not the object the functions work on. In some applications it may be better to include the object and the parameters as well, for example 'Change-color Circle12 to Red'. Granularity of actionsWhen designing Undo it is important to determine the desired granularity of actions. For example, it is usually not desired to record each key press in a text editor as an action. Instead, typing a word is used as a unit of action. Designers need to determine what unit of action is appropriate in the application. Non-reversible actionsAlthough most actions in the application may be reversible, it is very likely that some actions will not be reversible. For example, printing, saving, doing a payment, or downloading an object. For actions that are non-reversible and 'negative' of nature (like paying or destroying something), need to show the user a Warning Message and not add the action to the history. Selective undoIn some cases, it can be meaningful to allow single actions from the history to be deleted. This is the case when a certain 'episode' of work must be deleted or undone while keeping work that has been done later on. Selective undo is conceptually much more difficult than linear undo since there is a notion of 'dependency between actions' that determines the consequences of undoing a particular action. For example, if a 'create circle' action is undone at some point in the history, subsequent actions in the history working on that object loose their meaning and must be deleted. There are many semantic issues with selective undo, see Berlage (1994) for more information on selective undo. Object-based UndoObject-based Undo can sometimes be considered as an alternative to Selective Undo. With Object-based Undo, each object has its own action history. Upon selecting the object, the users can undo actions done on the object. Naturally, this requires the application to have a clear concept of an 'object' and is therefore not applicable for bitmap editors. See Zhou and Imamiya (1997) for more on Object-based Undo. Multi-user undoIf the application is a multi-user application and uses undo, the application must distinguish between local actions and global actions. That leads to multiple histories and requires special semantics for what happens when undoing actions. See Abowd and Dix (1992) and Sun (2000) and Ressel and Gunzenhouser (1999) for more on multi-user undo issues. |
|
Why |
Offering the possibility to always undo actions gives users a comforting feeling. It helps the users feel that they are in control of the interaction rather than the other way around. They can explore, make mistakes and easily go some steps back, which facilitates learning the application's functionality. It also often eliminates the need for annoying warning messages since most actions will not be permanent |
|
Examples |
|
|
Implementation |
Most implementations of multi-level undo are based on the Command (Gamma et al 1995) pattern. When using the Command pattern, most functionality is encapsulated in Command objects rather than in other controlling classes. The idea is to have a base class that defines a method to "do" a command, and another method to "undo" a command. Then, for each command, you derive from the command base class and fill in the code for the do and undo methods. The "do" method is expected to store any information needed to "undo" the command. For example, the command to delete an item would remember the content of the item being deleted. |
|
Give us your opinion! Do you have any comments/additions
that you would like other visitors to see?
Abowd, Gregory D. and Dix, Alan J. (1992): Giving Undo Attention. In Interacting with Computers, 4 (3) pp. 317-342.
Alexander, Christopher, Ishikawa, Sara and Silverstein, Murray (1977): A Pattern Language. Oxford University Press
Berlage, Thomas (1994): A Selective Undo Mechanism for Graphical User Interfaces Based on Command Objects. In ACM Transactions on Computer-Human Interaction, 1 (3) pp. 269-294. Available online
Borchers, Jan O. (2001): A Pattern Approach to Interaction Design. John Wiley and Sons
Gamma, Erich, Helm, Richard, Johnson, Ralph and Vlissides, John (1995): Design Patterns: Elements of reusable object-oriented software. Addison-Wesley Publishing
Graham, Ian (2003): A Pattern Language for Web Usability. Pearson Education
Norman, Donald A. (1988): The Design of Everyday Things. New York, Doubleday
Ressel, Matthias and Gunzenhauser, Rul (1999): Reducing the Problems of Group Undo. In: Proceedings of the International ACM SIGGROUP Conference on Supporting Group Work 1999 November 14-17, 1999, Phoenix, Arizona, USA. pp. 131-139. Available online
© All rights reserved Ressel and Gunzenhauser and/or ACM Press
Sun, Chengzheng (2000): Undo Any Operation at Any Time in Group Editors. In: Kellogg, Wendy A. and Whittaker, Steve (eds.) Proceedings of the 2000 ACM conference on Computer supported cooperative work 2000, Philadelphia, Pennsylvania, United States. pp. 191-200. Available online
Tidwell, Jenifer (2005): Designing Interfaces: Patterns for Effective Interaction Design. O'Reilly and Associates
van Duyne, Douglas K., Landay, James A. and Hong, Jason I. (2002): The Design of Sites: Patterns, Principles, and Processes for Crafting a Customer-Centered Web Experience. Addison-Wesley Publishing
Zhou, Chunbo and Imamiya, Atsumi (1997): Object-based Linear Undo model, Proceedings of the Proceedings of the IFIP TC13 International Conference on Human-Computer Interaction. In: Howard, Steve, Hammond, Judith H. and Lindgaard, Gitte (eds.) Proceedings of INTERACT 97 - IFIP TC13 Sixth International Conference on Human-Computer Interaction July 14-18, 1997, Sydney, Australia. pp. 252-259.
...with the exception of materials described in...:
Furthermore, your use of Interaction-Design.org signifies your consent to:
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
1. Definitions
2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
For the avoidance of doubt:
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
8. Miscellaneous
The Interaction-Design.org Addendum to the Creative Commmons licence is a placeholder for additions to the Creative Commons licence, which are deemed necessary to include in consideration of Danish law and the operation of this site and The Interaction-Design.org Foundation.
Attribution must be clearly given, i.e. the author's name, the title and URL of this work/publication/web page must clearly appear. The attribution must be given in a manner appropriate to the medium in which it is given: For example, electronic copies must include a clickable URL, which does not use the nofollow attribute value.
The Interaction-Design.org Foundation reserves the unilateral right to update, modify, change and alter its Site Terms and Conditions as well as Copyright Terms at any time. All such updates, modifications, changes and alterations are binding on all users and browsers of Interaction-Design.org and will be posted here.
In some cases, a page/work may include content, such as an image, that is not covered by the copyright terms (i.e. "The Interaction-Design.org Addendum to the Creative Commons licence" and the "Creative Commons Attribution-ShareAlike 3.0 Unported"). When this is the case, we clearly label the content. For images, we also include the copyright label inside the image file (i.e. the full-resolution version) in metadata types like EXIF, IPTC, and XMP. We only include and label content with the following copyright terms:
In addition, content linked from a page is not covered by one of our licenses unless specifically noted. For example, pages may link to videos or slide decks that are not covered. The design of Interaction-Design.org (graphics, html, client-side scripts, etc.) is copyright of Mads Soegaard.
Please read these terms and conditions (the "Terms") carefully before using Interaction-Design.org. By using Interaction-Design.org you signify your consent to these Terms. If you do not agree to the Terms please do not use Interaction-Design.org. The Terms addresses your legal rights and obligations and includes important disclaimers and choice of law and forum provisions. Please read carefully.
Interaction-Design.org is owned and operated by The Interaction-Design.org Foundation, a privately held corporation incorporated under the laws of Denmark, with office in Aarhus, Denmark.
Address:
The Interaction-Design.org Foundation
Att: Mads Soegaard
Chr. Molbechs Vej 4
DK-8000 Aarhus C.
Denmark
Interaction-Design.org is run by The Interaction-Design.org Foundation, a privately held corporation residing in Aarhus, Denmark. You agree that these Terms and your use of Interaction-Design.org are governed by the laws of Denmark. You hereby consent to the exclusive jurisdiction and venue of the courts, tribunals, agencies and other dispute resolution organizations in Denmark in all disputes
The Interaction-Design.org Foundation has endeavoured to comply with all legal requirements known to it in creating and maintaining Interaction-Design.org, but makes no representation that materials on Interaction-Design.org are appropriate or available for use in any particular jurisdiction. You are responsible for compliance with applicable laws. Any use in contravention of this provision or any provision of these Terms is at your own risk and, if any part of these Terms is invalid or unenforceable under applicable law, the invalid or unenforceable provision will be deemed superseded by a valid, enforceable provision that most closely matches the intent of the original provision and the remainder of these Terms shall govern such use.
Your use of and browsing Interaction-Design.org is at your own risk. The Interaction-Design.org Foundation does not warrant that the software used for Interaction-Design.org, and the information, material, and content on it, or any other services provided by means of Interaction-Design.org are error-free, or that their use will be uninterrupted. The Interaction-Design.org Foundation expressly disclaims all warranties related to the above-mentioned subject matter, including, without limitation, those of accuracy, condition, merchantability and fitness for particular purpose. Notwithstanding anything to the contrary on Interaction-Design.org, in no event shall The Interaction-Design.org Foundation be liable for any loss of profits, revenues, indirect, special, incidental, consequential, or other similar damages arising out of or in connection with Interaction-Design.org or out of the use of any of the services proposed by means of Interaction-Design.org.
The Interaction-Design.org Foundation reserves the unilateral right to update, modify, change and alter its Site Terms and Conditions as well as Copyright Terms at any time. All such updates, modifications, changes and alterations are binding on all users and browsers of Interaction-Design.org and will be posted here.
The Interaction-Design.org Foundation and its authors make no representations as to accuracy, completeness, currentness, suitability, or validity of any information, material, or content on Interaction-Design.org.
THE MATERIAL AND CONTENT POSTED ON INTERACTION-DESIGN.ORG ARE PROVIDED "AS IS" WITHOUT ANY EXPRESS WARRANTY OR IMPLIED WARRANTY OF ANY KIND INCLUDING WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT OF INTELLECTUAL PROPERTY, OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT SHALL THE INTERACTION-DESIGN.ORG FOUNDATION BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, LOSS OF INFORMATION) ARISING OUT OF THE USE OF OR INABILITY TO USE THE MATERIALS, EVEN IF THE INTERACTION-DESIGN.ORG FOUNDATION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Because some jurisdictions prohibit the exclusion or limitation of liability for consequential and or incidental damages, the above limitation may not apply to you. Furthermore, The Interaction-Design.org Foundation does not warrant the accuracy or completeness of information of links or other items contained within these materials that have been provided by third parties.
Please contact us at mads@interaction-design.org if you, or your organization, wish to correct or change attribution or presentation of any image/material used on Interaction-Design.org, which you, or your organization, are the rightful copyright holder of. We will request that you submit proof of your ownership of the copyright on this material but will act immediately on any reasonable request.
Every effort has been made by the individual contributing authors as well as The Interaction-Design.org Foundation to discover and contact copyright holders of artwork/illustrations/content used on Interaction-Design.org. To the extent that a copyright holder could not be found or an inadvertent permissions or copyright error was made, The Interaction-Design.org Foundation stands ready to remove content upon notice and request by a copyright holder. In the case that you believe that any content or other material provided through Interaction-Design.org infringes your copyright, you should notify The Interaction-Design.org Foundation of your infringement claim in accordance with the procedure set forth below.
We will process each notice of alleged infringement which The Interaction-Design.org Foundation receives and take appropriate action in accordance with applicable intellectual property laws. A notification of claimed copyright infringement should be emailed to mads@interaction-design.org (subject: "Takedown Request"). You may also contact us by mail at:
The Interaction-Design.org Foundation
Att: Mads Soegaard
Chr. Molbechs Vej 4
DK-8000 Aarhus C.
Denmark
To be effective, the notification must be in writing and contain the following information:
All trademarks, logos, service marks, collective marks, design rights, personality rights or similar rights that are mentioned, used or cited on Interaction-Design.org are the property of their respective owners. The use of any trademark on Interaction-Design.org does not vest in the author or The Interaction-Design.org Foundation any trademark ownership rights in such trademarks, nor does the use of such trademarks imply any affiliation with or endorsement of The Interaction-Design.org Foundation and its authors by such owners. As such The Interaction-Design.org Foundation can not grant any rights to use any otherwise protected materials. Your use of any such or similar incorporeal property is at your own risk.
Screenshots of copyrighted computer software, for which the copyright is held by the author(s) or the company that created the software, is believed to fall under the fair use doctrine in the US (and similar laws in other countries). It is believed that reproduction for purposes such as criticism, comment, news reporting, teaching, or research is not copyright infringement. If you reuse screenshots, as well as any other information on Interaction-Design.org, you do so at your own risk and under the copyright laws of your country.
Abstracts in the Wiki Bibliography (/references/) are submitted by their authors who use the wiki to make their research as accessible as possible. When a page on Interaction-Design.org cites/references/lists a work from the bibliography, its abstract is included. However, abstracts have varying copyrights depending which publisher the work is published through. You should assume that an abstract is copyright, all rights reserved, of its publisher and/or author and therefore always use/cite abstracts according to Fair Use. You may visit the publisher's website to learn about the specific copyright terms (e.g. ACM, IEEE, or Springer) or contact the author directly. Bottom line: Cite/use abstracts according to the principles of fair use as it may otherwise be construed as a copyright infringement and subject to legal action.
You understand and acknowledge that additions to the Wiki Bibliography (including article abstracts), additions the Conference Calendar (including conference descriptions), user-contributed notes on each page (including text, photographs, graphics), or other materials posted by users on Interaction-Design.org ("Content") are the sole responsibility of the person from whom such Content originated. This means that you, and not The Interaction-Design.org Foundation, are entirely responsible for all Content that you upload, post or otherwise make available to other users of Interaction-Design.org.
When submitting content to Interaction-Design.org, you agree to not:
You acknowledge that The Interaction-Design.org Foundation shall have the right to remove any Content that violates these Site Terms and Conditions or is otherwise objectionable.
If we provide links or pointers to other websites, no inference or assumption should be made that The Interaction-Design.org Foundation operates, controls, or is otherwise connected with these websites. When you click on a link within Interaction-Design.org, we will not warn you that you have left a Site and are subject to the terms and conditions (including privacy policies) of the destination website. In some cases it may be less obvious than others that you have left a Site and reached another website. Please be careful to read the terms of use and privacy policy of any website before you provide any confidential information or engage in any transactions. You should not rely on these Terms for another website. The Interaction-Design.org Foundation is not responsible for the content or practices of any other website. By using Interaction-Design.org, you acknowledge and agree that The Interaction-Design.org Foundation is not responsible or liable to you for any content or other materials hosted and served from any third party website.
Email messages sent from members of The Interaction-Design.org Foundation, including emails generated from the use of the interaction-design.org website, are proprietary to The Interaction-Design.org Foundation, and are intended solely for the use of the individual to whom they are addressed. Such messages may contain privileged or confidential information and should not be circulated or used for any purpose other than for what they are intended. If you receive a message from a member of The Interaction-Design.org Foundation in error, please notify the sender immediately. If you are not the intended recipient, you are hereby notified that you are strictly prohibited from using, copying, altering, or disclosing the contents of the message. The Interaction-Design.org Foundation accepts no responsibility for loss or damage arising from the use of the information transmitted by email message including damage from virus.
Please make sure that you understand that the information provided by The Interaction-Design.org Foundation is being provided freely, and that no kind of agreement or contract is created between you and the owners, partners, users, or authors of this site, the owners of the servers upon which it is housed, the individual contributors of the The Interaction-Design.org Foundation, any project administrators, sysops or anyone else who is in any way connected with this project. If you choose to use or copy anything from from this site it does not create or imply any contractual or extracontractual liability on the part of The Interaction-Design.org Foundation or any of its members, partners, sponsors, contributors or other users. Your use of any such or similar incorporeal property is at your own risk.
Any dispute arising from the use of Interaction-Design.org or the interpretation of the terms is governed by the laws of Denmark, and shall be settled by the courts of Denmark. All communications regarding legal matters must be made in writing to
The Interaction-Design.org Foundation
Att: Mads Soegaard
Chr. Molbechs Vej 4
DK-8000 Aarhus C.
Denmark
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
-- Antoine de Saint Exupéry
Google's founder Sergey Brin is a fan of our author, Steve Mann. Steve is the father of wearable computing.
Read Steve's chapter