Introduction to Software Precision Molding
The potential industrial impact of the Somusar/Software Production Technique[tm] on the development and
automated production
of software in different computer languages
can be compared to the impact of precision molding on the
production of physical objects in different materials:
most manual, repetitive, error-prone labor can suddenly be
automated, with three major consequences:
- A significant quality improvement in the finished or semi-finished products;
- A dramatic reduction in production cycle time;
- An opportunity to apply new, coherent, large-scale production methods.
An analogy with industrial precision molding can help introduce some
concepts which are new, or partly new, in the software industry.
Industrial precision molding is nowadays a highly automated process
that produces physical objects with a predefined shape in a predefined
material - for example, plastic articles, metal airbag housings, or clay
statuettes.
A molding machine
processes a job request, applies the appropriate mold, and produces
the desired object in the given material,
according to specific requirements, such as color, clarity, or resistance.
The Somusar/Software Production Technique[tm] - in short, SoProTech[tm] - is a new, highly automated
process that produces software files
with a predefined structure in one or more predefined
computer languages - for example, JavaBeans[tm], HTML forms, or
COBOL programs.
A "software press" processes a software entity, applies the
appropriate software mold, and produces the desired software file, or files,
in the given computer language, or languages, according to specific
requirements, such as standards and best practices, development guidelines,
and project conventions.
The SoProTech[tm] does not completely eliminate manual labor
from the production of software, just like industrial molding does not
completely eliminate manual labor from the production of
physical objects.
In particular, the design of industrial molds
requires a significant amount of specialized
manual labor, and is usually offered as a service by the mold
manufacturer. Similarly, Somusar offers a service called
Somusar/Software Mold Building[sm].
Three major aspects of software molding differentiate it
from industrial precision molding:
- The main advantage of industrial molding is its capacity to make practically any number of identical and interchangeable physical objects - plastic articles, metal airbag housings, clay statuettes.
Instead, the main advantage of software molding is its capacity to make practically any number of similar yet unique software files - JavaBeans[tm], HTML forms, COBOL programs.
- The production of finished or semi-finished physical objects takes place in most cases at the mold manufacturer's site, where the big molding machines are located.
Instead, the Somusar/Software Production Machine[tm] is a compact software "machine" which will be in most cases installed and operated at the customer's site.
- Physical molds are physical objects: it can be very difficult or even impossible to modify or fix them.
Instead, software molds are themselves made of software and thus can be modified to meet changes in the requirements for the production target, or repaired in case of design or building errors.
In the context of a software development project,
the input to the SoProTech[tm] is the result of a previous, classical
analysis stage, and consists of concise textual descriptions,
called Somusar/Software Entities[tm].
The Somusar/Software Production Machine[tm] - in short, SoProMach[tm] - processes any input
Software Entity through a given set of Somusar/Software Molds[tm],
each of which provides the "shape" of exactly one type of
output software file in a given computer language.
The output of the SoProMach[tm] is a set of high quality
software files coherently derived from, and related to,
the corresponding input Software Entity. The output
files contain source code, written in potentially any
human-readable computer language, and can be used as
input to a further development stage.
Figure 1 - Overview of the SoProTech[tm]
Three major positive consequences were mentioned earlier, that the SoProTech
can have on software production:
- A significant quality improvement in the finished or semi-finished products.
The SoProTech allows to record and replicate the skills of the best software craftsmen, who provide the prototypes for the Software Molds. The same quality of the prototype used to design and build a given mold is then automatically reproduced by the SoProMach[tm] in the software files resulting from that mold. Thus, these software files are made as the same craftsman who made the prototype would make them.
- A dramatic reduction in production cycle time.
The boost on productivity allowed by the SoProTech is probably unprecedented in the software industry. In a lab test the Somusar/Software Production Machine[tm] applied five Software Molds to one thousand Software Entities, producing 1.2 million lines of code in twenty-three minutes on a regular PC (one CPU at 1.7 GHz, 256 MB RAM) running Linux®. The resulting 6,000 output files contained source code in Java[tm], SQL, C++ and HTML - the latter used for both user interface and documentation purposes.
- An opportunity to apply new, coherent, large-scale production methods.
The immediate applicability of the SoProTech ranges from low-level embedded system Application Programming Interfaces (APIs), to XML-based Web Services, to traditional transaction-processing systems. But the overall coherence of the entire process, the extreme malleability of its Software Molds, and the impressive workhorse power of its SoProMach[tm] open up brand new opportunities for the future of the software industry, that are yet to be conceived.
The Somusar/Software Production Technique[tm] does not revolutionize the whole
traditional software production cycle: on the contrary,
it focuses on a well-defined spot of that cycle -
namely, the high-speed, high-quality generation of source
code - and can be
smoothly and pragmatically integrated within any type of
software development project, independently of the
computer languages, design and development tools, and
methodologies involved in the project.
Within a software project, the SoProTech can be seen as
a productivity amplifier that records and
reproduces the design and development skills of the
best experts of the project team, quite independently
of the domain of their expertise - which can range
from database architecture to object-oriented
development, from user-friendly interface design to
middleware programming, to technical writing, and more.
The basic concepts of the SoProTech are very few -
three -, simple and clear:
- Somusar/Software Entity[tm]:
concise, multifacet textual description of all properties of a software entity.
- Somusar/Software Mold[tm]:
structured parametrical industrial procedure to produce one type of software source file.
- Generatable files:
in principle, any type of human-readable computer file.
Figure 2 - Basic concepts of SoProTech[tm]
Generatable files are the one and only connection point between the
SoProTech and any other tool or methodology used within
a software development project. That is why the
SoProTech can be used within virtually any project: all
software projects produce or use some sort of
human-readable computer file, which is what the
SoProTech can flexibly produce at high speed,
in high volume, with a high quality degree.
The SoProTech is flexible from several perspectives:
- It is multilanguage:
it allows to produce any type of source code, in any single-byte character set - typically, ASCII and ISO 8859.
- It is inherently incremental:
as demonstrated by the aforementioned lab test, the SoProTech makes it possible to automatically reproduce within minutes the entire set of generatable source files of a software project. This allows to modify or extend the very architecture of a software system or application, without having to worry about the huge amount of source code fixes that such changes or extensions imply - centralized changes or extensions made by hand in the Software Molds are automatically and rapidly propagated through the whole generatable project source code by means of the SoProMach[tm].
- It is intrinsically evolutionary:
compliance with evolving standards and exploitation of new information technologies can be achieved in a consistent and homogeneous fashion by adapting the central set of project Software Molds, without having to change the project Software Entities.
- It is open by definition:
the compatibility of the SoProTech with pre-existent skills, tools and methodologies is guaranteed by the fact that the basic unit of work of the SoProTech is the human-readable text file - no proprietary binary file formats are involved in the process. Therefore, the SoProTech can be utilized by any software designer or developer accustomed to produce or use human-readable text files - usually source code files -, either directly by hand, or indirectly via a tool.
As is often the case when new techniques are first introduced,
those who can derive the most advantages from
applying a new technique are those who can freely and
fully exploit all capabilities offered by that new
technique, without ties deriving from pre-existent
products or ongoing processes. The SoProTech is no
exception to that heuristic rule.
In fact, the SoProTech is especially attractive for
software projects or products for which the development
activity is yet to start:
the boost of productivity provided by the SoProTech is
particularly relevant if the process is integrated in
the overall software production cycle from the beginning -
although it is possible to gradually introduce the
SoProTech as an additional tool in an ongoing project,
achieving noticeable quality and productivity
improvements, as explained below.
Thus, the ideal project for a first direct and seamless
introduction of the SoProTech is a medium to large
project aiming at developing a multilayer software application or
system, and currently in the stage between functional
specifications and detailed design: that
stage is the best phase to produce (or reuse)
the Software Entities required by the project and to
identify, prototype and build (or reuse) the
appropriate Software Molds.
A different approach becomes necessary when first
introducing the SoProTech in a large software plant,
such as the software plant of a large enterprise. Usually in these plants
not a single line of software can be considered totally unrelated
to the underlying software plant: CICS® transactions
in COBOL, departmental client-server systems
in Visual Basic® (client side) and in C++ (server side),
ERP and CRM packages,
web applications in HTML and Java[tm], all this
enterprise software is usually inextricably intertwined
and interdependent, built layer upon layer with
"materials" and techniques that appeared and then have changed during the
last thirty or even forty years.
In this type of context, the most useful features of
the SoProTech are its uniformity, simplicity, long-term vision, and
flexibility.
In fact, the SoProTech allows to
create a warehouse, or a safe, of multifacet Software Entities
that on one hand uniformly describe the software
equivalent of the enterprise-specific business
entities, and on the other hand lend themselves to the
homogeneous production of new software, intrinsically
related to the pre-existent enterprise software.
Figure 3 - From Software Entities to new software
The simplicity of the Somusar/Software Entities[tm] decouples the evolution
of the enterprise business from the turbulent and
unforeseeable evolution of information technologies, whose
effects and impact are absorbed by the flexibility of
the Somusar/Software Molds[tm], and redistributed across the enterprise
software by the power of the Somusar/Software Production Machine[tm].
As for the long-term vision of the Somusar/Software Production Technique[tm]:
- You can use it today;
- You could have used it twenty years ago, if it had existed at that time;
- You might be able to use it for the next twenty years!
[Back to top]
|