School of Computing

Module details

CO886 Software Engineering (15 credits)

Introduction

Creating a quality software product requires much more than skilful programming. First of all, the requirements for the product must be determined. Unfortunately, customers' perceptions of their requirements are usually vague and incomplete, and often inconsistent too, so these perceived requirements must be carefully analysed and amplified. Before software is shipped, it is important that cost-effective measures are applied to ensure, as far as possible, that it is free from errors, especially major errors: this involves procedures such as source code analysis and inspection as well as thorough testing. But some bugs will inevitably get through to the delivered product, and it is important that users can easily submit informative bug reports that allow the problem to be quickly localised and rectified.

All of the issues just described have an impact on the design of the software: it must be designed, for example, to ensure that it is amenable to thorough and systematic testing, and that if internal errors do occur, they are detected quickly before the program's data files have been irrecoverably damaged. Also, design must ensure that the software can easily be adapted and extended as the customer's requirements evolve over time.

This module takes a wider view of the software development process, with an emphasis on techniques and procedures for ensuring high product quality. A key topic is the use of the Unified Modelling Language (UML) for problem analysis and software design. Towards the end of the module students have an opportunity to put theory into practice by undertaking a group project, with another group as their customer.

Syllabus

  • Quality standards, including ISO9001 and CMM.
  • Alternative models of a software project's lifecycle, and the role of the object-oriented development paradigm in modern lifecycle concepts.
  • Object-oriented modelling notations, in particular UML, and the use of these notations throughout the project lifecycle.
  • Mapping of designs expressed in UML into Java code.
  • Techniques for verifying models, and the conformance of one model to another.
  • Approaches to software testing and inspection.
  • Approaches to software configuration management.

Note

This web page provides advance information about a module due to run in the coming academic year. We believe the details are accurate at the time of writing but they may be subject to change.

School of Computing, University of Kent, Canterbury, Kent, CT2 7NF

Enquiries: +44 (0)1227 824180 or contact us.

Last Updated: 08/04/2011 15:43