300 likes | 318 Views
Explore software adaptation strategies, technologies, and challenges. Learn about separation of concerns, computational reflection, and component-based design for creating adaptive systems.
E N D
Composing Adaptive Software AuthorsPhilip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. ChengPresented by Ana Rodriguez June 21, 2006
Overview • Introduction • Enabling Technologies • Compositional Adaptation Taxonomy • Key Challenges • Conclusion Composing Adaptive Software
Introduction • Software adaptation – software that can adapt dynamically to changes in its environment and non-functional requirements. • Increased interest in adaptive systems due to the following: • Ubiquitous Computing – dissolving traditional boundaries for how, when, and where humans and computers interact • Growing demand for autonomic computing Composing Adaptive Software
Introduction • Two approaches for implementing dynamic adaptation in software: • Parameter Adaptation – modifies program variables that determine behavior • Limitation: Cannot adopt new strategies • Compositional Adaptation – allows software to modify its structure and behavior dynamically in response to changes in its executing environment • Enables dynamic recomposition of software during execution Composing Adaptive Software
Enabling Technologies Main Supporting Technologies: Separation of concerns, computational reflection, component-based design Composing Adaptive Software
Separation of Concerns • Business Logic • Crosscutting Concerns • QoS, energy consumption, fault tolerance, security • Most widely used approach is Aspect-Oriented Programming (AOP) • Provides abstraction techniques, language constructs • Disentangles crosscutting concerns Composing Adaptive Software
Separation of Concerns • Development Time • Pointcuts are identified • Compile Time • Weave different aspects of the program together • Run Time • Program with new behavior Composing Adaptive Software
Computational Reflection • A program’s ability to reason about, and possibly alter, its own behavior • Comprised of two activities: • Introspection – observe its own behavior • Intercession – act on these observations and modify its own behavior Composing Adaptive Software
Computational Reflection • Metaobject Protocol (MOP) – introspectation and intercession base-level objects • Structural Reflection – class hierarchy, object interconnection, and data types • Behavioral Reflection – computational semantics Composing Adaptive Software
Component-based Design • Software Components – software units that third parties can independently develop, deploy, and compose • Two types of composition: • Static Composition – combine several components at compile time • Dynamic Composition – add, remove, reconfigure components at runtime • Promotes software reuse Composing Adaptive Software
Component-based Design Composing Adaptive Software
Middleware • Middleware – layers of services separating applications from operating systems and network protocols Composing Adaptive Software
Middleware Schmidt’s Middleware Layers • Host-infrastructure Middleware • High-level API • Distribution Middleware • High-level programming abstraction • Common Middleware Services • Fault tolerance, security, persistence • Domain-specific Middleware Services • Matches class of applications Composing Adaptive Software
Middleware and Adaptation CORBA call sequence • Based on an object-oriented programming paradigm • Many approaches work by intercepting and modifying messages Composing Adaptive Software
Compositional Adaptation Taxonomy • How to Compose • When to Compose • Where to Compose Composing Adaptive Software
How to Compose Composing Adaptive Software
How to Compose • Composer - entity that uses techniques from Table 2 to adapt an application • Who can be the composer? • Human • Piece of software • Transparency – refers to whether an application or system is aware of the “infrastructure” needed for recomposition Composing Adaptive Software
When to Compose • At development, compile, or load time (Static Composition) • Pros: Easier to ensure no anomalous behavior • Cons: Limited Dynamism • At runtime (Dynamic Composition) • Pros: Very powerful • Cons: Difficult to use traditional testing and formal verification techniques Composing Adaptive Software
When to Compose Use of composition time as the classification metric for adaptive applications Composing Adaptive Software
Where to Compose • Middleware Layers • Host-infrastructure layer • Adaptable communication services • e.g. ACE • Virtual Machine • e.g. JVM, CLR • Distribution, Common Services, Domain-specific Services • Portability across virtual machines • Pros: Support Transparent Adaptation • Cons: Transparent Adaptation is middleware platform dependent Composing Adaptive Software
Where to Compose • Application Code • Program code using language that directly supports dynamic recomposition • e.g. CLOS, Python • Weave adaptive code into functional code • e.g. AspectJ, Composition Filters Composing Adaptive Software
Key Challenges • Assurance • Certify all components for correctness with respect to their specifications • Ensure system still executes in an safe manner during the adaptation process • Security • Ensure integrity of data and conceal adaptive actions • Interoperability • Coordinate adaptation across system layers and platforms • Decision Making • Decide how, when, and where to adapt the system Composing Adaptive Software
Conclusion • Compositional adaptation is powerful • Lack of supporting development environments • Without tools to automatically generate and verify code it would impact system integrity and security Composing Adaptive Software
References Philip K. McKinley, S. M. Sadjadi, Eric P. Kasten, and Betty H. C. Cheng. Composing adaptive software. IEEE Computer, pages 56-64, July 2004. Philip K. McKinley, S. Masoud Sadjadi, Eric P. Kasten, and Betty H. C. Cheng. A taxonomy of compositional adaptation. Technical Report MSU-CSE-04-17, Department of Computer Science, Michigan State University, East Lansing, Michigan, May 2004. Composing Adaptive Software
Question 1 How is inserting the code for new behavior different from adding a plugin? Composing Adaptive Software
Question 2 In order to achieve the separation of concerns, how do you decide which requirements are functional or non functional? Composing Adaptive Software
Question 3 When third party component is used to recompose (and re-compile) a piece of software, is that any different from creating a new piece of software with reusable components? Composing Adaptive Software
Question 4 The paper states that "reflection enables a system to reveal selected details of its implementation without compromising portability", can you explain? Composing Adaptive Software
Question 5 Doesn't decision making in adaptive software have to be “hardwired” into the system at some point? If so, how can the software be said to be dynamic? Composing Adaptive Software