<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">System Development at Run Time</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><roleName>Dr</roleName><forename type="first">Christopher</forename><surname>Landauer</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Topcy House Consulting</orgName>
								<address>
									<settlement>Thousand Oaks</settlement>
									<region>California</region>
								</address>
							</affiliation>
						</author>
						<author role="corresp">
							<persName><roleName>Dr</roleName><forename type="first">Kirstie</forename><forename type="middle">L</forename><surname>Bellman</surname></persName>
							<email>bellmanhome@yahoo.com</email>
							<affiliation key="aff0">
								<orgName type="institution">Topcy House Consulting</orgName>
								<address>
									<settlement>Thousand Oaks</settlement>
									<region>California</region>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">System Development at Run Time</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">1F1EC2B2E75418DDF42A6EAA5018B951</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T01:43+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Self-Modeling Systems</term>
					<term>Computational Reflection</term>
					<term>Wrapping Integration Infrastructure</term>
					<term>Scenario-Based Engineering Process</term>
					<term>Model Creation and Analysis</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><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></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><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 <ref type="bibr" target="#b18">[19]</ref>.</p><p>Our ability to build systems with this property depends crucially on Computational Reflection, and specifically on Wrappings <ref type="bibr" target="#b16">[17]</ref>  <ref type="bibr" target="#b14">[15]</ref>, an integration infrastructure for complex software-intensive systems. It was originally developed to support run-time decision-making and reconfiguration <ref type="bibr" target="#b17">[18]</ref>, 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 <ref type="bibr" target="#b18">[19]</ref>.</p><p>This work is to be clearly distinguished from systems that use parallel code and models <ref type="bibr" target="#b9">[10]</ref>, 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 <ref type="bibr" target="#b7">[8]</ref>  <ref type="bibr" target="#b8">[9]</ref> can reduce all unchanging decisions to simple sequences (the partial evaluation methods have more information in a Wrapping-based system than in traditional software <ref type="bibr" target="#b16">[17]</ref>).</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 <ref type="bibr" target="#b21">[22]</ref>, 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 <ref type="bibr" target="#b16">[17]</ref>) 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 <ref type="bibr" target="#b17">[18]</ref> [17] <ref type="bibr" target="#b19">[20]</ref>. These are the methods that allow us to study infrastructure <ref type="bibr" target="#b14">[15]</ref> and build self-modeling systems <ref type="bibr" target="#b18">[19]</ref>. 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 <ref type="bibr" target="#b21">[22]</ref> 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Wrappings</head><p>We provide a short description of Wrappings in this Section, since there are many other more detailed descriptions elsewhere <ref type="bibr" target="#b16">[17]</ref>. The Wrapping integration infrastructure is our approach to run-time flexibility <ref type="bibr" target="#b14">[15]</ref>, 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 Knowledge-Based 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 <ref type="bibr" target="#b16">[17]</ref> 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 <ref type="bibr">[3] [4]</ref> 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 <ref type="bibr" target="#b10">[11]</ref>, 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 <ref type="bibr" target="#b7">[8]</ref> [17] <ref type="bibr" target="#b8">[9]</ref> 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:</p><p>• 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).</p><p>It is therefore an activity loop of a sort that is common in autonomic computing and other self-adaptive system developments <ref type="bibr" target="#b3">[4]</ref>  <ref type="bibr" target="#b14">[15]</ref>. 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:</p><p>-INT = Interpret Problem (find a resource to apply to the posed problem in the current context):</p><p>• 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 <ref type="bibr" target="#b1">[2]</ref>. 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).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Models</head><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 <ref type="bibr" target="#b23">[24]</ref>. 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 <ref type="bibr" target="#b11">[12]</ref> [25] <ref type="bibr" target="#b22">[23]</ref>, so it can be compared to the run-time activity <ref type="bibr" target="#b5">[6]</ref>, using models of inferred behavior <ref type="bibr" target="#b0">[1]</ref>. An interesting parallel set of studies has been ongoing in the business process modeling community, regarding workflow models as process models <ref type="bibr" target="#b27">[28]</ref>, 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 <ref type="bibr" target="#b23">[24]</ref> [12] <ref type="bibr" target="#b22">[23]</ref>):</p><p>-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 <ref type="bibr" target="#b24">[25]</ref>), 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 <ref type="bibr" target="#b15">[16]</ref>.</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 <ref type="bibr" target="#b24">[25]</ref> [13] <ref type="bibr" target="#b6">[7]</ref>. 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 <ref type="bibr" target="#b25">[26]</ref> 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 <ref type="bibr" target="#b4">[5]</ref> [23] <ref type="bibr" target="#b20">[21]</ref>. 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:</p><p>-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 <ref type="bibr" target="#b20">[21]</ref>, 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). 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 <ref type="bibr" target="#b13">[14]</ref> [26] <ref type="bibr" target="#b26">[27]</ref>, 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 <ref type="bibr" target="#b24">[25]</ref>, 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).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Challenges</head><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 con-trol 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusions</head><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></div>		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Declarative workflows: Balancing between flexibility and support</title>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">M P</forename><surname>Van Der Aalst</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pesic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Schoenberg</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Science -Research and Development</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="99" to="113" />
			<date type="published" when="2009-03-10">10 Mar 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">The Structure and Interpretation of Computer Programs</title>
		<author>
			<persName><forename type="first">Harold</forename><surname>Abelson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gerald</forename><surname>Sussman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Julie</forename><surname>With</surname></persName>
		</author>
		<author>
			<persName><surname>Sussman</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1985">1985</date>
			<publisher>now MIT</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">System Engineering for Organic Computing</title>
		<author>
			<persName><forename type="first">Kirstie</forename><forename type="middle">L</forename><surname>Dr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dr</forename><surname>Bellman</surname></persName>
		</author>
		<author>
			<persName><surname>Christopher Landauer</surname></persName>
		</author>
		<author>
			<persName><surname>Dr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Phyllis</surname></persName>
		</author>
		<author>
			<persName><surname>Nelson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Organic Computing, Understanding Complex Systems Series</title>
				<editor>
			<persName><forename type="first">Rolf</forename><forename type="middle">P</forename><surname>Würtz</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="25" to="80" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Managing Variable and Cooperative Time Behavior</title>
		<author>
			<persName><forename type="first">Kirstie</forename><forename type="middle">L</forename><surname>Dr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dr</forename><surname>Bellman</surname></persName>
		</author>
		<author>
			<persName><surname>Christopher Landauer</surname></persName>
		</author>
		<author>
			<persName><surname>Dr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Phyllis</surname></persName>
		</author>
		<author>
			<persName><surname>Nelson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. SORT 2010: The First IEEE Wksh. on Self-Organizing Real-Time Systems</title>
				<meeting>SORT 2010: The First IEEE Wksh. on Self-Organizing Real-Time Systems<address><addrLine>Carmona, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2010-05-05">05 May 2010. May 2010. 2010</date>
			<biblScope unit="page" from="5" to="06" />
		</imprint>
	</monogr>
	<note>, part of ISORC 2010</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Genie: Supporting the Model-Driven Development of Reflective, Component-Based Adaptive Systems</title>
		<author>
			<persName><forename type="first">Nelly</forename><surname>Bencomo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Paul</forename><surname>Grace</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Carlos</forename><surname>Flores</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Danny</forename><surname>Hughes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gordon</forename><surname>Blair</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ICSE08: The 30th Intern. Conf. on Software Engineering</title>
				<meeting>ICSE08: The 30th Intern. Conf. on Software Engineering<address><addrLine>Leipzig, Germany</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2008-05-18">10-18 May 2008. 2008</date>
			<biblScope unit="page" from="811" to="814" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Diagnosing architectural run-time failures</title>
		<author>
			<persName><forename type="first">Paulo</forename><surname>Casanova</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Bradley</forename><surname>Schmerl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc.SEAMS&apos;13: The 8th Intern. Symposium on Software Engineering for Adaptive and Self-Managing Systems</title>
				<meeting>.SEAMS&apos;13: The 8th Intern. Symposium on Software Engineering for Adaptive and Self-Managing Systems<address><addrLine>San Francisco, California</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2013-05-21">20-21 May 2013. 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Stitch: A Language for Architecture-Based Self-Adaptation</title>
		<author>
			<persName><forename type="first">Shang-</forename></persName>
		</author>
		<author>
			<persName><forename type="first">Wen</forename><surname>Cheng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">in Self-Adaptive Systems</title>
				<editor>
			<persName><forename type="first">Danny</forename><surname>Weyns</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Sam</forename><surname>Jesper Andersson</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Bradley</forename><surname>Malek</surname></persName>
		</editor>
		<editor>
			<persName><surname>Schmerl</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2012-12">Dec 2012</date>
			<biblScope unit="volume">85</biblScope>
		</imprint>
	</monogr>
	<note>Special Issue on State of the Art</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Tutorial Notes on Partial Evaluation</title>
		<author>
			<persName><forename type="first">C</forename><surname>Consel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Danvy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. PoPL 1993: The 20th ACM Symposium on Principles of Programming Languages</title>
				<meeting>PoPL 1993: The 20th ACM Symposium on Principles of Programming Languages<address><addrLine>Charleston, SC</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1993-01">Jan 1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Higher Abstractions for Dynamic Analysis</title>
		<author>
			<persName><forename type="first">Marcus</forename><surname>Denker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Orla</forename><surname>Greevy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michele</forename><surname>Lanza</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. PCODA&apos;2006: The 2nd Intern. Wksh. on Program Comprehension through Dynamic Analysis</title>
				<meeting>PCODA&apos;2006: The 2nd Intern. Wksh. on Program Comprehension through Dynamic Analysis</meeting>
		<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="2006" to="2011" />
		</imprint>
	</monogr>
	<note type="report_type">Technical report</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Model-Integrating Software Components</title>
		<author>
			<persName><forename type="first">Mahdi</forename><surname>Derakhshanmanesh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jürgen</forename><surname>Ebert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Thomas</forename><surname>Iguchi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gregor</forename><surname>Engels</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Model-Driven Engineering Languages and Systems</title>
				<editor>
			<persName><forename type="first">Juergen</forename><surname>Dingel</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Wolfram</forename><surname>Schulte</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Isidro</forename><surname>Ramos</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Silvia</forename><surname>Abrahão</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Emilio</forename><surname>Insfran</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">8767</biblScope>
			<biblScope unit="page" from="386" to="402" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Reasoning About Implicit Invocation</title>
		<author>
			<persName><forename type="first">D</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Jha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Notkin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Dingel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. SIGSOFT&apos;98/FSE-6: The 6th ACM SIGSOFT Intern. Symposium on Foundations of Software Engineering</title>
		<title level="s">also SIGSOFT Software Engineering Notes</title>
		<meeting>SIGSOFT&apos;98/FSE-6: The 6th ACM SIGSOFT Intern. Symposium on Foundations of Software Engineering<address><addrLine>Lake Buena Vista, Florida</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="1998-11-05">03-05 Nov 1998. 1998. 1998</date>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="page" from="209" to="221" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Using Architectural Models at Runtime: Research Challenges</title>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Bradley</forename><surname>Schmerl</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. First European Wksh. on Software Architectures</title>
				<editor>
			<persName><forename type="first">Flavio</forename><surname>Oquendo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Brian</forename><surname>Warboys</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Ron</forename><surname>Morrison</surname></persName>
		</editor>
		<meeting>First European Wksh. on Software Architectures<address><addrLine>Landauer; St. Andrews, Scotland</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2004-05">May 2004. 2004</date>
			<biblScope unit="volume">3047</biblScope>
			<biblScope unit="page" from="200" to="205" />
		</imprint>
	</monogr>
	<note>Software Architecture</note>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Software Architecture-Based Self-Adaptation</title>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Bradley</forename><surname>Schmerl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Shang-Wen</forename><surname>Cheng</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Autonomic Computing and Networking</title>
				<editor>
			<persName><forename type="first">Mieso</forename><surname>Denko</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Laurence</forename><surname>Yang</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Yan</forename><surname>Zhang</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
	<note>Chapter 1</note>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">The Vision of Autonomic Computing</title>
		<author>
			<persName><forename type="first">Jeffrey</forename><forename type="middle">O</forename><surname>Kephart</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><forename type="middle">M</forename><surname>Chase</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Computer</title>
		<imprint>
			<biblScope unit="volume">36</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="41" to="50" />
			<date type="published" when="2003-01">Jan 2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Infrastructure for Studying Infrastructure</title>
		<author>
			<persName><forename type="first">Christopher</forename><surname>Landauer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ESOS 2013: Wksh. on Embedded Self-Organizing Systems, 25</title>
				<meeting>ESOS 2013: Wksh. on Embedded Self-Organizing Systems, 25<address><addrLine>San Jose, CA; San Jose, CA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2013-06-24">Jun 2013. 24-28 Jun 2013. 2013</date>
		</imprint>
	</monogr>
	<note>part of 2013 USENIX Federated Conf. Week</note>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Advanced Mathematical Methods for Telemetry Analysis</title>
		<author>
			<persName><forename type="first">Christopher</forename><surname>Landauer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Spacecraft Flight Software Workshop</title>
				<meeting><address><addrLine>Laurel, Maryland</addrLine></address></meeting>
		<imprint>
			<publisher>JHU/APL</publisher>
			<date type="published" when="2015-10-29">2015. 27-29 October 2015. 2015</date>
		</imprint>
	</monogr>
	<note>presentation)</note>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Generic Programming, Partial Evaluation, and a New Programming Paradigm</title>
		<author>
			<persName><forename type="first">Christopher</forename><surname>Landauer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kirstie</forename><forename type="middle">L</forename><surname>Bellman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software Process Improvement</title>
		<title level="s">Chapter</title>
		<editor>
			<persName><forename type="first">Gene</forename><surname>Mcguire</surname></persName>
		</editor>
		<imprint>
			<publisher>Idea Group Publishing</publisher>
			<date type="published" when="1999">1999</date>
			<biblScope unit="volume">8</biblScope>
			<biblScope unit="page" from="108" to="154" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Lessons Learned with Wrapping Systems</title>
		<author>
			<persName><forename type="first">Christopher</forename><surname>Landauer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kirstie</forename><forename type="middle">L</forename><surname>Bellman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ICECCS&apos;99: The 5th IEEE Intern. Conf. on Engineering Complex Computing Systems</title>
				<meeting>ICECCS&apos;99: The 5th IEEE Intern. Conf. on Engineering Complex Computing Systems<address><addrLine>Las Vegas, Nevada</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1999-10-22">18-22 October 1999. 1999</date>
			<biblScope unit="page" from="132" to="142" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Self-Modeling Systems</title>
		<author>
			<persName><forename type="first">Christopher</forename><surname>Landauer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kirstie</forename><forename type="middle">L</forename><surname>Bellman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Self-Adaptive Software</title>
				<editor>
			<persName><forename type="first">R</forename><surname>Laddaga</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">H</forename><surname>Shrobe</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2002">2002</date>
			<biblScope unit="volume">2614</biblScope>
			<biblScope unit="page" from="238" to="256" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Designing Cooperating Self-Improving Systems</title>
		<author>
			<persName><forename type="first">Christopher</forename><surname>Landauer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kirstie</forename><surname>Bellman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. 2105 SISSY Wksh.: Self-improving Systems of Systems; 07</title>
				<meeting>2105 SISSY Wksh.: Self-improving Systems of Systems; 07<address><addrLine>Grenoble, France part of; Grenoble, France</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2015-07">Jul 2015. 07-10 Jul 2015. 2015</date>
		</imprint>
	</monogr>
	<note>ICAC 2015: the 2015 Intern. Conf. on Autonomic Computing</note>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Meta-Modeling Runtime Models</title>
		<author>
			<persName><forename type="first">Grzegorz</forename><surname>Lehmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marco</forename><surname>Blumendorf</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Frank</forename><surname>Trollmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sahin</forename><surname>Albayrak</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. MODELS&apos;10: the 2010 Intern. Conf. on Models in Software Engineering</title>
				<editor>
			<persName><forename type="first">Juergen</forename><surname>Dingel</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Arnor</forename><surname>Solberg</surname></persName>
		</editor>
		<meeting>MODELS&apos;10: the 2010 Intern. Conf. on Models in Software Engineering<address><addrLine>Oslo, Norway</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2010-10-03">02-08 Oct 2010. 03 Oct 2010</date>
			<biblScope unit="page" from="209" to="223" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<author>
			<persName><forename type="first">Karen</forename><surname>Mcgraw</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Karan</forename><surname>Harbison</surname></persName>
		</author>
		<title level="m">User-centered Requirements: The Scenario-Based Engineering Process</title>
				<imprint>
			<publisher>Lawrence Erlbaum</publisher>
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Models@Run.time to support dynamic adaptation</title>
		<author>
			<persName><forename type="first">Brice</forename><surname>Morin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Olivier</forename><surname>Barais</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jean-Marc</forename><surname>Jézéquel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Franck</forename><surname>Fleurey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arnor</forename><surname>Solberg</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Computer</title>
		<imprint>
			<biblScope unit="page" from="44" to="51" />
			<date type="published" when="2009-10">Oct 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Architecture-Based Runtime Software Evolution</title>
		<author>
			<persName><forename type="first">P</forename><surname>Oreizy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Medvidovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Taylor</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ICSE 1998: Intern. Conf. Software Engineering</title>
				<meeting>ICSE 1998: Intern. Conf. Software Engineering<address><addrLine>Kyoto, Japan</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1998-04-25">19-25 Apr 1998. 1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Discovering Architectures from Running Systems</title>
		<author>
			<persName><forename type="first">Bradley</forename><surname>Schmerl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jonathan</forename><surname>Aldrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rick</forename><surname>Kazman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Hong</forename><surname>Yan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. Software Engineering</title>
		<imprint>
			<biblScope unit="volume">32</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="454" to="466" />
			<date type="published" when="2006-07">Jul 2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">A Language for Feedback Loops in Self-Adaptive Systems: Executable Runtime Megamodels</title>
		<author>
			<persName><forename type="first">Thomas</forename><surname>Vogel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Holger</forename><surname>Giese</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. SEAMS 2012: the 7th Intern. Symposium on Software Engineering for Adaptive and Self-Managing Systems</title>
				<meeting>SEAMS 2012: the 7th Intern. Symposium on Software Engineering for Adaptive and Self-Managing Systems<address><addrLine>Zurich, Switzerland</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2012-06-05">04-05 Jun 2012. June 2012</date>
			<biblScope unit="page" from="129" to="138" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Model-Driven Engineering of Self-Adaptive Software with EUREMA</title>
		<author>
			<persName><forename type="first">Thomas</forename><surname>Vogel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Holger</forename><surname>Giese</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Autonomous and Adaptive Systems</title>
		<imprint>
			<biblScope unit="volume">8</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page">33</biblScope>
			<date type="published" when="2014-01">Jan 2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<monogr>
		<title level="m" type="main">Workflow Standard: Process Definition Interface; XML Process Definition Language</title>
		<idno>WFMC-TC-1025</idno>
		<imprint>
			<date type="published" when="2005-10-03">03 Oct 2005 (2005</date>
		</imprint>
	</monogr>
	<note type="report_type">Document Number</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
