Software Engineering and Design

Our research interests in software engineering are broad, covering both early and late development activities, and drawing upon a wide range of multi-disciplinary techniques and tools, to better engineer software-intensive dependable systems.

We are concerned with the construction of software and its behaviour. We interpret software engineering broadly to include discovery, articulation, and reasoning about problems that are amenable to software solutions. Therefore, we investigate processes, people, and products in software engineering. 


  • Automated Software EngineeringWe are investigating and developing automated techniques and tools to better support human activities in software development, from analysis and design, to implementation, testing, and maintenance
  • Empirical Studies of Software DevelopmentOur aim is to engage with practitioner communities and software organisations through empirical studies of actual practice and products in order to derive theory and inform practice
  • Requirements EngineeringRequirements engineering (RE) is concerned with identifying the purpose of a software system, and the contexts in which it will be used
  • Security and PrivacyWe look at security and privacy and their relationship to the system development process. Our work informs and is driven by the importance of the early understanding of the needs of security and privacy upon a system
  • Software and Engineering DesignWe focus on the design of software-intensive systems within the wider engineering process. We look across the phases of design, from problem analysis and modelling, through design and development
  • Software EvolutionWe are concerned with the study of how software artifacts evolve, and with techniques to facilitate software evolution