Toward a design environment for recovering and maintaining the structure of software systems

partners are working on static checking and verification using PVS. In parallel with this, we have been investigating ways to add multimethod dispatch (as in CLOS and Dylan) to Java, following an idea reported at OOPSLA '98. This will enable us to study the specification and verification issues related to multimethods in the same context as our other work. From our work on the theory of behavioral subtyping comes the finding that at some level, reasoning about programs that use multimethod dispatch is fundamentally harder than reasoning about programs that only use single dispatch. However, we are only beginning to investigate the implications of this in practice. The goal of this research project is to further understand the theoretic relationship between programming languages and models of computation. Much is known about machine models ; the "invariance thesis" says that first-class machine models can simulate each other to within a polynomial factor. Similarly, what is a good implementation-independent cost model for a programming language? A major focus of our research under this general rubric has been the investigation of local, optimal reduction for functional programming languages, where a sophisticated form of graph reduction is used as an implementation technique. These graph rewrite operations provide the right sorts of atomic operations that need accounting for in a cost model. We have related abstract, implementation-independent measures on reduction to this graph reduction model, inspired by the invariance thesis. Our most well known result, joint with Andrea Asperti of the University of Bologna, was to give a bound on the complexity of "parallel beta reduction", a form of simultaneous function calls on similar redexes. We proved that the cost of such reductions must grow faster than any Kalmar elementary function. This analysis has provided a significant insight into the complexity of sharing computations. Further work in this research program will be to provide a simple, first-principles correctness proof of optimal graph reduction , and to use the insights of that proof to prove full abstraction results for languages with sharing, providing semantic computation models that give intensional as well as denotational semantics, with an equivalent, experimental notion of contextual equivalence. A longer-range goal is to improve further on the current algorithm for optimal reduction by improving its bookkeeping for sharable expressions. Project Synopsis The goal of this project is to create an integrated environment of tools to help software engineers recover and maintain the …

[1]  Spiros Mancoridis,et al.  ISF: A Visual Formalism for Specifying Interconnection Styles for Software Design , 1998, Int. J. Softw. Eng. Knowl. Eng..

[2]  Spiros Mancoridis,et al.  Automatic clustering of software systems using a genetic algorithm , 1999, STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice.

[3]  Emden R. Gansner,et al.  Using automatic clustering to produce high-level system organizations of source code , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[4]  Balachander Krishnamurthy,et al.  Practical reusable UNIX software , 1995 .

[5]  Emden R. Gansner,et al.  Bunch: a clustering tool for the recovery and maintenance of software system structures , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).