1 Formal Specification of Software: Why and When?

Size: px
Start display at page:

Download "1 Formal Specification of Software: Why and When?"

Transcription

1 1 Formal Specification of Software: Why and When? 1.1 Purpose of Specifications Definitions Specification is the precise definition of properties of a technical product or its development process. The term specification refers either to a phase or activity in the development process, or a document resulting from a specification activity. Specifications of software systems can be classified according to their usage in the development process: requirements specification: general definition of properties to be fulfilled by the developed system; problem specification (or functional specification): definition of tasks to be performed by the developed system; design specification: definition of the internal structure of the developed system and of corresponding specific tasks to be performed in the system implementation; module / class specification: definition of the tasks to be performed by a specific part of the software system, possibly including a definition of the internal structure of this part; test specifications: definition of tasks to be performed to demonstrate the correct functioning of the developed system; process specifications: general definition of tasks to be performed in the process of developing a software system. This classification largely follows the well-known basic structure of the software development process, where there exist (independent of any specific process model) the clearly defined activities of analysis (of requirements and proposed solution), design (on various levels) and validation, accompanied by a "meta-level" of process control. A different classification can be made according to the aspect of the system being described: File: fss1 Page: 1

2 functional aspect structural aspect dynamic aspect behavioural aspect non-functional aspect development process aspect Each of these views can be applied to the system as a whole (globally) and on particular parts of a system (locally). Not all aspects are equally important for all usage of specifications in software development: requirements specification: global functional and non-functional aspects problem specification: global functional aspect and global structural aspect design specification: all kinds of aspects, mainly global aspects module / class specification: local aspects only process specifications: development process aspect and global structural aspect test specifications: development process aspect, functional and behavioural aspects In the context of formal specification, the term specification is often (but without any true reason) restricted to requirements and problem specifications. 1 Nevertheless, for this lecture, specifications will be essentially treated as regarding the problem, design and module/class usage from a functional aspect. Other variants of specification can be treated formally as well, of course Why do we need specifications? Specifications are key to development contracts and procurement decisions. Specifications are key to resource and time planning of a development project. 1 B.Meyer, On Formalism in Specifications: Specification is the software lifecycle phase concerned with precise definition of the tasks to be performed by the system. File: fss1 Page: 2

3 Specifications are key to software documentation, software understanding and software adaptation Languages used for specifications Still the most frequent choice for specification languages in practice is natural language combined with informal graphical illustrations. However, for many aspects of system specification, there are wellestablished languages ( language meant as including graphical languages here). The most important examples are: functional aspect: global functional aspects: data flow diagrams, use case diagrams local functional aspects: "pseudo-code" structural aspect: class diagrams, entity-relationship diagrams, block diagrams, physical deployment diagrams dynamic aspect: state machines (with in/output) behavioural aspect: interface definition languages, sequence diagrams, process descriptions non-functional aspect: tables with measurable values development process aspect: workflow description formalisms These languages have gradually found their way into industrial development practice as part of so-called software development methods. The recently standardised Unified Modeling Language (UML) 2 contains well-defined diagrammatic notations for all aspects mentioned above. It is obvious that the functional aspect is not yet covered appropriately by the above-mentioned languages. Therefore, functional aspects are still mostly covered by natural language specifications, even where UML is in use. The next section illustrates some of the problems with specification of system functionality. 2 See G. Booch et al, The Unified Modeling Language. Online UML resource center: File: fss1 Page: 3

4 1.2 Specification Examples Natural language specification: The Seven Sins of the Specifier 3 The following example specification is a problem specification dealing with the functional aspect of a small system. It is taken from the literature and was prepared with special care for preciseness and completeness, as is proven by some history of attempts to properly specify the problem. Nevertheless, it shows clear deficiencies. Example 1: 4 The program s input is a stream of characters whose end is signaled with a special end-of-text character, ET. There is exactly one ET character in each input stream. Characters are classified as: break characters BL (blank) or NL (new line); nonbreak characters all others except ET; the end-of-text indicator ET. A word is a nonempty sequence of nonbreak characters. A break is a sequence of one or more break characters. Thus, the input can be viewed as a sequence of words separated by breaks, with possibly leading and trailing breaks, and ending with ET. The program s output should be the same sequence of words as in the input, with the exception that an oversize word (i.e. a word containing more than MAXPOS characters, where MAXPOS is a positive integer) should cause an error exit from the program (i.e. a variable, Alarm, should have the value TRUE). Up to the point of an error, the program s output should have the following properties: 1. A new line should start only between words and at the beginning of the output text, if any. 2. A break in the input is reduced to a single break character in the output. 3 This section based on B. Meyer, On Formalism in Specifications. 4 J. Goodenough, S. Gerhart, Towards a theory of test: Data selection criteria, in Current Trends in Programming Methodology Vol. 2, T. Yeh (ed.), Prentice-Hall 1977, pp Cited according to B. Meyer. File: fss1 Page: 4

5 3. As many words as possible should be placed on each line (i. e. between successive NL characters). 4. No line may contain more than MAXPOS characters (words and BLs). B. Meyer identifies the following seven sins of the specifier : Noise (dt. Rauschen): Unnecessary text that diverts the attention of the reader. - Repetitions should not be avoided in specifications. Variant: Remorse (dt. Reue bzw. Nachtrag): Restrictions to a specification element are made where the element is used and not where it is defined. Silence (dt. Schweigen bzw. Auslassung): Omission of specification elements that are considered obvious by the specifier. Contradiction (dt. Widerspruch): Inconsistent statements made in the specification. Overspecification (dt. Überspezifikation): Description of a solution instead of pointing out the problem. - Error handling should not be described in detail in a functional specification. Ambiguity (dt. Mehrdeutigkeit): Statements that can be interpreted in several different ways. Forward reference (dt. Vorwärtsverweis): Usage of a concept before its proper definition. Wishful thinking (dt. Wunschdenken): Description of features in such a way that solutions cannot realistically be validated against the feature Mathematical formulation B. Meyer gives a precise mathematical specification of Example 1. Below some parts of the problem are reformulated to illustrate his way of specification. Example 1 (Meyer s version): Short breaks. Let a be a sequence of characters. We define SINGLE_BREAKS(a) as the set of subsequences of a such that no two consecutive characters are break characters. File: fss1 Page: 5

