Monday, August 2, 2010

Quantum Model of Software Development

Of late I have been trying to co-relate some of the principles of Quantum Mechanics with those of Software Development. Though many models exist for developing software (SDLC, Agile, Waterfall etc) we all know that none of them are "perfect". Here is what I think is causing this indeterminacy.

Quantum Nature of Software
1) Quantization :
The number of bugs in a given piece of code is quantized. That is the number of bugs will always be found to be integers. There is 0 probability for the occurrence of 1/2 a bug.

2) Sams Uncertainty Principle (If Heisenberg can get his name in so can I :-) ):
It is not possible to predict the time line and the quality of a product simultaneously.
Hence any estimation that assures on time delivery will have quality issues and better quality software will induce a time penalty.
The equation relating these can be expressed as follows:
Definitions:
Quality(Q): Bugs per 1000 Lines of code (LOC)
Time (T): In any units (preferably in person days)
FP(CP): Function points (Coding language): This is the number that represents the average
amount of time needed to code 1000 lines in a given programming language.
Thus,
Q*T = 4.FP(CL) where 4 represents standard DIR (Defect injection ratio)

In other words, 0 defect implies infinite time!

3) Bug Tunelling effect:
There exists a finite non zero probability of a code issue in one module causing an inexplicable bug in another even if the interfaces are seamless.


Begin Random Rant

Sorry to digress but whats the deal with all these quality models CMM, Six Sigma etc ?
These models are like teenagers and sex
1) Everyone is talking about it.
2) Everyone thinks everyone else is doing it
3) Almost no one is really doing it.

End Random Rant

Enjoy. Comments welcome! :-)