[The University of Leicester]

Department of Mathematics & Computer Science

Next: CO2008 Functional Programming Up: Year 2 Previous: CO2005 Object-Oriented Programming Using C++

CO2006 Software Engineering and System Development

CO2006 Software Engineering and System Development

Credits: 20 Convenor: Dr. N. Measor Semester: 1

Prerequisites: essential: CO1003, CO1004, CO1011 desirable: CO1006, CO1015
Assessment: Coursework: 40% Three hour exam in January: 60%
Lectures: 36 Problem Classes: none
Tutorials: none Private Study: 78
Labs: 24 Seminars: none
Project: none Other: none
Surgeries: 12 Total: 150

Subject Knowledge


The overall purpose of the module is to give an understanding of the problems of large-scale software development and how this can be solved using object-oriented techniques. The main aim of the module is to teach the understanding and use of object-oriented methods to analyse, specify, design and implement large computer systems.

Learning Outcomes

The student should be able to: Analyse customer requirements; produce a design based on an object oriented specification; use VDM for specification of some classes, objects, and their operations; implement a design; understand what activities to carry out and what artifacts to produce in software development; use UML for consistent specification of the models at different levels of abstraction in the development of a system of a moderate size; use automated UML tools; have a sound grasp of the basic principles and techniques in object-oriented software development.


Lecture notes, class sessions, recommended textbooks, worksheets, supervised laboratories, feedback from markers and extensive web support.


Marked coursework, laboratory assessment, written examination.

Subject Skills


Produce written work in a number of different formats; analyse problems, formulate strategies to solve them, design a plan, carry out the required research, implement and evaluate the solution; recognise the need for information, and then locate and access that information. Work effectively in a group to solve problems, communicate ideas effectively to to other members of group, evaluate and work with strengths and weaknesses of other group members.

Learning Outcomes

Students will learn to develop object-oriented software systems. This will involve requirements capture and analysis, and the design and implementation of suitable solution strategies.


Class sessions, individual and group worksheets with feedback from markers.


Marked coursework, written examination.

Explanation of Pre-requisites

A sound knowledge of basic algorithm and program design and data structures is required. A good understanding of logic and discrete structures is essential for rigorous and formal models and specifications of software systems. Some knowledge of the professional and ethical issues of large systems would be useful, but it is certainly not essential for this course. It is also desirable that students have some knowledge of database systems.

Course Description

This module provides the students with the engineering principles, methods needed to specify, design and implement a large syste using object oriented techniques, and gives them practice in developing such systems.


Introduction: Software crisis and historical background of Software Engineering; features of modern software systems, software products and their characteristics: maintainability, dependability, efficiency and usability.

Software Development Process: Requirement analysis; system design; implementation and unit testing; integration and system testing; operation and maintenance; the waterfall model; evolutionary development.

Introduction to OO Development: The inherent complexity of software; mastering complex systems; examples of complex systems; function oriented vs object-oriented methods.

Object-oriented requirement capture and analysis: Case study; requirement specification; use cases; conceptual models, use case based project planning; testing based on use cases.

System Behaviour: System input events and system operations; contracts; from analysis to design.

OO Design: Interaction diagrams; UML notational issues. creating interaction diagrams, patterns for assigning responsibilities; connecting user interface objects to domain object; design class diagrams; use interaction for testing plan.

Implementing a Design: UML notation for interface details; mapping a design to code; container/collection classes in code.

Advanced Modelling Concepts and Design Techniques: Iterative development process; generalization; abstract classes; associative classes; UML notation for packages; modelling behaviour in state diagrams; VDM specification of classes and objects; Configuration Control

Summing Up and Revision

Reading list


M. Fowler, UML Distilled, 2nd edition, Addison-Wesley, 1999.


R. Pooley and P. Stevens, Using UML: Software Engineering with Objects and Components, Addison-Wesley, 1999.

I. Jacobson, G. Booch, and J. Rumbaugh, The Unified Software Development Process, Addison-Wesley, 1999.

C. Larman, Applying UML and Patterns, Prentice-Hall International, 1998.

R. Pressman and D. Ince, Software Engineering - A Practitioner's Approach (5th (European) Edition), McGraw Hill.

I. Sommerville, Software Engineering (5th Edition), Addison-Wesley, 1995.

S. Bennett, S. McRobb, and R. Farmer, Object-Oriented Systems Analysis and Design using UML, 2nd edition, McGraw-Hill.


Departmental web page, study guide, lecture notes, worksheets, handouts, lecture rooms computer projection facilities and OHPs, past examination papers.

Module Evaluation

Course questionnaires, course review.

Next: CO2008 Functional Programming Up: Year 2 Previous: CO2005 Object-Oriented Programming Using C++

[University Home] [MCS Home] [University Index A-Z] [University Search] [University Help]

Author: N. Rahman, tel: +44 (0)116 252 3902
Last updated: 2003-09-23
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.