<?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">Engineering and Continuously Operating Self-Adaptive Software Systems: Required Design Decisions</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">André</forename><surname>Van Hoorn</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Graduate School TrustSoft</orgName>
								<orgName type="institution">University of Oldenburg</orgName>
								<address>
									<postCode>D-26111</postCode>
									<settlement>Oldenburg</settlement>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Wilhelm</forename><surname>Hasselbring</surname></persName>
							<affiliation key="aff1">
								<orgName type="department">Software Engineering Group</orgName>
								<orgName type="institution">University of Kiel</orgName>
								<address>
									<postCode>D-24098</postCode>
									<settlement>Kiel</settlement>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Matthias</forename><surname>Rohr</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Graduate School TrustSoft</orgName>
								<orgName type="institution">University of Oldenburg</orgName>
								<address>
									<postCode>D-26111</postCode>
									<settlement>Oldenburg</settlement>
								</address>
							</affiliation>
							<affiliation key="aff2">
								<orgName type="institution">BTC AG -Business Technology Consulting AG</orgName>
								<address>
									<postCode>D-26121</postCode>
									<settlement>Oldenburg</settlement>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Engineering and Continuously Operating Self-Adaptive Software Systems: Required Design Decisions</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">70926A6297B76E8E612F6D75CC373BE1</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T23:31+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>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Self-adaptive or autonomic systems are computing systems which are able to manage/adapt themselves at runtime according to certain high-level goals. It is appropriate to equip software systems with adaptation capabilities in order to optimize runtime properties, such as performance, availability, or operating costs. Architectural models are often used to guide system adaptation. When engineering such systems, a number of cross-cutting design decisions, e.g. instrumentation, targeting at a system's later operation/maintenance phase must and can be considered during early design stages.</p><p>In this paper, we discuss some of these required design decisions for adaptive software systems and how models can help in engineering and operating these systems. The discussion is based on our experiences, including those gathered from evaluating research results in industrial settings. To illustrate the discussion, we use our selfadaptation approach SLAstic to describe how we address the discussed issues. SLAstic aims to improve a software system's resource efficiency by performing architecturebased runtime reconfigurations that adapt the system capacity to varying workloads, for instance to decrease the operating costs.</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>Self-managed or autonomic systems are those systems which are able to adapt themselves according to their environment <ref type="bibr" target="#b10">[11]</ref>. Self-adaptation can be described as a cycle of three logical phases <ref type="bibr" target="#b18">[19]</ref>: observation, analysis, and adaptation. The observation phase is concerned with monitoring (e.g., system behavior or system usage). The analysis phase detects triggers for adaptation and, if required, selects suitable adaptation operations, which are executed in the adaptation phase. A recent survey on self-adaptation research can be found in <ref type="bibr" target="#b4">[5]</ref>.</p><p>When engineering such systems, various non-functional aspects need to be considered. Trade-offs between QoS (Quality of Service) requirements, such as a performance, availability, and operating costs have to be addressed. Thus, requirements of system operation have a significant impact on the required design decisions of system engineering.</p><p>We illustrate the discussion of required design decisions based on the description of our self-adaptation approach SLAstic <ref type="bibr" target="#b23">[24]</ref>. SLAstic aims to improve the resource efficiency of component-based software systems, with a focus on business-critical software systems. Architectural models, specifying both functional and non-functional properties, play a central role in the SLAstic approach as they are not only used for the specification of the system at design time. The same models are updated by measurement data at runtime and used for the required analysis tasks in order to achieve the self-adaption goals. SLAstic explicitly considers a flexible system capacity in the software architecture.</p><p>The contribution of this paper is a discussion of design decisions that are required at design time for an effective operation at runtime of continuously operating software systems, such as business-critical software systems. We discuss the role of models in this context. This discussion is based on our experience and lessons learned from lab studies and industrial field studies with our monitoring framework Kieker <ref type="bibr" target="#b19">[20]</ref>. <ref type="foot" target="#foot_0">1</ref> We illustrate how these design decisions are addressed in our SLAstic approach for adaptive capacity management. This paper is structured as follows: Section 2 describes the architecture-based selfadaptation approach SLAstic aiming to support a resource-efficient operation of software systems. Based on this, Section 3 discusses design decisions for engineering and operating self-adaptive software systems and how they are addressed in the SLAstic approach. The conclusions are drawn in Section 4.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">The SLAstic Framework</head><p>With SLAstic, resource efficiency of continuously operating software is improved by adapting the number of allocated server nodes and by performing fine-grained architectural reconfigurations at runtime according to current system usage scenarios (workload) while satisfying required external QoS objectives (as specified in service level agreements). It is not the goal of this paper to present the SLAstic framework in detail. Instead, it is intended to be used for illustration in our discussion in Section 3.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Assumptions on Software System Architectures</head><p>We assume a hierarchical software system architecture consisting of the following types of hardware and software entities: (1) server node, (2) component container, and (3) software component. This allows to design the SLAstic self-adaptation framework in a way that provides reusability among different system implementations sharing common architectural concepts. Figure <ref type="figure" target="#fig_0">1</ref> illustrates this hierarchical structure with a Java EE example.</p><p>The business logic of a software system is implemented in a number of software components with well-defined provided and required interfaces. Software components constitute units of deployment <ref type="bibr" target="#b21">[22]</ref> and can be assembled or connected via their interfaces. Through their provided interfaces, they provide services to other software components or systems. Software components are deployed into component containers, which constitute Moreover, a component container manages the thread pool used to execute external service requests. Web servers or Java EE application servers are typical examples for component containers. A component container is installed on a server node consisting of the hardware platform and the operating system. Server nodes communicate via network links. For a software system, a set of server nodes is allocated from a server pool. We denote the set of allocated server nodes, the assembly of software components, as well as its deployment to component containers as the software system's architectural configuration.</p><p>Structural and behavioral aspects of a software system's architecture can be described using architecture description languages (ADL). Components, interfaces, and connectors for architectural configurations are common (structural) features of ADLs <ref type="bibr" target="#b15">[16]</ref>. A recent survey of ADLs can be found in <ref type="bibr" target="#b22">[23]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Framework Architecture</head><p>The SLAstic framework aims to equip component-based software systems, as described in the previous Section 2.1, with self-adaptation capabilities in order to improve its resource efficiency. Figure <ref type="figure" target="#fig_2">2</ref> depicts how the concurrently executing SLAstic components for monitoring (SLAstic.MON), reconfiguration (SLAstic.REC), and adaptation control (SLAstic.CONTROL) are integrated and how they interact with the monitored software system. It shows the typical, yet rather general, external control loop for adaptation <ref type="bibr" target="#b8">[9]</ref>.</p><p>The software system is instrumented with monitoring probes which continuously collect measurement data from the running system. The SLAstic.MON component provides the monitoring infrastructure and passes the monitoring data to the SLAstic.CONTROL component. The SLAstic.CONTROL component, detailed later in Figure <ref type="figure" target="#fig_5">4</ref>   is responsible for executing the actual reconfiguration operations. SLAstic employs our Kieker framework for continuous monitoring and online analysis.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3">Reconfiguration Operations</head><p>Although, the SLAstic framework, in principle, supports arbitrary architectural reconfiguration operations, we will restrict us to the following three operations, illustrated in Fig- <ref type="figure" target="#fig_4">ure 3</ref>.</p><p>(1) Node Allocation &amp; Deallocation. A server node is allocated or deallocated, respectively. In case of an allocation, this includes the installation of a component container, but it does not involve any (un)deployment operation of software components. Intuitively, the goal of the allocation is the provision of additional computing resources and the goal of the deallocation is saving operating costs caused by power consumption or usage fees, e.g. in cloud environments.</p><p>(2) Component Migration. A software component is undeployed from one execution context and deployed into another. The goals of this fine-grained application-level operation are both to avoid the allocation of additional server nodes or respectively to allow the deallocation of already allocated nodes by executing adaptation operation (1).  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Required Design Decisions and the Role of Models</head><p>The following three Subsections 3.1-3.3 discuss design decisions and the role of models related to monitoring, analysis, and adaptation, respectively.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Monitoring</head><p>In order to obtain the required information to control adaptation, a system needs to be instrumented with monitoring probes. Monitoring can be performed at the different abstraction levels of a software system, i.e., platform (e.g., CPU utilization), container (e.g., number of available threads in a thread pool), and application (e.g., service response times) level. For example, SLAstic continuously requires performance data, such as CPU utilization, workload (system usage), and service response times.</p><p>Since adaptation concerns a running system in production use, continuous monitoring of the system state is required. We argue that the integration of monitoring should be designed in a systematic way and although mainly becoming relevant not before a system's operation phase, its integration should be considered early in the engineering process. In the following paragraphs we will discuss design decisions regarding continuous monitoring. In <ref type="bibr" target="#b6">[7]</ref>, we present a process model for application-level performance monitoring of information system landscapes. The design decisions should be integrated into such an engineering process.</p><p>Selection of Monitoring Probes A monitoring probe contains the logic which collects and possibly pre-processes the data of interest from within the application. Probes can measure externally visible behavior, e.g. service response times, but also applicationinternal behavior, such as calling dependencies between components.</p><p>SLAstic requires different types of monitoring probes, collecting workload, resource usage, and timing data. An example not focusing on self-adaptation is application level failure diagnosis <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b13">14]</ref> requiring probes for monitoring response times and internal control flow of operation executions.</p><p>In practice, new application-internal monitoring probes are often only introduced in an ad-hoc manner, as a result of a system failure. For example, a probe for monitoring the number of available database connections in a connection pool may have been introduced.</p><p>The selection of the types of monitoring probes must be driven by the goal to be achieved by the gathered monitoring data and depends on the analysis concern.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Number and Position of Monitoring Points</head><p>In addition to the above-mentioned decision of what types of monitoring probes are integrated into the system, important and very difficult decisions regard the number and the exact locations of monitoring points. This decision requires a trade-off between the information quality available to the analysis tasks and the overhead introduced by possibly too fine-grained instrumentation leading to an extensive size of the monitoring log. As the type of monitoring probes to use, does the number and position depend on the goal of monitoring. Additionally, the different usage scenarios of the application must be considered, since an equally distributed coverage of activated monitoring points during operation is desirable.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Intrusiveness of Instrumentation</head><p>A major maintainability aspect of application-level monitoring is how monitoring logic is integrated into the business logic. Maintainability is reduced if the monitoring code is mixed with the source code of the business logic, because this reduces source code readability.</p><p>We regard the use of the AOP (Aspect-Oriented Programming) paradigm <ref type="bibr" target="#b11">[12]</ref> as an extremely suitable means to integrate monitoring probes into an application <ref type="bibr" target="#b7">[8]</ref>. A popular Java-based AOP implementation is AspectJ. Many middleware technologies provide sim-ilar concepts. Examples are the definition of filters for incoming Web requests in the Java Servlet API, the method invocation interceptors in the Spring framework, or handlers for incoming and outgoing SOAP messages in different Web service frameworks. Kieker currently supports AOP-based monitoring probes with AspectJ, Spring, Servlets, and SOAP.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Physical Location of the Monitoring Log</head><p>The monitoring data collected within the monitoring probes is written to the so-called monitoring log. The monitoring log is typically located in the filesystem or in a database. The decision which medium to use depends on the amount of monitoring data generated at runtime, the required timeliness of analysis, and possibly restricted access rights or policies. A filesystem-based monitoring log is fast, since usually no network communication is required. The drawback is that online analysis of the monitoring data is not possible or at least complicated in a distributed setting. A database brings the benefit of integrated and centralized analysis support such as convenient queries but is slower than a file system log due to network latencies and the overhead introduced by the DBMS. Moreover, the monitoring data should not be written to the monitoring log synchronously since this has a considerable impact on the timing behavior of the executing business service.</p><p>Since SLAstic performs the analysis online, it requires fast and continuous access to recent monitoring data. For this reason, the SLAstic.MON and SLAstic.CONTROL components communicates monitoring data via JMS messaging queues. Kieker includes different synchronous and asynchronous monitoring log writers for filesystem, database, and for JMS queues. <ref type="foot" target="#foot_1">2</ref> Customized writers can be integrated into Kieker.</p><p>Monitoring Overhead It is clear that continuous monitoring introduces a certain overhead to the running system. Of course, the overall overhead depends on the number of activated monitoring points and its activation frequency. The overhead for a single activated monitoring point depends on the delays introduced by the resource demand and process synchronizations in the monitoring probes, the monitoring control logic, and particularly I/O access for writing the monitoring data into the monitoring log.</p><p>It is a requirement that the monitoring framework is as efficient as possible and that the overhead increases linearly with the number of activated monitoring points, i.e., each activation of a monitoring point should add the same constant overhead. Of course, this linear scaling is only possible up to a certain point and depends on the average number of activated monitoring, i.e., the granularity of instrumentation.</p><p>Kieker has been used to monitor some production systems in the field. For these systems, no major impact was reported, despite the fact that detailed trace information is monitored for each incoming service request. In benchmarks, we observed an overhead that was in the order of microseconds on modern desktop PCs for each activated instrumentation point. We are currently working on a systematic assessment of the overhead introduced by the Kieker monitoring framework. Model-Driven Instrumentation Model-driven software development (MDSD) <ref type="bibr" target="#b20">[21]</ref> provides a convenient means to lift the level of abstraction for instrumentation from source code to the architectural or even business level. Static or dynamic design models can be annotated with monitoring information whose transformation into the platform-specific instrumentation can be integrated into the MDSD process. Possible annotation variants are tagging, i.e., adding the instrumentation to the functional part of the model, and decoration, i.e., the definition of a dedicated monitoring model referring to the architectural entities captured in external models. Examples for the model-driven instrumentation for monitoring SLAs employing (standardized) meta-models (e.g., <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b17">18]</ref>), come from the domain of component-based <ref type="bibr" target="#b3">[4]</ref> and service-based systems <ref type="bibr" target="#b16">[17]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>SLAstic.MON−REC</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Model</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Analysis</head><p>Analysis or adaptation control involves analyzing and, if required, planning and triggering the execution of system adaptation. Analysis and planning is based on architectural knowledge about the system, the interpretation of monitoring data, and specified adaptation. Analysis and planning may be performed autonomically or on-demand and manually by the system administrator.</p><p>SLAstic analyzes the instrumented and reconfigurable system while it is running, i.e. online. The internal architecture of the SLAstic.CONTROL component with its internal, concurrently executing subcomponents is shown in Figure <ref type="figure" target="#fig_5">4</ref>.</p><p>Runtime Models Design models can be used as or transformed into architectural runtime models constituting an abstract representation of the current state and thus being usable as a basis for analysis. Models more suitable for the performed analysis methods can be automatically derived from the architectural models. For example, for performance prediction, a number of transformations from design models to analysis models, such as variants of queueing networks, were developed <ref type="bibr" target="#b1">[2]</ref>.</p><p>The architectural SLAstic runtime models for the analysis are accessible through the Model Manager component which synchronizes access to these models in order to maintain consistent model state. The Model Updater component updates the runtime models based on the monitoring data received from the SLAstic.MON component. In the SLAstic framework, we are planning to use (extended) model instances of the Palladio metamodel <ref type="bibr" target="#b2">[3]</ref>, a domain-specific ADL designed for performance prediction of componentbased software systems.</p><p>Runtime Analysis Methods A challenging decision is the selection of appropriate runtime analysis methods, which depends on a number of factors, such as the arrival rate of incoming monitoring data, variability in the data, available computational resources, required accuracy of the analysis et cetera. The integration of the adaptation control in a feedback loop with the controlled system, usually requires timely analysis results and adaptation decisions.</p><p>The Performance Predictor in the SLAstic.CONTROL component predicts the performance of the current architectural configuration based on the performance and workload analysis, including a forecast of the near-future workload, performed by the Performance Analyzer and Workload Analyzer components. The Adaptation Analyzer determines an adaptation plan which is communicated to the SLAstic.REC component for execution. The Model Updater updates the runtime model with respect to the new architectural configuration. A number of analysis methods is imaginable in each of the analysis components.</p><p>The SLAstic framework allows to evaluate different analysis methods by its extendable architecture.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Adaptation</head><p>The actual execution of an adaptation plan involves the execution of the included architectural reconfiguration operations. The reconfiguration can be performed offline or at runtime. Offline reconfiguration means, that the running system is shut down, reconfigured, and restarted. When reconfigured at runtime, a system is changed without a restart, and while it is running and serving requests. In practice, adaptation or maintenance, e.g. for system repair, is usually performed offline. Many companies have fixed "maintenance windows", i.e., timeframes during which the provided services are not available and a new version of the software system is deployed. This section focuses on reconfiguration at runtime.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Specification of Reconfiguration Operations</head><p>State charts, or other modeling techniques can be used to specify how reconfiguration operations are executed, e.g., in terms of a reconfiguration protocol. The benefit of having a formal protocol is that its correctness can be verified using formal analysis, and that quantitative analyses regarding the reconfiguration may be performed. This is helpful in determining an adaptation plan using certain reconfiguration properties. For example, regarding the SLAstic Node Allocation operation (see Section 2.3), the average time period between an allocation request for a node and its readiness for operation.</p><p>In this paper, we focus on business-critical software systems. In such systems, service requests are usually executed as transactions. A specification of the SLAstic component migration operation would include a definition of how transactions are handled. For example, when migrating a software component, active transactions using the component to be migrated would be completed and newly arriving transactions would be dispatched to the migrated instances. In <ref type="bibr" target="#b14">[15]</ref>, we described our J2EE-based implementation of a redeployment reconfiguration operation, that is based on a reconfiguration protocol defined using state charts.</p><p>Design of Reconfigurable Software Architectures Reconfiguration operations can be defined based on architectural styles <ref type="bibr" target="#b9">[10]</ref>. This allows to re-use the reconfiguration operations for systems having this architectural style. The SLAstic reconfiguration operations can be applied to systems complying to the architectural assumptions sketched in Section 2.1.</p><p>This reconfiguration capability needs to be integrated into the software system architecture. Likewise to the annotation of design models with information regarding monitoring instrumentation, as described in the previous Section 3.1, reconfiguration-specific annotations can be added to design models. For example, software components could be annotated with the information whether they are designed to be replicated or migrated at runtime using the SLAstic reconfiguration operations.</p><p>Transactional Reconfiguration An adaptation plan should be executed as a transaction, in order to bring the system from one consistent architectural configuration into another <ref type="bibr" target="#b12">[13]</ref>. This means, that an adaptation plan is only committed if all included reconfiguration operations were successfully executed. In SLAstic we will only permit the execution of one adaptation plan at a time.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Conclusions</head><p>Requirements of system operation have a significant impact on the required design decisions in system engineering. In this paper, we discussed the design decisions that are required at design time for an effective operation at runtime of continuously operating software systems, such as business-critical software systems. This discussion is based on our experiences and lessons learned from lab studies and industrial field studies with our monitoring framework Kieker, and illustrated using our self-adaptation approach SLAstic. SLAstic aims to improve the resource efficiency of component-based software systems.</p><p>Adaptation impacts running systems in production use, thus, continuous monitoring of the system state is required if the systems are business-critical. The integration of monitoring should be considered early in the engineering process. Our message is that requirements of system operation should be considered early in the design process, not as an afterthought as often observed in practice. Architectural models should be used both at design and runtime. However, many of the discussed design decisions are not only relevant to online self-adaptation, but also to offline maintenance activities. Concerns of self-adaptation should, similar to monitoring, be considered as cross-cutting concerns.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Illustration of a hierarchical software system architecture</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>of Section 3.2, analyzes the current architectural configuration with respect to the monitoring data and, if required, determines an adaptation plan consisting of a sequence of reconfiguration operations. The adaptation plan is communicated to the SLAstic.REC component which</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: SLAstic self-adaptation system overview</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head></head><label></label><figDesc>component (de-)replication</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: SLAstic reconfiguration operations</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Internal architecture of the SLAstic.CONTROL component</figDesc></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://kieker.sourceforge.net</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">http://java.sun.com/products/jms/</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Problem determination using dependency graphs and run-time behavior models</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">K</forename><surname>Agarwal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Appleby</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Gupta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Neogi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Sailer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">15th IFIP/IEEE International Workshop on Distributed Systems: Operations and Management (DSOM 2004)</title>
				<imprint>
			<date type="published" when="2004">2004</date>
			<biblScope unit="volume">3278</biblScope>
			<biblScope unit="page" from="171" to="182" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Model-based performance prediction in software development: A survey</title>
		<author>
			<persName><forename type="first">S</forename><surname>Balsamo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Di</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Marco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Inverardi</surname></persName>
		</author>
		<author>
			<persName><surname>Simeoni</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">30</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="295" to="310" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">The Palladio component model for model-driven performance prediction</title>
		<author>
			<persName><forename type="first">S</forename><surname>Becker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Koziolek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Reussner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">82</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="3" to="22" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">QoS-aware model driven architecture through the UML and CIM</title>
		<author>
			<persName><forename type="first">K</forename><surname>Chan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Poernomo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Information Systems Frontiers</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="issue">2-3</biblScope>
			<biblScope unit="page" from="209" to="224" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Software Engineering for Self-Adaptive Systems</title>
		<author>
			<persName><forename type="first">B</forename><surname>Cheng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>De Lemos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Giese</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Inverardi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Magee</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">LNCS</title>
		<imprint>
			<biblScope unit="volume">5525</biblScope>
			<date type="published" when="2009">2009</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<ptr target="http://www.dmtf.org/standards/cim/" />
		<title level="m">Common Information Model (CIM) standard</title>
				<imprint>
			<date type="published" when="2009-05">May 2009</date>
		</imprint>
	</monogr>
	<note>Distributed Management Task Force</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Ein Vorgehensmodell für Performance-Monitoring von Informationssystemlandschaften</title>
		<author>
			<persName><forename type="first">T</forename><surname>Focke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Rohr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J.-G</forename><surname>Schute</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">EMISA Forum</title>
		<imprint>
			<biblScope unit="volume">27</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="26" to="31" />
			<date type="published" when="2007-01">Jan. 2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Instrumentierung zum Monitoring mittels Aspekt-orientierter Programmierung</title>
		<author>
			<persName><forename type="first">T</forename><surname>Focke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Rohr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J.-G</forename><surname>Schute</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Tagungsband Software Engineering 2007</title>
				<imprint>
			<publisher>Bonner Köllen Verlag</publisher>
			<date type="published" when="2007-03">Mar. 2007</date>
			<biblScope unit="volume">106</biblScope>
			<biblScope unit="page" from="55" to="59" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Rainbow: Architecturebased self-adaptation with reusable infrastructure</title>
		<author>
			<persName><forename type="first">D</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S.-W</forename><surname>Cheng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A.-C</forename><surname>Huang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Schmerl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Steenkiste</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer</title>
		<imprint>
			<biblScope unit="volume">37</biblScope>
			<biblScope unit="issue">10</biblScope>
			<biblScope unit="page" from="46" to="54" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Increasing system dependability through architecture-based self-repair</title>
		<author>
			<persName><forename type="first">D</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S.-W</forename><surname>Cheng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">R</forename><surname>Schmerl</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Architecting Dependable Systems</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="volume">2677</biblScope>
			<biblScope unit="page" from="61" to="89" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">The vision of autonomic computing</title>
		<author>
			<persName><forename type="first">J</forename><surname>Kephart</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Chess</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">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="b11">
	<analytic>
		<title level="a" type="main">Aspect-oriented programming</title>
		<author>
			<persName><forename type="first">G</forename><surname>Kiczales</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Lamping</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Menhdhekar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Maeda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Lopes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J.-M</forename><surname>Loingtier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Irwin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2007 European Conference on Object-Oriented Programming (ECOOP &apos;97)</title>
				<meeting>the 2007 European Conference on Object-Oriented Programming (ECOOP &apos;97)</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1997">1997</date>
			<biblScope unit="volume">1241</biblScope>
			<biblScope unit="page" from="220" to="242" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">The evolving philosophers problem: Dynamic change management</title>
		<author>
			<persName><forename type="first">J</forename><surname>Kramer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Magee</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">16</biblScope>
			<biblScope unit="issue">11</biblScope>
			<biblScope unit="page" from="1293" to="1306" />
			<date type="published" when="1990">1990</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Automatic failure diagnosis in distributed large-scale software systems based on timing behavior anomaly correlation</title>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">S</forename><surname>Marwede</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Rohr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Van Hoorn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 13th European Conference on Software Maintenance and Reengineering (CSMR 2009)</title>
				<meeting>the 13th European Conference on Software Maintenance and Reengineering (CSMR 2009)</meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2009-03">Mar. 2009</date>
			<biblScope unit="page" from="47" to="57" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Runtime reconfiguration of J2EE applications</title>
		<author>
			<persName><forename type="first">J</forename><surname>Matevska-Meyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Olliges</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the French Conference on Software Deployment and (Re) Configuration (DECOR&apos;04)</title>
				<meeting>the French Conference on Software Deployment and (Re) Configuration (DECOR&apos;04)<address><addrLine>, France</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2004-10">Oct. 2004</date>
			<biblScope unit="page" from="77" to="84" />
		</imprint>
		<respStmt>
			<orgName>University of Grenoble</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">A classification and comparison framework for software architecture description languages</title>
		<author>
			<persName><forename type="first">N</forename><surname>Medvidovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">N</forename><surname>Taylor</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="70" to="93" />
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Model-driven instrumentation for monitoring the quality of web service compositions</title>
		<author>
			<persName><forename type="first">C</forename><surname>Momm</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Detsch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Abeck</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2008 12th Enterprise Distributed Object Computing Conference Workshops (EDOCW &apos;08)</title>
				<meeting>the 2008 12th Enterprise Distributed Object Computing Conference Workshops (EDOCW &apos;08)<address><addrLine>Washington, DC, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="58" to="67" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<author>
			<persName><surname>Omg</surname></persName>
		</author>
		<ptr target="http://www.omg.org/spec/QFTP/" />
		<title level="m">UML Profile for Modeling Quality of Service and Fault Tolerance Characteristics and Mechanisms</title>
				<imprint>
			<date type="published" when="2008-04">Apr. 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">A classification scheme for self-adaptation research</title>
		<author>
			<persName><forename type="first">M</forename><surname>Rohr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Giesecke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Hiel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W.-J</forename><surname>Van Den</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Heuvel</surname></persName>
		</author>
		<author>
			<persName><surname>Weigand</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the International Conference on Self-Organization and Autonomous Systems in Computing and Communications</title>
				<meeting>the International Conference on Self-Organization and Autonomous Systems in Computing and Communications<address><addrLine>SOAS</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2006-09">2006. Sept. 2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Kieker: Continuous monitoring and on demand visualization of Java software behavior</title>
		<author>
			<persName><forename type="first">M</forename><surname>Rohr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Van Hoorn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Matevska</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Sommer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Stöver</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Giesecke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the IASTED International Conference on Software Engineering 2008</title>
				<meeting>the IASTED International Conference on Software Engineering 2008<address><addrLine>SE</addrLine></address></meeting>
		<imprint>
			<publisher>ACTA Press</publisher>
			<date type="published" when="2008-02">2008. Feb. 2008</date>
			<biblScope unit="page" from="80" to="85" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m" type="main">Model-Driven Software Development -Technology</title>
		<author>
			<persName><forename type="first">T</forename><surname>Stahl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Völter</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2006">2006</date>
			<publisher>Wiley &amp; Sons</publisher>
		</imprint>
		<respStmt>
			<orgName>Engineering</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<title level="m" type="main">Component Software: Beyond Object-Oriented Programming</title>
		<author>
			<persName><forename type="first">C</forename><surname>Szyperski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Gruntz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Murer</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002">2002</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
	<note>2. edition</note>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<title level="m" type="main">Software Architecture: Foundations, Theory and Practice</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">N</forename><surname>Taylor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Medvidovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">M</forename><surname>Dashofy</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2009">2009</date>
			<publisher>John Wiley &amp; Sons, Inc</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">An adaptation framework enabling resource-efficient operation of software systems</title>
		<author>
			<persName><forename type="first">A</forename><surname>Van Hoorn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Rohr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Gul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2nd Warm-Up Workshop for ACM/IEEE ICSE 2010 (WUP &apos;09)</title>
				<editor>
			<persName><forename type="first">N</forename><surname>Medvidovic</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">T</forename><surname>Tamai</surname></persName>
		</editor>
		<meeting>the 2nd Warm-Up Workshop for ACM/IEEE ICSE 2010 (WUP &apos;09)</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2009-04">Apr. 2009</date>
			<biblScope unit="page" from="41" to="44" />
		</imprint>
	</monogr>
</biblStruct>

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