6 SINGLE_BREAKS(a) = def {s SUBSEQUENCE(a) i 2..length(s) s(i 1) BREAK_CHAR s(i) BREAK_CHAR} Next, we define COMPACTED(a) as the subset of SINGLE_BREAKS(a) containing those sequences of maximum length: COMPACTED(a) = def MAX_SET(SINGLE_BREAKS(a), length) (In a similar style, here follow definitions for the line length limitation, for the usage of a minimal number of lines and for the combination of the three conditions.) This style of definition achieves high precision, by applying mathematical thinking to software specification. However, readability and acceptance by the software engineering community are very poor Use case diagram When applying the diagrammatic notations of UML (or other software development methods) to Example 1, a rather trivial diagram is obtained like the following use-case diagram in UML: format text <<include>> <<include>> break lines fill lines reduce breaks <<include>> Motivation for formal specification languages The examples show an obvious gap in the description of functional properties of software systems. Formal specification languages intend to File: fss1 Page: 6

7 achieve the same level of precision as a purely mathematical approach, apply structuring concepts known from programming languages, make specifications machine-processable, keep the specifications as readable as possible. (But: Special education will always be required for dealing with highprecision specifications.) 1.3 Formality Definitions A typical definition of the term formal is something like: A method/language is formal if it has a sound mathematical basis. A more practical definition is derived from a philosophical idea from the 17 th century (G.W. Leibniz), with roots even in classical philosophy (Aristoteles). Leibniz formulated the vision that at some point in time there will be no need for philosophical disputes since philosophers simply could sit down and calculate which opinion is right. This applied formal logic idea is behind modern formal software specification languages. Definition: A language is called formal if it has a precisely defined semantics that relates the syntactical form of a specification in the language with a precisely defined semantic domain. A language is informal if it is not formal, i.e. if its semantics rely on human interpretation of the specifications, in particular on the chosen identifiers. A language is semi-formal if it contains formal as well as informal sublanguages or language layers. A good test for formality of a specification is to rename all identifiers to meaningless symbols like a and x, and to check whether the semantics is still equivalent. More precisely, a formal specification language is defined as follows 5 : 5 According to J. Wing, A specifier s introduction to formal methods. File: fss1 Page: 7

8 Definition A formal specification language is a triple <Syn, Sem, Sat> where Syn and Sem are sets and Sat Syn Sem is a relation between them. Syn is called the syntactic domain of the language, Sem is called its semantic domain and Sat is called its satisfaction relation. Typically, the syntactic domain of a formal specification language is defined in the same way as the syntax of a programming language, i.e. by a context-free grammar and context conditions. The ultimate semantic domain of software specification is, of course, the set of programs. This is appropriate for specifications to be applied on the level of fine-grain module and class design. However, for more abstract specifications, e.g. problem and requirement specifications, it is necessary to use more abstract concepts as semantic domains (e.g. algebras or set-theoretic models). These concepts introduce intermediate layers of abstraction between programs and specifications. Warning: Theoreticians and practicians have a completely different idea of formality. The above definition is the theoretician s view. For a practician, everything is formal which puts some restriction onto the form of the text being written Application areas for formal specification Some of the pioneers of formal specification claimed a revolutionary paradigm shift in software development from traditional informal development to tool-supported formal development. This has turned out as unrealistic but still there is some truth in this prediction. Software development for large systems does not use, and will not use for the foreseeable future, formal specifications as a complete replacement for other notations and development methods. However, the practically used specification languages show a clear trend towards higher formalisation, in order to enable better tool support. Moreover, there are a number of application areas where formal specification plays a very important role: Highly reliable systems for safety-critical applications Definition of standards File: fss1 Page: 8

9 Local enhancements of semi-formal specifications Contract-proof definition of black box software (componentware) Semantics definition for semi-formal specification languages Formal specification languages have had a rather slow (mathematics-like) evolution in the past. However, the convergence with practical engineering may lead to rather fast developments within the years to come. 1.4 Overview of Formal Specification Languages History of Software Specification Languages For a long period starting in the 1960s, many completely different and competing specification languages and development methods existed. Moreover, there was a clear separation between formal specification languages (research on which was mathematically oriented) and pragmatic software engineering methods (which were developed by industry consultants mainly). The most important steps of development in the area of formal specification were: C.A.R. Hoare writes on An Axiomatic Basis for Computer Programming 6 and Proof of Correctness of Data Representations 7, and describes the idea of specification of a program by its properties B. Liskov/S.N. Zilles 8 and J. Guttag 9 introduce the concept of an abstract data type E.W. Dijkstra defines the calculus of weakest preconditions Clear is described by R.Burstall and J. Goguen probably the first algebraic specification language. 6 Communications of the ACM Vol. 12, 1969, pp Acta Informatica Vol. 1, 1972, pp B. Liskov, S.N. Zilles, Specification Techniques for Data Abstractions, IEEE Transactions on Software Engineering Vol. 1, 1975, pp J. Guttag, The Specification and Application to Programming of Abstract Data Types, Ph.D. Thesis, University of Toronto, E.W. Dijkstra, A Discipline of Programming, Prentice-Hall File: fss1 Page: 9

10 1988 The algebraic specification language OBJ3 is developed at the SRI (Stanford) C. Jones defines VDM the Vienna Definition Method The Oxford Programming Research Group develops the Z specification language 13. A more programming-oriented variant of it called B 14 is developed with high industrial engagement (BP Laboratories) The algebraic specification language Larch 15 is developed at MIT and Digital SRC. since 1991 Development of object-oriented extensions of specification languages, e.g. Object-Z 16 and CafeOBJ Development of the "unifying" algebraic specification language CASL (Common Algebraic Specification Language) in the context of the European CoFI (Common Framework Initiative) project. Several separate lines of development are contained in this list, each of them again separated into different schools. Algebraic and axiomatic approaches (Clear, OBJ, Larch, CafeOBJ) Model-based approaches (VDM, Z, B) 11 J. Goguen (ed.), Algebraic Specification with OBJ, Cambridge University Press, to appear. 12 C. Jones, Systematic Software Development with VDM, Prentice.Hall 1986 (2 nd ed. 1990). 13 J. M. Spivey, The Z Notation A Reference Manual, Prentice-Hall 1988 (2 nd ed. 1992). 14 J.-R. Abrial, The B-Book, Cambridge University Press J. Guttag, J. Horning, Larch: languages and tools for formal specification, Springer S. Stepney, R. Barden, D. Cooper (eds.), Object-orientation in Z, Springer R. Diaconescu, K. Futatsugi, CafeOBJ Report, Wolrd Scientific File: fss1 Page: 10

