A way to achieve a major increase in software generation efficiency and in product robustness
By Simon Cooijstra
Copyright © 2003, TWP, Asten, Netherlands
Asten, March 13, 2003
This document helps proving the feasibility of establishing and exploiting an open market for embeddable software components. It has two tracks, a managers track and a technical track.
The managers track provides overviews that do not go into deep technical details.
The technical track has a more theoretical nature and treats all items in full depth.
The next section treats the subject in short form.
Establishing an open market for software components that target resource-restricted real-time embedded applications. The application domain covers telecom devices, consumer electronics, automotive devices and industrial control.
Currently the embedded systems industry suffers from a dip in the economic tidal waves. After this dip, the quickly increasing demand for skilled human resources may surpass the available source. In that case, the high investments in complex integrated circuit factories that do not share an equivalent power on the software side, may pose severe problems for manufacturers of high-tech devices that target embedded applications.
Counted from the instant that the industry recovers from its current dip, the crossover between required human resources and available sources will probably take place within two to five years.
When potential relations are taken as the main cause of complexity, then hard-encapsulated software components can bring orders of magnitude improvement in the manageability of the software generation process. At the same time, the robustness of products based on hard encapsulated components is significantly better that the robustness of layered monoliths. Further, software components are excellent vehicles for exploiting reuse of encapsulated expert knowledge. Hard encapsulation is one of the measures to guard leakage of the intellectual property that component suppliers invest in the design and manufacture of their products. Software components feature a public side that offers enough information to enable a system configuration tool to build testable skeletons. This enables the system designer to create working and testable prototypes in an early stage of the system generation process. In a stepwise fashion, the system designer can modify this early prototype into the pursued target system. Publishing formal specifications of classes of software components and other design elements on publicly accessible repositories will initiate an open market of embeddable software components. This open market will further stimulate the reuse of existing software components. The status of web and desktop oriented software enables the creation of efficient and user-friendly tools that support the described actions.
Based on available components a system architect can create a new system without typing a single line of code and within a time-span, that is several orders of magnitude smaller than the design and construction of a monolith or a layered system would take. This translates in an increase of the programming efficiency of the embedded software community with two to three orders of magnitude.
Software component technology supported by dedicated tools will bring the necessary improvements.
· Tools must exist that enable the formal specification of all public aspects of software components. The toolkit must enable the publication these formal specifications on publicly accessible repositories. At the same time, the intellectual property that went into the design of the component must stay hidden.
· Tools must exist that can retrieve formal specifications of software components from repositories. The toolkit must be able to generate the source code of corresponding skeleton components from this specification. The toolkit uses the skeletons to compose a prototype target application. In a stepwise fashion, the toolkit then helps to complete the prototype by filling in the skeletons or by replacing skeletons with fully functional representatives of the corresponding components.
· In order to construct an executable and testable prototype, the toolkit adds the source code of a tailored infrastructure to the set of selected software components.
· The methodology must comprise a licensing mechanism, such that component suppliers and repository managers can make profit on their investments.
· The component supplier delivers standard packages that contain a coherent set of classes of software components or the component supplier packs the component classes according to the order of the system composer.
· The methodology must be open, such that all interested parties can take part.
· In the embedded realm, the software components must offer features that are not common to software components that are used on the desktop or in the enterprise. Examples are:
o Hardware interfaces
o Streaming interfaces
o Require interfaces
With this technology, a system architect can design and compose a running and testable prototype without typing a single line of code.
The marketing model and the usage model comes close to the marketing model and the usage model of integrated circuits and other hardware modules. The repositories play the role of reference books and handbooks. Software interfaces play the role of the hardware busses.
The proposed methodology differs considerable from regular software component technology, such as ActiveX (COM) components and Java-Beans.
· All current software design methodologies target an intra-company approach or they target a closed community. The proposed methodology pursues an inter-company approach. An open market model supports this methodology. The contributors do not need to know each other!
· Component suppliers offer their products in the form of binary packages that contain a coherent or a dedicated set of classes of software components. A licensing mechanism ensures the profit of the component supplier.
· In the domain of resource-restricted real-time embedded applications exists no general-purpose infrastructure that supports software components. The toolkit adds an infrastructure that matches the requirements of the selected set of software components. The toolkit glues all parts together into an executable and testable prototype. The toolkit supports stepwise completion of the target product.
· Gluing and scheduling mechanisms must recon the fact that a hard encapsulation hides the internals of the instances of classes of software components.
· Hardware interfaces define the direct interaction between software components and memory mapped hardware.
· Streaming interfaces support package based exchange between software components.
· Late settable attributes differentiate products at system configuration time.
Proof of concept
In order to proof the feasibility of its claims, TWP has built a series of demo-tools.
· Formal specification document editor
o The tool prepares formal specifications for publication on a repository
o This tool can also create new document types
· Formal specification publisher
o This tool collects formal specifications and puts them in an appropriated part of a repository
o The tool adds navigation and categorization utilities to the repository
· Formal specification retriever
o This tool can retrieve collections of specification documents that are based on a pre-selected set of document types and on a pre-selected set of categories
· Formal software component specification editor
o This tool encompasses all of the functionality of the formal specification document editor
o It eases the generation of formal specification documents that target software components and component based systems.
o The tool provides services that ensure the consistency of specification documents that together constitute a design and build project for a component based system
· Component based system composer
o This tool uses the retrieved formal specification documents to generate skeletons of software components
o The tool is able to check whether the selected components fit into the target system
o The tool can add a tailored infrastructure to the set of selected software components
o The tool implements static and dynamic wiring schemes that control the connections between the instances of the component classes
o After compilation and linking a running and testable prototype results
o The skeleton components can be replaced with fully functional components
Currently the tools implement all necessary support for the design and composition of single-threaded multi-tasking component based systems. TWP already designed and implemented most, but not all of the architecture for the support of real-time multi-threading systems. The tools are part of a demonstration toolkit and are not planned to be production tools. The tools are not very suitable as production software development tools. The tools are not sophisticated and are not optimally user-friendly. Not every aspect is tested in full depth. Therefore, the tools are not guaranteed to be robust. Their value lays in the fact that they prove the feasibility of the proposed technology. They also have value in discovering items that were difficult to imagine without exploring the problem field.
Tool vendors that will enter this technology will eventually learn from this experience and will provide the corresponding production tools.