It reminds me Will Smith’s dialogue in iRobot (smartest dumb person), when an expert refuses to verify simple fact that contradicts his paradoxical paradigm, where the fact is otherwise simple and obvious to even a layman.
How can any one say some thing is impossible without ever even trying or even knowing what it is? No software researcher knows the answer to a simple question (i.e. what is CBD) and yet blindly insists that it is impossible, without ever even trying to know what it is (that he is insisting is impossible). How could any one conclude that it is impossible without ever even trying?
The question is: What is meant by the CBD (Component Based Design) for the large physical products? That is, what is the true essence of the CBD? For example, what are the striking aspects or characteristics uniquely and universally shared by each and every known CBD (Component Based Design) of large physical products?
In other words, what are the striking aspects universally shared not only by the designers of product models of mature product families (e.g. automobiles) and countless models of crowded product families (e.g. cell-phones), but also the designers of one-of-a-kind product models such as an experimental spacecraft, prototype of next generation jet-fighter or a new kind of fuel-cell or nuclear powered locomotive.
In software, we deal with 100s of product families ranging from compilers, OSs, Word, Spreadsheets, Games, Browsers, RDBMS, Hadoop, search engines, PDF and ERP etc. The design of most software products is more like designing of one of a kind product such as an prototype of an experimental jet-fighter rather than the design of a model in a crowded product family such as cell-phone, where software (e.g. OS and apps) are used for competitive differentiation but not the core components (e.g. DRAM, Screens or Flash memory).
Even in mature and crowded product families such as automobiles, the core components (e.g. engine or gear-box) are custom designed for each model for competitive differentiation. A mature product family means, first model of the product invented decades ago, while crowded product family means, hundreds of new models belong to the product family is under design by dozens of product makers each year.
Let me define “what is real CBD” (e.g. true essence and striking aspects): Implementing about 90% of the features and functionality in replaceable components (i.e. real functional components), where each component can be disassembled to redesign it individually and test it outside of the product. Once the component is made as best as it can be, it can be re-assembled to make sure it fits perfectly and performs as expected.
Every year mankind is trying to invent and design 100s of new kinds of physical products. Kindly allow me to give a simple example for real CBD. Please watch this short 3 minute video either at: http://www.real-software-components.com/CBD/CBD_of_new_product.html or at you tube https://www.youtube.com/watch?v=hc5e5cYdshI – This shows the reality of CBD of physical products, where no core component is reusable or standardized.
Please kindly pay attention to 15 seconds bit starting at 1 minute 55 seconds. Let me paraphrase the 15 seconds bit, as I understood it: Essential purpose of the real component-based engineering is ability to look, feel and test each component independently to optimize individually for making each component “as best as it can be”. Periodically bring the components together to build product for making sure that (a) each of them fit perfectly and properly collaborating with other parts, and (b) all the components are fulfilling their respective roles as intended for proper operation of the container product.
Designer of no physical functional component needs to deal with spaghetti code/design, because it can be disassembled for redesigning to make it “as best as it can be” (e.g. refining little-by-little by finding and fixing its shortcomings) and testing it individually. Designer of no physical component needs to deal with spaghetti code, because he is never forced to see even a single line of code implemented within any other part. Each and every large physical product is free from spaghetti code, because 95% of the features & functionality is implemented in such replaceable components, which are free from spaghetti code.
Therefore, the striking aspect of the CBD of physical products is – no spaghetti code/design – about 90% of the features and functionality is implemented in replaceable components, where a replaceable component means a component that can be disassembled for redesigning it individually and re-assembled after testing in outside of the product.
Therefore, a real CBD for software can be defined as: implementing over 90% of the features and functionality in replaceable components (or real software components that are equivalent to the physical functional components). How can we invent real software components that are capable of achieving real CBD for software? One way is to discover the sticking characteristics uniquely and universally shared by each and every known physical functional component. Unfortunately every software researcher insisting that it is impossible to achieve real CBSD by refusing to learn the simple truth, which is otherwise obvious.
The software researchers have been pursuing fantasy and goals that are impossible to achieve such as software-ICs, reusable or standardized components for 50 years. Designers of no physical product achieved the goal such as software-ICs, except computers and cell-phones because they are using not the core components (e.g. CPU or DRAM) but the software (e.g. OS and apps) for competitive differentiation. How do they imagine that it is possible to build software by assembling COTS (Commercially off the Shelf) components, when designers of no other physical product (where software can’t be used for competitive differentiation) ever achieved such fantasy?
On the other hand, no large physical product failed to achieve real CBD, where real CBD can be defined as, implementing over 90% of the features and functionality in replaceable components. Either complexity or uniqueness (e.g. such as one-of-a-kind prototype of a spaceship or a new kind of experimental jet-fighter) can’t prevent the designers from achieving the real CBD. Each replaceable component is free from spaghetti code, because it can be disassembled to redesign individually and test it independently outside of the product. Since 90% of the design/code is implemented in such components, over 90% of the code/design is free from spaghetti code/design.
Many experts insist that it is impossible to achieve real CBD for software, without ever even trying. In fact, no one even knows or ever heard what real CBD is, but blindly insists that it is impossible. No one ever tried to define what real CBD is or try to achieve real CBD for software. If they tried, they would have achieved within a short time. If anyone disagrees, I respectfully request him to show me proof, if any one ever even tried to define what is meant by CBD for the physical products, for example, what is the true essence and essential aspects uniquely and universally shared by design of any known large physical product.
The DEMO pages in our website (e.g. www.pioneer-soft.com) demonstrates many real-software-components and sample applications, if they want to see the proof that it is possible to achieve real CBD for software. In fact, any one can create real-software-components and hierarchies of replaceable components using our GUI library. And yet many researchers refusing to verify the proof, by insisting that it is impossible to achieve real CBD for software.
The software researchers erroneously concluded decades ago that CBD is using reusable or standardized components and pursued wrong goals such as software-ICs for many decades, but not seceded and will never succeed. So they concluded that it is impossible to invent real CBD for software. Now they are not only insisting that it is impossible to achieve real CBD but also refusing to know the truth about the real CBD (i.e. accurate definition for real CBD).
The well known and irrefutable fact is, for real CBD (e.g. of the artificial kidney or an experimental spaceship), it is not necessary that even a single functional component is reusable, standardized or conforming to any so called component models attributed to so called software components. Their own conformational bias is preventing them from seeing even such simple facts, which are otherwise obvious to even the laymen.
Isn’t it a classic example for extremely smart expert behaving like a dumb person? How can I get through him and make him validate the truth – physical evidence. We can provide any help he needs to build hierarchies of replaceable components (e.g. http://www.real-software-components.com/CBD/City_GIS.html) on his own to experience the truth firsthand. I made this offer countless times to hundreds of researchers.
Let me conclude this long post by quoting Galileo’s famous letter to Kepler: "My dear Kepler, I wish that we might laugh at the remarkable stupidity of the common herd. What do you have to say about the principal philosophers of this academy who are filled with the stubbornness of an asp and do not want to look at either the planets, the moon or the telescope, even though I have freely and deliberately offered them the opportunity a thousand times? Truly, just as the asp stops its ears, so do these philosophers shut their eyes to the light of truth."
I can’t understand, why smartest and accomplished scientists and researchers even in 20th century, behaving not much differently from the principle philosophers (i.e. scientists were referred to as philosophers) in the dark ages.