Accession Number : ADA331990

Title :   Behavioral Relationships Between Software Components

Descriptive Note : Doctoral thesis,

Corporate Author : AIR FORCE INST OF TECH WRIGHT-PATTERSONAFB OH

Personal Author(s) : Gibson, David S.

PDF Url : ADA331990

Report Date : 27 OCT 1997

Pagination or Media Count : 187

Abstract : Building software systems from reusable software components has been a goal of software engineers for nearly three decades. Despite progress, the realization of this goal remains surprisingly elusive. Expensive hardware systems such as aircraft, communication networks, and factory assembly lines are designed so that various subsystems (both hardware and software) can be removed and replaced in order to change the performance and functionality of the overall system. In a similar manner, it should be possible to change the behavior of a component-based software system in useful and predictable ways by removing and replacing entire components. In order to perform component-level maintenance, an engineer must understand not only the structural relationships but also the behavioral relationships among the component to be replaced, the system, and the replacement component. These behavioral relationships need to be clearly documented and available to engineers developing and maintaining component-based systems. This dissertation presents a small set of precisely defined relationships that concisely express behavioral relationships between software components. These relationships may be used to provide implementers and maintainers with useful information about how components can and should be composed when integrated into component-based systems. Furthermore, these relationships encourage strict adherence to the well-established software engineering principles of modularity, information hiding, polymorphism, and extendibility. The relationships described are language-independent and may be encoded in a variety of ways using modern programming languages. The dissertation describes how interface-only components, templates, inheritance, and other language mechanisms may be used to encode these relationships.

Descriptors :   *SOFTWARE ENGINEERING, *PARTS, *REUSABLE EQUIPMENT, COMPUTER PROGRAMS, MAINTENANCE, AIRCRAFT, STRUCTURAL PROPERTIES, PROGRAMMING LANGUAGES, MODULAR CONSTRUCTION, COMMUNICATIONS NETWORKS, TEMPLATES, REPLACEMENT, ENGINEERS, BEHAVIOR, INDUSTRIAL PLANTS, POLYMORPHISM, ASSEMBLY LINES.

Subject Categories : Computer Programming and Software

Distribution Statement : APPROVED FOR PUBLIC RELEASE