Automated Software Engineering
Module aims
Modern software engineering increasingly extends beyond constructing software systems to engineering the processes through which software evolves. Software systems are not static artefacts; they are long-lived, continuously evolving products, increasingly developed and maintained using automated and AI-assisted tools. Automated testing, continuous delivery pipelines, executable specifications, and AI-enabled development tools enable rapid and continuous change. This module explores the principles underlying reliable software evolution, focusing on specification, feedback, validation, automation, and governance. Students will analyse, design, and evaluate workflows that support increasingly automated software development.
Learning outcomes
Upon successful completion of this module you will be able to:
- Analyse software systems to identify factors affecting quality, maintainability, and evolvability.
- Evaluate approaches to improving software quality, maintainability, and evolvability.
- Design software engineering processes and feedback mechanisms that support reliable software change.
- Construct and evaluate automated workflows for software development and maintenance.
- Assess the opportunities, limitations, and risks associated with automated software engineering approaches.
Module syllabus
The module focusses on how software systems, development processes, and feedback mechanisms can be designed to support effective and increasingly automated software change:
1. Software Quality and the Cost of Change
- Codebase quality, maintainability, and evolvability
- Measuring and assessing software quality
- Technical debt, cognitive debt, and intent debt
2. Building Quality Software
- Architecture, modularity, and abstraction
- Designing software for maintainability and testability
- Refactoring and continuous improvement
3. Representing Intent
- Requirements, specifications, and executable knowledge
- Capturing and communicating intent
- Specification-driven development
4. Designing Effective Feedback Systems
- Automated testing, validation, and observability
- Continuous delivery and automation guardrails
- Systems thinking and feedback loops
5. AI-enabled Automation
- Agentic tools and workflows
- Planning, context management, and tool use
- Resource constraints and automation trade-offs
Teaching methods
Each week of the course will address a different topic, with weekly lectures and computer-based lab sessions. There will be weekly practical tutorial exercises (small, focused, computer-based exercises).
An online service will be used as a discussion forum for the module.
Assessments
Some of the tutorial exercises will be assessed and in total count for 20% of the marks as the coursework component for the module. There will be a final computer-based exam, testing practical skills and knowledge on an individual basis. This exam counts for the remaining 80% of the marks for the module.
For each assessed exercise there will be feedback from an automated online testing system (where appropriate) and/or additional written feedback from either the module leader or GTAs.