Tuesday, July 28, 2015

Why Software Engineering & Computer Science ended up in Crisis


            Software researchers and Scientists forgot a simple scientific fact/rule: In real science, anything not proven is an assumption. When any scientific field is in infancy, researchers have no choice but to make few educated assumptions (e.g. first principles). The researchers and scientists rely on such assumptions for advancing makings knowledge. Unfortunately the scientific progress side-tracks and derails (i.e. end up in crisis sooner or later), if there are fundamental errors in the first principles (or assumptions) at the root of the scientific field.

It is essential to document the assumptions to avoid or minimize the harm caused by such first principles that are fundamentally flawed. Unfortunately computer science and software engineering has such fundamentally flawed assumptions at the root. It is not wrong to make assumptions 50 years ago (when software engineering was in infancy) and rely on such assumptions to advance our knowledge. But it is wrong and violation of scientific process/principles to rely on such undocumented or unknown assumptions.

I am sure thousands of researchers would have exposed such fundamentally flawed assumptions, if the assumptions at the root of software engineering were documented. For example, there are many baseless assumptions at the root of software engineering such as software components are different or unique. and it is impossible to invent software components that are equivalent to the physical functional components (by having essential properties uniquely and universally shared by each and every known physical functional component) for achieving real CBSD (CBD for software), where real CBSD is equivalent to the CBD (Component Based Design) of one-of-a-kind physical products (e.g. an experimental jet-fighter or prototype of a new kind of spacecraft).

For example, 500 years ago it was considered blasphemy to question validity of then undocumented assumption ‘the Earth is static’. Mankind relied on this undocumented assumption for centuries and created a complex paradoxical paradigm (i.e. altered perception of reality), and over the period this assumption at the root and the paradoxical paradigm deeply entrenched into the collective wisdom of mankind.

Today it is considered arrogant and disrespectful to question the validity of the definitions for so called software components and so called CBSD/CBSE. Mankind relied on such undocumented fundamentally flawed assumption for half-a-century and created a complex paradoxical paradigm (i.e. altered perception of reality), and over the period this assumption at the root and the paradoxical paradigm deeply entrenched into the collective wisdom of software researchers. Not documenting such untested assumptions is tantamount to considering them to be inalienable laws of nature, which would become impossible to question over time as they deeply entrenched into collective conventional wisdom. It might be impossible to even imagine invalidating such assumptions 50 years ago, but not documenting them is kind of like assuming that no one can ever find flaw in such untested assumption in million years.

Such untested assumptions must be documented in the first chapter books on software components and CBSD/CBSE, so that they will be always on the collective consciousness of students. Documenting such assumptions allow researchers to either validate or invalidate each assumption as and when mankind’s scientific advanced sufficiently. Since such assumptions are not documented, persons like me have to endure insults and disdain to even mention possible error. Is it really impossible to find real software components (e.g. for achieving real CBSD) even in a million years. If it is not impossible to invent such real software components, such assumptions must be documented, so that, future generations have a fighting chance (without facing insults and disdain) to invalidate such flawed assumption for putting the scientific and technological progress on right tracks.

If mankind were to acknowledge the possibility that, the Erath might be moving just like any other planets, I am sure, many researchers would have discovered that the Sun must be at the centre. After all, there are just 9 known planets including Moon (e.g. to test the hypothesis by putting each planet at the centre). But it was inconceivable 500 years ago the possibility that the Erath is moving around any other planet. I am sure anyone can discover real software components within weeks, if they acknowledge possible error and try to investigate truth. How complicated it is to discover the essential properties uniquely and universally shared by each and every known physical functional components? Based on my experience, it just takes couple of weeks. Unfortunately discovering the truth is not real problem, but the problem is questioning the validity of the flawed first principles (i.e. assumptions) at the root, which is real cause for any software field to end up in crisis. This struggle gave me unique perspective of why and how any scientific field end up in crisis (and how exposing the errors lead to scientific revolution by putting progress on right tracks).

Best Regards,
Raju


No comments:

Post a Comment