Choose:
- Software Engineering A
- Software Engineering B
Software Engineering 3A
This module is compulsory for all honours students and a
prerequisite for Software Engineering 4 and Formal Methods 4.
Aims
The aim of this module is to study informal and formal methods for
the analysis, design and implementation of large programs.
Objectives
By the end of this module, the student should
- understand the different life cycles used in software
development
- be able to construct problem descriptions and requirement
definitions
- be able to specify functional and non-functional requirements
- understand the different uses of prototyping in software
development
- be able to asses the quality of deliverables
- understand how software development can be costed
- understand how projects can be scheduled and managed
- understand how change can be controlled and managed
- have worked with other students in the design of a large piece
of software
- understand the role of logical and mathematical reasoning in
the programming process
- know Hoare logic and the mathematics that underlie the guarded
command language
- be able to write formal specifications of small programs
- understand some methods for constructing programs that
formally meet specifications
- be able to semi-formally derive small programs that meet their
specifications
Contents
The module consists of 36 lectures, taught at 2 lectures per week.
Software Development Techniques
- Introduction to the software development process (1 lecture)
- Requirements and Specification (2 lectures)
- Software Design: Architectural Design (2 lectures)
- Software Design: Structured Design (2 lecture)
- Prototyping and evolutionary development (1 lecture)
- Testing (2 lectures)
Managing Software Development
- Cost estimation and cost models (e.g. COCOMO) (2 lectures)
- Project Scheduling and management (2 lectures)
- Software quality management (2 lectures)
- Change control, version control and configuration management
(2 lectures)
Formal specification and construction of programs (18 lectures)
- The role of formal specifications; how they are used
- Formal notation; logic, sets, relations, functions, sequences
- Specification notation for a small imperative language;
partial and total correctness
- Hoare logic; proving programs correct
- Extensive exercises with small specifications and program
correctness proofs
- Verification conditions; mechanization
- Weakest (liberal) pre-conditions
- Dijkstra's guarded command language
- Formal and semi-formal program derivation
- Examples in reasoning programs into existence semi-formally.
Tutorial workshops
There will be one 1-hour tutorial each week.
Term 1
During this term there will be an additional 1-hour workshop each
week. Teams of about 5 students will work on the design of a
moderately sized piece of software. The team will be set a target
deliverable to produce every one or two weeks which will be handed
in. However, instead of working from this deliverable as a base for
the next step all teams will be given a standard version of this
deliverable to use in the next stage. The method and technique to be
used at each stage will be those of the lectures in SE3. Each
student's assessment will be based on their team's project report
together with an individual essay on their contribution to the
project.
Assessed coursework
Term 1: Team exercise, starting in week 2 and ending in
week 10, together with an individual essay to be handed in during
week 11 (first day of term 2), together worth 10% of your final
grade.
Term 2: There will be three assessed exercises for this
part of the course, counting for a total of 10% of your final grade.
Each exercise will be worth a maximum of 10 marks. None of the
exercises will require the use of a computer (so they can all be done
at home, in the library, on the train, etc.). The details are as
follows:
Exercise 1
|
handed out 27 January 1998
|
due 10 February 1998.
|
Exercise 2
|
handed out 10 February 1998
|
due 3 March 1998.
|
Exercise 3
|
handed out 3 March 1998
|
due 21 April 1998 (first Tuesday of Term 3).
|
The exercises will be designed so as to allow you to get them done
comfortably within the allocated times. Exercises 1, 2, and 3 will be
assigned and your solutions to exercises 1 and 2 collected at the
lectures on the days shown above. The arrangements for handing in
exercise 3, which is due in the first week of term 3, will be
announced when it is assigned.
Reading
Required reading (term 1)
- Sommerville, I. (1995) Software Engineering 5th
edition, Addison-Wesley.
Required reading (term 2)
- Kaldewaij, A. (1990) Programming - the derivation of
Algorithms, Prentice-Hall.
Additional reading (term 2)
- Gordon, M. J. C. (1988) Programming Language Theory and its
Implementation, Prentice-Hall.
- Winskel, G. (1993) The Formal Semantics of Programming
Languages, MIT Press.
Lecturers
Mr Phil Gray
|
Dr Tom Melham
|
Room: S104 Ext: 4933 E-mail: pdg
|
Room: S092 Ext: 4967 E-mail: tfm
|
Consultation: by appointment
|
Consultation: by appointment
|
Module coordinator
|
|
Software Engineering 3B
This module is compulsory for all CS3 students.
Aims
The aim of this module is to study informal methods for the
analysis, design and implementation of large programs and to
introduce formal methods.
Objectives
By the end of this module, the student should
- understand the different life cycles used in software
development
- be able to construct problem descriptions and requirement
definitions
- be able to specify functional and non-functional requirements
- understand the different uses of prototyping in software
development
- be able to asses the quality of deliverables
- understand how software development can be costed
- understand how projects can be scheduled and managed
- understand how change can be controlled and managed
- have worked with other students in the design of a large piece
of software
- understand typical good working practice in the software
industry
- be able to use the relevant techniques of a standard method
(e.g. SSADM, Jackson)
- understand in general terms the main kinds of formal method
used in software specification
- be able to read a simple formal specification and make small
modifications to it
Contents
The module consists of 36 lectures, taught at 2 lectures per week.
Software Development Techniques
- Introduction to the software development process (1 lecture)
- Requirements and Specification (2 lectures)
- Software Design: Architectural Design (2 lectures)
- Software Design: Structured Design (2 lecture)
- Prototyping and evolutionary development (1 lecture)
- Testing (2 lectures)
Managing Software Development
- Cost estimation and cost models (e.g. COCOMO) (2 lectures)
- Project Scheduling and management (2 lectures)
- Software quality management (2 lectures)
- Change control, version control and configuration management
(2 lectures)
Current Software Engineering Practice
- Introduction to commonly used methods (e.g. SSADM) (6
lectures)
- Object-oriented design (6 lectures)
Introduction to formal methods
- introduction to constructive specification of programs; study
of one particular method (e.g. Z) with emphasis on understanding
specifications (6 lectures)
Tutorial workshops
There will be one 1-hour tutorial each week.
Term 1: During this term there will be an additional 1-hour
workshop each week. Teams of about 5 students will work on the design
of a moderately sized piece of software. The team will be set a
target deliverable to produce every one or two weeks which will be
handed in. However instead of working from this deliverable as a base
for the next step all teams will be given a standard version of this
deliverable to use in the next stage. The method and technique to be
used at each stage will be those of the lectures in SE3. Each
student's assessment will be based on their team's project report
together with an individual essay on their contribution to the
project.
Assessed coursework
Term 1: Team exercise, starting in week 2 and ending in
week 10, together with an individual essay to be handed in in week 11
(first day of term 2), together worth 10% of your final grade.
Term 2: There will be three assessed exercises for this
part of the course, counting for a total of 10% of your final grade.
Each exercise will be worth a maximum of 10 marks. None of the
exercises will require the use of a computer (so they can all be done
at home, in the library, on the train, etc.). Assignment and deadline
dates will be announced.
Required reading (term 1)
- Sommerville, I. (1995) Software Engineering 5th
edition, Addison-Wesley
Additional reading (term 2)
- Rumbaugh, J. et al ., (1991) Object-Oriented Modeling and
Design, Prentice-Hall.
Lecturers
Mr Phil Gray
|
Dr Patrick Sansom
|
Room: S104 Ext: 4933 E-mail: pdg
|
Room: F163 Ext: 4984 E-mail: sansom
|
Consultation: by appointment
|
Consultation: by appointment
|
Module coordinator
|
|