11 Hoare logic Dijkstra calculus VDM Clear OBJ CafeOBJ Maude Abstract data types Larch CASL Z B Approaches for Concurrent/Reactive Systems For concurrent/reactive systems, even a greater wealth of notations was developed, starting from formalisms like CSP 18, CCS 19 and Petri nets. Unfortunately, the integration with specification languages for sequential systems is still rather limited. Examples for formal specification languages in this area are LOTOS, Esterel and RAISE C.A.R. Hoare, Communicating Sequential Processes, Prentice-Hall R. Milner, A calculus of communicating systems, Springer LNCS Vol. 92, An overview of the current state of the art including real-time extensions is given in G. Blair et al., Formal Specification of Distributed Multimedia Systems, UCL Press File: fss1 Page: 11

12 1.5 Reminder on Mathematical Notation In this section, some basic mathematical notation is recalled which is used at various places throughout this lecture. The purpose of this section is just to make clear the meaning of the formulae that are used at various places in this lecture Sets A set is a collection of elements such that for a given element and a given set it is possible to decide whether the element is contained in the set or not. Construction of a set by enumeration of its elements: BREAK_CHAR = def { BL, NL, TAB } DIGIT = def { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } LETTER = def { A,..., Z, a,..., z } Membership predicate for an element of a set: BL BREAK_CHAR Construction of a set by set operations: ALFANUM = def LETTER DIGIT Construction of a set by set comprehension: ALFANUM = def { c c LETTER c DIGIT } Set comprehension over a given set: ALFANUM = def { c CHAR c LETTER c DIGIT } Side remark on mathematical background: Russell s paradox: X = def { S ALL_SETS S S } Question: Does X X hold? Construction of sets: Do not use the set of all sets! Set construction should always start from concrete given sets using a number of safe constructions, like power set, tuple, or sequence. File: fss1 Page: 12

13 The power set of a given set: P(S) = { T T S } Note the difference between x and {x}: x S and {x} P(S)! Example: DIGIT P(CHAR) Tuples and Sequences The Cartesian product of sets: S 1 S n = { (x 1,,x n) x 1 S 1 x n S n } Example: CODE = LETTER DIGIT The sequences over a given set: S * = { <x 1,,x n > x 1 S x n S n N } Example: input CHAR * Sequence as function: Let s S *, i.e. s = <x 1,,x n>. Then from s a function can be derived which is also called s: s: {1,,n} S s(i) = x i Example: WORD = def { s CHAR * ( i {1,,length(s)} s(i) ALFANUM) length(s) 0 } Relations and Functions A relation R between sets A and B is a subset of A B. The notation R(x,y) or x R y is used to denote (x, y) R. R is called a function if x A, y1 B, y2 B R(x,y1) R(x,y2) y1 = y2 A is called the from-set of R, B is called the to-set of R. The notation R: A B denotes that R is a function with from-set A and to-set B. File: fss1 Page: 13

14 A proper definition of a function or relation has to define the domain, the range and the relation between domain and range. Please note that this definition describes what is often called a partial function. It is allowed that for some elements of the from-set there is no value of the function. The term domain is often used to denote the elements of the from-set for which the function is defined (and analogously co-domain for the elements in the to-set). Unfortunately, in a part of the literature domain and co-domain are also used as synonyms for from-set and to-set (in the context of total functions). Examples: ISSORTED: N * B ISSORTED(s) = def i {2,,length(s)} s(i 1) < s(i) Let X be an arbitrary set. SUBSEQUENCE: X * P(X * ) SUBSEQUENCE(s) = def { t CHAR * <i 1,,i k > N * t = <s(i 1 ),,s(i k )> ISSORTED(<i 1,,i k >) } Sometimes it is useful to define functions that contain other functions in their domain or range. Example: MAX_SET: X (X N) P(X) MAX_SET(S,f) = def { x X x X f(x) f(x ) } Example The definitions from above give a complete explanation for the example from chapter 1: SINGLE_BREAKS: CHAR * P(CHAR * ) SINGLE_BREAKS(a) = def {s SUBSEQUENCE(a) i {2,...,length(s)} s(i 1) BREAK_CHAR s(i) BREAK_CHAR} File: fss1 Page: 14

15 COMPACTED: CHAR * P(CHAR * ) COMPACTED(a) = def MAX_SET(SINGLE_BREAKS(a), length) File: fss1 Page: 15

Seite 1. "Formal specifications may become for software engineers what, say, differential equations are for engineers of other fields.

Seite 1. Formal specifications may become for software engineers what, say, differential equations are for engineers of other fields. Formal Specification of Software Systems Heinrich Hußmann TU Dresden A Comparison "Formal specifications may become for software engineers what, say, differential equations are for engineers of other fields."

More information

Formal Specification of Software Systems

Formal Specification of Software Systems Formal Specification of Software Systems Lecture Notes Winter Term 2001 / 2002 Heinrich Hußmann Technische Universität Dresden Formal Specification of Software Systems Summary: Construction of large software

More information

Recall from previous lecture

Recall from previous lecture Recall from previous lecture Understanding customer requirements is critical to success of any software development effort Major process tasks: Requirements elicitation/analysis Drafting a requirements

More information

Introduction to Formal Methods

Introduction to Formal Methods 2008 Spring Software Special Development 1 Introduction to Formal Methods Part I : Formal Specification i JUNBEOM YOO jbyoo@knokuk.ac.kr Reference AS Specifier s Introduction to Formal lmethods Jeannette

