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.
|10th July 2017||Oxford University Department of Computer Science||04 places remaining.|
|15th January 2018||Oxford University Department of Computer Science||15 places remaining.|
|2nd July 2018||Oxford University Department of Computer Science||17 places remaining.|
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.
- 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
- 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; acceptance testing; specification by example tools (e.g. FIT)
- Release and Deployment
- strategies for frequent and reliable release; case studies
- Lean Product Development
- the Lean Startup movement; continuous deployment
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#) before taking the course. Some familiarity is assumed also with agile methodologies: the Agile Methods course would be an ideal preparation.