Submitted by Hugh_Hughes on Sun, 08/18/2019 - 20:44
Module Title
Software Engineering (Semester 5&6)
Module Credits
10
Module Semester
5
Module Status
Mandatory

This module develops the learners’ theoretical and practical understanding of the lifecycle of software development giving an overview of a project from beginning to end. The module uses applied methods for developing computer software in a practical context, focusing on software development in teams, testing, and documentation.

Objectives

This module will ensure learners meet the following objectives:

  • Introduce basic principles of software engineering.
  • Identify and deploy appropriate practices for an Object-Orientated system. 
  • Enable learners to specify and design software.
  • Ensure learners can verify, test and maintain software using best practice.
  • Familiarise learners with standards for documentation and technical writing.

Software engineering principles and Process Models

  • Goals of Software Engineering and various software disciplines.
  • What is software? Software engineering and software engineering processes.
  • Four steps of software engineering: specification, development, validation and evaluation.
  • Waterfall approach and evolutionary development. System assembly from re-usable components.
  • Agile software development

Software Requirements and Specifications

  • What are SW requirements? How to specify the requirements? Guidelines on documenting requirements.
  • Functional and non-functional requirements. User requirements. System requirements.
  • Requirements capture and analysis. Feasibility study.
  • Requirements validation and management.

System Modelling, Software Design and Implementation

  • System modelling. Context models, behavioural models, data models and object models.
  • What is architectural design? What is architecture specification? Guidelines on documenting the architecture.
  • System structuring and modular decomposition. What are control models?
  • Difference between domain-specific architectures and client-server architectures.
  • User interface design. Human-computer interaction. UI main principles: user interaction, information presentation, user support. UI evaluation.
  • Prototyping in SW process. Agile development and rapid prototyping techniques. User interface prototyping.

Software Verification and Testing

  • What is software product quality? Quality measurement. software defects and software reliability.
  • What is software verification? software inspections. Improvement of product quality.
  • What is software testing? Unit testing, defect testing, integration testing and OO testing.
  • Automatic static analysis. Testing workbenches. Clean room software development.
  • Practical testing. 
  • Validation versus Verification.

Software maintenance, change and evolution

  • Moral and ethical aspects related to development of software products. Legal aspects of software engineering. Copyrights. software patenting.
  • Introduction to software change. Program evolution dynamics. Architectural evolution.
  • What is software maintenance? Version and release management.
  • What is software re-engineering? What is reverse engineering? Program structure improvement and modularisation.
Module Assessment
Type
Continuous Assessment
Percentage
40%
Type
Proctored written examination
Percentage
60%