![[The University of Leicester]](http://www.le.ac.uk/corporateid/departmentresource/000066/unilogo.gif) | 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
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
Aims
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.
Methods
Lecture notes, class sessions, recommended textbooks, worksheets,
supervised laboratories, feedback from markers and extensive web
support.
Assessment
Marked coursework, laboratory assessment, written examination.
Subject Skills
Aims
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.
Methods
Class sessions, individual and group worksheets with feedback from
markers.
Assessment
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.
Syllabus
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
Essential:
M. Fowler,
UML Distilled, 2nd edition,
Addison-Wesley, 1999.
Recommended:
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.
Resources
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++
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.