More information

3.4 Deduction and Evaluation: Tools Conditional-Equational Logic

3.4 Deduction and Evaluation: Tools Conditional-Equational Logic 3.4 Deduction and Evaluation: Tools 3.4.1 Conditional-Equational Logic The general definition of a formal specification from above was based on the existence of a precisely defined semantics for the syntax

More information

Formal Methods in Software Design. Markus Roggenbach

Formal Methods in Software Design. Markus Roggenbach Formal Methods in Software Design Markus Roggenbach October 2001 2 Formal Methods Use of mathematics in software development main activities: writing formal specifications 2 Formal Methods Use of mathematics

More information

Distributed Systems Programming (F21DS1) Formal Verification

Distributed Systems Programming (F21DS1) Formal Verification Distributed Systems Programming (F21DS1) Formal Verification Andrew Ireland Department of Computer Science School of Mathematical and Computer Sciences Heriot-Watt University Edinburgh Overview Focus on

More information

Q Body of techniques supported by. R precise mathematics. R powerful analysis tools. Q Rigorous, effective mechanisms for system.

Q Body of techniques supported by. R precise mathematics. R powerful analysis tools. Q Rigorous, effective mechanisms for system. Introduction to Formal Methods 1 Introduction to Formal Methods 2 Formal Specification Requirements specification R notational statement of system services Software specification R formal abstract depiction

More information

Techniques for the unambiguous specification of software

Techniques for the unambiguous specification of software Formal Techniques for the unambiguous of software Objectives To explain why formal techniques help discover problems in system requirements To describe the use of algebraic techniques for interface To

More information

LECTURE 6: INTRODUCTION TO FORMAL METHODS. Software Engineering Mike Wooldridge

LECTURE 6: INTRODUCTION TO FORMAL METHODS. Software Engineering Mike Wooldridge LECTURE 6: INTRODUCTION TO FORMAL METHODS Mike Wooldridge 1 What are Formal Methods? Formal methods is that area of computer science that is concerned with the application of mathematical techniques to

More information

Chapter 3. Describing Syntax and Semantics

Chapter 3. Describing Syntax and Semantics Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:

More information

1 A question of semantics

1 A question of semantics PART I BACKGROUND 1 A question of semantics The goal of this chapter is to give the reader a glimpse of the applications and problem areas that have motivated and to this day continue to inspire research

More information

Formal Methods. CITS5501 Software Testing and Quality Assurance

Formal Methods. CITS5501 Software Testing and Quality Assurance Formal Methods CITS5501 Software Testing and Quality Assurance Pressman, R. Software Engineering: A Practitioner s Approach. Chapter 28. McGraw-Hill, 2005 The Science of Programming, David Gries, 1981

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2002 Vol. 1, No. 2, July-August 2002 The Theory of Classification Part 2: The Scratch-Built

More information

Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language

Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language Economy Informatics, vol. 9, no. 1/2009 13 Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language Ian ORLOVSKI Technical University of Moldova, Chisinau, Moldova

More information

Chapter 10 Formal Specification

Chapter 10 Formal Specification Chapter 10 Formal Specification Ian Sommerville 2000 Software Engineering, Chapter 10 Slide 1 Objectives To explain why formal specification helps discover problems in system requirements. To describe

More information

Chapter 1. Introduction

Chapter 1. Introduction 1 Chapter 1 Introduction An exciting development of the 21st century is that the 20th-century vision of mechanized program verification is finally becoming practical, thanks to 30 years of advances in

More information

Programming Languages Third Edition

Programming Languages Third Edition Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand

More information

An Annotated Language

An Annotated Language Hoare Logic An Annotated Language State and Semantics Expressions are interpreted as functions from states to the corresponding domain of interpretation Operators have the obvious interpretation Free of

More information

Łabiak G., Miczulski P. (IIE, UZ, Zielona Góra, Poland)

Łabiak G., Miczulski P. (IIE, UZ, Zielona Góra, Poland) UML STATECHARTS AND PETRI NETS MODEL COMPARIS FOR SYSTEM LEVEL MODELLING Łabiak G., Miczulski P. (IIE, UZ, Zielona Góra, Poland) The system level modelling can be carried out with using some miscellaneous

More information

This is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS

This is already grossly inconvenient in present formalisms. Why do we want to make this convenient? GENERAL GOALS 1 THE FORMALIZATION OF MATHEMATICS by Harvey M. Friedman Ohio State University Department of Mathematics friedman@math.ohio-state.edu www.math.ohio-state.edu/~friedman/ May 21, 1997 Can mathematics be

More information

UML-Based Conceptual Modeling of Pattern-Bases

UML-Based Conceptual Modeling of Pattern-Bases UML-Based Conceptual Modeling of Pattern-Bases Stefano Rizzi DEIS - University of Bologna Viale Risorgimento, 2 40136 Bologna - Italy srizzi@deis.unibo.it Abstract. The concept of pattern, meant as an

More information

Chapter 1 Introduction

Chapter 1 Introduction Chapter 1 Introduction We hardly need to point out the importance of business process modelling and of respective automation in this place (see, e.g. [39, 45, 58, 110, 141]). Also the advantages and shortcomings

More information

CITS5501 Software Testing and Quality Assurance Formal methods

CITS5501 Software Testing and Quality Assurance Formal methods CITS5501 Software Testing and Quality Assurance Formal methods Unit coordinator: Arran Stewart May 1, 2018 1 / 49 Sources Pressman, R., Software Engineering: A Practitioner s Approach, McGraw-Hill, 2005

More information

Semantics via Syntax. f (4) = if define f (x) =2 x + 55.

Semantics via Syntax. f (4) = if define f (x) =2 x + 55. 1 Semantics via Syntax The specification of a programming language starts with its syntax. As every programmer knows, the syntax of a language comes in the shape of a variant of a BNF (Backus-Naur Form)

More information

Requirements Modelling and Software Systems Implementation Using Formal Languages

