Gwybodaeth Modiwlau
Module Identifier
CS31310
Module Title
Agile Development and Testing
Academic Year
2021/2022
Co-ordinator
Semester
Semester 1
Pre-Requisite
Other Staff
Course Delivery
Assessment
Due to Covid-19 students should refer to the module Blackboard pages for assessment details
Assessment Type | Assessment length / details | Proportion |
---|---|---|
Semester Assessment | 5 Hours Worksheets | 10% |
Semester Exam | Online Exam | 90% |
Supplementary Exam | 2 Hours Online 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.
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.
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