Tuesday, September 19, 2006

So What's the big deal about Atomicity

Often I have to face this question as why do we cry so much about atomicity? What does atomicity has to do with Software Engineering? When I started to find out more about "Atomic Theory", I came across a term called Atomism in philosophy. According to Wikipedia (http://en.wikipedia.org/wiki/Atomism), The Atomism is defined as "all the objects in the universe are composed of very small, indestructible elements - atoms. Or, stated in other words, all of reality is made of indivisible basic building blocks. The word atomism derives from the ancient Greek word atomos which means "that which cannot be cut into smaller pieces".

Now the question comes back to how it can be related to Software Engineering. To answer this question lets look at a Software System. A Software System comprises of many small - small independent functional modules. Each module performs a specific task.

While designing a Software System if we break a big system into smaller and independently managed modules who can work in isolation our task becomes simpler. The whole system can then be developed easily and tested in its own right.

Atomic theory also implies that a system is whole of its parts. It means the systems behaviour is the combined behaviour of all its parts or sub-systems.

Until Next Time...


Atul said...

Cool Stuff Samir. Also if you want to further explore related areas on atomicity from philosophical perspective and some "semantics" type non-software discussion then am taking the liberty of referring some books:

a) Fritizof Capra
Tha Tao of Physics

Pretty good stuff on "Boot-strap" theory & semantics. Especially coming from a Nuclear Physicist exploring parallels between Eastern Mysticism and Modern Physics

Uncommon Wisdom
The Web of Life

B)Ram Swarup
Word as Revelation : Names of Goods