A Pattern Language for software systems.

A Partial Hierarchy of Parts for Software:

(Modeled after Graphic Design for Electronic Documents and User Interfaces by Aaron Macus, ACM Press, 1992, Figure A.1 Windowing System Component Terminology, page 188.)

Graphical User Interface
  Window System
    Window with Kbd Focus
    Child Window
      Dialog Box
        Modeless Dialog Box
        Modal Dialog Box
      Query Box
      Message Box
      Title Bar
      Window Menu Bar
      Message Area
      Close Control
      Size Control
      Minimixe Control
      Maximize Control
      Restore Control
        Scrollbar Handle
        Scrollbar Arrow
      Pull-Down Menu
      Implicit Pop-Up Menu
      Explicit Pop-Up Menu
      Stay-Up Menu
  Other GUI elements ...

Hierarchy of Parts

As described in Anatomy of a Pattern Language, a pattern language consists of a hierarchy of parts linked together by patterns which solve generic problems. Such a hierarchy is very similar to the widget hierarchy defined in the GUI code for a software application.

An example of a part in a software product is the part window system. The part window system combined with other parts make up the part GUI (Graphical User Interface). On the other hand, the part window system can be decomposed into parts (interface components or widgets), such as dialog box, query box, message box, close control, size control, scrollbar, menu, and so forth.

Some Example Cyberpatterns

Patterns for software systems might be generated by diving deep into what makes a certain part work in certain contexts. Or they may be generated by pursuing a particular subject like navigation, error messages, performance, or integration and release engineering issues. To illustrate we present some generic patterns dealing with the subject of color: Each of these patterns apply to the part document whether on paper or electronic. Other patterns may apply to more specific parts or contexts. For an example of a pattern specific to hypertext, including Web pages, see:

Design MatriX is developing a growing body of Cyberpatterns for its Web and Software Design & Engineering services.