Component-Based Systems

Bruce W. Weide

Bruce W. Weide

Ohio State University

Search for more papers by this author
First published: 15 January 2002
Citations: 1

Abstract

Human-engineered physical devices such as cars and appliances and computers, as well as naturally occurring physical objects such as forests and galaxies and nerve bundles, are often called “systems.” Both this word and the thinking that underlies it are crucial features of modern software engineering as well. Software systems, however, are purely symbolic entities that have meaning and intellectual interest even without a physical manifestation. Component-based systems in physical engineering and in software engineering therefore have many common features, yet differ in important and sometimes subtle ways.

The characteristics of component-based software engineering as currently practiced can be approached from two different perspectives. One explanation is based on the relationship to fundamental principles of system design. In this view, the key features of component-based software engineering could have developed simply as inevitable consequences of applying general “system thinking” to software systems. Another explanation is based on observing the history of two related branches of software engineering research. In this view, the key features of component-based software engineering actually have resulted from a melding of the concurrent but curiously separate activities of two communities: advances in software reuse research and common off-the-shelf (COTS) component technology, and advances in object-oriented (OO) technology.

This article begins by exploring the fundamental similarities and differences between component-based systems in the physical world and those in the software world. It then uses that analysis and a summary of component-based software research as a basis for understanding the currently unfolding transition from second-generation to third-generation OO technology: the integration of component-based software concepts into modern software practice, which relies on the identification and use of “objects”.

The full text of this article hosted at iucr.org is unavailable due to technical difficulties.