Source:
Proceedings FIRST SIGMINI Symposium on Small Systems, New York, N.Y., Aug 2-3, 1978,
ACM SIGMINI Newsletter 4,4 (Aug 1978), p. 40-44.
Abstract:
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 SIGMA 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.
Index Terms:
code fragments, code selection, customizing, general software, generic systems,
program generation, program tailoring, reuse of software.