About us
Lancaster University's Software Engineering research focuses on the design, coding, testing and evolution of software-based systems. Our Software Engineering research uses both formal and empirical approaches, often in close collaboration with industry.
Key areas of our Software Engineering research include:
- Software Design: Exploring new approaches to designing and structuring large, complex software systems. We work with a variety of design approaches, including model-based approaches, to improve the design of systems. We have particular expertise in the design of IoT systems and the design and implementation of Agentic and multiagent systems.
- Software Development Approaches: Investigating and improving the methods and tools used to develop software. We are particularly interested in approaches to ensure effective code is produced and have extensive experience in developing tools to analyse code to identify potentially problematic code.
- Software Testing: This research lies at the intersection of formal methods, model-based testing, and automated test generation, with a particular emphasis on finite state machines and their variants. Our contributions target both the theoretical foundations and practical scalability of software verification to ensure reliability.
- Automated Software Engineering: Researching ways to automate tasks in software development, for example, we have considerable capability in the automatic repair of bugs and vulnerabilities.
- Human Aspects of Software Engineering: Examining the role of humans in the software development process, including user experience and collaboration. Understanding the human aspects of developers in relation to effective tooling and high-quality software outputs is a crucial aspect of our research focus.
- Emerging Technologies: Investigating the application of new technologies like AI and machine learning to software engineering. We have applied many aspects of AI, ML and NLP to the understanding, analysis and creation of software.