Patterns originated as an architectural concept by Christopher Alexander. Patterns are ways to describe best practices, explain good designs, and capture experience so that other people can reuse these solutions.
Design patterns in computer science are used by software engineers during the actual design process and when communicating designs to others. Design patterns gained popularity in computer science after the book Design Patterns: Elements of Reusable Object-Oriented Software was published. Since then a pattern community has emerged that specifies patterns for problem domains including architectural styles and object-oriented frameworks. The Pattern Languages of Programming Conference (annual, 1994—) proceedings includes many examples of domain-specific patterns.
Applying a pattern language approach to interaction design was first suggested in Norman and Draper's book User Centered System Design (1986). The Apple Computer's Macintosh Human Interface Guidelines also quotes Christopher Alexander's works in its recommended reading.
Alexander envisioned a pattern language as a structured system in which the semantic relationships between the patterns create a whole that is greater than the sum of its parts, much like the way that grammatical relationships between words make language meaningful.4 While some collections of patterns attempt to create the structural relationships needed to form a language, many others are simply an assemblage of patterns (and thus are more appropriately termed pattern libraries.)
The popularity of mobile devices such as smartphones and tablets usher in a need for a library of mobile interaction design patterns.
This need is driven by:
For patterns to be helpful to the designers and developers who will make use of them, they need to be findable and readable.567
Though pattern descriptions vary somewhat, many pattern libraries include some common elements:
Pattern libraries can also include optional elements, depending on the needs of the team using them. These may include:
Benefits of using interaction design patterns include:
Guidelines are generally more useful for describing requirements whereas patterns are useful tools for those who need to translate requirements into specific software solutions. Some people consider design guidelines as an instance of interaction design pattern as they are also common approach of capturing the experience in interaction design. However, interaction design patterns usually have the following advantages over design guidelines:
Guidelines and patterns are not necessarily conflicting, and both can be used in conjunction to identify the problem and then create a valid solution.
Coplien, James. "A Pattern Definition". Bell Laboratories. Archived from the original on 2007-02-09. Retrieved 2008-11-24. https://web.archive.org/web/20070209224120/http://hillside.net/patterns/definition.html ↩
"What's a Pattern?". Yahoo!. Archived from the original on 2008-12-04. Retrieved 2008-11-24. https://web.archive.org/web/20081204010012/http://developer.yahoo.com/ypatterns/page.php?page=lifecycle ↩
Tidwell, Jennifer. "Common Ground: A Pattern Language for Human-Computer Interface Design". MIT. Retrieved 2008-11-24. https://www.mit.edu/~jtidwell/interaction_patterns.html ↩
Pemberton, Lyn. "Genre as a Structuring Concept for Interaction Design Pattern Languages". University of Brighton. Archived from the original on 2006-10-22. Retrieved 2008-11-24. https://web.archive.org/web/20061022190840/http://www.it.bton.ac.uk/staff/lp22/genredraft.html ↩
Spool, Jared. "The Elements of a Design Pattern". User Interface Engineering. Archived from the original on 2008-12-20. Retrieved 2008-11-24. https://web.archive.org/web/20081220050709/http://www.uie.com/articles/elements_of_a_design_pattern/ ↩
Malone, Erin. "Implementing a Pattern Library in the Real World: A Yahoo! Case Study". Boxes and Arrows. Archived from the original on 2008-12-07. Retrieved 2008-11-24. https://web.archive.org/web/20081207023837/http://www.boxesandarrows.com/view/implementing_a_pattern_library_in_the_real_world_a_yahoo_case_study ↩
Kunert, Tibor (23 June 2009). User-Centered Interaction Design Patterns for Interactive Digital Television Applications. Springer. ISBN 9781848822740. Retrieved 2009-07-06. 9781848822740 ↩