<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>System Development at Run Time</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dr. Christopher Landauer</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dr. Kirstie L. Bellman</string-name>
          <email>bellmanhome@yahoo.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Topcy House Consulting</institution>
          ,
          <addr-line>Thousand Oaks, California</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Models are essential for defining and developing systems that support run-time decision-making and reconfiguration, and for implementing autonomous and adaptive systems for remote, hazardous, and largely unknown external environments. We show that they can also be used as the operational code throughout the development process, including deployment. Our ability to build systems with this property depends crucially on Computational Reflection, and our implementation thereof, an integration infrastructure for complex software-intensive systems called Wrappings. It is inherent in a Wrapping system that all activity (down to a specified level of detail) can be recorded as sequences of events with associated context. The system can consider these event elements as points in a “behavior trajectory” space, and use recent advanced mathematical analysis methods to discover hidden relationships in the environment and system behaviors. These relationships can be used to improve the system models and therefore the corresponding behavior.</p>
      </abstract>
      <kwd-group>
        <kwd>Self-Modeling Systems</kwd>
        <kwd>Computational Reflection</kwd>
        <kwd>Wrapping Integration Infrastructure</kwd>
        <kwd>Scenario-Based Engineering Process</kwd>
        <kwd>Model Creation and Analysis</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        In this paper, we strongly argue the notion that models are not only useful, but
