A common, but mostly unconscious habit of software developers when theyface a problem is to break it down into its constituent elements, lookfor patterns of behavior and activity, and compare them to ...