In today's software development tools (such as VisualStudio and VisualAge),
the choice about how a software component is deployed must be made at design
time. There is substantial application code changes if the component is packaged
in a DLL or in an EXE and substantial differences in re-entrancy behavior if the
component runs on its own thread of control or supports multiple simultaneous
threads. For embedded systems, it is best to delay the choice of how the
component is deployed until late in the development cycle. This allows process
boundaries to be used for catching memory leaks, debugging, and performance
tuning while enabling repackaging to be used to shrink overall memory size.
Our approach is to extend the Interface Definition Language (of COM/CORBA) to
include declarative support for packaging and re-entrancy of component
implementations. This augments the interface contract such that the choice of
how a component is packaged can be made late in the development cycle. The
technology is a novel approach to registration, activation, and component
rendezvous behavior that insulates application code from these activities
allowing late binding and late repackaging of components.
The Component Definition Language (CDL) was developed for the HP OZ firmware
codebase. The OZ firmware codebase is used in all mid-range and high-end
laserJets and has shipped in over a million printers. The CDL tool is used by
the development engineers to create their components, test their components, and
package/integrate the components in product releases.
For more technical details, please refer to the following papers
P. Fulghum and K. Moore, "Component Definition Language (CDL)", Mozart Technical
Document, HP Boise, Idaho, 2000.
K. Moore, "Lessons Learned in Large
Scale Embedded Systems", Middleware'04, Toronto,
Canada. In submission.