Course unit details:
Agile Software Engineering
||Department of Computer Science
|Available as a free choice unit?
Traditional approaches to the engineering of software systems have too often turned out to be costly ways of building software that no one wants. In this course unit, we look at an alternative "agile" approach that aims to ensure that the project team focusses on building software that provides genuine value for the customer, even when the customer's needs change radically in the middle of the project. We look at how to plan and manage such projects, as well as techniques for keeping code quality high enough to support rapid change of direction in the middle of development.
|Software Engineering 1
|Software Engineering 2
The aim of this course unit is to introduce you to the basic values and principles behind agile software engineering, and to give you an understanding of how the key agile practices work together to deliver real value to customers in a predictable and controllable way. We'll look at some of the problems with the conventional "plan-based" approach to software development, and examine how agile methods attempt to do better.
Rather than being lectured at, you'll take part in industry-standard coaching games, plus team-based exercises, group discussions and hands-on demonstrations that let you experience the agile approach at work and make up your own mind about the strengths and limitations of the ideas being presented.
- Compare and contrast the pros and cons of conventional Big Up-Front approaches to software development with those of the new iterative/agile approaches.
- Explain the meaning of the 4 agile values and 12 agile principles, and use them to diagnose and correct problems in a variety of software engineering scenarios.
- Write user stories to capture user requirements and associated business values, and refine stories to varying levels of granularity for use in project planning.
- Create and implement release and iteration plans given a collection of user stories, by applying a range of agile project planning and tracking practices.
- Explain the role and purpose of task boards in managing self-organising agile teams, and design task board structures suitable for use in particular contexts.
- Use specification-by-example practices to create living documentation for a software system, and use it to guide the design and implementation of the system using Acceptance Test Driven Design (ATDD) and Unit Test Driven Design (TDD) practices.
- Explain the role of feedback in the management of agile projects and apply feedback oriented practices, such as retrospectives, to identify and correct problems in team processes.
- Explain how formal contracts and funding models for agile projects differ from contracts/funding models used on more traditional projects.
Week 1: The Agile Lego Game - an Introduction to Agile Software Engineering
Week 2: The Trouble with Big Up-Front Requirements Gathering
Week 3: How Do We Know What to Build?
Week 4: What Can We Promise to Deliver (and When)?
Week 5: How Do We Know What to Build Next?
Week 7: How Do We Know When We're Done?
Week 8: How Do We Build the Right Product?
Week 9: How Do We Know When We're (Done) Done? (sic)
Week 10: How Do We Build The Product Right?
Week 11: Software Design Without A Crystal Ball?
Week 12: Agile in a Nutshell
For a detailed description of each weeks' activities please see COMP33712's weekly lesson plan.
Teaching and learning methods
One two-hour session per week
- Group/team working
- Project management
- Oral communication
- Problem solving
- Written communication
During lectures, many team and whole group activities are undertaken, with feedback being given face-to-face during the activities and in the whole-group debrief sessions afterwards.
A series of self-tests are available for students to try after lectures, with detailed feedback being provided by the automatic marking system.
COMP33712 reading list can be found on the Department of Computer Science website for current students.
|Scheduled activity hours
|Assessment written exam
|Practical classes & workshops
|Independent study hours
Links to course unit teaching materials can be found on the School of Computer Science website for current students.
Return to course details