Skip to main content

Software Engineering II


  • Credit value: 15 credits at Level 6
  • Module convenor and tutor: Jan Hidders
  • Prerequisite: Software Engineering I
  • Assessment: a 3000-word case study report (20%) and two-hour examination (80%)

Module description

Software Engineering II covers a range of advanced topics in software engineering. The first part of the module focuses on software quality. It covers several key quality-related issues, including software reliability, dependability, safety and security. The module also builds on the topic of risk management and mitigation previously introduced in Software Engineering I. The second part of the module focuses on several key topics in modern software engineering, including software reuse, distributed systems engineering, service-oriented software engineering, and software engineering for large complex systems.

At the end of the module, you will be able to understand the broader landscape of the discipline of software engineering, and apply advanced techniques and theory to your software development activity.

Indicative module syllabus

  • Systems Engineering
  • Software Safety, Dependability and Reliability
  • Software Security and Resilience
  • Risk Analysis and Management
  • Cybersecurity
  • Software Reuse 
  • Distributed Software Engineering
  • Service Oriented Software Engineering
  • System of Systems Engineering
  • Real-time Software Engineering

Learning objectives

By the end of this module, you will be able to:

  • understand the role of software engineering and its importance in software development, and the main reasons for success and failure in software development
  • explain issues of professionalism related to software engineering and understand the social, ethical and legal context in which software engineers work
  • enumerate the main software development process models, specifically plan based and Agile models, and explain their applicability to the development of different software types
  • understand and undertake software process model activities in a structured, competent and professional manner, using industry-standard techniques
  • explain how software is tested to ensure quality and devise a test plan that includes elements of unit, system, functional, acceptance and release testing
  • understand how systems adapt and evolve, and are maintained throughout their lifespan
  • understand software project management tasks, and standard project management techniques and tools, and apply these to a software development project
  • understand the role and importance of quality management activities, including reviews and inspections, and undertake software quality assurance activities in the software development process
  • explain how software configuration management helps ensure software quality and undertake software configuration management activities, including version management, change management and release management
  • use industry-standard tools for all areas of the software development process.