Our aim is to understand and describe how software systems can monitor their operating environment to dynamically adapt their behavior, as well as the ways in which software evolves over time.
We are concerned with how software can be engineered to adapt and evolve over their lifetime to ensure the effective operation of the ubiquitous computing systems that have become an integral part of our world. This includes the adaptation of service-based systems.
Through this research, we have developed new frameworks, tools and processes for engineering adaptive software systems, together with guidelines and techniques to facilitate further software maintenance.
- Our Adaptive Security and Privacy programme delivers adaptive software capabilities for supporting users in managing their privacy requirements, and secure software that underpin those requirements.
- Tool-supported approaches to facilitate changes to existing applications, such as intentional views to detect design violations when changing the source code, and coordination contracts to adapt at run-time the interaction among objects to new business rules.
- Techniques for eliciting and modelling information security requirements to design and implementation, to engineer systems that can provide adaptive information security capabilities.
- Technique to support runtime and proactive adaptation of service compositions . This enables replacement of a service operation in a composition by another service operation or a group of dynamically composed service operations.
- Self-adaptation through incremental generative model transformations at runtime (ICSE 2014)
- Engineering Adaptive Model-Driven User Interfaces (TSE Journal, 2016)