Software evolution refers to changes made to a software system after its deployment. These changes may be caused by changing requirements, domain assumptions, or computing infrastructure, and may affect the system’s implementation, architecture and/or requirements. Evolution may be automatic (aka self-adaptation), or manual, or something in-between. This project aims to develop principles that underlie, and concepts, tools and techniques that support evolution. The project will focus on software-intensive systems. Such systems consist of software, human and organizational elements that work together to fulfill organizational and human objectives. Our proposed research is founded on ideas and research results from Requirements Engineering (RE). Evolution is to be supported by design-time models that are made available at run-time. These models capture system requirements and domain assumptions, augmented with design and implementation details. When evolution is automatic, supported by monitor-diagnose-compensate-execute feedback loops, these models determine (i) what is to be monitored, (ii) whether the system is operating according to its intended purpose, (iii) what are possible compensations for deviations from intended behaviour, (iv) how to evolve the system. When evolution is manual, these models support evolution activities, carried out by humans, by offering a comprehensive picture of the requirements and assumptions under which the system operates, along with traceability links between elements of these models and code. This means that design-time models need to capture stakeholder intentions and commitments, social interactions, business processes, and organizational goals that ultimately determine system requirements. Expected results from the project include the development of novel concepts, tools and techniques for designing evolution-enabled software-intensive systems.
Call for proposal
See other projects for this call