

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
This course provides an insight into formal specification approaches, focusing on z and vdm modeling and specification languages. Students will learn how to construct models of software systems using these techniques and develop mechanisms for specifying, validating, and verifying software systems. Topics covered include predicate logic, modeling with relations and functions, equality and definite description, free types, and validation and verification techniques.
Typology: Exercises
1 / 3
This page cannot be seen from the preview
Don't miss anything!


(Nazir Ahmad Zafar)
Why Formal Specification Approaches?
The increasing confidence, errors finding at final stages of software development, resolution of ambiguities, lake of tool support, etc are some of the issues in using traditional software engineering approaches. For example, it becomes very expensive to remove if the errors are found at the final stages of software development. These problems can be minimized using formal specification approaches at the early stage of development.
What are Formal Approaches?
Formal approaches are software engineering techniques, which provide highest confidence in throughout life cycle of the software development. Formal approaches enable the systems developer to specify, develop, and verify a computer-based system by applying a rigorous, mathematical notation. Use of formal specification languages provides a means of specifying the system so that consistency, completeness and correctness can be assessed in a systematic way. Formal specification and refinement of systems can be extended towards implementation. Formal methods can be integrated with existing programming languages, and can be applied to requirements analysis, testing, safety analysis, and object-oriented approaches.
Z and VDM: Modeling and Specification Languages
More than 90 specification languages with tool support are in use today. The Vienna Development Method and Z notation are most commonly used, which will be studied in this course. Z is a set of conventions for presenting mathematical text, chosen to make it convenient to use simple mathematics to describe computing systems. In Z usually we model a system by representing its state a collection of state variables, and some operations that can change its state. A model that is characterized by the operations it describes is called an abstract data type.
This Course
This course will provide an insight into established techniques and will help developers to overcome the complexity of software development by constructing models of software systems in real design stages. It will also provide formal mechanisms for specifying, validating and verifying software systems. Students will be able to develop a mechanism for detecting and eliminating many problems arising from ambiguity, incompleteness and inconsistencies in the early stage of systems development. Further students will understand meaning of Software Engineering and will be able to specify the requirements in Z and VDM. Also they will know using VDM toolbox and Z Eves tools for the validation and verification of systems. At the end of the day students will find a relationship between VDM and Z which will be one step forward in understanding systems development using integrated approaches.
Introduction to Formal Specification Approaches: Software Engineering Approaches, Introduction to Formal Approaches: Z, VDM-SL, Petri-nets, etc., Software Development Process Using Formal Approaches, etc.
Predicate Logic in Z notation: Propositional Logic, Logical Connectives in Z, Predicate Calculus, Quantifiers, Substitution, Universal Introduction and Elimination, Existential Introduction and Elimination, Satisfactions, Validity, etc.
Modeling using Crisp Theory and Possible Operators with Syntax in Z Notation: Memberships and Extensions, Comprehension, Cartesian Products, Crisp Operators, Types,
Modeling with Relations, Functions, Relations, Relational Inverse, Relational Composition, Closures, Partial Functions, Lambda Notations, Functions on Relations, Overriding, Properties, Notations,
Sequences and Bags: Sequences Models, Functions on Sequences, Structural Induction, Bags, etc.
Equality and Definite Description : Equality, The one-point rule, Uniqueness and quantity, Definite description,
Free Types: Free Type Definitions, Proof by Induction, Primitive Induction, Consistency,
Definitions Mechanism in Z : Declarations, Abbreviations, Generic abbreviations, Axiomatic definitions, Generic definitions, predicates,
Schemas : Schema, Schema as Type, Schema as Declaration, Schema as Predicates, Renaming, Generic Schemas,
Schemas Operators: Conjunction, Decoration, Disjunction, Quantification and Hiding, Composition,
Modeling using Basic Types: The Elements of Formal Model, Union and Basic Types, Basic Constructors, Record Types, Invariants,
Modeling with Functions and Relations : Explicit Functions, Implicit Functions, Constructor, Modeling with Sets, Distributed Operators,
Modeling with Sequences: Sequences in VDM, The Sequence Type Constructor, Defining Sequences, Modeling with Sequences, , Further Operators on Sequences,
Functional Refinement: Level of Abstraction, Recursive Data Structures, Mappings, Mapping Type Constructor, Defining Mappings, Modeling with Mappings,
Validation and Verification Techniques: Validating and Verifying Models, Internal Consistency, Completeness, Visualization of a Model, Systematic Testing, Choosing a Validation Techniques,
Defining Relationships Between Z and VDM: One to One mapping of Basic Data Types in Z to VDM, Schemas in Z and Possible Structures in VDM, Operations over Schemas in Z with Operations over Records in VDM,