Hi Helen: I have been quiet over the last few months but we have made good progress on our NSF grant. One significant new development is the development of a reusable abstraction mechanism which lies between classes and modules (sets of classes. In your new CFP you mention the term "reflection and adaptive software". Below I describe two closely related interpretations. Is this catching what you mean by the term "adaptive software"? -- Karl ================================== Adaptive Software The term ``adaptive'' is used in two different, but related ways, by the software community. The first and older use of the term is coming from the system software community where they are concerned with improving performance dynamically. In this community, an adaptive system is a system where the implementation of the system software can change even while the system is used. The implementation change happens automatically by monitoring the running system. This kind of adaptiveness is very useful when the behavior of the system cannot be analyzed statically such as data dependent behavior. A few representative references to this work are: Douglas C. Schmidt's work at Washington University on The ADAPTIVE Communication Environment. http://www.cs.wustl.edu/~schmidt/ACE.html G. Attardi and T. Flagella, ``Customising object allocation,'' In Proceedings of ECOOP '94, LNCS 821, Springer-Verlag, Berlin, 1994. @ARTICLE{bihari:adaptation-real-time, AUTHOR = "Thomas Bihari and Karsten Schwan", TITLE = "Dynamic adaptation of real-time software", JOURNAL = "ACM Transactions on Computer Systems", YEAR = 1991, PAGES = "143-174", MONTH = "May", VOLUME = 9, NUMBER = 2 } @ARTICLE{gouda:adaptive, AUTHOR = "Mohamed G. Gouda and Ted Herman", TITLE = "Adaptive Programming", JOURNAL = ieee-se , YEAR = 1991, PAGES = "911-921", MONTH = "September", VOLUME = 17, NUMBER = 9 } @BOOK{islaam:customize-os, AUTHOR = "Nayeem Islam", TITLE = "Distributed Objects: Methodologies for Customizing Operating Systems", PUBLISHER = "IEEE Computer Society Press", YEAR = "1995", SERIES = "", VOLUME = "" } @INPROCEEDINGS{Theimer:customize-mobile, AUTHOR = "M.M Theimer and B.N. Schilit and B.B Welch", TITLE = "Customizing Mobile Applications", BOOKTITLE = "USENIX Conference", YEAR = "1993", ADDRESS = "Cambridge, MA", PAGES = "129-138", EDITOR = "", PUBLISHER = "" } The second and newer use of the term ``adaptive'' software comes from the software engineering, programming language and database community. The term is used here to cope with long-term change which comes from changed software requirements rather than short-term changes which come from dynamic changes in the data being processed or the load on the operating system. The term adaptive software as used by the software engineering, programming language and database community is described in detail in: @BOOK{demeter-book, AUTHOR = "Karl J. Lieberherr", TITLE = "Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns", PUBLISHER = "PWS Publishing Company, Boston", YEAR = "1996", NOTE = "ISBN 0-534-94602-X" } There are several commonalities between the two approaches to adaptiveness: Both require some reflection capability: system-software-adaptiveness requires observing the running system and software-engineering-adaptiveness requires observing the class structures so that the adaptive programs can be automatically adapted. Two works on reflection and software-engineering-adaptiveness are: @PHDTHESIS{walter:thesis, AUTHOR = "Walter H{\"u}rsch", TITLE = "Maintaining Consistency and Behavior of Object-Oriented Systems during Evolution", SCHOOL = "Northeastern University", YEAR = 1995, NOTE = "300 pages" } @TECHREPORT{crista:mop-for-evolution, AUTHOR = "Cristina Videira Lopes and Karl J. Lieberherr", TITLE = "AP/S++: A CASE-study of a MOP for Purposes of Software Evolution", INSTITUTION = "Xerox PARC and Northeastern University", YEAR = 1995, MONTH = "November", NUMBER = "NU-CCS-95-?" NOTE = "ftp://ftp.ccs.neu.edu/pub/people/lieber/reflection-adaptive.ps" } Both approaches allow changes to the system when it is running. For the software engineering adaptiveness this is possible by using the evolutionary meta-object protocol of Huersch described in his thesis.