Design patterns are reusable solutions to commonly occurring problems. When an engineer or designer is solving a design problem, many small decisions must be made. A design pattern is a collection of these small decisions, orchestrated into a whole solution. Patterns originated as an
architectural concept by architect
Christopher Alexander as a way to organize key principles and best practices for the design of living spaces. These design patterns were given names, such as "A Place to Wait", which addresses the architectural design of bus stops, surgery waiting rooms, and bank queues. A pattern is abstract enough to apply to many problems which share a common shape, yet concrete enough to be actionable.
In the course of developing this idea for architectural design, Alexander hit upon a powerful and beautiful concept for all engineering and design disciplines, and this meme has taken hold most notably in the area of software engineering.
When Axeda approaches the "design problem" of helping a customer apply our platform to their business objectives, our professional services and consulting teams look for what I call
Solution Patterns. In this context, a solution pattern is a way to describe a collection of those many small design decisions that build towards a solution to a customer's smart service or asset management problem. Some examples of Solution Patterns using Axeda products include:
- Early Warning System - monitor key indicators for equipment failure, based on previously determined heuristics, and produce an alarm condition to warn of impending system failure
- Flight Recorder - gather detailed telemetry data from equipment but do not report unless there is an alarm condition, or if requested
- Push for Help- allow an end-customer to request service from the equipment itself, producing alerts to remote service technicians
- Remote Control - remotely control equipment, interactively
- Self Heal - automatically take corrective measures to common problem situations
- Software Update - publish updated software for your systems
These are just a few, but illustrate the idea and power of this concept on a couple of levels. These patterns provide a launching pad for thinking about what shape a service initiative will take, how best to provide value to end customers, and get the creative juices flowing. When it comes time to implement, aligning with these established patterns can lend speed to the implementation, reduce trial-and-error, and organizes both Axeda and our customer's teams.
This line of thinking also gets everyone in the right frame of mind - solving problems. All too often, IT projects focus on tools, and consequently the solution takes shape around those tools and what they do, while the original problem is partially forgotten, and therefore only partially addressed. In software design, this is what is called an anti-pattern - a recurring pattern of behavior that is ineffective. The methodology of looking for solution patterns inverts this anti-pattern by elevating the problem as the locus of attention, using tools as a means to an end.
For many of our customers, just one pattern can completely satisfy their needs. For others, a synthesis of these patterns come together for a comprehensive program. I like to think of the Axeda product family as being a set of tools that can realize solution patterns. This perspective can be used to understand our product road-map. Our Axeda SmartLink Platform packs a powerful set of new tools, but the goal is not to create new tools - the goal is to facilitate new and powerful solution patterns that help our customers solve their problems in elegant and effective ways.
In the coming weeks, I'll be detailing specific solution patterns, with real-world examples from our customers, and also describing some of the new solution patterns that will be realized by our product road-map.