Module Identifier CS33310  
Module Title FORMAL METHODS IN SOFTWARE ENGINEERING  
Academic Year 2001/2002  
Co-ordinator Dr Mark Ratcliffe  
Semester Semester 2  
Other staff Dr Frederick Long, Dr Ross King  
Pre-Requisite CS21120 , CS22120  
Course delivery Lecture   22 lectures  
  Workshop   Up to 4  
Assessment Supplementary examination   Will take the same form, under the terms of the Department's policy    
  Course work   A2 Two pieces   20%  
  Exam   2 Hours A1   80%  
Further details http://www.aber.ac.uk/compsci/ModuleInfo/CS33310  

General description


The module introduces students to the use of mathematically formal methods for the specification of software. As background to the formal methods in software engineering, students are introduced to formal logic and some of its other applications in Computer Science.

Aims


This module aims to introduce students to the use of formal methods in software specification. It develops the underlying ideas by presenting mathematical logic in a formal way, illustrating a number of different logics, and by showing some of the other applications of logic in Computer Science. The practical elements of the module aim to consolidate and extend the material presented in the lectures.

Learning outcomes


On successful completion of this module students should:

Syllabus


1. The Traditional Approach to Specification - 1 Lecture
Problems of incompleteness, inconsistency and ambiguity. Practical problems (volume of paperwork, etc.).


2. Formal Specifications - 1 Lecture
The advantages and disadvantages of formal specification. Algebraic and operational specifications.


3. VDM as a Specification Language - 4 Lectures
Introduction and history. The VDM specification language. Data types in VDM. Proof using the data types. An example specification.


4. The Logic of Partial Functions - 2 Lectures
Proof in the three valued logic of partial functions. Differences from the traditional two valued logic. Applications to formal methods, in particular VDM.


5. VDM as a Formal Development Method - 3 Lectures
Stages and processes in the development of a software design using VDM. Data reification and operation decomposition.


6. Correctness Proofs - 3 Lectures
Programming proof rules and their application in the specification of computer systems.


7. Outstanding Problems and Other Methods - 2 Lectures
Formal specification of systems with concurrency. Modularisation of formal specifications. Safety and reliability issues. Other specification languages, Z and GYPSY (briefly). ANNA and SPARK.


8. Temporal Logic - 2 Lectures
Specification of time dependent systems. The operators always, sometimes, next and until. Extension of VDM to include temporal logic.


9. Logic Applications in Computing - 4 Lectures
Resolution theorem proving. Logic programming and Prolog. Multi-valued logics, Fuzzy logic, and reasoning with uncertainty.

Reading Lists

Books
** Recommended Text
R.D. Dowsing, V.J. Rayward-Smith, and C.D. Walter. (1986) A First Course in Formal Logic and its Application in Computer Science. Computer Science Texts, Blackwell Scientific Publications 0632013087
C.B. Jones. (1990) Systematic Software Development Using VDM. 2nd. International Series in Computer Science. Prentice-Hall 0632013087
** Consult For Futher Information
J.M. Spivey. (1992) The Z Notation: A Reference Manual. 2nd. International Series in Computer Science. Prentice-Hall 0139785299
D. Bjorner, C.A.R Hoare, and H. Langmaack, editors. (1990) VDM '90: VDM and Z - Formal Methods in Software Development [volume 428 of LNCS]. Springer-Verlag 0387525130
J G P Barnes. (1997) High Integrity Ada: The SPARK Approach. Addison-Wesley 0201175177
J. Woodcock and M. Loomes. (1988) Software Engineering Mathematics. Pitman 0273026739