Skip to content
* / softthoughts

“Overusing” patterns or “Misusing” patterns?

People can state that patterns can be overused. In a way this sounds strange to me.

A pattern is a model that provides a structured solution to a known recurring problem. It is a structure with a set of elements and their relations. By using a pattern in your design it provides some design characteristics which can be needed to deliver a specific quality.

Everyone of us follows in every time frame of every day some kind of pattern. How many times did you went to buy bread and went to the bakery? What are your eating habits? What do you like to do in general?  For all our behavior, structured models can be build. This is not only true for our behavior but for every behavior. Although on a quantum level this can be untrue, and it is a difficult debate for philosophers and scientists. Eitherway, if we look to software we can say that software is a deterministic system following determinism. There is a clear logic in the software that we program. In this logic there exists a clear set of elements and relations. If this wasn’t true I currently can’t imagine that: a business could define their needs, that we are capable of doing tests to whatever needs they defined and which could give an interesting result, and that any business would spend money in such an uncertainty. Their business processes need a well defined recurring support.

Software is a deterministic system built with well defined elements and structures, with their properties and relationships. The elements in this system can exist in build time or in run time and fit always in a pattern. Every pattern is not known by us, not in our behavior, not in the behavior of a system and it will never be, but the patterns are there. They help to solve our problems and we are using them all the time. Some we may use are already defined, but we don’t know yet. Some we use explicitly because our tool demands that we use them. Some patterns we use are actually anti-patterns and if we did some more analysis we could discover it. A pattern can be an if statement, the composition design pattern, a process manager for application integration… The more patterns will be documented, the better we understand the solution domain, the more quality we can bring in the solution and the higher the return on investment.

Building the AMM and not referering to some patterns is like trying to invent the wheel again. This is even more crazy in a world where information is available around almost every corner. A process that doesn’t look like to be stopped for the following years. We need to look to defined patterns, understand their characteristics and if their characteristics are interesting in the current strategy, use them, and not misuse them. Patterns provide an abstraction on which we can build on, and on which we can rely on what they will provide. They help to build a more qualitative culture and software. Eventually these patterns are the starting point for a design and need to be glued together if relevant with reference models so a specific problem domain can be tackled.

The AMM is not a grouping of self invented patterns. It uses patterns that are well documented and accepted in the integration domain and uses those to build a framework for some specific problems in Dynamics Ax. The intention of the AMM is not to overuse patterns, there overusing patterns not exists because we are constrainted to use them all the time. The intention of the AMM is certainly not to misuse patterns but to keep on track of delivering more quality attributes or opportunities in Dynamics Ax by using patterns which provide the best design characteristics.


Leave a Reply

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

You are commenting using your 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: