Command Processor

Like the first example, the command processor (CP) concept was created in early 1980's. It started as a mechanism to coordinate a collection of small programs and evolved into a language interpreter. During this evolution process the CP concept was adopted by the majority of APG R+D teams and became a key element for the architecture of APG's software products and systems. The development teams adapted code from other projects to fit the requirements of their product.

Different from the algorithm example, the perceived needs for CP capabilities are significantly different from project to project. Over time, projects teamed up and shared the same code for a few product releases but afterwards felt the pressure to implement those extensions that were most important for their product's customers. The extent of adaption ranged from small enhancements to almost complete re-writes. In the late 1980's we found ourselves with around a dozen sets of CP code. All versions do support the same core capabilities but with small, sometimes annoying differences.

It was impractical to create one single set of code for Unix and DOS. For each environment one version was identified for re-engineering. The core capabilities were identified and described in a rigid syntax guide. Product-specific elements were eliminated from the core. Mechanisms were designed and implemented that allow addition of product-specific capabilities without modifying the core source code.

Both versions of the CP library are currently in the test phase and each have delivered pre-release versions to two consumer projects. More project teams plan to use the same code without modification. An essential shared deliverable is one common validation suite to check compliance with the syntax guide mentioned above.

Size of both libraries is about 20 kNCSS. We spent about two person years for each of the two libraries. This included the creation of the syntax guide and a validation suite shared between the two.

The CP teams will continue to enhance and maintain the two components for a growing number of consumer products.