Software Engineering and Design Group (SEAD)

Members of the Software Engineering and Design Group investigate and develop systematic approaches for engineering secure, adaptive and usable software systems in a complex and changing world. The team research techniques in several software engineering areas, motivated by and evaluated within various application domains. The software engineering areas include automated software engineering, requirements engineering, engineering of adaptive software systems, empirical studies of software development, and user experience design. The work is evaluated in various application domains such as aeronautics and aerospace, health and wellbeing, policing and forensics, security and privacy, and sustainability.

The group investigates and develops automated techniques and tools to better support human activities in software development, from analysis and design, to implementation, testing, and maintenance. A number of tools have been developed for architecture analysis repair, design analysis and composition, security analysis, code restructuring, program comprehension, and consistency management of software artefacts.

Research in requirements engineering focuses on problem-oriented approaches to the representation and analysis of requirements, and formal analysis techniques for reasoning about partial, ambiguous, and inconsistent descriptions, including natural language requirements, formal specifications, and security policies. The work in the group includes both analytic and empirical approaches, both formal and descriptive representation, and both theoretical and practice-centred perspectives.
The team develops work that aims 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. The work is 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.
Research in Empirical Software Engineering that is developed by the group uses a range of qualitative and quantitative approaches, from in situ observation of professional practice to controlled studies, from data extraction from software repositories and its visualisation to modelling and simulation. The emphasis is on practice in naturalistic settings, naturally-occurring artefacts, and reports from practitioners.

User interaction with cyber-physical systems presents challenges of complexity and scale together with opportunities for exploiting the feature rich affordances of the environment, such as wearable haptic devices together with voice and gesture interactions, as well as ambient interfaces. Managing these challenges and opportunities require new approaches to engineering user experience design into cyber-physical systems that are adaptive and usable.