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.