Software Engineering Institute | Carnegie Mellon University
Software Engineering Institute | Carnegie Mellon University

Activity Areas: COTS Design and Software Engineering

The SEI CBS work has focused on three primary categories of practices:

The engineering of COTS-based systems continues to involve significant technical risk.  A good indicator of the as-yet unresolved difficulties involved in building COTS-based systems is the "glue code" used to integrate components. This code is often ad hoc and brittle, but it is needed to repair mismatched assumptions that are exhibited by the components being integrated.  Without this glue code, the components would not be integrable, yet as a consequence of the code, COTS-based systems can be difficult to comprehend, less evolvable than intended, and less reliable than the constituent products.

In order to express a number of important activities involved in design and engineering of COTS-based systems, we have developed a reference model that describes the central artifacts of CBS components in various states.  COTS-based systems engineering often begins with products that have many unknown qualities and intends to produce a system that supports flexible reassembly with different components. The key ideas expressed by this reference model are: 

  • Off-the-shelf components, especially COTS products, must usually be treated as black boxes, or at best very opaque boxes. As a result, many properties of components must be discovered through systematic investigation in order to be qualified.
  • Once the relevant properties of a component have been discovered, it is possible to identify which properties exhibited by a component are in conflict with other components, or with a system design. These conflicts, or mismatches, must be repaired through component adaptation.
  • Once the mismatches between components have been removed, it is possible to assemble them into systems, and to evolve the system through re-assembly with different components. The reference model assigns a prominent role to software architecture in supporting both assembly and re-assembly. 

These engineering techniques are not applied in a vacuum; there must be an underpinning of a strong architectural approach and  the selection and application of appropriate technologies based on assessing various tradeoffs. Simply put, a CBS approach does not remove the requirement for sound engineering practice. 

We have produced books based on these techniques to aid in the COTS engineering process:

Building Systems from Commercial Components
Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices

This reference model is not a process model; it does not imply a sequence of steps. Indeed, our experience is that architectural patterns may suggest a set of properties that must be discovered by component qualification and that, conversely, component properties discovered from qualification may suggest certain architectural patterns.

Return to COTS Overview