Software Adaptation: A Conscious Design for Oblivious Programmers
Agility, mobility, evolvability, and reconfigureability are the main characteristics for the next generation software systems. Software adaptation can be seen as the ability to reconfigure the software system by the software engineer, hence the term software adaptability, or the ability of the softw...
Gespeichert in:
Hauptverfasser: | , , , , , |
---|---|
Format: | Tagungsbericht |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | Agility, mobility, evolvability, and reconfigureability are the main characteristics for the next generation software systems. Software adaptation can be seen as the ability to reconfigure the software system by the software engineer, hence the term software adaptability, or the ability of the software to reconfigure itself, hence the term software adaptiveness. Software adaptability and adaptiveness are complementary for building conscious design that can accommodate cohesive components built by programmers that are oblivious to the nature of future changes. The intent of software adaptability is to evolve and reuse the software components in future contexts, whereas the intent of software adaptiveness is to enable the software system to alter its behavior at runtime in order to avoid performance degradation and resource contention. In this paper we present a unified approach that deploys aspect-oriented technology in order to engineer adaptability into the software system and data-mining techniques in order to engineer adaptiveness into the software system. The approach utilizes aspect-orientation and deploys intelligent agents in the design and development of software systems. The intelligent agents in our approach utilize the Q-learning technique in order to discover patterns of performance degradation and reliability violation. The paper articulates the benefits of aspect-oriented methodology and data-mining techniques in building software systems that can cope gracefully with the unanticipated environment changes and requirement changes. |
---|---|
ISSN: | 1095-323X 2996-2358 |
DOI: | 10.1109/AERO.2007.352967 |