Profile

Sunday, March 23, 2014

Primitivization and Inheritance Hierarchy. The technique for reducing Extrinsic Complexity



The second way to reduce Complexity is through a process that can be best named as Primitivization.

Primitivization is a process that allows us to cull out the common elements of all services.  By culling out common elements it reduces the number of programs where changes have to be applied when external conditions change.

Often there arises a confusion between the two techniques Primitivization and Partitioning .

Merriam-Webster dictionary defines Primitivization as the process of becoming Primitive

Wikitionary describes it as reducing something to a primitive state.

The word Primitive itself is defined as

“relating to, denoting, or preserving the character of an early stage in the evolutionary or historical development of something.”

In the context of complexity reduction of IT systems, primitivization means the technique of reducing the System to its most primitive state.   A system can be said to be in its most primitive state when it exhibits just enough behavior to be recognized as the pre-genitor of its more refined form.

A primitive system will exhibit only the core-behaviors. A behavior-set can be deemed to be “core” if all other behaviors that are exhibited by the more refined versions of the system can be derived from the “core behaviors”.   For example while a primitive version of a system may exhibit a behavior of emitting sound when subjected to a stimuli the more refined versions of it may emit different variations of sounds such as whisper, scream, etc when subjected to different stimuli.  Each one of the latter behaviors retain the property of “sound” but refine it through two modifiers – Intensity and Pitch.

The core behaviors are likely to be common across services.  So the process of identification of core behaviors is equivalent to yielding elements that are common across services.  It is this separation of common elements that leads to complexity reduction.

Primitivization is beneficial in another way.  Primitive systems are not complex and lend themselves well to design.  There is one problem though. Our real life systems are not primitive.  Therefore a technique is required to build more complex systems from the primitive system.  A technique called Inheritance hierarchy allows us to do just that. This technique of layering is called Inheritance hierarchy.  

Inheritance hierarchy is a technique that layers systems on top of one another with each layer building upon the previous layer. It is a technique that allows us to start with a primitive system and then build a hierarchy of increasingly complex systems with each hierarchy building upon the constructs developed in a layer below it.  Each layer in the hierarchy inherits the behavior from the system at a lower hierarchy and then introduces new functionality in that layer.  In each layer only that much functionality is introduced that is common to layers above it.  This hierarchical layering helps us reduce extrinsic complexity by identifying common service elements.

Evolution provides us a useful model to understand the technique of Primitivatization and inheritance hierarchy.   Each step in the hierarchy can be thought of as an evolutionary stage that inherits from the previous stage and build upon to it yield a higher-order system.  In the case of evolution of animals the primitive stage would be a bacteria and its most refined form, human beings.

To summarize Primitivization is the technique of building a primitive system first. Primitivization works by identifying common core behaviors.  Inheritance is the process of progressively building more complex behaviors on top of the primitive system. This technique works by progressively introducing elements that are common to layers above it.

Inheritance hierarchy extends the same approach with each subsequent layer introducing elements that are common to layers above it. In this system each child layer inherits the behavior and mechanisms of its parent layer.

To be precise then it is not just the technique of Primitivization but it is the technique of Inheritance hierarchy coupled with Pimitivization that leads to complexity reduction.  

No comments:

Post a Comment