Pattern Language

Abstract

SearchSoftwareQuality.com (2000) explained that a pattern (or design pattern) in the software development is a written document that describes the general solution of a design problem that recurs repeatedly in many software development projects where the software designers adapt such pattern solution to their specific project. In describing a pattern, a formal approach is used to describe the design problem, its proposed solution and other factors that might affect the solution or the problem. Design patterns include the following types of information that describe the pattern and the solution provided by such pattern:

  • The Name of the pattern that describes the pattern.
  • The problem to be solved by using such pattern.
  • The Context or the settings in which the problem occurs.
  • The forces that could potentially influence the problem and its solution.
  • The rationale behind the solution offered by such pattern.
  • Known uses of such pattern, and its related patterns.
  • Information about the author and the date such pattern were documents.
  • The keywords; and references that was used for searching.
  • Sample code related to the solution that the pattern offers.

Maioriello (2009) explained that design patterns have important benefits in different areas such as the software development, and some of these benefits are:

  • It provides a proven solution to many issues related to the software development where such solution facilitates the highly cohesive modules with minimal coupling.
  • It creates more efficient communication between designers.

On the other hand, pattern language links a set of patterns together and provides directions about the relationships between the patterns that can provide a solution for larger-scale problems, and as such; the design patterns form a system of design solutions that reinforce one another. Pattern languages are a good way of solving many kinds of complex systems design problems (DesignMatrix.com, n.d.).

Examples of Pattern Language

A pattern Language for Information Architecture – Information architecture is the practice of organizing the interrelated contents so the reader remain oriented to the information rendered within the application or the website that can be easily accessed and easily searched. By defining formal design patterns for information architecture, such tested architectures pattern can be applied to the content within any system to improve the user’s experience in browsing system contents or websites contents. The following are the patterns that are trying to solve this problem (Ellison, 2009):

a-      Pagination Pattern

Problem – A subset of sorted data to be easily displayed on one page and to be viewed by users. This pattern is used when more data to be displayed that can’t fit into one screen, and when it is acceptable to break the continuous flow of data. 

Solution – Display the dataset into smaller sequential parts that is breaking into separate sequential pages where pagination controls to browse the pages is provided. The pagination of the dataset provides links to the start and the end of the dataset in addition to the previous and next paging browsing to allow users to navigate through the complete dataset that is divided sequentially into pages.

b-      Bread Crumbs Pattern– It is highly required for users to know their location in the online document’s structure where the hierarchical structure can be displayed to the users so it can be easy for users to browse back to the higher level or to the lower level of the document’s hierarchy. The pattern is used when the structure of the document required to be divided into more subsections or when the document is parted into sections where it can be divided into subsections that can be used with the main navigation.

Problem – The online document’s hierarchical structure required to be known to users in order to browse back to the higher level within the document hierarchy.

Solution – Show labels of the sections in hierarchical path that can lead to the viewed page where each label can lead to the respective section of the site.

A pattern Language for User Interface Design – The pattern concentrate on the human-computer interface where such interface is more than just a series of command prompts, windows, and forms, and it must be designed to empower the users experience with the software systems. The pattern will help the software designer to build the software environment that will be productive, and pleasurable. The pattern describes how to use pop-up, icons, dialog boxes and other interface gadgets that increase the flexibility of the user interface. The following are the patterns included in the pattern language for the user interface design (Coram and Lee, n.d.):

a-      Interaction Style Pattern– The good designed interface will minimize the gap between the user knowledge required to gain to be able to use the interface and the user’s goals to access the software.

Solution – Keep things consistent and simple, and work with the user to determine what interaction style that work best with users. Use menu selection that can be structured to create a decision making path. Show instructions to the forms to explain the data entry tasks. Use direct manipulation interfaces that can create a highly interactive tasks. 

b-      Explorable Interface Pattern– A relationship has to be formed between the user and the application and as such; the interface must provide the means to achieve such goal.

Solution – A graphical user interface should be built within the application to allow user to experiment and explore the application, and as such; any user initiated command should be immediately cancellable or reversible.

c-       Single Setting Pattern – Busy windows can distract the user from the task the user is trying to accomplish on the problem at hand, and as such other windows should not physically get in the way of the data being focused on.

Solution – A single setting let the user focuses on one particular thread of action occurring, and as such; it is imperative that single concept application keep the user in the context of the data manipulation. 

d-      Multiple Settings Pattern– When more than one task must be performed by user, multiple windows, or modules are required to cooperate to get the job done, and as such; the system needs to be able to perform multiple related tasks to achieve the user’s desired goal.

Solution – Use navigational tools to tie each major task with its own setting, these settings must work together without requiring the user to quit tasks or to halt to reach such task.

e-      Command Control Center Pattern – Users need a well defined mechanism to navigate among tasks and initiate such tasks when need it, and as such; consistent interface is required to present an easy way to reach tasks and easy interface for user to easily instruct.

Solution – A command control center should be provided to user for easy access and provide a quick way to access tools, windows and tasks.

f-       Garden of Windows Pattern– With multiple settings available within any application, user may require several views of information or perform more than one distinct task at a time to get the job done, and as such; it is required to partition these tasks to avoid having the user overwhelmed with information.

