Software reuse in parallel programming environments

To date, reuse of software has not had its anticipated effect on improvements in software productivity. This is because we do not fully understand the concepts behind reusability and because there has been relatively little experimentation with reusability systems. In this research we attack these problems in three ways: (1) An investigation of the conceptual foundations of reuse for a parallel programming environment based on the Unified Computation Graph Model designed by Dr. James C. Browne at the University of Texas, Austin. (2) A realization of these concepts in a software base management system, ROPE, to support reuse in such an environment. (3) An experimental evaluation of the effectiveness of ROPE. The research addresses each of the fundamental steps of finding, understanding, modifying, and composing reusable components: (1) The problem of finding components is addressed by a new classification method, called the structured relational classification method. This method appears to be an effective technique for combining the strengths of relational methods in the maintenance and query areas with the strengths of more traditional methods in the browsing area. (2) For understanding components, we have introduced design analysis methods which basically flow from the UCGM model itself. (3) Modifying components is addressed in several ways. First through a suitable definition of generic designs and secondly through techniques for composing and decomposing graphs. (4) Composition of components is discussed in detail and a framework is laid for a calculus of composition of components. This required a formalization of some new aspects of the UCGM model and definitions and theorems about the structure of UCGM. The reusability system ROPE was built, tested and used by a variety of people. Each of the concepts discussed above was realized to some degree in the final system though the theory outstripped the implementation in several areas. This was a very substantial programming project. A fairly extensive evaluation of ROPE was done. The initial set of experiments has clearly established the effectiveness of CODE and ROPE in promoting component reuse in programs of modest size and complexity and in delivery of nearly error free programs with relatively little effort.