+ All Categories
Home > Documents > An Architecture for Constructing Self-Evolving Software Systems By Nelson Azadian.

An Architecture for Constructing Self-Evolving Software Systems By Nelson Azadian.

Date post: 21-Dec-2015
Category:
View: 213 times
Download: 0 times
Share this document with a friend
Popular Tags:
14
An Architecture for Constructing Self- Evolving Software Systems By Nelson Azadian
Transcript

An Architecture for Constructing Self-Evolving Software Systems

By Nelson Azadian

Consider the Following

• An enemy target fires an unidentified projectile at a military installation.

• The military installation is guarded by a missile defense system which has only seconds to respond.

• What should the system do?

Possible Courses of Action

• One possible course of action entails the missile defense system firing a barrage of missiles in hopes of intercepting the enemy projectile.

• Yet another course of action entails the missile defense system performing a quick analysis of the projectile, whereby tailoring itself as well as its response to the projectile based off of its pre-analysis.

Self Evolving Software Systems

• The second course of action in the previous slide was an example of a Self Evolving Software System.

• Systems of a self evolving nature automatically evolve in order to better handle ever changing external or internal circumstances.

By Evolve We Mean…

• The replacement or removal of software modules with alternate software modules.

• The removal or addition of system constraints.

• In other words, by evolution we mean changes to the system at an architectural level.

Self Evolving Software Systems

1. Domain Repository

2. Architectural Model

3. Evolution Engine

4. Architectural Abstraction Layer

Domain Repository

• The Domain Repository stores the alternate solutions (software modules) to a given application domain.

• The Domain Repository also stores information about the structure, behavior and design tradeoffs (performance, requirements, limitations, etc) of these alternate solutions.

Architectural Model

• The Architecture of the system must lend itself to a reflection of the systems current goals, structure, and design rationale at any given time.

• The Evolution Engine uses this information in order to understand the current goals of the system and under what assumptions the system believes it can achieve them.

Evolution Engine

• The Evolution Engine sits alongside the system monitoring whether the system is meeting its goals.

• The Evolution Engine detects any exceptional conditions, diagnoses the underlying causes to these exceptions and enacts an evolution plan (a change to the system) in order to resolve them.

Architectural Abstraction Layer

• The Architectural Abstraction Layer allows the Evolution Engine to modify the architecture of a system at high level.

• In other words, the Architectural Abstraction Layer provides the Evolution Engine with an interface in which to modify the systems architecture.

Uses

• Self Evolving Software Systems are primarily used in highly volatile time critical domains.

• Examples include:– Missile Defense Systems– Reactor Control Systems– Flight Control Systems

Current Tools

• xADL 2.0 which represents system architectures in an XML format.

• ArchStudio 4 which is used to help manage architectural repairs and changes at an architectural level.

References

• An Architecture for Constructing Self-Evolving Software Systems, Dellarocas Chrysanthos, Klein Mark, Shrobe Howard.

• A Constraint Architectural Description Approach to Self-Organising Component-Based Software Systems, Waewsawangwong Pakorn.

• Towards Architecture-Based Self Healing Systems, Dashofy Eric, Hoek Andre van der, Taylor Richard.

• Self-Managed Systems: an Architectural Challenge, Kramer Jeff, Magee Jeff.

Questions


Recommended