|Delivery Type||Delivery length / details|
|Lecture||14 x 1 Hour Lectures|
|Workshop||3 x 2 Hour Workshops|
|Assessment Type||Assessment length / details||Proportion|
|Semester Exam||2 Hours Written Exam||90%|
|Semester Assessment||5 Hours Worksheets||10%|
|Supplementary Exam||2 Hours Written Exam||100%|
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.
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.
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.
|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.|
This module is at CQFW Level 6