250 likes | 441 Views
Variability in Self-Adaptive Systems. Variability: the heart and soul of Adaptation. What may be variable? How to specify variability ? When to adapt ? How to adapt (=bind variability )?. Variability - when. Variability - need to be planned at design time – may be bound at:
E N D
Variability: the heart and soul of Adaptation • Whatmay be variable? • How to specifyvariability? • When to adapt? • How to adapt (=bind variability)?
Variability - when • Variability - need to be planned at design time – may be bound at: • Design time • Production time (compile and load) • Initialization time • Run time • Self-configuring: variability + initialization mechanisms • Self-adaptive: variability + initialization + run time mechanisms (responding to changes) • Dynamic component systems: dynamic life cycle support for components that self-configure and self-adapt: • install, configure, start, run and adapt, stop, uninstall.
Case 1: call handling • Key principle: components, dynamic linking and standard interfaces • Vast variability in call structures, networks, devices, protocols, services: anticipated, but not enumerated • Adaptation to the requirements and context of each call • Mobile systems also adapt to moving users: this imply registries and dynamic routing • The global network is a dynamic component system! Each node normally not.
Dynamic linking for compositional adaptation Advantages: • Enables huge variability in component and role combinations: k+l+m components/roles gives k*l*m combinations • Is relatively simple • Can be performed as integral part of services Challenges: • Roles are not independent and cannot be arbitrarily combined! • More run-time combinations may occur than explicitly analyzed at design time! • Ensuring interoperability while allowing flexibility: interfaces.
Support needed • Addressing and routing mechanisms • Name server, registry. • Dynamic linking and session initiation • Sensing context changes
Case 2: Network access in mobile phone • Monitoring network availablility • Dynamic linking to available network(s) based on policy and preferences
Case 3: Fault tolerance • Detect and diagnose errors • Reconfigure to mask errors • Hot or cold standby • Load shared or synchronized
Case 4: Load adaptation • Monitor load situation • Adapt scheduling • Adapt queue sizes • Adapt timers • Drop fresh traffic • Distribute load
Server Pull {when ...} UTPA {when ...} User Pull {when ...} UoPA {when ...} Compositional adaptation by replacement and insertion usingpolicy rulesevaluated byagentsuponrole requests {when threat level = 0 or location = secure} <<replaces>> or {when threat level > 0 or location not secure} or
Controlled locally by actors The actors use policies to decide which role to offer when a role is requested (part of the role binding)
More cases • Finding nearby printers – how? • Plugging in USB devices – how? • Loading applications/components – how to bind to context?
find-bind: Static and dynamic linking • Find instances (of predefined types) : • Identified instances or instance sets; e.g. Doctors, subscribers • Identified functionalities/services; e.g. Printers; Map servers • Bind by requesting to an allocator or manager • Release by notifying the allocator or manager. • Requires: • Registry to find (map from names to instance sets) • Managers/allocators to bind-release (session initiation) Doctors Patients Registry Patology: ref Hart: ref .... DoctorAgent[m] PatientAgent[n] Object pnp here
Now let us consider a HNS system • Fire and burglar alarms • Climate control: heating and cooling • Power control: minimize power costs • Smart metering (AMS) • Access control • Assisted living (well-fare technology) • Entertainment • Cooking • Lighting • Etc.
We want as much self adaptation as possible – how? • Every device is networked! • We want to plug in and out devices: heaters, alarm sensors, panels, power meters, appliances, weather stations, ... • We want to connect devices with service providing applications • We want to (buy and) install applications • We want to access external resources and to have remote access
Variability dimensions Compatibility is required in both dimensions! • to communicating objects - horizontal • to implementation capabilities - vertical Server App Protocol Term App Protocol Server App Protocol Protocol Term App RTS RTS RTS RTS Middleware Middleware Middleware Middleware Principles: component based design; encapsulation; loose coupling; separation of concerns; layering; metadata
Variability: some approaches • Dynamic component systems • Dynamic linking • Software product line approaches • Variability languages • Feature selection - feature diagrams • Versioning and building • Parameterization • Aspects, crosscutting concerns and weaving • Structural alternatives • Behavioral alternatives • Transformations • Goal models, GRL • Policies
Variability: different levels of abstraction S1 S2 S1.1 S2.1 Services Services: • Types of services and features • Service compositions Design: • Types of design components and data, • Instance structures, multiplicities and data values • Realization: • Types of HW/SW components and platforms • QoS mechanisms • … S3 S3.1 S2.2 Role binding Designs Deployment binding Realization, Execution Self* mechanisms – what and how?
Our focus • Initialization and runtime adaptation mechanisms • How to specify in service models and design models • How to realize
Self-adaptive By self adaptive wemean systems and componentsthatconfigurethemselves and dynamicallyadapt to changingenvironmentswith minimal human participation. Differentapproaches: • Pre-structured systems: parameter adaptation and some (limited) compositionaladaptation • Dynamiccomponent systems: compositionaladaptation • Autonomic systems: self* Environment System