School of Computer Science BCS accreditation 2021 - 2026
[Home]
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Assesement : Examination