{"title":"Adapting our view of software adaptation: an architectural perspective (keynote)","authors":"N. Medvidović","doi":"10.1145/2593929.2593949","DOIUrl":null,"url":null,"abstract":"Engineers frequently neglect to carefully consider the impact of adaptation on a software system. As a result, the software system's architectural design sooner, rather than later, begins to deviate from the original designers' intent and to decay through unplanned introduction of new and/or invalidation of existing design decisions. For systems that are intended to be (self-)adaptive, this problem can be even more pronounced. A solution that was proposed over a decade ago was to keep the architectures of (self-)adaptive systems in sync with their implementations through carefully engineered implementation frameworks, and to allow implementation-level adaptations only via carefully controlled architecture-level operations. However, many approaches to (self-)adaptive software do not explicitly consider the system's architecture as the starting point for adaptation and, more generally, developers change systems in seemingly arbitrary ways all the time. This begs the question: What is the impact of system changes on a system's architecture in a general case? This keynote talk presents the results of an on-going study that has tried to shed light on this question. To date, the study has involved around 30 open-source systems and, in several cases, large numbers of versions of a given system. The keynote discusses and illustrates the challenges in extracting the architecture of a system from its implementation artifacts, the concrete problems posed by architectural decay, the difficulties of tracking the architectural impact of implementation-level changes, and the occasional arbitrariness with which the adaptation of real, widely-used software systems is approached. The keynote then identifies several promising research opportunities that present themselves for dealing with these problems in (self-)adaptive systems.","PeriodicalId":168314,"journal":{"name":"International Symposium on Software Engineering for Adaptive and Self-Managing Systems","volume":"10 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2014-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"International Symposium on Software Engineering for Adaptive and Self-Managing Systems","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2593929.2593949","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1
Abstract
Engineers frequently neglect to carefully consider the impact of adaptation on a software system. As a result, the software system's architectural design sooner, rather than later, begins to deviate from the original designers' intent and to decay through unplanned introduction of new and/or invalidation of existing design decisions. For systems that are intended to be (self-)adaptive, this problem can be even more pronounced. A solution that was proposed over a decade ago was to keep the architectures of (self-)adaptive systems in sync with their implementations through carefully engineered implementation frameworks, and to allow implementation-level adaptations only via carefully controlled architecture-level operations. However, many approaches to (self-)adaptive software do not explicitly consider the system's architecture as the starting point for adaptation and, more generally, developers change systems in seemingly arbitrary ways all the time. This begs the question: What is the impact of system changes on a system's architecture in a general case? This keynote talk presents the results of an on-going study that has tried to shed light on this question. To date, the study has involved around 30 open-source systems and, in several cases, large numbers of versions of a given system. The keynote discusses and illustrates the challenges in extracting the architecture of a system from its implementation artifacts, the concrete problems posed by architectural decay, the difficulties of tracking the architectural impact of implementation-level changes, and the occasional arbitrariness with which the adaptation of real, widely-used software systems is approached. The keynote then identifies several promising research opportunities that present themselves for dealing with these problems in (self-)adaptive systems.