Component‐Based Systems

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”. Keywords: physical systems; component-based systems; information hiding; information abstraction; software systems; advances; object-oriented software; first generation; second generation; third generation

[1]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[2]  Tony Williams,et al.  Reusable components for evolving systems , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[3]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[4]  Will Tracz,et al.  Parametrized programming in LILEANNA , 1993, SAC '93.

[5]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[6]  Bruce W. Weide,et al.  Experience report: using RESOLVE/C++ for commercial software , 2000, SIGSOFT '00/FSE-8.

[7]  Peter Müller,et al.  Modular Specification and Verification of Object-Oriented Programs , 2002, Lecture Notes in Computer Science.

[8]  Jim Waldo,et al.  The Jini Specification , 1999 .

[9]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[10]  Joseph A. Goguen,et al.  Parameterized Programming , 1984, IEEE Transactions on Software Engineering.

[11]  Yannis Smaragdakis,et al.  Implementing reusable object-oriented components , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[12]  James Gosling The Java Language Specification - Second Edition , 2000 .

[13]  张晓丽,et al.  Enterprise Java Beans技术架构分析 , 2001 .

[14]  Mary Shaw Alphard: Form and Content , 1981, Springer New York.

[15]  Bruce Weide,et al.  Component-based software using RESOLVE , 1994, SOEN.

[16]  Nile W. Hatch,et al.  Design Rules, Volume 1: The Power of Modularity , 2001 .

[17]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[18]  Olaf Owe,et al.  ANNA A Language for Annotating Ada Programs , 1987, Lecture Notes in Computer Science.

[19]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[20]  Wilf R. LaLonde Designing families of data types using exemplars , 1989, TOPL.

[21]  Grady Booch,et al.  Essential COM , 1998 .

[22]  BudgenDavid,et al.  Component-Based Systems , 2000 .

[23]  Jon Louis Bentley,et al.  Programming pearls: little languages , 1986, CACM.

[24]  D. Luckham,et al.  ANNA: towards a language for annotating Ada programs , 1980, SIGPLAN.

[25]  Stephen H. Edwards,et al.  Toward a normative theory for component-based system design and analysis , 2000 .