Solution – Use separate window for each unique view data for each distinct task, and label the window with the name of the task.

g-      Goal Oriented Areas Pattern– Whether user are working with garden of windows or single setting, several functions may be required by user to accomplish certain task, and as such; related functions that compose a task is required to be organized in a coherent manner.

Solution – Related functions should be grouped together that can work toward completing a single goal within the same window, and new windows should be reserved for additional tasks that are not related.

h-      Modeless Feedback Area Pattern– When Goal Oriented Areas are used, it is important that a place that displays system feedback is provided. It’s normal in any application that the Information displayed to user can disrupt the natural flow of work.

Solution – Rather than using dialog boxes or pop up windows, a status area can be used to display information about the current state of the application. 

i-        Visual Symbols Pattern– It’s efficient to visually display data to communicate information; however overwhelming user with misleading metaphors; or useless data must be avoided.

Solution – Application interface should be based on visual cues that are understandable and recognizable by the target audience, and as such; it’s important to determine if the standard symbols are belong to IEEE symbols or ISO symbols before creating special symbols, and the application metaphors should be simple for users to understand.

A Data Flow Pattern Language – The data flow pattern language includes the following patterns (Manolescu, 1997):

 a-      Data Flow Architecture Pattern– It is important to find out the architecture that can accommodate the fact that some applications perform a number of operations on similar data elements without compromising performance.

Solution – Create the application’s architecture in way that seen as a network of modules by highlighting the data flow of such application and instead of attempting to solve a complex problem all at once, the application architecture can split the problem into sub-parts that can be dealt with separately.

b-      Payloads Pattern– Ensure a low coupling between entities within an application when sending and receiving any types of information among these entities while reducing the message passing overhead, and allowing communication over different channels.

Solution – For entities located across logical boundaries, the direct calls not feasible for such communication where complex data are required to exchange among these entities, and as such; data exchange has to be packaged in messages (payloads) which are logically passed among the communicating parties.

c-       Module data protocol Pattern – How can payload be transferred among modules in a way that is compatible with the applications that have a domain-specific requirements.

Solution- For models that exchange payloads there’re three different ways to assign flow control among such modules. One solution is to create a mechanism where the downstream module can request information from the upstream module through method / procedures calls that returns the values as results (Pull – functional). Another solution is for the upstream module to issue a message whenever new values are available where procedure calls can contain new data as arguments, or as continuation-style program jumps, or as non-returning point-to-point message (Push – event driven).

d-      Out-of-band and in-band partitions Pattern– An application can have different functionalities contrasting requirements. How can the conflicting design, architectural and solutions implemented within the application can be combined without compromising any of them?

Solution – Application should be organized in partitions base on their requirements and as such; partition is responsible for specific user interaction can be implemented through either Out-of-band Partition where the partitioning process in not limited to user interfaces but rather suitable for any instance of an application that has contrasting requirements with a dual functionality. The problem can be also solved through implementing In-band partition where each partition contains the code that performs the data processing according to the application’s requirements.    

Conclusion

Pattern represents a defined common solution for recurring design problems, and the instance of such solution can be used to solve a particular problem. To use a certain pattern, it is important to be familiar with the pattern, and understand the problem is trying to solve. The documentation of the design pattern is highly structured in a template that identifies the information needed to understand the software problems and the solution (Maioriello, 2009).

A pattern is a generic design solution; that occurs many times in product design, architecture, software and website design etc. Pattern is more of abstract of a design principle where it can be applied wherever the problem occurs (DesignMatrix.com, n.d.).  

Finally, a pattern language cannot be treated as a Bible, it is not only provides a great deal of information; it also deserves the respect of sophisticated architectural theories and designers as well as it requires attention to its details. The intention of the pattern language is to create an ideal world that can implement the ideas and the theories of others to solve common problems in the real world and avoiding creating mistakes that create other problems.

References

Coram, T. & Lee, J. (n.d.) A Pattern Language for User Interface Design [Online]. Available from: http://www.maplefish.com/todd/papers/Experiences.html#AFT-top (Accessed: 12 March 2011).

DesignMatrix.com (n.d.) Pattern Languages – Putting form in context [Online]. Available from: http://www.designmatrix.com/pl/index.html (Accessed: 12 March 2011).

Ellison, M. (2009) A Pattern Language for Information Architecture [Online]. Available from: http://www.uaeurope.com/downloads/Pattern_Language_for_Information_Architecture.pdf (Accessed: 12 March 2011).

 Maioriello, J. (2009) What are Design Patterns and DO I Need Them [Online]. Available from: http://www.developer.com/design/article.php/1474561 (Accessed: 12 March 2011).

Manolescu, D. (1997) A Data Flow Pattern Language [Online]. Available from: http://micro-workflow.com/PDF/plop97.pdf (Accessed: 12 March 2011).

Saunders, W. (1977) A Pattern Language [Online]. Available from: http://www.gsd.harvard.edu/research/publications/hdm/back/16books_saunders.pdf (Accessed: 12 March 2011).

SearchSoftwareQuality.com (2000) Pattern (design pattern) [Online]. Available from: http://searchsoftwarequality.techtarget.com/definition/pattern (Accessed: 12 March 2011).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: