Research Areas

Automated Software Engineering

Investigating and developing automated techniques and tools to enhance support for human activities in software development, from analysis and design, to implementation, testing, and maintenance.

Requirements Engineering

Exploring new ways of bridging the needs of users, customers, and other stakeholders of software systems, to the capabilities and opportunities afforded by software-intensive technologies.

Engineering Adaptive
Software Systems

Studying how to engineer software to adapt and evolve over its lifetime to ensure the effective operation of the ubiquitous, cyber-physical-social systems that have become an integral part of our world.

Empirical Studies of Software Development

Engaging with practitioner communities and software organisations through empirical studies of actual practice and products in order to derive theory and inform practice at the leading-edge of software development.

User eXperience Design

Investigating and creating new frameworks, principles and concepts for mobile, tangible and ubiquitous computing that enhance users' experience of cyber-physical-social systems.

Application Domains

Aeronautics & Aerospace

Design techniques for evolution, testing, verification, and re-configuration of evolving software.

Health & Wellbeing

Wearable and Internet of Things for self-quantification to improve health and wellbeing.

Policing & Forensics

Evidence handling methods for forensic evidence from the social media.

Security & Privacy

Adaptive software capabilities to deliver secure software and support users in managing their privacy.


Adaptive technologies to support energy, transport, and food security.