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