CCE Theses and Dissertations


A Critique Of The Software Reuse Facilities In C++

Date of Award


Document Type


Degree Name

Doctor of Philosophy (PhD)


Graduate School of Computer and Information Sciences


Michael J. Laszlo

Committee Member

Junping Sun

Committee Member

S. Rollins Guild


This dissertation examined the C++ features that contribute to software reuse. Objects, classes, polymorphism, dynamic binding and virtual functions, and templates were analyzed to determine their contributions to software reuse. This study identified various factors that encourage reuse and limitations of C++ in promoting software reuse. C++ was examined with respect to its ability to support the construction of software components and its ability to compose software from these components. It is expected that reuse will increase software productivity, shorten the development cycle time, increase software quality, reduce the development as well as maintenance cost, and make the complex demands on the software industry manageable.

The object-oriented facilities in C++ enhance software reuse. While acknowledging the contributions of these features, this study focused on C++ as a programming language that is evolving. Language features that promote modularity, adaptability, ease of use, cost-effectiveness, availability, and evaluability further the cause of software reuse to a large extent. This study proposes various features that will strengthen the reuse capabilities of C++. They include (a) selective inheritance, (b) class reset, (c) class transformation, (d) user-defined system variables, and (e) flex messages. Selective inheritance allows a derived class to choose the attributes it needs to inherit from the base class. Class reset is proposed as a mechanism for class evolution. With class reset, the inherited properties become the owned properties of the newly created classes, and the new classes can be used without further dependency on the classes from which they have inherited these properties. Class transformation allows generic (unknown) types to be included in the class definition; each of these generic types will initially be set to a specific (known) default type; other classes, with different types, can be later generated from these classes. It merges the concept of a template into the basic definition of a class itself. Since every class can conceivably serve as a template, the proposal is to define both classes and templates by the same syntactic structure. User defined system variables eliminates the need for repeatedly defining variables that are often used in a system, by keeping these definitions in a common place, accessible to the various programs in the system. Flex messages makes it feasible for objects to communicate with each other in a manner similar to the message passing schemes used by the network elements in a communication network. Proposals on flex messages include (a) sending messages without reference to a method, (b) order-independent arguments, (c) response message with multiple arguments, and (d) sending response message to a different object. These and other related ideas were analyzed to determine their feasibility and relevance to software reuse.

This document is currently not available here.

  Link to NovaCat