Software Engineering

Learning Outcomes

  • 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.

Module Details

Core Texts

Object-Oriented System Analysis and Design, 4th Ed

Bennett, Simon; McRobb, Steve; Farmer, Ray

McGraw Hill, 2010.

Software Engineering 9th Ed

Ian Sommerville

Addison Wesley, 2015

Weekly Units

  1. Software development process
  2. Requirement capture and modelling
  3. Requirement analysis and specification
  4. High-level and Lower level design
  5. Design patterns and state machines
  6. Refactoring and software testing
  7. Software risk and quality management