Search My Blog & Website

Wednesday, August 12, 2009

Patterns: What Are They? Part 1

Literally patterns are defined as a combination of qualities, items, objects, behaviors, or other which form a consistent or characteristic arrangement. We observe dozens of daily patterns every day. Examples are teen behavior, the movement of the earth around the sun, the blooming of flowers and hundreds more.

"A combination of qualities, items, objects, behaviors, or other which form a consistent or characteristic arrangement"


Patterns are not new to man-kind, the Creator has informed us about patterns in the Quran and other earlier revelations. Recently system developers started to analyze the concept of patterns, pioneered by Christopher Alexander in his book, " A Timeless Way of Building", he defines a pattern as a three-part rule, expressing a relation between a certain context, a problem and a solution.

Patterns are a first step in understanding root causes of the problem within a specific context. It also allows the development of architectural and solution building blocks.

"In systems realization, patterns express a relationship between a problem and its solution within a given context"
For a software designer some pattern examples are: Message Translators, Process Managers, and Proxies to mention a few. A process manager pattern for example will comprise of a sensor to detect an incoming message which initializes the process manager. The process manager in turn executes a set of rules stored in the process manager memory implementing the processing rules, and detects the subsequent steps through a status feedback detector/analyzer.

Considering a different domain, take the example of a group that does youth trips, examples of patterns could be: Headcount Process, Critical Supplies, Meal Managers, Activity Itinerary Manager and many more. An Activity Itinerary Manager pattern will comprise of an input process to capture developmental and coaching themes/needs of the youth trip, a search process to match the theme to a group of activities that meet the objectives of the theme from a repository of activities, the selected lists of activities could then pass by the activity processor which breaks down the activity into steps, each assigned to resources, a lead, a cost structure, risk factor and plan of action. Feedback from the actual deployed activity is then finally fed back into the activity manager for updates to the activity definitions and other relevant areas, within quality expectations.

_____________To Read More _______________

(1) Hohpe and Woolfe, "Enterprise Integration Patterns: Designing, Building and Deploying Messaging Solutions", Addison Wesley signature Series, 2004.

(2) Haskins and Raveh, "Introduction to Patterns Through Writing Systems Engineering Patterns", 16th Annual International Symposium, 2006.

(3) Gross and Yu, "From Non-Functional Requirements to Design Through Patterns".

2 comments:

Ibn Siddique said...

How do we stop ourselves from getting bored being in a pattern/routine but still being productive?

Ayman Nassar said...

You are right, a solution for a common problem, which becomes a pattern will beccome routine and boring after a while, however dealign with it as a pattern shoudl allow us to view it as a low value solution and become efficient in its execution and hence it shoudl take less and less time as we progress, one example is a computer, introduced a solution to realize the implementation of many patterns, for example processing a payroll timesheet.

You can develop different solutions for the problem, or introduce changes so that the problem changes, and hence your pattern changes, and change will break the routine.