========================================== University of Hertfordshire Computer Science Research Colloquium 6 February 2002 Room LC 108 3 pm - 4 pm+ ==== Self-Reference and System Engineering with Wrappings Christopher Landauer, Kirstie L. Bellman Aerospace Integration Science Center cal@aero.org, bellman@aero.org Outline System Engineering not Software Engineering Problem Posing Programming Paradigm Reuse without Modification Wrappings for Integration: Systems, Components, Languages, Logics Self-Reference and Computational Reflection Generic Programming and Partial Evaluation Autonomous Systems Other Research Directions Symbol Systems and Computational Semiotics Your Worst Nightmare of Self-Modifying Code Long Abstract This talk is about some new methods in Software System Engineering, with an emphasis on integration infrastructure and what it can do. We start by describing the Problem Posing Programming Paradigm, which is a declarative interpretation that can be applied to any programming language, and, indeed, to any formal or even merely systematic notation that can be parsed into discrete syntactic structures, so in particular, the notation need not be linearly written (though the most common examples are). The main idea of the Problem Posing interpretation is to separate information service requests (called problems) from the information service providers (called resources), so that they may be connected in much more interesting and flexible ways than mere identification of equal names. Its most immediate application is the notion of Reuse without Modification: if there is enough code in a particular language and compilation context, it becomes useful to change the compiler instead of the code. Then we describe Wrappings, an approach to the integration of Constructed Complex Systems that is based on the twin notions of meta-knowledge and its automatic interpretation. The meta-knowledge is explicit, machine interpretable information about the uses of computational resources, collected into Wrapping Knowledge Bases: in which contexts the resources are appropriate, and whether, when, and how to apply them to problems in context. This use of Knowledge-Based Polymorphism to connect problems to resources leads to an extremely flexible system infrastructure. The processes that use the meta-knowledge are called Problem Managers. They perform the Intelligent User Support functions: Select, Assemble, Integrate, Adapt, and Explain. The Problem Managers are also computational resources, and they are also Wrapped as any other resource is. The system is therefore computationally reflective: it has a complete model of its own behavior, down to some level of detail. Since every part of the system is selectable, there are no privileged resources in the system at all. This kind of self-reference is enormously useful in areas as divergent as partial evaluation, in which a program is used to simplify the code of another program as it applies to a partially specified context and problem; and autonomous computing systems, in which it is necessary for the system to be quite knowledgeable about its own internal and external capabilities, so it can use that information to reason about its own decisions and actions. Short Abstract This talk is about some new methods in Software System Engineering, with an emphasis on integration infrastructure. We describe Wrappings, an approach to the integration of Constructed Complex Systems that is based on the twin notions of meta-knowledge and its automatic interpretation. The Wrappings are the meta-knowledge: explicit, machine interpretable information about the uses of every computational resource: whether, when, and how it applies to particular (classes of) problems in particular contexts. The processes that use the meta-knowledge to connect problems in context to applicable resources are called Problem Managers. They are also computational resources, and they are also Wrapped as any other resource is. The system is therefore computationally reflective: it has a complete model of its own behavior, down to some level of detail. Since every part of the system is selectable, there are no privileged resources in the system at all. ====