APE | Agile Engineering Practices |
This course presents practical techniques for building software in an agile environment. We aim to minimise the time between the conception of an idea and its implementation in working software released to users. We aim to embrace the changes thrown at us by a continually changing market, and to mitigate the associated risks by using technical practices to ensure quality - of our software and of the processes that we use to develop it.
Frequency
This course normally runs once a year.
Course dates
7th April 2025 | Oxford University Department of Computer Science - Held in the Department | 12 places remaining. |
Objectives
At the end of the course, students will have an understanding of and practical experience in the techniques used to support building software in an agile environment. We will look at the technical practices described by eXtreme Programming, such as continuous integration and pair programming. We will also look at various types of quality assurance techniques, and how they may be applied to greenfield or existing projects. We will explore techniques relating to requirements analysis, core development, QA and operations. The taught material will be supported by hands-on practical exercises demonstrating tools and techniques.
Contents
- Introduction
- introducing the fundamentals of agile development, the aims, and how technical practices support these
- Extreme Programming
- development practices from extreme programming: pair programming, test-driven development, continuous integration
- Continuous Delivery
- version control; continuous integration; automated build and release
- Refactoring
- preserving internal code quality; technical debt; automated refactoring techniques and patterns
- Working with Legacy Code
- mitigating risk when working existing codebases; introducing tests to legacy code;
- Test-Driven Development
- TDD with unit tests; mock objects
- Specification by Example
- closing the communication gap between business and development
- Release and Deployment
- strategies for frequent and reliable release; continuous deployment
Requirements
This is a practical course, with programming exercises. Most of the exercises will use Java, so students really should have some familiarity with Java (or C#) and object-oriented programming before taking the course. Some familiarity is assumed also with agile methodologies: the Agile Methods course would be an ideal preparation.