Courses

Adelaide University Logo
 


Concurrent and Distributed Systems

Concurrent and distributed systems have increasingly become an active area of research and development. This is an inevitable consequence of the realisation that many problem areas, such as the design of VLSI systems, telecommunications systems, and real-time control systems, are inherently concurrent in nature. Similarly, on the applications side, many enterprises and organisations are cooperative in nature, eg. offices, companies, universities, etc., requiring the exchange and sharing of information and resources over a geographically distributed and loosely coupled system. Distributed computer systems better match the requirements of such organisations than conventional centralised computer systems. However, distributed computer systems are extremely complex artefacts and hence the use of formal design and analysis techniques is common. This course will introduce these techniques.

Course Coverage

The aim of the course is to introduce the concepts, theory, formal notations and programming languages which are necessary to understand, analyse, design and build concurrent and distributed systems. Firstly, the model checking approach is introduced. Here, you build an automaton model of the system and specify some property in temporal logic to be checked. Secondly, the formal theory of Communicating Sequential Processes (CSP) is presented and used as a descriptive and reasoning tool. Concepts, such as behaviour, complete and partial specifications, design, design refinement, safety and liveness properties, as well as proof of correctness are then defined in a rigorous manner.

Several case studies, such as communication protocols, message passing networks, and distributed databases, will be used to illustrate the concepts covered in the course. A set of simulation, analysis, and formal verification tools, the CSP based tools ARC and FDR are introduced and applied in practice. These tools are widely used in the concurrent, safety critical, protocol system, and telecommunications domains.

 

High Integrity Software Engineering

This course introduces students to high-integrity software engineering, with a focus on the development of safety-critical software.  Lectures will cover hazard analysis, risk analysis, safety-critical software, formal methods, safety cases and safety management. Students are introduced to a number of practical techniques, which are applied to a variety of realistic examples.

The course starts by introducing a number of hazard and risk analysis
techniques, including: fault tree analysis; event tree analysis; hazard and operability studies; and failure modes and effects analysis.  The course then introduces the notion of formal specification, using the Z specification language.

Then the SPARK Ada language is introduced. Here we cover the general notion of a safe subset of a programming language. Static analysis techniques are introduced, as well as formal verification.

Software Engineering in Industry


Introduction to Software Engineering




Contact us

School of Computer Science
Faculty of Engineering, Computer and Mathematical Sciences, The University of Adelaide
Last modified 16/07/2005