Concepts, Methods and Tools for Architecture- and Quality-centric Evolution of Long-living Software Systems (ADVERT)
Nearly all aspects of our live are affected by long-living software systems. Software is aging when necessary changes are not performed to meet the requirements in its changing environment, or when the software is changed in a problematic way. These processes are part of the software evolution. The typical approach to meet evolution in current software projects is ad-hoc change of the implementation, often ignoring other development artifacts (i.e. requirement documents and design models), and without evaluating evolution alternatives. Software evolution can become problematic, because aging software is hard to maintain and it does not meet increasing external quality requirements, such as improved performance and increased reliability. For increasing the maintainability of software, the development artifacts need to be consistent with each other and up-to-date. To meet increasing external quality requirements and to account for changes in the environment, the system has to be changed regularly. The goal of this project is to develop concepts, methods, and tools for keeping the consistency between the development artifacts, and for systematically identifying and performing the necessary changes on a system to meet the quality requirements in a changing environment. With this means, the manageability of software evolution will be enhanced. Thus this work addresses the often negative interference between external (performance, reliability) and internal (maintainability) quality requirements. Our methods and tools will be evaluated using case studies from the information systems domain.
Software architecture, Software maintenance, Software evolution, Embedded architecture, Design decisions, Extra-functional qualities