You are on page 1of 11

Z - Notation

Presented By: Adam Attinello CMSC 445

Z Notation? HUH?!?

First off its pronounced Zed


After the Zermelo-Frnkel set theory

It is a set of conventions for presenting mathematical text, chosen to make it convenient to use simple mathematics to describe computing systems. It is targeted to clarify and streamline the specification and requirement process

Boring Facts About Z Notation

Based on the standard mathematical notation


The mathematical notation of Z consists of a small core

Supplemented by a larger collection of useful objects and operators called the Z mathematical tool-kit.

Some Problems with Z notation


Z notation uses many non-ASCII symbols The specification includes suggestions for rendering the Z notation symbols in ASCII as well as LaTeX.

How To Model A System

Z decomposes specifications into manageably sized modules, called schemas:


Schemas are divided into 3 parts:

A State A collection of state variables and their values There are also some operations that can change its state

Z is also a natural fit to object-oriented programming.


You can also use Z in a functional style, among others There are some object oriented languages that extend Z

Z Notation Formulas

Z operators are defined by formulas. These are done through symbols These symbols hold most of the same meanings as they do in an of our math classes

The Birthday Book Example

This is the Hello World of Z Notation


This is a shorter version of the true example

My example will allow you too do 3 things:


Add a persons name and birthday Store that information Then find it again

Notation Example
Name Some variables are declared. As well as state transitions. Relationship between the values of the variables [NAME; DATE]: Init Birthday Book Birthday Book Known =

Notation Example II
Birthday book known: NAME birthday: NAME DATE

Known : dom birthday

One possible state of the system has three people in the set known, with their birthdays recorded by the function birthday:
known = { John; Mike; Susan } birthday = { John 25-Mar, Mike 20-Dec, Susan 20-Dec }

How the system might look


Add Birthday Birthday Book name?: NAME

date?: DATE
name? known birthday = birthday U { name? date}

Notation Example III


Find Birthday Birthday book name?: NAME

Date! : DATE
name? Known date != birthday(name?)

REFERENCES

http://spivey.oriel.ox.ac.uk/mike/zrm/z rm.pdf http://staff.washington.edu/jon/zlectures/z-lectures.html Software Engineering Theory and Practice, 3rd Edition

You might also like