Skip to main content

Software Engineering II

Overview

Module description

In this module we cover a range of advanced topics in software engineering.

First, we focus on software quality, covering several key quality-related issues, including software reliability, dependability, safety and security. We also build on the topic of risk management and mitigation previously introduced in Software Engineering I.

We then focus 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.

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