Issue No. 03 - March (1986 vol. 12)
One approach to improving software productivity is the development and reuse of general software for a given application area to avoid development of code. Frequently, for a particular application a partial system that supports only a subset of the capabilities of a general program system is sufficient. The problem of constructing partial systems is addressed, where the program of a partial system is obtained by selecting only those code segments of the complete program that implement the capabilities needed. A heuristic for determining fragments of a program system, which can serve as the building blocks for the programs of partial systems, is presented. The notion of “B-program” is introduced: a B-program contains in addition to the fragments themselves for each fragment substitute code and control information specifying the set of partial systems the fragment is relevant for. A representation of B-programs as a string is given, such that generating a partial system consists in scanning this string and selecting substrings. A formal model for this type of program generation is developed: a B-program is viewed as an ordered tree with the substrings of the complete program as its leaves and the fragments as its nonleaf vertices; a “relevance” mapping indicates for each fragment vertex f, whether or not f is relevant for a particular partial system; a mapping σ associates with each fragment f its substitute. Generation of a partial system is defined in terms of preorder traversal of a subtree of the B-program. B-program reduction is dealt with: transformations for the elimination of superfluous vertices are presented, the issue of uniqueness and the problem of constructing a minimal reduced B-program are discussed.
Indexes, Algorithm design and analysis, Computer aided software engineering, Software systems, reuse of software, Code fragments, code selection, customizing, general software, generic systems, program generation, program tailoring
"Reuse of software through generation of partial systems," in IEEE Transactions on Software Engineering, vol. 12, no. , pp. 402-416, 1986.