Skip to main content

Applied Software Engineering

Overview

  • Credit value: 30 credits at Level 7
  • Convenor and tutor: Keith Mannock
  • Assessment: problem-solving worksheets (40%) and a group programming project (60%)

Module description

This module covers a range of software engineering material, including how to model, design, implement and evaluate larger software systems effectively. We start with a brief revision of the development lifecycle models, such as agile development, and then continue to cover requirements specification, requirements analysis, object-oriented concepts and object-oriented design, all with an emphasis on implementation.

Software engineering is an inherently practical subject and applying these concepts is a vital component of developing expertise in this area. You will undertake a substantial group project, working through the several stages involved in the development of a larger software application. You will be supervised but will be expected to work largely independently, learning key transferable skills in team management and organisation.

Indicative module syllabus

  • Practical application of software engineering techniques using JavaScript
    • Revision of software engineering principles including source code management using Git
    • Application of agile development in JavaScript
    • User story realisation
    • Object-oriented modelling
    • Incremental refinement
  • Design principles for modular applications
    • Software infrastructures for utility computing
    • Principles of object-oriented design including SOLID
    • Refactoring, testing and maintaining a codebase
  • Further programming
    • Functions-as-a-service (FaaS) architectures
    • Web development frameworks (e.g. React)
    • Services computing
  • Case study and group work

Learning objectives

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

  • appreciate wider engineering issues in developing complex and evolving software-intensive systems
  • plan and deliver an effective software engineering process, based on knowledge of widely used development lifecycle models, in particular agile development
  • utilise group working skills including general organisation, planning and time management and inter-group negotiation
  • capture, document and analyse software requirements, and translate a requirements specification into an implementable design
  • evaluate the quality of the requirements, analysis and design work done during the module
  • understand the use of a web programming framework
  • demonstrate modern programming techniques through JavaScript.