This module focuses on designing and building software systems.
Pre-requisite modules
Co-requisite modules
- None
Prohibited combinations
- None
Occurrence | Teaching period |
---|---|
A | Online Teaching Period 6 2021-22 |
This module focuses on designing and building software systems, which these days are often large, complex and long-lived. They are worked on by teams of engineers, and changed constantly over their lifetimes. We will look at principles and patterns of software design, where to apply them, and how they may inform our design choices. We will also look at techniques for ensuring that systems you build behave correctly. We show how the application of these makes it possible to evolve systems effectively in a rigorous way.
Be able to:
Investigate and analyse a problem, write a software requirement specification and design blueprint expressed in UML which provides a basis for code generation,
Apply a range of design patterns and principles to solve particular design problems,
Apply a range of refactoring techniques to improve code quality
Critically evaluate and apply a range of tools and techniques for automated software testing, including test-driven development,
Manage risk in making changes to an existing software system through rigorous engineering practices,
Critically evaluate the appropriateness of different software engineering techniques/tools in different circumstances, and on the quality of the design of an application.
Topics:
Software development process
Requirement capture and modelling
Requirement analysis and specification
High-level and Lower level design
Design patterns and state machines
Refactoring and software testing
Software risk and quality management
Task | Length | % of module mark |
---|---|---|
Open Examination: Multiple choice questions online Software Engineering |
2 hours | 100 |
None
Task | Length | % of module mark |
---|---|---|
Open Examination: Multiple choice questions online Software Engineering |
2 hours | 100 |
In line with university policy.
Bennett, Simon; McRobb, Steve; Farmer, Ray, Object-Oriented System Analysis and Design, 4th Ed, McGraw Hill, 2010.
Sommerville I., Software Engineering, 9th edition, Addison Wesley, 2015.