Michael Siff

We consider the problem of software generalization: Given a program component P, create a parameterized program component P' such that P' is usable in a wider variety of syntactic contexts than P. Furthermore, P' should be a semantically meaningful generalization of P; namely, there must exist an instantiation of P' that is equivalent in functionality to P. In this talk, I will present an algorithm that generalizes C functions via type inference. The original functions operate on specific data types; the result of generalization is a collection of C++ function templates that operate on parameterized types. This version of the generalization problem is useful in the context of converting existing C programs to C++. This is joint work with Thomas Reps. The talk is a practice talk for the ACM SIGSOFT '96 Fourth Symposium on the Foundations of Software Engineering.