NEWS AT SEI
This article was originally published in News at SEI on: March 1, 2000
The market regime, with its new component-based software development processes, is overthrowing the custom-system regime, with its ideal of the "software factory" in which "software processes are analogous to manufacturing processes, programmers are analogous to assembly-line workers, and the ultimate product is lines of code." That is the thesis of the upcoming book, Component-Based Software Engineering, part of the Addison-Wesley SEI Series in Software Engineering, by SEI technical staff members Kurt Wallnau, Scott Hissam, and Robert Seacord.
The "software factory" made sense in the era of large-scale, custom-built systems, but is no longer feasible now that the demand for new software far outstrips its supply, jobs for computer and data processing workers go unfilled, and the number of graduates in computer science fields declines. The response is to build systems using commercial software components, and cede control to the new "market regime," and a new set of software development processes. "Components represent a kind of revolution, and revolutions are inherently cyclical," Wallnau says. "We must overthrow our 'traditional' ideas of software process-based on the factory metaphor-with a 'new' process regime."
The market regime consists of component producers and consumers, each behaving, in the aggregate, according to the laws of the marketplace, the authors write. "The market regime decides how features are distributed across components, which features become available when, and how long the features are supported. The marketplace also determines the interfaces components support and which standards are adopted. Ultimately, the market regime decides which components thrive, and which are destined for the bit bucket."
To succeed in the new era, software developers must come to terms with the following realities of the market regime:
After describing these engineering challenges, the authors present a "toolkit" of engineering techniques that can be used to overcome the loss of control inherent in component-based software engineering. The authors' overarching message is that new processes that are predictable and repeatable must be established for component-based software engineering, just as they were established and matured under the custom system regime.
What is a Component-Based System?
Software components (or simply "components") are software implementations that have two fundamental properties: they are distributed in binary form, and they are sold or licensed by software vendors. These kinds of components are sometimes referred to as commercial off-the-shelf (COTS) components. Examples of components are Web browsers and Web servers, relational and object-oriented database management systems, object request brokers, spreadsheets, enterprise resource management systems, and operating systems. There are different engineering issues involved in the use of each of these types of components. Some are shrink-wrapped and used as-is, while others must be adapted using vendor-supplied tools.
Component-based systems are built substantially from COTS components. Building systems from multiple COTS components introduces novel engineering problems rooted in the heterogeneity and independent evolution of these components.
Excerpted from Component-Based Software Engineering
For more information