Skip to navigation | Skip to main content | Skip to footer
Menu
Menu

School of Computer Science BCS accreditation 2021 - 2026

Artificial Intelligence MEng (Hons) - COMP33712 Agile Software Engineering


Return to programme overview.

2.1.1 Knowledge and understanding of facts, concepts, principles & theories

The unit covers the values and principles that underly agile approaches. Students are introduced to, and apply, common agile practices for requirements gathering, project planning and tracking, software estimation, design and testing.

Assesement : Examination

2.1.2 Use of such knowledge in modelling and design

User stories are used to model the requirements for a computer system, with a focus on capturing the value that a software project is expected to deliver to the customer. Story points are used to describe the relative size of a piece of functionality, for the prediction of delivery times and effort. Evolutionary design techniques based on test-driven methods are introduced, as a means of adapting the design of a software system to the requirements are they are understood at each point in a project.

Assesement : Examination

2.1.3 Problem solving strategies

The course covers the assumptions that underly sequential and agile processes for software development, and helps students to recognise when each is appropriate.

Assesement : Not Assessed

2.1.4 Analyse if/how a system meets current and future requirements

The unit covers agile approaches to software testing, including the use of acceptance tests to both specify and verify the requirements for a system. The unit touches upon the question of how we can decide whether a software system delivers the value initially hoped for from it.

Assesement : Examination

2.1.5 Deploy theory in design, implementation and evaluation of systems

Key agile practices associated with requirements gathering, project planning, software testing and evolutionary design are introduced in the course. Students have a chance to apply the practices in class, with students choosing one practice to apply in depth in their coursework. Tools made use of include Cucumber, JUnit and IDE-based refactoring.

Assesement : Examination

2.1.6 Recognise legal, social, ethical & professional issues

The unit covers a number of professional issues: whole-team responsibility, issues of trust and openness between customer and development team, honesty in making commitments or dealing with unrealistic commitments made on the team's behalf, learning from team members, the management of technical debt and techniques for maintaining high software quality. We also touch on contracts for agile projects.

Assesement : Examination

2.1.7 Knowledge and understanding of commercial and economic issues

The issue of contracts for agile projects is covered briefly by this unit, as is the importance of ensuring that software systems deliver real value to customers.

Assesement : Examination

2.1.8 Knowledge of management techniques to achieve objectives

A number of the practices covered by the course relate to project management: task boards are introduced as a lightweight means of planning and tracking the progress of software projects. Agile estimation techniques are also covered. We provide an overview of common agile management methodologies, e.g. Scrum, Kanban.

Assesement : Examination

2.2.1 Specify, design or construct computer-based systems

User stories are covered as a means of gathering and documenting requirements in a lightweight form. Evolutionary design techniques are covered as a means of avoiding the need to design software systems up-front, while attempting to meet requirements over the long term. Test-driven development is covered as an approach to the implementation of high-quality, highly-maintainable code.

Assesement : Examination

2.2.2 Evaluate systems in terms of quality and trade-offs

The key focus of agile methods on delivering real value to the customer through the development of software is covered by the unit.

Assesement : Examination

2.2.4 Deploy tools effectively

The unit covers the use of specification-by-example tools (FitNesse and Cucumber), and automated testing tools (JUnit). The use of refactoring tools provided by IDEs in evolutionary design is also covered.

Assesement : Examination

2.3.1 Work as a member of a development team

Several team-based practices are covered by the course, including self-organising teams, team-based estimation through planning poker/rock-paper-scissors, and the Three Amigos approach to specification-by-example.

Assesement : Examination

2.3.2 Development of general transferable skills

Students are asked to work in teams and pairs in all classes. Communication skills are developed by this means, as well as through frequent whole-class discussion.

Assesement : Not Assessed

3.2.1 Specify, deploy, verify and maintain information systems

User stories are covered as a means of gathering and documenting system requirements in a lightweight way. Agile approaches to software testing are covered in some depth, being the focus of a half of the course unit. Evolutionary design techniques are introduced and practiced by students, with an emphasis on producing code that is easy to change in the long term (as requirements change).

Assesement : Examination

3.2.3 System Design

User stories are covered as a lightweight means to gather and document the user requirements, and the value that is expected to result from the new or modified software. Specification-by-example/acceptance test driven development is taught as a means of ensuring that the final system delivers the functionality described by the user stories, with a minimum of additional (unwanted) functionality.

Assesement : Examination

4.2.1 Specify, deploy, verify and maintain computer-based systems

The course covers a range of agile practices designed to help us specify, design, implement and verify software systems in a lightweight, efficient manner. The management of technical uncertainty is covered through several routes: techniques for choosing which features to implement in what order are taught, based on risk and the need to acquire information that will help to reduce risk; and the use of learning spikes to reduce estimation and technical uncertainty.

Assesement : Examination