Towards Generating Software Modularizations - Schaap, Alexander (My University, 2016)
Program generators are programs that produce other programs, thereby saving time and effort. Program families can be encoded in a generator to produce all members of such a family while leveraging automation and reducing duplication. Through multi-stage programming (MSP) in the form of MetaOCaml, a generator has been created for multiple partial implementations of the KeyWord in Context (KWIC) example from Parnas' seminal paper on modular decomposition. What makes this work novel is the generation of different program modularization implementations, as well as different programming paradigms (imperative or functional). This is achieved by using a common abstract internal representation of the signatures of the system components, and applying them to a single abstract representation of the commonalities of the components. Thus the work challenges commonly held perceptions of concepts such as program modularization and programming paradigm by being able to generate members of a program family that varies on both these aspects.