|
Brief summary of Industrial Engineering Factors
|
|
It is possible to invent intelligent
CASE-tools to create & manage the coupling for each of the RSCC (or
real-software component) and between the RSCCs in an application. It is possible to invent domain specific tools, for example, a domain specific tool for compilers can directly index each of the
RSCC that provides services to process each kind of expression. Such mapping tools can be
very efficient, if the services of a given domain can be enumerated at the time of design.
|
|
The real components and real CBD highly conducive to substantially increase automation, which also reduces the complexity. For example, why is it possible to operate complex products like Boeing 747 aircrafts for couple of million takeoffs having thousands of very complex
components? But software products like MS-Word having few hundred far less
complex-SCCs crashes every other week. Furthermore, most aircraft crashes are attributed to terrorists, human errors, wear-and-tear or harsh unpredictable climate, but rarely attributed to its initial design errors. On the other hand software doesn’t need to face such external problems and most of the software crashes are attributed to
human errors (i.e. either design or coding errors).
|
|
Can’t we increase the quality of software (to the level of 747), if we can refine and test each
RSCC outside of the product (e.g. see RSCCs
in City_GIS little-by-little) and able to detect incompatible interfaces using automated tools (e.g. far more intelligent and innovative tools than the simple SRO)? Most of the CBD-products evolve over time. Each CBD-product is evolved by evolving each of its
components (little-by-little
as illustrated by Dr. Petroski), which is certainly not leading to structural
degradation of its
CBD-structure or leading to complex spaghetti-code.
|
|
In case of CBD-products, each large component (i.e. SCC) can be disassembled, refined and tested outside of the product to assure internal functionality,
quality and external interfaces before re-assembling. Intelligent tools
can be employed to detect broken or incompatible interfaces. Why must design of software deferent from one-of-a-kind new CBD-products, such as, prototype of a spacecraft or an experimental jet-fighter?
Today no complex software is built as a CBD-structure, hence code-base for each
large SCC begins its life as a spaghetti code.
The CBD-structure overcomes “The Big Ball of
Mud”. In case of large applications today, it is hard to predict what sort of effect a few changes to a part of
the large application might have on other parts of the application.
|
|
It is a fact that, each useful product (and each of its large core components)
must be evolved after initial creation. Why can’t we employ the process outlined in step-1 of CBD-process
for building a complex application and the process outlined in step-3 to evolve? What percent of successful CBD-products or their
components (i.e. blueprints of components) stop evolving after 1st release? Why initial prototype-design or evolution of
software/RSCCs must be treated differently from the complex CBD-products/components (i.e. blueprints of
components)? Why source-code of the components (e.g. CityATC) isn’t equivalent to the blueprints of
physical-components such as CPU or auto-engine (e.g. to redesign/evolve/test)?
|
|
The components and components-hierarchy of the CBD increase the degree of (i)
division-of-labor, (ii) specialization and (iii)
conducive for increasing automation. These factors exist in any engineering activity to contain
degree, so one can only increase the degree. It is a historically well documented fact
that: Increasing the same 3 factors helped famous inventions such as “interchangeable-parts” and “Ford’s moving assembly line” revolutionize industrial engineering. Any expert can easily confirm effect of these 3 industrial engineering factors by researching the history of the famous inventions. It is important to observe that the inventions increased productivity not by increasing reuse, but by increasing the degree of the 3 factors. These factors offered hidden benefits, since engineers were unable to realize and explain the huge gains experienced by the
CBD/CBE, until years after the introduction of the inventions.
|
|
These 3 factors are not as obvious as reuse, but they are no less useful. Engineering of the products have been using all these 3 factors to certain degree for many centuries (may be without proper understanding), so those two famous inventions didn’t introduce them to product design, but only increased the degree of these 3-factors. Likewise, true CBD
only increases the degree of these 3 important factors (which already employed
to certain degree in building each of the software parts and the software
products). In fact, one can confirm that bulk of the research in the industrial engineering is generally focused on increasing the degree of these 3 factors directly or indirectly.
|
|
Two of the greatest known inventions increased productivity (not by increasing reuse any other benefits but) by increasing the degree of the 3 factors. For example, it is hard to believe marginal increase in these 3 factors resulted in about 8 folds productivity gains, since even before the introduction of Ford’s moving assembly line, the cars are made by assembling interchangeable-parts in an assembly line. Is it wise to be skeptical or argue with such proven historical
facts. That is, it is an accepted fact that productivity increased many folds, although
reasons are not well understood or accepted? I request researchers to analyze each of the 3 factors for achieving those spectacular results.
|
|
Ford’s moving assembly line only marginally increased automation, specialization and division of labor.
Ford’s moving assembly line even reduced reuse. Remember the famous model-T joke: “You can have any color as long as it’s black”. Both
Ford’s moving assembly line and interchangeable-parts, in fact, may even reduced reuse across product models.
In the context of software, the reuse of a components means using the component across different product models (e.g. Toyota Camry-model or Honda Accord-model) or product families. For example, using a
component (e.g. engine/gearbox) from 2007 ‘model red color Camry’ in ‘2007 model blue color Camry’ is not
component-reuse (but interchanging parts).
|
|
It will be fascinating for any CBD expert to research and analyze how interchangeable-parts helped mankind in increasing productivity by over 200 folds in past 200 years, especially after overcoming the huge skepticism, excuses and resistance it encountered in its early years.
Ford’s moving assembly line is not possible without the interchangeable-parts. Today it is impossible to manufacture and safely operate complex CBD-products (e.g. Airplanes, computers, cell-phones or Cars) without the invention of interchangeable
parts (and tools such as forgings to make high-precision parts).
|
|
Introduction of interchangeable-parts led to inventing tools such as casting, molding, jigs and forging. The tools not only led to substantial increase in quality and reduction of costs but also allowed workers to work more with mind than hands – Which led to many more innovations. The interchangeable-parts led to automation in making high quality precision
components using jigs, forgings, lathe-machines and moulds. Without such high precision tools to mass produce highly precise interchangeable
parts it is practically impossible to mass-produce or operate little more large CBD-products like cars. It is impossible to create more complex CBD-products like jet fighters (if its parts must be handmade as for the muskets by gunsmiths in year 1800).
|
|
|