even essential, for defining, developing and even operating a system for a
complex operational environment. We also argue that they can also be used as the
operational code, in which the models are written early and refined throughout
the development process, until they are deployed. The system development
process becomes the construction of a series of models that gradually conform to
the original behavior expectations, and the result is a “self-modeling” system, in
which the deployed code is the model of the deployed system, and interpreting
that model is the behavior of the deployed system [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>
        Our ability to build systems with this property depends crucially on
Computational Reflection, and specifically on Wrappings [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], an integration
infrastructure for complex software-intensive systems. It was originally
developed to support run-time decision-making and reconfiguration [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], as a way
of implementing autonomous and adaptive systems for remote, hazardous, and
even largely unknown external environments. This approach was also used to
show how self-modeling systems can be built [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>
        This work is to be clearly distinguished from systems that use parallel code
and models [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], since for us the models are the code, as interpreted to produce
the intended behavior. These systems are, not just use, models at run time.
There is also a reasonable expectation that the use of models need not be a
performance problem, since partial evaluation methods [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] can reduce all
unchanging decisions to simple sequences (the partial evaluation methods have
more information in a Wrapping-based system than in traditional software [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]).
      </p>
      <p>
        In this paper, we focus on a development process that we can use to build
these systems, and also consider other ways for them to adapt themselves (i.e.,
their models of themselves and their behavior) to changing circumstances. We
start with the Scenario-Based Engineering Process [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], in which development
begins with a collection of stakeholder expectations, embodied in a set of
scenarios for the external environment and desired results for the behavior of the
system. We write these as basic models of what happens outside and inside the
system. As external constraints and interactions are better understood, these
models are gradually changed from what should happen to how it should
happen, refining functionality into more localized activity. We build these models as
self-modeling systems using Wrappings, to provide a deep level of reflection, and
we generally use wrex (our “Wrapping expression” notation [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]) to write the
computational resources. The choice of wrex is a matter of convenience; other
notations could be (and have been) used (e.g., Common Lisp, Python, C).
      </p>
      <p>It is inherent in a Wrapping system that all activity (down to a level of
granularity chosen via engineering judgment) can be recorded as sequences (or
partially ordered sets in concurrent applications) of events with associated context.
We can have the system consider these event elements as points in a “behavior
trajectory” space, and use recent advanced mathematical analysis methods to
discover hidden relationships in and among the environment and system
behaviors. These relationships can be used to improve the system models and therefore
the corresponding behavior.</p>
      <p>
        The rest of this paper begins, in Section 2, with some background history
and a short overview of Wrappings, along with the Problem Posing
Programming Paradigm [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. These are the methods that allow us to study
infrastructure [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and build self-modeling systems [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. For us, a system is
selfaware if it can use models of its own behavior, and it is self-adaptive if it can
use those models to change that behavior. It is self-modeling if it also interprets
these models of its own behavior to generate that behavior.
      </p>
      <p>
        It is clear that self-adaptive systems can make substantive changes at
runtime. In one sense, this is already autonomous development. We extend this
notion to the entire development cycle, using the Scenario-Based Engineering
Process [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] to build systems from stakeholder expectations in scenarios to
requirements, and making models as soon as possible in the process. In Section 3,
we describe how models can be provided or created, expanded and extended. In
Section 4, we describe some of the many difficult challenges that remain. Finally,
we describe our conclusions.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Wrappings</title>
      <p>
        We provide a short description of Wrappings in this Section, since there are
many other more detailed descriptions elsewhere [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. The Wrapping
integration infrastructure is our approach to run-time flexibility [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], with run-time
context-aware decision processes and computational resources. It is defined by
its two complementary aspects, the Wrapping Knowledge Bases (WKBs) and the
Problem Managers (PMs). The WKBs contain Wrappings, which are
KnowledgeBased interfaces to the uses of computational resources in context, and they are
interpreted by the PMs, which are processes that are themselves resources.
      </p>
      <p>
        We use the “Problem Posing” interpretation of programs [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] to change our
focus in programming these systems, separating code that computes something,
called a “resource” from its purpose, called a “posed problem”, and then
keeping the problems available to the code along with the resources. Thus, programs
interpreted in this style do not “call functions”, “issue commands”, or “send
messages”; they “pose problems” (these are information service requests).
Program fragments are not written as “functions”, “modules”, or “methods” that
do things; they are written as “resources” that can be “applied” to problems
(these are information service providers).
      </p>
      <p>
        Because we separate the problems from the applicable resources, and make
context an essential part of reconnecting them, we can use very much more
flexible mechanisms for connecting them than simply using the same name. We
have shown that our choices lead to some interesting flexibilities, when combined
with the “meta-reasoning” approach [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] including such properties as software
reuse without source code modification, delaying language semantics to
runtime, and system upgrades by incremental resource and infrastructure migration
instead of version based replacement.
      </p>
      <p>The WKBs define the set of problems that the system knows how to treat.
The mappings are problem-, problem parameter-, and context-dependent, and
identify the resources that can address each specific problem in a given context
(this information is provided by the developers; it is not inferred by the system).</p>
      <p>
        The PMs are the programs that read WKBs and select and apply resources
to problems in context. The PMs are Wrapped in exactly the same way as other
resources, and are therefore available for the same flexible integration as any
resources. These systems have no privileged resource; anything can be replaced.
Default Problem Managers are provided with any Wrapping implementation, but
the defaults can be superseded in the same way as any other resource. These are
the processes that replace the usual kind of implicit invocation [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], allowing
arbitrary processes to be inserted in the middle of the resource invocation process.
This flexibility does come with a cost, but there are also mechanisms based on
partial evaluation [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] for removing any decisions that will be made the
same way every time, thus leaving the costs where the variabilities need to be.
      </p>
      <p>One of the keys to the flexibility of Wrappings is making these PM processes
as important and as explicit as the WKB descriptions. The basic process notion
is the interaction of one very simple loop, called the “Coordination Manager”
(CM), and a very simple planner, called the “Study Manager” (SM). These are
both examples of PMs.</p>
      <p>The default CM is responsible for keeping the system going. It has only three
repeated steps, after an initial one.</p>
      <p>
        – FC = Find Context (establish a context for problem study.);
– loop:
• PP = Pose Problem; (get a problem to study from a problem poser, who
could be the user or the system);
• SP = Study Problem (use an SM and the WKBs to study the posed
problem in the current context);
• AR = Assimilate Results (use the result to affect the current context).
It is therefore an activity loop of a sort that is common in autonomic computing
and other self-adaptive system developments [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Activity loops are not the
focus of this paper, but they go a long way towards improving the flexibility of
systems that use them.
      </p>
      <p>We have divided the “Study Problem” process into a sequence of basic steps
that we believe represent a fundamental part of problem study and resolution.
These are implemented in the default SM:
– INT = Interpret Problem (find a resource to apply to the posed problem in
the current context):
• MAT = Match Resources (find a set of resources whose Wrappings say
they might apply to the current problem in the current context);
• RES = Resolve Resources (eliminate those that do not apply, via
negotiations between the posed problem and each Wrapping of the matched
resources to determine whether or not it can be applied, and make initial
bindings of formal resource parameters to actual problem parameters);
• SEL = Select Resource (choose which of the remaining candidate
resources, if any, to use);
• ADA = Adapt Resource (set it up for the current problem and problem
context, by finishing all required bindings);
• ADV = Advise Poser (tell the problem poser what is about to happen,
that is, what resource was chosen and how it was set up to be applied);
– APP = Apply Resource (use the resource for its information service, to
compute or present something, or provide some other information or service);
– ASR = Assess Results (determine whether the application succeeded or
failed, and to help decide what to do next).</p>
      <p>
        Finally, every step in the above sequences is actually a posed problem, and
is treated in exactly the same way as any other, which makes these sequences
“meta”-recursive [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. This makes the system completely Computationally
Reflective. That means that if we have any knowledge at all that a different planner
may be more appropriate for the context and application at hand, we can use it
(after defining the appropriate context conditions), either to replace the default
SM when it is applicable, or to replace individual steps of the SM, according to
that context (which can be selected at run time).
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Models</title>
      <p>In this Section, we start with a discussion of many current approaches to using
models at run time, and show how the Wrapping infrastructure, with its
flexible selection and application of computational resources, supports the building,
using, evaluating, and adapting models at run time. In a way this is
cheating, since the Wrappings approach does not provide new methods of performing
these functions. Rather, since it relegates all of the actual computational
effort to the resources, its strength lies in the organization and interoperation of
those resources, which in turn provides the flexibility to use any of the many
mechanisms for specific kinds of model building and adapting.</p>
      <p>
        We start with the models that are least like running code. It has long been
recognized that a system with an explicit architecture model available at run
time has access to more information about the running system, thus facilitating
its management of its own adaptation [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. This is most useful when the model
includes explicit representations of software components and connectors, or when
it mimics the behavior of the system implementation [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], so it can be
compared to the run-time activity [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], using models of inferred behavior [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
An interesting parallel set of studies has been ongoing in the business process
modeling community, regarding workflow models as process models [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], though
typically producing external models of human processes.
      </p>
      <p>
        However, it is also well-known that there are several challenges in using
architectural models at run time (adapted from [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]):
– Monitoring: how to select and collect necessary information from the system;
– Interpretation: how to process the event data;
– Resolution: how to determine changes;
– Adaptation: how to select and effect changes.
      </p>
      <p>Monitoring is about how to select and collect necessary information from
system internals, system behavior, detectable environment behavior, and
interactions between system and environment to provide an adequate picture of the
current behavior. Wrapping systems have an advantage of having a ready made
language for events (the resource applications and context descriptions) that
encompasses all system activity (to whatever level of detail has been selected for
the designed variabilities in the system), and a built-in hook for measurements
(the “Advise Poser” resources), already in the form of sequences of events.</p>
      <p>
        Interpretation is about how to process the event data to make it usable. First,
to convert event data into forms that support model building or analysis (this
is complex event processing, with a priori event patterns or pattern discovery
rules); then to build models from the event traces (this is called the semantic gap
between low-level event traces and higher-level system concepts [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]), and finally,
to evaluate model consistency. Here is where some of the advanced mathematical
methods, such as Grammatical Inference and its generalizations, are used to
build syntactic descriptions of the sequences, and either dimension reduction or
manifold discovery to find behavioral manifolds that simplify the expressions.
These mathematical subjects are beyond the scope of this paper [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>Resolution is about how to determine appropriate changes: how to specify and
identify adaptation triggers, how to identify and resolve discrepancies between
model and specification, how to specify resolution goals and policies, and how
to decide what other data is needed to resolve a discrepancy. These are hard
questions not always solvable a priori, but a Wrapping-based approach allows a
system to contain many alternative analysis methods and compare their effects.</p>
      <p>Adaptation is about how to select and effect changes: how to invent or select
potential improvements, how to decide whether they are improvements, how to
cause system changes, how to avoid thrashing (oscillations in adaptation
usually due to fluctuations in environmental behavior). Once the replacement (or
retuned) resources are available, changes in the Wrappings automatically make
them selectable in the system.</p>
      <p>One of the reasons that using architectural models is so difficult is that
they are just scaffolding, not part of the system operation; they only define its
structure that enables that operation. Devising the processes that can convert
architecture changes into system changes at run time is the heart of making
these systems effective. Here the Wrapping integration infrastructure allows any
of the many methods currently in use to be applied and evaluated.</p>
      <p>
        Our issue with many of these approaches is that they add adaptation to the
system as an external feature, so only the combined system is partially
selfadapting, and even then the adaptation mechanism itself is not usually subject
to its own analysis and improvement [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. These approaches consider
architectural models of the system as a control layer that has access to the
components and connectors that define the system, and use effective control
theory strategies for them. Some approaches [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] add another control layer to
manage adapting the adaptation layer. Of course, this kind of add-on style is
necessary when you start with an existing system, but it does leave a large part
of the system non-adaptable.
      </p>
      <p>
        Another approach is to organize the modeling using meta-models [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
All of these approaches also seem to take the object system as a separate part,
at the lowest level of abstraction, and include a varying number of distinct levels
or layers of control:
– Original system, including source code, configuration files, reconfiguration
policies (via automatic code and configuration file generation);
– Prescriptive part of the model (specifying how the system should behave);
– Descriptive part of the model (specifying how the system actually is by
inferring models of its behavior).
      </p>
      <p>
        Then the process infers a descriptive model of system behavior, using any of
a number of methods, and compares the model to the prescription. Most of
the approaches also have a separate layer for managing configuration variants,
along with compatibility and transition rules. These are often written as a state
machine for configurations (but only for systems with a small number of
variations), with models of components and frameworks or configurations, a planner
to construct configurations from conditions, and models of acceptable
modifications. This is the layer that compares the description to the prescription. Finally,
some of the approaches have a separate decision layer for mapping
environmental behavior into configuration choices or conditions. For our purposes, the most
important part of these descriptions is the causal connection [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], in the form of
information flows between the system and its models. This looks like the closest
to our self-modeling systems, though we make the causal connection the central
feature (the model is the system).
      </p>
      <p>
        In all of these approaches, there is the fundamental difficulty that the
inferred models of behavior are not the way that behavior is generated, so they
are always somewhat external to the system operation, and the interpretation
step above is essential and difficult. Similarly, architectural models are not
usually used to put the architectures together in the first place. They are more like
structure or scaffolding, used until the system is ready to run and then discarded,
or put in abeyance until something needs to be changed. Some of the
applications (mainly autonomic and self-adaptive systems [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], but also others)
explicitly use activity loops (such as the MAPE loop of autonomic computing)
to organize their operation. For an activity loop based system, monitoring is
automatically available in the step descriptions, and when the activity loop is
recursive, as in Wrappings, the events are already expressed in system-relevant
terms (resource application, relevant context). There are still the challenges of
unravelling temporal overlaps (many higher-level events are interleaved), and the
multiple differences in run time patterns [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], but using an activity loop greatly
simplifies the interpretation process.
      </p>
      <p>The control loop defined by the CM/SM in Wrappings is internally directed,
looking only at internal problems and resources, unlike essentially every other
loop, which seems to be directed externally. These other activity loops seem
to be designed to perform the specified actions, not decide on the actions to
be performed by other resources. If they were to be treated recursively, and
separated from the performing resources, they could have the same flexibility as
Wrappings.</p>
      <p>Our conclusion from this discussion is that many of these approaches would
likely benefit from using an explicit activity loop for their control process,
separating their methods of adaptation and evaluation from the control thereof,
and adding many more methods for construction, comparison and evaluation of
models (of course, some of these approaches already do some of these things).
4</p>
    </sec>
    <sec id="sec-4">
      <title>Challenges</title>
      <p>We have described a development methodology to build self-adaptation into
systems from the beginning, but of course, that is the easy case, since we have
control over the entire process. The more interesting and difficult case is to add new
adaptation capabilities to an existing system. There are difficulties in choosing
instrumentation points, and in usefully inserting them without disrupting their
operation, as mentioned above in Section 3. The existing methods seem to be
most effective when they add a control layer or two onto an existing program or
system. However, one can also use our approach to this issue, which we describe
as “reuse without modification”. Using Wrappings, and at the cost of writing a
compiler for the source code language(s) (which is far less now than it used to
be), we can use the old code without changing at at all, inserting function call
diversions into the generated code using Wrappings. Then we can add whatever
adaptations are useful, so the program has them available at run time.</p>
      <p>There are also some mathematical challenges in applying the advanced
techniques to and in these systems. We need better algorithms for event pattern
correlations for partially ordered sets, since the ones that exist are too weak or
too time consuming. These will be used to create structural models of actual
behavior.</p>
      <p>As a practical matter, we also need to investigate some simplifications of
advanced mathematical methods, especially the manifold discovery and other
geometric methods, to determine how much we can do in a useful amount of time.
We also need better methods for handling non-stationary environments, and
measurements of how effectively different algorithms can keep up with changes.</p>
      <p>This isn’t nearly the full list of difficulties we have in implementing and
improving these systems, but it will do for a starting point.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions</title>
      <p>We have described some important issues for systems that will undergo (at least)
some part of their system development at run time, primarily because the
runtime environment is not well enough known at design time to decide certain
optimization or implementation questions.</p>
      <p>We have also described an approach (Wrappings) that is known to support
defining and building such systems with adequate flexibility and available
information at run time. We have explained how the Wrapping integration
infrastructure provides the required flexibility, through its separation of control
processes from computational resources, and the Computational Reflection that
ties them back together. In this development approach, system models exist from
very early in development time, and together with the environment and scenario
models, system behavior can be examined and improved by the developers until
it is deployed, and to some extent by the system itself afterward.</p>
      <p>Self-modeling systems must have many mechanisms for modeling, model
comparison, and model adjustment, that allow the systems to manage their own
behavior, behavioral evaluations and changes, and the suite of varyingly detailed
models that are necessary.</p>
      <p>The point of this paper is not so much to describe specific modeling
techniques (inference for observation models, optimization adjustments, consistency
and discrepancy analyses, simulation and hypothesis testing, and other advanced
mathematical methods) that can be used to build and evaluate models of
behavior as it is to show that using Wrappings helps a system organize its modeling
processes and coordinate its experimentation and evaluation of multiple methods
and models in an extremely flexible way.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>W.M.P. van der Aalst</surname>
          </string-name>
          , M. Pesic, H. Schoenberg, “
          <article-title>Declarative workflows: Balancing between flexibility and support”</article-title>
          ,
          <source>Computer Science - Research and Development</source>
          , Vol.
          <volume>23</volume>
          ,
          <string-name>
            <surname>Issue</surname>
            <given-names>2</given-names>
          </string-name>
          , p.
          <fpage>99</fpage>
          -
          <lpage>113</lpage>
          (
          <issue>10</issue>
          <year>Mar 2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Harold</given-names>
            <surname>Abelson</surname>
          </string-name>
          ,
          <article-title>Gerald Sussman, with Julie Sussman, The Structure and Interpretation of Computer Programs</article-title>
          , Bradford Books,
          <string-name>
            <surname>now MIT</surname>
          </string-name>
          (
          <year>1985</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Dr. Kirstie L. Bellman</surname>
          </string-name>
          , Dr. Christopher Landauer, Dr. Phyllis R. Nelson, “
          <article-title>System Engineering for Organic Computing”, Chapter 3</article-title>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>80</lpage>
          in Rolf P. Wu¨rtz (ed.),
          <string-name>
            <surname>Organic</surname>
            <given-names>Computing</given-names>
          </string-name>
          ,
          <source>Understanding Complex Systems Series</source>
          , Springer (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Dr. Kirstie L. Bellman</surname>
          </string-name>
          , Dr. Christopher Landauer, Dr. Phyllis R. Nelson, “
          <article-title>Managing Variable and Cooperative Time Behavior”</article-title>
          ,
          <source>Proc. SORT</source>
          <year>2010</year>
          :
          <article-title>The First IEEE Wksh</article-title>
          .
          <source>on Self-Organizing Real-Time Systems, 05 May</source>
          <year>2010</year>
          ,
          <source>part of ISORC</source>
          <year>2010</year>
          ,
          <volume>05</volume>
          -
          <fpage>06</fpage>
          May
          <year>2010</year>
          , Carmona, Spain (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Nelly</given-names>
            <surname>Bencomo</surname>
          </string-name>
          , Paul Grace, Carlos Flores, Danny Hughes, Gordon Blair, “
          <article-title>Genie: Supporting the Model-Driven Development of Reflective, Component-Based Adaptive Systems”</article-title>
          , p.
          <fpage>811</fpage>
          -
          <lpage>814</lpage>
          <source>in Proc. ICSE08: The 30th Intern. Conf. on Software Engineering</source>
          ,
          <fpage>10</fpage>
          -
          <lpage>18</lpage>
          May
          <year>2008</year>
          , Leipzig, Germany (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Paulo</given-names>
            <surname>Casanova</surname>
          </string-name>
          , David Garlan,
          <string-name>
            <given-names>Bradley</given-names>
            <surname>Schmerl</surname>
          </string-name>
          , and Rui Abreu, “
          <article-title>Diagnosing architectural run-time failures”</article-title>
          ,
          <source>Proc.SEAMS'13: The 8th Intern. Symposium on Software Engineering for Adaptive and Self-Managing Systems</source>
          ,
          <volume>20</volume>
          -
          <fpage>21</fpage>
          May
          <year>2013</year>
          , San Francisco, California (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. Shang-Wen Cheng and David Garlan, “
          <article-title>Stitch: A Language for Architecture-Based Self-Adaptation”</article-title>
          , in Danny Weyns, Jesper Andersson, Sam Malek and Bradley Schmerl (eds.),
          <article-title>Special Issue on State of the Art in Self-Adaptive Systems</article-title>
          ,
          <source>J. Systems and Software</source>
          , Vol.
          <volume>85</volume>
          , No.
          <volume>12</volume>
          (
          <year>Dec 2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>C.</given-names>
            <surname>Consel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Danvy</surname>
          </string-name>
          , “Tutorial Notes on Partial Evaluation”,
          <source>Proc. PoPL</source>
          <year>1993</year>
          :
          <article-title>The 20th ACM Symposium on Principles of Programming Languages, Charleston</article-title>
          ,
          <source>SC (Jan</source>
          <year>1993</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Marcus</given-names>
            <surname>Denker</surname>
          </string-name>
          , Orla Greevy, Michele Lanza, “
          <article-title>Higher Abstractions for Dynamic Analysis”</article-title>
          , pp.
          <fpage>32</fpage>
          -
          <lpage>38</lpage>
          <source>in Proc. PCODA'2006: The 2nd Intern. Wksh. on Program Comprehension through Dynamic Analysis</source>
          ,
          <source>Technical report 2006-11</source>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Mahdi</surname>
            <given-names>Derakhshanmanesh</given-names>
          </string-name>
          , Ju¨rgen Ebert, Thomas Iguchi, and Gregor Engels, “
          <article-title>Model-Integrating Software Components”</article-title>
          , p.
          <fpage>386</fpage>
          -
          <lpage>402</lpage>
          in Juergen Dingel, Wolfram Schulte, Isidro Ramos, Silvia Abrah˜ao, and Emilio Insfran,
          <source>Model-Driven Engineering Languages and Systems, LNCS 8767</source>
          , Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>D.</given-names>
            <surname>Garlan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Notkin</surname>
          </string-name>
          , J. Dingel, “
          <source>Reasoning About Implicit Invocation”</source>
          , pp.
          <fpage>209</fpage>
          -
          <lpage>221</lpage>
          <source>in Proc. SIGSOFT'98/FSE-6: The 6th ACM SIGSOFT Intern. Symposium on Foundations of Software Engineering</source>
          ,
          <fpage>03</fpage>
          -
          <lpage>05</lpage>
          Nov 1998, Lake Buena Vista,
          <string-name>
            <surname>Florida</surname>
          </string-name>
          (
          <year>1998</year>
          );
          <source>also SIGSOFT Software Engineering Notes</source>
          , vol.
          <volume>23</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>209</fpage>
          -
          <lpage>221</lpage>
          , ACM (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. David Garlan and
          <string-name>
            <given-names>Bradley</given-names>
            <surname>Schmerl</surname>
          </string-name>
          , “Using Architectural Models at Runtime: Research Challenges”,
          <source>Proc. First European Wksh. on Software Architectures</source>
          ,
          <fpage>21</fpage>
          -
          <lpage>22</lpage>
          May
          <year>2004</year>
          , St. Andrews, Scotland, p.
          <fpage>200</fpage>
          -
          <lpage>205</lpage>
          in Flavio Oquendo, Brian Warboys, Ron Morrison (eds.),
          <source>Software Architecture, LNCS 3047</source>
          , Springer (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. David Garlan and
          <string-name>
            <given-names>Bradley</given-names>
            <surname>Schmerl</surname>
          </string-name>
          and
          <string-name>
            <surname>Shang-Wen</surname>
            <given-names>Cheng</given-names>
          </string-name>
          , “
          <article-title>Software Architecture-Based Self-Adaptation”, Chapter 1 of Mieso Denko, Laurence Yang</article-title>
          and Yan Zhang (eds.),
          <source>Autonomic Computing and Networking</source>
          , Springer (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Jeffrey O. Kephart</surname>
            ,
            <given-names>David M.</given-names>
          </string-name>
          <string-name>
            <surname>Chase</surname>
          </string-name>
          , “
          <article-title>The Vision of Autonomic Computing”</article-title>
          , IEEE Computer, Vol.
          <volume>36</volume>
          ,
          <string-name>
            <surname>Issue</surname>
            <given-names>1</given-names>
          </string-name>
          , p.
          <fpage>41</fpage>
          -
          <lpage>50</lpage>
          (
          <year>Jan 2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Christopher</surname>
            <given-names>Landauer</given-names>
          </string-name>
          , “
          <article-title>Infrastructure for Studying Infrastructure”</article-title>
          ,
          <source>Proc. ESOS 2013: Wksh. on Embedded Self-Organizing Systems, 25 Jun</source>
          <year>2013</year>
          , San Jose, CA; part
          <article-title>of 2013 USENIX Federated Conf</article-title>
          . Week,
          <volume>24</volume>
          -28
          <source>Jun</source>
          <year>2013</year>
          , San Jose, CA (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Christopher</surname>
            <given-names>Landauer</given-names>
          </string-name>
          , “
          <source>Advanced Mathematical Methods for Telemetry Analysis” (presentation)</source>
          ,
          <source>2015 Spacecraft Flight Software Workshop</source>
          ,
          <fpage>27</fpage>
          -29
          <source>October</source>
          <year>2015</year>
          , JHU/APL, Laurel, Maryland (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Christopher</surname>
            <given-names>Landauer</given-names>
          </string-name>
          , Kirstie L. Bellman, “
          <article-title>Generic Programming, Partial Evaluation, and a New Programming Paradigm”, Chapter 8</article-title>
          , pp.
          <fpage>108</fpage>
          -
          <lpage>154</lpage>
          in Gene McGuire (ed.),
          <source>Software Process Improvement</source>
          , Idea Group Publishing (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Christopher</surname>
            <given-names>Landauer</given-names>
          </string-name>
          , Kirstie L. Bellman, “
          <article-title>Lessons Learned with Wrapping Systems”</article-title>
          , pp.
          <fpage>132</fpage>
          -
          <lpage>142</lpage>
          <source>in Proc. ICECCS'99: The 5th IEEE Intern. Conf. on Engineering Complex Computing Systems</source>
          ,
          <volume>18</volume>
          -22
          <source>October</source>
          <year>1999</year>
          ,
          <string-name>
            <given-names>Las</given-names>
            <surname>Vegas</surname>
          </string-name>
          ,
          <string-name>
            <surname>Nevada</surname>
          </string-name>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Christopher</surname>
            <given-names>Landauer</given-names>
          </string-name>
          , Kirstie L. Bellman, “
          <string-name>
            <surname>Self-Modeling</surname>
            <given-names>Systems</given-names>
          </string-name>
          ”, p.
          <fpage>238</fpage>
          -
          <lpage>256</lpage>
          in R. Laddaga, H. Shrobe (eds.), “
          <article-title>Self-Adaptive Software”</article-title>
          ,
          <source>LNCS 2614</source>
          , Springer (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Christopher</surname>
            <given-names>Landauer</given-names>
          </string-name>
          , Kirstie Bellman, “
          <article-title>Designing Cooperating Self-Improving Systems”</article-title>
          ,
          <source>Proc. 2105 SISSY Wksh.: Self-improving Systems of Systems; 07 Jul</source>
          <year>2015</year>
          , Grenoble,
          <source>France part of ICAC</source>
          <year>2015</year>
          :
          <article-title>the 2015</article-title>
          <source>Intern. Conf. on Autonomic Computing</source>
          ,
          <fpage>07</fpage>
          -10
          <source>Jul</source>
          <year>2015</year>
          , Grenoble, France (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Grzegorz</surname>
            <given-names>Lehmann</given-names>
          </string-name>
          , Marco Blumendorf, Frank Trollmann, Sahin Albayrak, “MetaModeling Runtime Models”, p.
          <fpage>209</fpage>
          -
          <lpage>223</lpage>
          in Juergen Dingel, Arnor Solberg (eds.),
          <source>Proc. MODELS'10: the 2010 Intern. Conf. on Models in Software Engineering</source>
          ,
          <fpage>02</fpage>
          -08
          <source>Oct</source>
          <year>2010</year>
          , Oslo, Norway (03
          <source>Oct</source>
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <article-title>Karen McGraw and Karan Harbison, User-centered Requirements: The ScenarioBased Engineering Process</article-title>
          , Lawrence Erlbaum (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Brice</surname>
            <given-names>Morin</given-names>
          </string-name>
          , Olivier Barais,
          <string-name>
            <surname>Jean-Marc</surname>
            <given-names>J</given-names>
          </string-name>
          ´ez´equel, Franck Fleurey, Arnor Solberg, “
          <article-title>Models@Run.time to support dynamic adaptation”</article-title>
          , IEEE Computer, p.
          <fpage>44</fpage>
          -
          <lpage>51</lpage>
          (
          <year>Oct 2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <given-names>P.</given-names>
            <surname>Oreizy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Medvidovic</surname>
          </string-name>
          , R. Taylor, “
          <article-title>Architecture-Based Runtime Software Evolution”</article-title>
          ,
          <source>Proc. ICSE 1998: Intern. Conf. Software Engineering</source>
          ,
          <fpage>19</fpage>
          -
          <lpage>25</lpage>
          Apr 1998, Kyoto, Japan (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Bradley</surname>
            <given-names>Schmerl</given-names>
          </string-name>
          , Jonathan Aldrich, David Garlan,
          <string-name>
            <given-names>Rick</given-names>
            <surname>Kazman</surname>
          </string-name>
          , and Hong Yan, “
          <article-title>Discovering Architectures from Running Systems”</article-title>
          ,
          <source>IEEE Trans. Software Engineering</source>
          , Vol.
          <volume>32</volume>
          , No.
          <volume>7</volume>
          , p.
          <fpage>454</fpage>
          -
          <lpage>466</lpage>
          (
          <year>Jul 2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26. Thomas Vogel and
          <article-title>Holger Giese, “A Language for Feedback Loops in Self-Adaptive Systems: Executable Runtime Megamodels”</article-title>
          ,
          <source>In Proc. SEAMS</source>
          <year>2012</year>
          :
          <article-title>the 7th Intern. Symposium on Software Engineering for Adaptive</article-title>
          and
          <string-name>
            <surname>Self-Managing</surname>
            <given-names>Systems</given-names>
          </string-name>
          ,
          <volume>04</volume>
          -
          <fpage>05</fpage>
          Jun 2012, Zurich, Switzerland, p.
          <fpage>129</fpage>
          -
          <lpage>138</lpage>
          (
          <year>June 2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27. Thomas Vogel and Holger Giese, “
          <article-title>Model-Driven Engineering of Self-Adaptive Software with EUREMA”</article-title>
          ,
          <source>ACM Trans. Autonomous and Adaptive Systems</source>
          , vol.
          <volume>8</volume>
          , no.
          <issue>4</issue>
          , p.
          <volume>18</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          :
          <fpage>33</fpage>
          (Jan
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <article-title>Workflow Management Coalition, Workflow Standard: Process Definition Interface; XML Process Definition Language</article-title>
          ,
          <string-name>
            <surname>Document Number</surname>
          </string-name>
          WFMC-TC-
          <volume>1025</volume>
          ,
          <issue>03</issue>
          <year>Oct 2005</year>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>