Requirements Modelling and Software Systems Implementation Using Formal Languages Requirements Modelling and Software Systems Implementation Using Formal Languages Radek Kočí Brno University of Technology, Faculty of Information Technology Czech Republic koci@fit.vutbr.cz ICSEA 2018,

More information

Formal Foundations of Software Engineering

Formal Foundations of Software Engineering Formal Foundations of Software Engineering http://d3s.mff.cuni.cz Martin Nečaský Pavel Parízek CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Goals of the course Show methods and tools

More information

Lectures 20, 21: Axiomatic Semantics

Lectures 20, 21: Axiomatic Semantics Lectures 20, 21: Axiomatic Semantics Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Based on slides by George Necula Pratikakis (CSD) Axiomatic Semantics

More information

Flight Systems are Cyber-Physical Systems

Flight Systems are Cyber-Physical Systems Flight Systems are Cyber-Physical Systems Dr. Christopher Landauer Software Systems Analysis Department The Aerospace Corporation Computer Science Division / Software Engineering Subdivision 08 November

More information

Chapter 3. Semantics. Topics. Introduction. Introduction. Introduction. Introduction

Chapter 3. Semantics. Topics. Introduction. Introduction. Introduction. Introduction Topics Chapter 3 Semantics Introduction Static Semantics Attribute Grammars Dynamic Semantics Operational Semantics Axiomatic Semantics Denotational Semantics 2 Introduction Introduction Language implementors

More information

SOFTWARE ENGINEERING

SOFTWARE ENGINEERING SOFTWARE ENGINEERING INTRODUCTION TO SOFTWARE ENGINEERING. COURSE STRUCTURE AND REQUIREMENTS Saulius Ragaišis saulius.ragaisis@mif.vu.lt WHAT IS SOFTWARE ENGINEERING? First definition Software engineering

More information

PROPER TECHNIQUE OF SOFTWARE INSPECTION USING GUARDED COMMAND LANGUAGE

PROPER TECHNIQUE OF SOFTWARE INSPECTION USING GUARDED COMMAND LANGUAGE International Journal of Computer Science and Communication Vol. 2, No. 1, January-June 2011, pp. 153-157 PROPER TECHNIQUE OF SOFTWARE INSPECTION USING GUARDED COMMAND LANGUAGE Neeraj Kumar Singhania University,

More information

SOFTWARE ENGINEERING

SOFTWARE ENGINEERING SOFTWARE ENGINEERING INTRODUCTION TO SOFTWARE ENGINEERING. COURSE STRUCTURE AND REQUIREMENTS Saulius Ragaišis saulius.ragaisis@mif.vu.lt WHAT IS SOFTWARE ENGINEERING? First definition Software engineering

More information

! Use of formal notations. ! in software system descriptions. ! for a broad range of effects. ! and varying levels of use. !

! Use of formal notations. ! in software system descriptions. ! for a broad range of effects. ! and varying levels of use. ! What Are Formal Methods? David S. Rosenblum ICS 221 Winter 2001! Use of formal notations! first-order logic, state machines, etc.! in software system descriptions! system models, constraints, specifications,

More information

Towards a Logical Reconstruction of Relational Database Theory

Towards a Logical Reconstruction of Relational Database Theory Towards a Logical Reconstruction of Relational Database Theory On Conceptual Modelling, Lecture Notes in Computer Science. 1984 Raymond Reiter Summary by C. Rey November 27, 2008-1 / 63 Foreword DB: 2

More information

SOFTWARE ENGINEERING DESIGN I

SOFTWARE ENGINEERING DESIGN I 2 SOFTWARE ENGINEERING DESIGN I 3. Schemas and Theories The aim of this course is to learn how to write formal specifications of computer systems, using classical logic. The key descriptional technique

More information

Module 3. Requirements Analysis and Specification. Version 2 CSE IIT, Kharagpur

Module 3. Requirements Analysis and Specification. Version 2 CSE IIT, Kharagpur Module 3 Requirements Analysis and Specification Lesson 6 Formal Requirements Specification Specific Instructional Objectives At the end of this lesson the student will be able to: Explain what a formal

More information

Syntactic Measures of Complexity

Syntactic Measures of Complexity A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Arts 1999 Bruce Edmonds Department of Philosophy Table of Contents Table of Contents - page 2

More information

Master Thesis Project Plan. Reusable Mathematical Models

Master Thesis Project Plan. Reusable Mathematical Models Master Thesis Project Plan Reusable Mathematical Models Tobias K. Widmer widmer@id.ethz.ch Supervisors: Prof. Dr. B. Meyer B. Schoeller Chair of Software Engineering Department of Computer Science, ETH

More information

Chapter 3 (part 3) Describing Syntax and Semantics

Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings

More information

Programs with infinite loops: from primitive recursive predicates to the arithmetic hierarchy

Programs with infinite loops: from primitive recursive predicates to the arithmetic hierarchy Programs with infinite loops: from primitive recursive predicates to the arithmetic hierarchy ((quite) preliminary) Armando B. Matos September 11, 2014 Abstract Infinite time Turing machines have been

More information

Implementation of Axiomatic Language

Implementation of Axiomatic Language Implementation of Axiomatic Language Walter W. Wilson 1 1 Dept. of Computer Science & Engineering The University of Texas at Arlington Arlington, Texas 76019, USA wwwilson@acm.org Abstract This report

More information

Lecture 6,

