![[The University of Leicester]](http://www.le.ac.uk/corporateid/departmentresource/000066/unilogo.gif) | Department of Mathematics & Computer Science |
 |
Next: MC208 Functional Programming
Up: Year 2
Previous: MC205 Object-Oriented Programming Using C++
MC206 Software Engineering and System Development
| Credits: 20 |
Convenor: Zhiming Liu |
Semester: 1 |
| Prerequisites: |
essential: MC103, MC104, MC111 |
desirable: MC106, MC115 |
| Assessment: |
Continual assessment: 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 |
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 are 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 course follows on from the course on Software Engineering and
provides the students with the engineering principles, methods and
practice of how a large system can be specified, designed and
implemented using object oriented techniques.
Aims
The overall purpose of the course 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 course is
to teach the understanding and use of object-oriented methods to
analyse, specify, design and implement large computer systems.
Objectives
At the end of the course the students 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; and
- be very clear about activities to carry out and the artifacts
to produce in a software development,
- use UML for consistent specifications the models at different levels of abstraction in the development of a system of a moderate size;
- have a sound grasp of the basic principles and techniques in
object-oriented software development.
Transferable Skills
- the skill and ability in customer requirements analysis;
- the skill and ability in to write precise and abstract
requirement specification;
- the skill and ability in transforming a requirement specification into a design, and in coding a design.
- the understanding of system development process;
- the principles and techniques of software development.
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 Sequence Diagrams and Operations:
System input events and system operations; system sequence diagrams (SSD);
contracts; from analysis to design.
OO Design: Interaction diagrams; UML notational issues.
creating interaction diagrams, patterns for assigning responsibilities; a design of POST; 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; configiration control;
modelling behaviour in state diagrams; VDM specification of classes and objects.
Summing Up and Revision
Reading list
Essential:
Recommended:
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. Pooley and P. Stevens,
Using UML: Software Engineering with Objects and Components,
Addison-Wesley, 1999.
Background:
X. Jia,
Object-oriented Software Development Using Java,
Addison-Wesley Longman, 2000.
B. Meyer,
Object-oriented Software Construction (2nd Edition),
Prentice Hall PTR, 1997.
R. Pressman,
Software Engineering - A Practitioner's Approach (4th Edition),
McGraw Hill, 1997.
S.R. Schach,
Classical and Object-Oriented Software Engineering (3rd Edition),
IRWIN, 1996.
I. Sommerville,
Software Engineering (5th Edition),
Addison-Wesley, 1995.
Details of Assessment
The coursework for the continual assessment consists of three pieces of group work and two pieces of individauls work.
The written January examination contains six questions, and candidates can obtain full marks from four good questions.
Next: MC208 Functional Programming
Up: Year 2
Previous: MC205 Object-Oriented Programming Using C++
Author: S. J. Ambler, tel: +44 (0)116 252 3884
Last updated: 2001-09-20
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.