next up previous
Next: References

Evolution of Software via Adaptive Programming
Northeastern University Group
Tentative Research Plan

Sat Jun 29 07:25:11 EDT 1996


An adaptive program [6] in our approach is a program that takes as a parameter a description of a class graph on which it is to operate. The nodes of the graph are types, and the edges represent structural and functional relations between the nodes. Adaptive programs are polymorphic in the graphs they can use. Action code is thus associated with partially-specified (i.e., parameterized) graphs. The connection between the actual and parameterized graphs is made using a simple language that selects subgraphs of a given object structure. The adaptive compiler is given as input an adaptive program and a complete description of the actual class graph to be used, and it outputs code in a conventional object-oriented language.

Over the past several years, we have implemented and extensively experimented with adaptive programs that adapt over a few concerns, chiefly behavior and structure (in the Demeter tool [5]). In these domains adaptive programming has been successfully used both for the implementation of support tools and for business-process modeling. Our research in the EDCS program will extend the basic idea and tools in a few directions summarized briefly below.

Improving the translation of adaptive programs. We are constantly working on new algorithms for the heart of our tool, namely the adaptive compiler. We are looking for the right balance between complexity of compilation, size of the resulting code, and runtime overhead of the target program. The algorithm we employ now [8] generates code with excellent runtime performance, at the expense of increasing the size of the code (the idea there uses many little methods to facilitate traversals of the object structure). Currently, we are working on a more dynamic compilation algorithm, which generates less code at the expense of increased runtime overhead (intuitively, in a program generated by the new algorithm, more arguments are processed by fewer but slightly more sophisticated methods). We believe that the runtime penalty will be negligible, whereas the reduction in code size will be tangible. We expect to complete a paper describing the specification and analysis of the new algorithm by August 1996.

Introduction of context objects. A new direction we embarked on is to extend the basic paradigm of adaptive programs by including contexts. Roughly speaking, a context object allows the programmer to modify the behavior of a function call without changing the object or the function directly. In other words, one can write an elegant editing program (i.e., a context object) instead of the messy business of editing the original program. One of the advantages of adaptivity is that one can change the behavior of a group of classes without changing the classes. We have summarized our preliminary findings and methodolgy in [9], to be presented in October 1996, at the ACM conference on Foundations of Software Engineering.

A new version of Demeter. The accumulation of new ideas about adaptive programs called for writing a new version of Demeter. In the new version, context objects will be available, and the new compilation algorithm will be used. Another major design decision is to implement the new version in Java. This will also allow Demeter to better adjust to distributed environments in the future. Implmentation is currently underway, and we expect an alpha version of the system to be released by September 1996, and a beta release by January 1997. It is worth mentioning that the system is used in our graduate classes, thus gaining extensive testing.

Inter-operability with the Unified Method. Our next major undertaking will be to allow adaptive programs to be cutomized using the class diagrams of the Booch-Rumbaugh-Jacobson Method ([1], a.k.a. the Unified Method). There are several interesting challenges in doing that, on both the conceptual and the practical levels. We just started working on this project, and we anticipate results on this front by the middle of 1997.

CORBA compatibility. Another useful project (on a much samller scale than the previous ones) would be to rectify the code generated by Demeter to be CORBA-compatible [2]. We expect this to be the equivalent of a term project, and its completion depends on availability and interest of a suitable student.

Adaptive remote procedure calls. Our first take on distributed computing would be to apply the paradigm of adaptiveness to RPC. We intend to extend adaptive programs to allow for customization of argument passing, server and proxies location, caching etc. The idea is that the underlying topology of the communication network will be used to determine the actual way remote procedure calls are carried out so as to improve performance. This line of research is in the preliminary exploration stage now, and we expect to have substantial results in the academic year of 1997--1998.

Transformation-based evolution. Recently, we have devoted a substantial amount of work in studying the evolution of adaptive programs [3,4]. Our approach is based on decomposing the evolution of a program to a sequence of small transformations, the idea being that many of these transformations can be propagated automatically without danger. This allows for, e.g., changing only the class graph without affecting the code of the adaptive program in many cases, and automatic evolution of the test-suite associated with the program. We intend to implement much of the techniques developed on paper, and to try to extend the ideas to allow better mechanization of the evolution process. Our plan is to work on these issues in 1998--1999.

Study of fundamental issues. Last, but not least, we intend to continue our ongoing effort to examine alternative specification languages and semantics for adaptive programs, including different ways of selecting objects, different order of traversals, and different treatment of inheritance relations. Theoretical studies of the current paradigms are in progress (e.g., [7], as well as more accessible concise presentations of the basic ideas [10].





next up previous
Next: References



Karl Lieberherr
Sat Jun 29 07:25:08 EDT 1996