Lecture 6, Lecture 6, 4.16.2009 Today: Review: Basic Set Operation: Recall the basic set operator,!. From this operator come other set quantifiers and operations:!,!,!,! \ Set difference (sometimes denoted, a minus

More information

Lecture 5: The Halting Problem. Michael Beeson

Lecture 5: The Halting Problem. Michael Beeson Lecture 5: The Halting Problem Michael Beeson Historical situation in 1930 The diagonal method appears to offer a way to extend just about any definition of computable. It appeared in the 1920s that it

More information

Lecture 5 - Axiomatic semantics

Lecture 5 - Axiomatic semantics Program Verification March 2014 Lecture 5 - Axiomatic semantics Lecturer: Noam Rinetzky Scribes by: Nir Hemed 1.1 Axiomatic semantics The development of the theory is contributed to Robert Floyd, C.A.R

More information

1.1 Software Life Cycle

1.1 Software Life Cycle 1 Introduction The development of complex software systems on a large scale is usually a complicated activity and process. It may involve many developers, possibly with different backgrounds, who need

More information

An Operational Semantics for Parallel Execution of Re-entrant PLEX

An Operational Semantics for Parallel Execution of Re-entrant PLEX Licentiate Thesis Proposal An Operational Semantics for Parallel Execution of Re-entrant PLEX Johan Erikson Department of Computer Science and Electronics Mälardalen University,Västerås, SWEDEN johan.erikson@mdh.se

More information

Knowledge Representation

Knowledge Representation Knowledge Representation References Rich and Knight, Artificial Intelligence, 2nd ed. McGraw-Hill, 1991 Russell and Norvig, Artificial Intelligence: A modern approach, 2nd ed. Prentice Hall, 2003 Outline

More information

Lecture 02: Semantical Model

Lecture 02: Semantical Model Software Design, Modelling and Analysis in UML Lecture 02: Semantical Model 2014-10-23 02 2014-10-23 main Prof. Dr. Andreas Podelski, Dr. Bernd Westphal Albert-Ludwigs-Universität Freiburg, Germany Contents

More information

Software Design, Modelling and Analysis in UML

Software Design, Modelling and Analysis in UML Software Design, Modelling and Analysis in UML Lecture 02: Semantical Model 2013-10-23 02 2013-10-23 main Prof. Dr. Andreas Podelski, Dr. Bernd Westphal Albert-Ludwigs-Universität Freiburg, Germany Contents

More information

Modelling ODP Viewpoints. 1 Introduction. 2 Basic Modelling and Specification Concepts

Modelling ODP Viewpoints. 1 Introduction. 2 Basic Modelling and Specification Concepts Richard O. Sinnott and Kenneth J. Turner. Modelling ODP viewpoints. In B. Cameron, C. Geldrez, A. Hopley, D. Howes, B. Mirek, and M. Plucinska, editors, Proc. OOPSLA 94 Workshop on Precise Behavioural

More information

7. Introduction to Denotational Semantics. Oscar Nierstrasz

7. Introduction to Denotational Semantics. Oscar Nierstrasz 7. Introduction to Denotational Semantics Oscar Nierstrasz Roadmap > Syntax and Semantics > Semantics of Expressions > Semantics of Assignment > Other Issues References > D. A. Schmidt, Denotational Semantics,

More information

hijac UTP Semantics for Safety-Critical Java University of York hijac Workshop 15 November 2011

hijac UTP Semantics for Safety-Critical Java University of York hijac Workshop 15 November 2011 UTP Semantics for Safety-Critical Java University of York Workshop 15 November 2011 1 / 27 Outline 1 Unifying Theories of Programming 2 SCJ-Circus 3 UTP SCJ Memory Model 4 COMPASS 5 Conclusions 2 / 27

More information

Chapter 3. Describing Syntax and Semantics ISBN

Chapter 3. Describing Syntax and Semantics ISBN Chapter 3 Describing Syntax and Semantics ISBN 0-321-49362-1 Chapter 3 Topics Describing the Meanings of Programs: Dynamic Semantics Copyright 2015 Pearson. All rights reserved. 2 Semantics There is no

More information

FUZZY SPECIFICATION IN SOFTWARE ENGINEERING

FUZZY SPECIFICATION IN SOFTWARE ENGINEERING 1 FUZZY SPECIFICATION IN SOFTWARE ENGINEERING V. LOPEZ Faculty of Informatics, Complutense University Madrid, Spain E-mail: ab vlopez@fdi.ucm.es www.fdi.ucm.es J. MONTERO Faculty of Mathematics, Complutense

More information

The Formal Semantics of Programming Languages An Introduction. Glynn Winskel. The MIT Press Cambridge, Massachusetts London, England

The Formal Semantics of Programming Languages An Introduction. Glynn Winskel. The MIT Press Cambridge, Massachusetts London, England The Formal Semantics of Programming Languages An Introduction Glynn Winskel The MIT Press Cambridge, Massachusetts London, England Series foreword Preface xiii xv 1 Basic set theory 1 1.1 Logical notation

More information

the application rule M : x:a: B N : A M N : (x:a: B) N and the reduction rule (x: A: B) N! Bfx := Ng. Their algorithm is not fully satisfactory in the

the application rule M : x:a: B N : A M N : (x:a: B) N and the reduction rule (x: A: B) N! Bfx := Ng. Their algorithm is not fully satisfactory in the The Semi-Full Closure of Pure Type Systems? Gilles Barthe Institutionen for Datavetenskap, Chalmers Tekniska Hogskola, Goteborg, Sweden Departamento de Informatica, Universidade do Minho, Braga, Portugal

More information

Modeling Issues Modeling Enterprises. Modeling

Modeling Issues Modeling Enterprises. Modeling Modeling Issues Modeling Enterprises SE502: Software Requirements Engineering Modeling Modeling can guide elicitation: It can help you figure out what questions to ask It can help to surface hidden requirements

More information

Logic and its Applications

Logic and its Applications Logic and its Applications Edmund Burke and Eric Foxley PRENTICE HALL London New York Toronto Sydney Tokyo Singapore Madrid Mexico City Munich Contents Preface xiii Propositional logic 1 1.1 Informal introduction

More information

Unit 4 Relational Algebra (Using SQL DML Syntax): Data Manipulation Language For Relations Zvi M. Kedem 1

Unit 4 Relational Algebra (Using SQL DML Syntax): Data Manipulation Language For Relations Zvi M. Kedem 1 Unit 4 Relational Algebra (Using SQL DML Syntax): Data Manipulation Language For Relations 2016 Zvi M. Kedem 1 Relational Algebra in Context User Level (View Level) Community Level (Base Level) Physical

More information

CSC Discrete Math I, Spring Sets

CSC Discrete Math I, Spring Sets CSC 125 - Discrete Math I, Spring 2017 Sets Sets A set is well-defined, unordered collection of objects The objects in a set are called the elements, or members, of the set A set is said to contain its

More information

ΗΜΥ 317 Τεχνολογία Υπολογισμού

ΗΜΥ 317 Τεχνολογία Υπολογισμού ΗΜΥ 317 Τεχνολογία Υπολογισμού Εαρινό Εξάμηνο 2008 ΙΑΛΕΞΗ 11: Τυποποιημένες (Formal) Προδιαγραφές ΧΑΡΗΣ ΘΕΟΧΑΡΙ ΗΣ Λέκτορας ΗΜΜΥ (ttheocharides@ucy.ac.cy) [Προσαρμογή από Ian Sommerville, Software Engineering,

More information

Computation Club: Gödel s theorem

Computation Club: Gödel s theorem Computation Club: Gödel s theorem The big picture mathematicians do a lot of reasoning and write a lot of proofs formal systems try to capture the ideas of reasoning and proof in a purely mechanical set

More information

Principles of Program Analysis. Lecture 1 Harry Xu Spring 2013

Principles of Program Analysis. Lecture 1 Harry Xu Spring 2013 Principles of Program Analysis Lecture 1 Harry Xu Spring 2013 An Imperfect World Software has bugs The northeast blackout of 2003, affected 10 million people in Ontario and 45 million in eight U.S. states

More information

Introduction to Axiomatic Semantics

Introduction to Axiomatic Semantics Introduction to Axiomatic Semantics Meeting 10, CSCI 5535, Spring 2009 Announcements Homework 3 due tonight Homework 2 is graded 13 (mean), 14 (median), out of 21 total, but Graduate class: final project

More information

Petri-net-based Workflow Management Software

Petri-net-based Workflow Management Software Petri-net-based Workflow Management Software W.M.P. van der Aalst Department of Mathematics and Computing Science, Eindhoven University of Technology, P.O. Box 513, NL-5600 MB, Eindhoven, The Netherlands,

More information

Static Safety Analysis of UML Action Semantics for Critical Systems Development

Static Safety Analysis of UML Action Semantics for Critical Systems Development Static Safety Analysis of UML Action Semantics for Critical Systems Development Zsigmond Pap, Dániel Varró Dept. of Measurement and Information Systems Budapest University of Technology and Economics H-1521

More information

Chapter 3. Describing Syntax and Semantics ISBN

Chapter 3. Describing Syntax and Semantics ISBN Chapter 3 Describing Syntax and Semantics ISBN 0-321-49362-1 Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the

More information

Topic Formal Methods. ICS 121 Lecture Notes. What are Formal Methods? What are Formal Methods? Formal Specification in Software Development

Topic Formal Methods. ICS 121 Lecture Notes. What are Formal Methods? What are Formal Methods? Formal Specification in Software Development Lecture Notes What are? 1 Formal Method (FM) = specification language + formal reasoning Body of techniques supported by precise mathematics powerful analysis tools Rigorous effective mechanisms for system

More information

Chapter 3. Describing Syntax and Semantics

Chapter 3. Describing Syntax and Semantics Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:

More information

Methods for requirements engineering

Methods for requirements engineering Methods for requirements engineering Objectives To explain the role of methods and techniques in requirements engineering To introduce data-flow modelling To introduce semantic data modelling To introduce

More information

Definition of Information Systems

Definition of Information Systems Information Systems Modeling To provide a foundation for the discussions throughout this book, this chapter begins by defining what is actually meant by the term information system. The focus is on model-driven

More information

Producing Graphical User Interface from Activity Diagrams Ebitisam K. Elberkawi, Mohamed M. Elammari

Producing Graphical User Interface from Activity Diagrams Ebitisam K. Elberkawi, Mohamed M. Elammari Producing Graphical User Interface from Activity Diagrams Ebitisam K. Elberkawi, Mohamed M. Elammari Abstract Graphical User Interface (GUI) is essential to programming, as is any other characteristic

More information

1 Introduction CHAPTER ONE: SETS

1 Introduction CHAPTER ONE: SETS 1 Introduction CHAPTER ONE: SETS Scientific theories usually do not directly describe the natural phenomena under investigation, but rather a mathematical idealization of them that abstracts away from

More information

Towards Formalization of ARD+ Conceptual Design and Refinement Method

Towards Formalization of ARD+ Conceptual Design and Refinement Method Proceedings of the Twenty-First International FLAIRS Conference (2008) Towards Formalization of ARD+ Conceptual Design and Refinement Method Grzegorz J. Nalepa and Igor Wojnicki Institute of Automatics,

More information

p x i 1 i n x, y, z = 2 x 3 y 5 z

p x i 1 i n x, y, z = 2 x 3 y 5 z 3 Pairing and encoding functions Our aim in this part of the course is to show that register machines can compute everything that can be computed, and to show that there are things that can t be computed.

More information

40 Behaviour Compatibility

40 Behaviour Compatibility 40 Behaviour Compatibility [2] R. De Nicola, Extentional Equivalences for Transition Systems, Acta Informatica, vol. 24, pp. 21-237, 1987. [3] J. Gray, Notes on Data Base Operating Systems, in Operating

More information

Formal Methods for Software Engineers

Formal Methods for Software Engineers Formal Methods for Software Engineers Professor Ray Welland Department of Computing Science University of Glasgow ray@dcs.gla.ac.uk INF3120-FM 1 Overview Motivation Why have formal specifications? Where

More information

Propositional Logic. Part I

Propositional Logic. Part I Part I Propositional Logic 1 Classical Logic and the Material Conditional 1.1 Introduction 1.1.1 The first purpose of this chapter is to review classical propositional logic, including semantic tableaux.

More information

Formal Specification. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 10 Slide 1

Formal Specification. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 10 Slide 1 Formal Specification Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 10 Slide 1 Objectives To explain why formal specification techniques help discover problems in system requirements To

More information

Unit 4 Relational Algebra (Using SQL DML Syntax): Data Manipulation Language For Relations Zvi M. Kedem 1

Unit 4 Relational Algebra (Using SQL DML Syntax): Data Manipulation Language For Relations Zvi M. Kedem 1 Unit 4 Relational Algebra (Using SQL DML Syntax): Data Manipulation Language For Relations 2014 Zvi M. Kedem 1 Relational Algebra And SQL SQL is based on relational algebra with many extensions Some necessary

More information

Component Composition in Business and System Modeling

Component Composition in Business and System Modeling Stuart Kent *, Kevin Lano **, Juan Bicarregui **, Ali Hamie *, John Howse *1 * Division of Computing, University of Brighton, Lewes Rd., Brighton, UK. ** Department of Computing, Imperial College of Science

More information

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered

More information

Part I Logic programming paradigm

Part I Logic programming paradigm Part I Logic programming paradigm 1 Logic programming and pure Prolog 1.1 Introduction 3 1.2 Syntax 4 1.3 The meaning of a program 7 1.4 Computing with equations 9 1.5 Prolog: the first steps 15 1.6 Two

More information

XI International PhD Workshop OWD 2009, October Fuzzy Sets as Metasets

XI International PhD Workshop OWD 2009, October Fuzzy Sets as Metasets XI International PhD Workshop OWD 2009, 17 20 October 2009 Fuzzy Sets as Metasets Bartłomiej Starosta, Polsko-Japońska WyŜsza Szkoła Technik Komputerowych (24.01.2008, prof. Witold Kosiński, Polsko-Japońska

More information

Formal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems

Formal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems Formal specification of semantics of UML 2.0 activity diagrams by using Graph Transformation Systems Somayeh Azizi 1, Vahid Panahi 2 Computer science department, Sama Technical and vocational, Training

More information

Specification-based Testing

Specification-based Testing Dependable Software Systems Specification-based Testing Material drawn from [Mancoridis, Vokolos] Specifications Specification Requirements Specification Requirements Specification: Precise and detailed

More information

A Hoare Logic Contract Theory: An Exercise in Denotational Semantics

A Hoare Logic Contract Theory: An Exercise in Denotational Semantics A Hoare Logic Contract Theory: An Exercise in Denotational Semantics Dilian Gurov and Jonas Westman Abstract We sketch a simple theory of Hoare logic contracts for programs with procedures, presented in

More information

Guarded Operations, Refinement and Simulation

Guarded Operations, Refinement and Simulation Guarded Operations, Refinement and Simulation Steve Reeves and David Streader Department of Computer Science University of Waikato Hamilton, New Zealand stever,dstr@cs.waikato.ac.nz Abstract Simulation

More information

6. Hoare Logic and Weakest Preconditions

6. Hoare Logic and Weakest Preconditions 6. Hoare Logic and Weakest Preconditions Program Verification ETH Zurich, Spring Semester 07 Alexander J. Summers 30 Program Correctness There are many notions of correctness properties for a given program

More information

Equations for Asynchronous Message Passing

Equations for Asynchronous Message Passing Equations for Asynchronous Message Passing Ludwik Czaja 1,2 1 Institute of Informatics, The University of Warsaw 2 University of Economics and Computer Science Vistula in Warsaw lczaja@mimuw.edu.pl 1 Introduction

More information

Proving the Correctness of Distributed Algorithms using TLA

Proving the Correctness of Distributed Algorithms using TLA Proving the Correctness of Distributed Algorithms using TLA Khushboo Kanjani, khush@cs.tamu.edu, Texas A & M University 11 May 2007 Abstract This work is a summary of the Temporal Logic of Actions(TLA)

More information

UML Semantics FAQ. ECOOP 99 Workshop Proposal

UML Semantics FAQ. ECOOP 99 Workshop Proposal UML Semantics FAQ ECOOP 99 Workshop Proposal 1 Cover Page Title: UML Semantics FAQ Organizers: on behalf of puml (precise UML group), http://www.cs.york.ac.uk/ puml/ Stuart Kent (primary contact), Computing

More information

Recursively Enumerable Languages, Turing Machines, and Decidability

Recursively Enumerable Languages, Turing Machines, and Decidability Recursively Enumerable Languages, Turing Machines, and Decidability 1 Problem Reduction: Basic Concepts and Analogies The concept of problem reduction is simple at a high level. You simply take an algorithm

More information

Introduction to Axiomatic Semantics (1/2)

Introduction to Axiomatic Semantics (1/2) #1 Introduction to Axiomatic Semantics (1/2) How s The Homework Going? Remember that you can t just define a meaning function in terms of itself you must use some fixed point machinery. #2 #3 Observations

More information

Engineering and Computer Job Fair

Engineering and Computer Job Fair 08- Notation-Formal Rick Adrion Engineering and Computer Job Fair Campus Center on October 1 from 10 am - 3 pm Microsoft, Mitre, GE, FAA and BAE seeking Computer Science students for permanent, summer

More information

Application: Programming Language Semantics

Application: Programming Language Semantics Chapter 8 Application: Programming Language Semantics Prof. Dr. K. Madlener: Specification and Verification in Higher Order Logic 527 Introduction to Programming Language Semantics Programming Language

More information

Example - Booking Office

Example - Booking Office 09 Requirements Readings [jmw90] Wing, J. M., A Specifier's Introduction to Formal Methods, IEEE Computer, September 1990, pp.8--24. [avl00] van Lamsweerde, Axel, Formal Specification: a Roadmap, Future

More information

2.4 The Z Notation. [Reference: M. Spivey: The Z Notation, Prentice Hall] Modellbasierte Softwareentwicklung

2.4 The Z Notation. [Reference: M. Spivey: The Z Notation, Prentice Hall] Modellbasierte Softwareentwicklung Modellbasierte Softwareentwicklung 2.4 The Z Notation [Reference: M. Spivey: The Z Notation, Prentice Hall] Properties of Z Is a very expressive formal language (well-defined syntax and semantics). Based

More information

CONSTRAINT SPECIFICATIONS USING PATTERNS IN OCL

CONSTRAINT SPECIFICATIONS USING PATTERNS IN OCL CONSTRAINT SPECIFICATIONS USING PATTERNS IN OCL Ali Hamie. University of Brighton, Brighton, UK a.a.hamie@brighton.ac.uk ABSTRACT Constraint patterns are very useful for specifying OCL constraints on UML

More information