Engineering and Continuously Operating Self-Adaptive Software Systems: Required Design Decisions

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. 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 self-adaptation approach SLAstic to describe how we address the discussed issues. SLAstic aims to improve a software system's resource efficiency by performing architecture-based runtime reconfigurations that adapt the system capacity to varying workloads, for instance to decrease the operating costs.

[1]  Wilhelm Hasselbring,et al.  Kieker: continuous monitoring and on demand visualization of Java software behavior , 2008, ICSE 2008.

[2]  Wilhelm Hasselbring,et al.  An adaptation framework enabling resource-efficient operation of software systems , 2009 .

[3]  Wilhelm Hasselbring,et al.  Instrumentierung zum Monitoring mittels Aspekt-orientierter Programmierung , 2007, Software Engineering.

[4]  Wilhelm Hasselbring,et al.  Automatic Failure Diagnosis Support in Distributed Large-Scale Software Systems Based on Timing Behavior Anomaly Correlation , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[5]  Iman Poernomo,et al.  QoS-Aware Model Driven Architecture through the UML and CIM , 2006, 2006 10th IEEE International Enterprise Distributed Object Computing Conference (EDOC'06).

[6]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[7]  Manish Gupta,et al.  Problem Determination Using Dependency Graphs and Run-Time Behavior Models , 2004, DSOM.

[8]  David Garlan,et al.  Rainbow: architecture-based self-adaptation with reusable infrastructure , 2004 .

[9]  Bradley R. Schmerl,et al.  Increasing System Dependability through Architecture-Based Self-Repair , 2002, WADS.

[10]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[11]  Paola Inverardi,et al.  Model-based performance prediction in software development: a survey , 2004, IEEE Transactions on Software Engineering.

[12]  Jeff Magee,et al.  The Evolving Philosophers Problem: Dynamic Change Management , 1990, IEEE Trans. Software Eng..

[13]  Richard N. Taylor,et al.  Software architecture: foundations, theory, and practice , 2009, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[14]  Steffen Becker,et al.  The Palladio component model for model-driven performance prediction , 2009, J. Syst. Softw..

[15]  Bradley R. Schmerl,et al.  Rainbow: Architecture-Based Self-Adaptation with Reusable Infrastructure , 2004, Computer.

[16]  Sebastian Abeck,et al.  ModelDriven Instrumentation for Monitoring the Quality of Web Service Compositions , 2008, 2008 12th Enterprise Distributed Object Computing Conference Workshops.

[17]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[18]  Markus Völter,et al.  Model-Driven Software Development: Technology, Engineering, Management , 2006 .

[19]  Wilhelm Hasselbring,et al.  Runtime Reconfiguration of J2EE Applications , 2004, ArXiv.

[20]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.

[21]  Wilhelm Hasselbring,et al.  A Classification Scheme for Self-adaptation Research , 2006 .

[22]  하수철,et al.  [서평]「Component Software」 - Beyond Object-Oriented Programming - , 2000 .

[23]  J. Aagedal,et al.  UML Pro?le for Modeling Quality of Service and Fault Tolerance Characteristics and Mechanisms , 2004 .

[24]  Wilhelm Hasselbring,et al.  Ein Vorgehensmodell für Performance-Monitoring von Informationssystemlandschaften , 2006, EAI.