Module Information

Module Identifier
CS31310
Module Title
Agile Development and Testing
Academic Year
2023/2024
Co-ordinator
Semester
Semester 1
Pre-Requisite
Reading List
Other Staff

Course Delivery

 

Assessment

Assessment Type Assessment length / details Proportion
Semester Assessment 5 Hours   Worksheets  10%
Semester Exam 2 Hours   Exam  90%
Supplementary Exam 2 Hours   Exam  100%

Learning Outcomes

On successful completion of this module students should be able to:

1. Demonstrate a critical appreciation of a range of software development methodologies and their relative advantages and disadvantages.

2. Reason about the impact of project context on choice of methodology.

3. Demonstrate an in-depth knowledge of the practices and process that comprise the several agile methodologies.

4. Design and apply a systematic test strategy.

5. Identify and use Refactoring to restructure code to improve the design and maintainability of software systems.

Brief description

We look at development processes, techniques and technologies for constructing real operational software systems. We examine a selection of methodologies that apply concepts from the Agile Manifesto and compare them to plan-driven methodologies.

We will explore some of the techniques for testing software systems. We will also examine tools and frameworks that support testing in a team environment. The coverage of testing builds on techniques introduced in first and second year modules that involve software development.

Content

Introduction to agile methodologies, looking at the motivations for the Agile Manifesto, plan-driven development and the principles behind the manifesto. Why do software projects fail and what can be done to increase the chance of success?

Introducing XP and Scrum. What are these approaches that are used by teams to develop software systems? How have they shaped the way that we view agile development?

Agile Planning. What is necessary for developing a plan and how is that applied in an agile context?

Designing software and the use of Refactoring.

Using Pair Programming and Test-Driven Development.

Kanban and Discipline. What is Kanban and how is it used for software development? Why is discipline necessary when defining and following a development methodology?

Automated Testing, Build systems and Continuous Integration. What tools and techniques can we use to help automate testing? What are the challenges and benefits for automated testing?

Testing software. A review of testing concepts and an exploration of testability and test coverage. How can we write good tests that can be run in an automated environment?

Test Doubles. What are Test Doubles and how can they help teams to write tests that isolate components to make it easier to automate testing?

Acceptance Testing and Review. What is the role of acceptance testing and how can we use tools to help automate the process? A review of the module content, drawing together the ideas that have been discussed.

Module Skills

Skills Type Skills details
Application of Number None beyond that required for programming.
Communication Communication is used within the exercises to illustrate working in teams and applying some of the techniques.
Improving own Learning and Performance Exercises will promote experience and development of testing and design skills.
Information Technology Inherent in the module.
Personal Development and Career planning The module gives students an insight into the computing industry and potential careers.
Problem solving Problem solving is intrinsic to software development and testing.
Research skills Students will be required to acquire knowledge from journals and on-line sources.
Subject Specific Skills Specialist software engineering knowledge and skills will be explored.
Team work Some work in pairs during practical class.

Notes

This module is at CQFW Level 6