In real science,
anything not having proof (or not proven) is an assumption and such assumptions
must be documented before relying on them to create definitions/concepts. Progress
of any scientific discipline would be sidetracked into a wrong path and end up
in a crisis, if there are errors in basic assumptions and if researchers relied
on such erroneous assumptions for creating definitions or concepts and for advancing
any scientific filed by relying on such definitions or concepts. No meaningful
scientific progress is possible until the scientific progress is put on right
path by exposing errors in such basic assumptions.
Why CBSD (Component
Based Design) for software needs different and new description (i.e.
definitions and/or essential properties) for software components and CBSD? These
new and different description, properties, and concepts for so called software
components and CBD for software products are in clear contradiction to the
reality (i.e. facts, concepts and observations) we know about the physical
functional components and CBD of large physical products (having at least a
dozen physical functional components).
There exists no
proof to show that any effort was ever made to discover reality about the
physical functional component and CBD of physical products before creating the
definitions and concepts for so called software components and concepts. The
definitions and concepts at the root of existing CBSD (Component Based Design
for Software) were made up out of thin air, without documenting the reasons or
first principles (i.e. assumptions) that compelled to create such definitions
and concepts that are in contradiction to the reality.
When I inquired for
reasons, I heard many unsubstantiated assumptions, such as software is
unique/different and/or it is impossible to invent real-software-components
that are equivalent to the physical functional components (by discovering
accurate description for the physical functional components and inventing real
software components that satisfy the accurate description). In real science,
anything not proven is an assumption and such assumptions must be documented
before relying on them to create definitions/concepts. No text book for
introducing software component or CBSE/CBSD listed such assumptions. No
research paper or publication listed such assumption at the root of existing
CBSD paradigm, which has been evolving for nearly 45 years by relying on such
unsubstantiated definitions and concepts made out of thin air..
When any scientific
discipline was in infancy, researchers are forced to make assumptions. For
example, assumption "the Earth is flat" was a reasonable assumption 4
to 5 thousand years ago. Likewise, the assumption "the Earth is
static" was a reasonable assumption 2000 years ago. But documenting such
assumptions would avoid huge pain and suffering such as: http://real-software-components.com/forum_blogs/BriefSummaryOfTruths.html#Chronology.
It is not hard to prove that, if the error at the root of geocentric model was
not yet exposed, no meaningful scientific progress would have possible during
past 500 years. As science and our knowledge expends, we can create tools to
validate such assumptions, if they are documented and well-known.
All I am saying is,
it is not wrong to make assumptions but it is wrong to not-knowing and
forgetting (e.g. by not documenting) the assumptions at the root of our
scientific knowledge, such as concepts and definitions for software
components/CBSD. In real science, any thing that can’t be proved is an
assumption. It is an error to rely on any such unproven assumption (without
clearly documenting the assumptions) to derive concepts or definitions.
For discussion
sake, let’s assume that the basic assumption was: “it is impossible to discover
a set of essential properties uniquely and universally shared by each and every
large physical functional component for inventing equivalent software
components (having the essential properties)”.
This is highly
falsifiable first principle (i.e. basic assumption at the root of software
components and existing paradigm for CBSD), so it can be (and must be) proved
false, if this basic assumption is flawed.
Likewise, if the
assumption was: “it is impossible to invent a set of essential aspects uniquely
and universally shared by each and every CBD of large physical product for
achieving equivalent CBD for software products (having the essential aspects)”.
This is highly
falsifiable first principle (i.e. assumption), so it can be proved false, if it
is flawed. May be such assumptions could not be proved wrong (when such
assumption was made and relied up on) 50 years ago, but they could be proved
wrong when technology advances sufficiently for validating each such
assumptions in the future (if such undocumented assumptions are flawed).
All I am saying is,
it is wrong to NOT document such assumptions before relying on such assumptions
for making up definitions for so called software components (out of thin air
without any basic in reality, but based on wishful thinking). If there are
errors in such undocumented first principles (i.e. basic assumptions), they
sidetrack the scientific progress into a wrong path and scientific discipline
end up in paradox.
If such assumptions
were documented, I am sure 1000 researchers would have proved each of them
wrong in past 50 years. But toady no one even know the assumptions to prove
them wrong, if they are wrong. Such unsubstantiated assumptions were completely
disappeared from our collective consciousness to even question their validity
in light of technological and scientific advancements.
For example, this
kind of assumption (i.e. it is impossible to discover such essential properties
for the physical functional components) contradicts almost every thing mankind
knows today. Let me define a universal rule: There exists an accurate
description (e.g. a set of essential properties) for every known kind of a
physical being or specie and the accurate description (e.g. a set of essential
properties) can be used to positively identify each specimen belong to the
being or specie. That is, the essential properties for any kind of physical
being or specie can be used to positively determine weather a given specimen
belongs to the physical being or specie.
Physical functional
components can’t be an exception to this universal rule, since it is impossible
to find any exception to this universal rule: It is possible to find an accurate description (e.g. essential
properties) for each and every kind of a physical being or specie.
Mankind’s scientific knowledge comprises accurate descriptions (e.g. essential
properties) for millions of physical beings or species. There are millions
examples to prove this universal rule, but impossible to find an exception to
this universal rule (e.g. to falsify this rule). Every scientific discipline
comprises accurate descriptions (e.g. often defined by a set of essential
properties) for physical beings or species (to positively identify each
specimen belong to respective kind of being or specie).
For example, isn’t
essential for the field of zoology to acquire and accumulate the knowledge of
accurate description for animals? Isn’t essential for the field of botany to
acquire and accumulate the knowledge of accurate description for plants? The
same is true for various sub-fields of microbiology such as virology, mycology,
parasitology, and bacteriology. Likewise, accumulating knowledge of accurate
description of atoms, molecules, compounds or elements is an essential for each
sub-field of chemistry such as organic, inorganic or bio chemistry. No proof
exists to show that the physical functional components are exception to this
universal rule. It is impossible to find any one ever even tried to prove that
the physical functional components are exception to this universal rule.
Once the set of
essential properties uniquely and universally shared by each and every physical
functional component is discovered, why is it not possible to invent equivalent
software components having the essential properties? Although we can’t
articulate the essential properties of the physical functional components, when
any physical functional component is shown, it is not hard for any expert to
positively identifying that it is a physical functional component. Likewise, it
is not hard for any expert to positively identifying that it is not a physical
functional component, if he is shown any other kind of physical part (that is
not physical functional component).
This expertise of
positively determine any given physical part whether it is a physical
functional component or not a physical functional component, can be leveraged
to discover essential properties uniquely and universally shared by each and
every large physical functional component. Once the essential properties are
discovered, it is a trivial task to invent real software components having the
essential properties for achieving real CBSD, where the real CBSD must share
the essential aspects uniquely and universally shared by each and every known
CBD of large physical product (having at least a dozen physical functional
components).
In fact, I can help
any engineering expert or researcher to discover the essential properties
uniquely and universally shared by each and every known large physical
functional component. Likewise, I can help any engineering expert or researcher
to discover the essential aspects uniquely and universally shared by CBD of any
physical product (having at least a dozen physical functional components). It
must not take more than couple of weeks to train any expert to gain this kind
of expertise for positively identifying multiple real software components
(equivalent to the physical functional components by having the essential
properties) in any software application for achieving real CBSD (equivalent to
the CBD of physical products by sharing the essential aspects).
Both teachers and
books teaching concepts and definitions of so called software components and CBSE
to impressionable students by forcing the students to learn definitions either
to pass the exams or solve problems using the definitions and concepts. Without
having proof, if it is right path or wrong path, we are pushing the
impressionable students to well traveled (but wrong) path. Instead of teaching
them (i.e. brain washing them),
We must ask
impressionable students to investigate truth, instead of brainwashing then and
pushing them into wrong path by teaching flawed definitions and concepts
(derived by relying on undocumented assumptions). Please kindly read this
interesting article, how reality can be distorted: https://www.psychologytoday.com/blog/pieces-mind/201208/few-the-many-ways-we-distort-reality.
One can find so many examples that show, how reality can be distorted and end
up in a paradox.
After graduation
and gaining 10 years hands on experience on so called software components and
CBSE (living in paradox of such distorted reality), obviously any CBSE expert
thinks I am crazy (arrogant or disrespectful) for saying reality/facts such as,
ideal CBD requires over 97% code must be implemented as CBD-structure (free
from spaghetti code), but it is not necessary that even a single large
component in the hierarchy need to have any properties we erroneously
attributed to so called software components.