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