SlideShare a Scribd company logo
1 of 40
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Prepared by: Sharif Omar Salem – ssalemg@gmail.com
0
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Scientists Quotes
 Problems in software development
 Formal Logic
 Formal Methods
 Why to use FM techniques
 Case studies
 Specification
 Verification
 Overview of programming paradigms
 Formal Methods Tools and Notations
1
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Teaching to unsuspecting youngsters
the effective use of formal methods is
one of the joys of life because it is so
extremely rewarding
(Edgser Dijkstra)
2
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 A more mathematical approach is inevitable.
Professional software development—not the everyday
brand practiced by the public at large—will become
more like a true engineering discipline, applying
mathematical techniques.
I don't know how long this evolution will take, but it will
happen. The basic theory is there, but much work
remains to make it widely applicable.
(Bertrand Meyer, a pioneer of object technology)
3
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Software engineers want to be real engineers. Real
engineers use mathematics.
Formal methods are the mathematics of software
engineering. Therefore, software engineers should
use formal methods.
(Mike Holloway, NASA)
4
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 How to ensure that S is not ambiguous so that it can be correctly
understood by all the people involved?
 How can S be effectively used for inspecting and testing P?
 How can software tools effectively support the analysis of S,
transformation from S to P, and verification of P against S?
S P
Construct
Specification Program
What to do How to do it
5
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Testing
Requirements
analysis
Design
Coding
Formal
Specification
Validation
Verification
Verification
6
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Simulation Testing Verification
Run-time
monitoring
7
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Simulation
 Means constructing a model of an existing system to be studied or a
system to be built and then executing actions allowed in this model.
 The model can be:
 a physical entity (e.g., scale clay model) or
 a computer representation.
Testing
 Is a technique for detecting errors or problems in implemented
software, hardware, or non-computer systems.
 It consists of executing or operating the system to be tested using a
finite set of inputs and then checking to see if the corresponding
outputs or behavior are correct with respect to the specifications.
8
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Verification
 Is the procedure of confirming that software meets its requirement.
In other words it means checking the software with admiration to
the specification.
Real time monitoring
 Apply your final software in a real world input data.
 ( like beta release software)
9
Preparedby:SharifOmarSalem–ssalemg@gmail.com
• Multiple definitions
 Foundation for organized and careful method of thinking that
characterizes reasoned activity.
 The study of reasoning : specifically concerned with whether
something is correct or false.
 Formal logic focuses on the relationship between statements as
opposed to the content of any particular statement.
10
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Either it’s the fuel filter or it’s the fuel pump.
It’s not the fuel filter.
 It’s the fuel pump.
Example 1: Imagine you’re a mechanic and you know
that either the fuel filter is clogged or the fuel pump
is defective. But you just replaced the fuel filter. So
you know the problem must be with the fuel pump.
11
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Major goal of software engineers
 Develop reliable systems………..how?
 Formal Methods
 Mathematical languages, techniques and tools
 Used to specify and verify systems
 Goal: Help engineers construct more reliable systems
 A mean to examine the entire state space of a design (whether
hardware or software)
 Establish a correctness or safety property that is true for all possible
inputs
12
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Formal methods are mathematical techniques for developing
computer-based software and hardware systems.
 In computer science and software engineering, formal methods are
a particular kind of mathematically-based techniques for the
specification, development and verification of software and
hardware systems.
13
Preparedby:SharifOmarSalem–ssalemg@gmail.com
What is formal methods?
Formal methods = Formal Specification (Formal Notation)
+
Refinement
+
Formal Verification (Logical Calculus)
Set theory, logics, algebra, etc.
14
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Past years of the formal methods
 Obscure notation
 Non-scalable techniques
 Inadequate tool support
 Hard to use tools
 Very few case studies
 Not convincing for practitioners
 Nowadays
 Trying to find more rigorous notations
 Model checking and theorem proving complement simulation in
Hardware industry
 More industrial sized case studies
 Researchers try to gaining benefits of using formal methods
 …
15
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Formal methods can be applied at various points through the
development process
 Specification
 Verification
 Specification: Give a description of the system to be developed, and
its properties
 Verification: Prove or disprove the correctness of a system with
respect to the formal specification or property
16
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 The use of formal methods can contribute to the reliability and
robustness of a design.
 However, the high cost of using formal methods means that they are
usually only used in the development of high-integrity systems,
where safety or security is of utmost importance.
 Transport, communications, health and energy are all representative
examples of critical system where errors is not permitted.
 A classic approach to ensuring the adequacy of a software system
is testing or simulation.
 But most of commercial system have a bug report with every release.
 To mention some data, in 2002 the North-American Institute for
Standards and Technologies estimated the cost of bugs in the
American economy to ascend to 59 billion dollars.
17
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 In 1994 an error was discovered in the implementation
of division operations by Pentium processors. Even
though millions of processors had by then been sold,
Intel was forced to exchange (free of charge) all the
units produced .
 Beyond the financial impact, the media emphasized
the loss of confidence shown by Intel users (i.e. the
computer manufacturing industry) that had a much
broader and dramatic effect to the company.
18
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 It is very important to note that formal verification does not obviate
the need for testing and other assertion techniques.
 Formal verification cannot fix bad assumptions in the design, but it
can help identify errors in reasoning which would otherwise be left
unverified.
 In several cases, engineers have reported finding flaws in systems
once they reviewed their designs formally .
 So, Formal Verification if used, it will be used as an additional tools
for assertions and not as a replacement tool.
19
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 The CICS project
 CICS: Customer Information Control System
 The on-line transaction processing system of choice for large IBM
installations
 In the 1980s Oxford Univ. and IBM Hursley Labs formalized parts of
CICS with Z
 There was an overall improvement in the quality of the product
 It is estimated that it reduced 9% of the total development cost
 This work won the Queen’s Award for Technological
 The highest honor that can be bestowed on a UK company.
20
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Intel uses formal verification quite extensively
 Verification of Intel Pentium 4 floating-point unit with a mixture of STE
and theorem proving
 Verification of bus protocols using pure temporal logic model checking
 Verification of microcode and software for many Intel Itanium floating-
point operations, using pure theorem proving
 FV found many high-quality bugs in P4 and verified “20%” of design
 FV is now standard practice in the floating-point domain
21
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Small Aircraft Transportation System (SATS)
 Use of a software system that will sequence aircraft into the SATS
airspace in the absence of an airport controller
 There are serious safety issues associated with these software
systems and their underlying key algorithms
22
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 The criticality of such software systems necessitates that strong
guarantees of the safety be developed for them
 Under the SATS program NASA Langley researchers are currently
investigating rigorous verification of these software system using
formal methods
 Modeling and Verification of Air Traffic
 Conflict Detection and Alerting
 …
23
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Using a language with a mathematically defined syntax and
semantics
 System properties
 Functional behavior
 Timing behavior
 Performance characteristics
 Internal structure
24
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Specification has been most successful for behavioral properties
 A trend is to integrate different specification languages
 Each enable to handle a different aspect of a system
 Some other non-behavioral aspects of a system
 Performance
 Real-time constraints
 Security policies
 Architectural design
25
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Formal methods for specification of the sequential systems
 Z (Spivey 1988)
 Constructive Z (Mirian 1997)
 VDM (Jones 1986)
 Larch (Guttag & Horning 1993)
 States are described in rich math structures (set, relation, function)
 Transition are described in terms of pre- and post- conditions
26
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Formal methods for specification of the concurrent systems
 CSP (Hoare 1985)
 CCS (Milner 1980)
 Statecharts (Harel 1987)
 Temporal Logic (Pnueli 1981)
 I/O Automata (Lynch and Tuttle 1987)
 States range over simple domains, like integers
 Behavior is defined in terms of sequences, trees, partial orders of
events
27
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Two well established approaches to verification
 Model Checking
 Theorem Proving
Model checking
 Build a finite model of system and perform an exhaustive search
Theorem Proving
 Mechanization of a logical proof
28
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Both the system and its desired properties are expressed in some
mathematical logic
 Theorem proving is the process of finding a proof from the axioms
of the system
 It can be roughly classified
 Highly automated programs
 Interactive systems with special purpose capabilities
 In contrast to model checking, it can deal with infinite space
 Relies on techniques like reduction.
29
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Transition System
(Automaton, Kripke structure)
System Description
(VERILOG, VHDL, SMV)
Informal
Specification
Temporal Logic Formula
(CTL, LTL, etc.)
 Build a mathematical graphical model of the system:
 what are possible behaviors?
 Write correctness requirement in a specification language:
 what are desirable behaviors?
 Analysis: (Automatically) check that model satisfies specification
 Analysis is performed by an algorithm (tool)
 Analysis gives counterexamples for debugging
30
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Model checking is completely automatic
 It produces counter examples
 The counter example usually represents subtle error in design
 The main disadvantage : state explosion problem!
31
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Imperative programming
 is a programming paradigm that describes computation in terms of
statements that change a program state.
 Imperative programs define sequences of commands for the computer
to perform. It define how to achieve the system goals.
 The focus is on How (what steps) the computer should take rather
than what the computer will do
 (ex. C, C++, Java).
 Object Oriented Languages counted as advanced leases from the
original languages.
32
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Declarative programming
 is a programming paradigm that expresses the logic of a computation
without describing its control flow.
 It attempts to minimize or eliminate side effects by describing what the
program should accomplish, rather than describing how to go about
accomplishing it.
 The focus is on what the computer should do rather than how it
should do it
 (ex. SQL, ProLog, Z notation).
33
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Functional programming
 is a programming paradigm that treats computation as the evaluation
of mathematical functions and avoids state and mutable data.
 It emphasizes the application of functions.
 Functional programming has its roots in the lambda calculus.
 It is a subset of declarative languages that has heavy focus on
recursion.
 (ex. Lisp, Schema, Haskell).
34
Preparedby:SharifOmarSalem–ssalemg@gmail.com
The following is a sample of some tools and notations using Formal
Methods techniques . Keep in mind that there is many other tools.
 Z Notation: the formal specification notation Z (pronounced "zed"),
useful for describing computer-based systems, is based on Zermelo-
Fraenkel set theory and first order predicate logic.
 Alloy Analyzer: an object modeling notation that is compatible with
development approaches such as UML, and Catalysis, strongly
influenced by the Z specification language.
35
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 VCC: Microsoft Research - VCC is a mechanical verifier for concurrent
C programs. VCC takes a C program, annotated with function
specifications, data invariants, loop invariants, and ghost code, and
tries to prove these annotations correct. If it succeeds, VCC promises
that your program actually meets its specifications.
 JML (Java Modeling Language): a behavioral interface specification
language for Java.
 ESC/Java2 Extended Static Checker for Java tool, using program
verification technology. It attempts to find common run-time errors in
JML-annotated Java programs by static analysis of the program code
and its formal annotations
36
Preparedby:SharifOmarSalem–ssalemg@gmail.com
You can find more information and a list of tools in the following link
 http://formalmethods.wikia.com/wiki/Formal_methods#Individual_nota
tions.2C_methods_and_tools
37
Preparedby:SharifOmarSalem–ssalemg@gmail.com
 Scientists Quotes
 Problems in software development
 Formal Logic
 Formal Methods
 Why to use FM techniques
 Case studies
 Specification
 Verification
 Overview of programming paradigms
 Formal Methods Tools and Notations
38
Preparedby:SharifOmarSalem–ssalemg@gmail.com
Prepared by: Sharif Omar Salem – ssalemg@gmail.com
39

More Related Content

What's hot

Chapter 13 software testing strategies
Chapter 13 software testing strategiesChapter 13 software testing strategies
Chapter 13 software testing strategiesSHREEHARI WADAWADAGI
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineeringPreeti Mishra
 
2- THE CHANGING NATURE OF SOFTWARE.pdf
2- THE CHANGING NATURE OF SOFTWARE.pdf2- THE CHANGING NATURE OF SOFTWARE.pdf
2- THE CHANGING NATURE OF SOFTWARE.pdfbcanawakadalcollege
 
Black Box Testing
Black Box TestingBlack Box Testing
Black Box TestingTestbytes
 
Software Testing Introduction
Software Testing IntroductionSoftware Testing Introduction
Software Testing IntroductionArunKumar5524
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineeringDarshit Metaliya
 
1.1 The nature of software.ppt
1.1 The nature of software.ppt1.1 The nature of software.ppt
1.1 The nature of software.pptJAYAPRIYAR7
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software EngineeringVarsha Ajith
 
Agile Development | Agile Process Models
Agile Development | Agile Process ModelsAgile Development | Agile Process Models
Agile Development | Agile Process ModelsAhsan Rahim
 
Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Drusilla918
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)Er. Shiva K. Shrestha
 
2.8 normal forms gnf & problems
2.8 normal forms   gnf & problems2.8 normal forms   gnf & problems
2.8 normal forms gnf & problemsSampath Kumar S
 
Integration testing
Integration testingIntegration testing
Integration testingqueen jemila
 

What's hot (20)

Chapter 13 software testing strategies
Chapter 13 software testing strategiesChapter 13 software testing strategies
Chapter 13 software testing strategies
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
Software quality
Software qualitySoftware quality
Software quality
 
2- THE CHANGING NATURE OF SOFTWARE.pdf
2- THE CHANGING NATURE OF SOFTWARE.pdf2- THE CHANGING NATURE OF SOFTWARE.pdf
2- THE CHANGING NATURE OF SOFTWARE.pdf
 
Black Box Testing
Black Box TestingBlack Box Testing
Black Box Testing
 
Software Testing Introduction
Software Testing IntroductionSoftware Testing Introduction
Software Testing Introduction
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
 
1.1 The nature of software.ppt
1.1 The nature of software.ppt1.1 The nature of software.ppt
1.1 The nature of software.ppt
 
Functional and non functional
Functional and non functionalFunctional and non functional
Functional and non functional
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software Engineering
 
Software design
Software designSoftware design
Software design
 
Agile Development | Agile Process Models
Agile Development | Agile Process ModelsAgile Development | Agile Process Models
Agile Development | Agile Process Models
 
Black box and white box testing
Black box and white box testingBlack box and white box testing
Black box and white box testing
 
Unit 5
Unit   5Unit   5
Unit 5
 
Software design
Software designSoftware design
Software design
 
Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)
 
Software Reliability
Software ReliabilitySoftware Reliability
Software Reliability
 
2.8 normal forms gnf & problems
2.8 normal forms   gnf & problems2.8 normal forms   gnf & problems
2.8 normal forms gnf & problems
 
Integration testing
Integration testingIntegration testing
Integration testing
 

Similar to #1 formal methods – introduction for software engineering

Emerging engineering issues for building large scale AI systems By Srinivas P...
Emerging engineering issues for building large scale AI systems By Srinivas P...Emerging engineering issues for building large scale AI systems By Srinivas P...
Emerging engineering issues for building large scale AI systems By Srinivas P...Analytics India Magazine
 
Mi0033 software engineering...
Mi0033  software engineering...Mi0033  software engineering...
Mi0033 software engineering...smumbahelp
 
Cyber review-guide
Cyber review-guideCyber review-guide
Cyber review-guideaqazad
 
FROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATION
FROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATIONFROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATION
FROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATIONijseajournal
 
INTERNAL Assign no 207( JAIPUR NATIONAL UNI)
INTERNAL Assign no   207( JAIPUR NATIONAL UNI)INTERNAL Assign no   207( JAIPUR NATIONAL UNI)
INTERNAL Assign no 207( JAIPUR NATIONAL UNI)Partha_bappa
 
Next generation software testing trends
Next generation software testing trendsNext generation software testing trends
Next generation software testing trendsArun Kulkarni
 
Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Iosif Itkin
 
System imolementation(Modern Systems Analysis and Design)
System imolementation(Modern Systems Analysis and Design)System imolementation(Modern Systems Analysis and Design)
System imolementation(Modern Systems Analysis and Design)United International University
 
Bindu Chintalapudi - Software Testing -latest (1)
Bindu Chintalapudi - Software Testing -latest (1)Bindu Chintalapudi - Software Testing -latest (1)
Bindu Chintalapudi - Software Testing -latest (1)bindu chintalapudi
 
Reliable software in a continuous integration/continuous deployment (CI/CD) e...
Reliable software in a continuous integration/continuous deployment (CI/CD) e...Reliable software in a continuous integration/continuous deployment (CI/CD) e...
Reliable software in a continuous integration/continuous deployment (CI/CD) e...Ann Marie Neufelder
 
SE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software EngineeringSE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software EngineeringAmr E. Mohamed
 
se01.ppt
se01.pptse01.ppt
se01.pptxiso
 
Agile Development in Aerospace and Defense
Agile Development in Aerospace and DefenseAgile Development in Aerospace and Defense
Agile Development in Aerospace and DefenseJim Nickel
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringRizwan411667
 
David vernon software_engineering_notes
David vernon software_engineering_notesDavid vernon software_engineering_notes
David vernon software_engineering_notesmitthudwivedi
 
The New Categories of Software Defects in the Era of AI and ML - DevOps Next
The New Categories of Software Defects in the Era of AI and ML - DevOps NextThe New Categories of Software Defects in the Era of AI and ML - DevOps Next
The New Categories of Software Defects in the Era of AI and ML - DevOps NextPerfecto by Perforce
 
computer system validation
computer system validationcomputer system validation
computer system validationGopal Patel
 
Using formal methods in Industrial Software Development
Using formal methods in Industrial Software DevelopmentUsing formal methods in Industrial Software Development
Using formal methods in Industrial Software DevelopmentRobert van Lieshout
 

Similar to #1 formal methods – introduction for software engineering (20)

Emerging engineering issues for building large scale AI systems By Srinivas P...
Emerging engineering issues for building large scale AI systems By Srinivas P...Emerging engineering issues for building large scale AI systems By Srinivas P...
Emerging engineering issues for building large scale AI systems By Srinivas P...
 
Chapter 7_dp-pertemuan_11
 Chapter 7_dp-pertemuan_11 Chapter 7_dp-pertemuan_11
Chapter 7_dp-pertemuan_11
 
Mi0033 software engineering...
Mi0033  software engineering...Mi0033  software engineering...
Mi0033 software engineering...
 
Cyber review-guide
Cyber review-guideCyber review-guide
Cyber review-guide
 
FROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATION
FROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATIONFROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATION
FROM PLM TO ERP : A SOFTWARE SYSTEMS ENGINEERING INTEGRATION
 
INTERNAL Assign no 207( JAIPUR NATIONAL UNI)
INTERNAL Assign no   207( JAIPUR NATIONAL UNI)INTERNAL Assign no   207( JAIPUR NATIONAL UNI)
INTERNAL Assign no 207( JAIPUR NATIONAL UNI)
 
Next generation software testing trends
Next generation software testing trendsNext generation software testing trends
Next generation software testing trends
 
Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4
 
System imolementation(Modern Systems Analysis and Design)
System imolementation(Modern Systems Analysis and Design)System imolementation(Modern Systems Analysis and Design)
System imolementation(Modern Systems Analysis and Design)
 
Bindu Chintalapudi - Software Testing -latest (1)
Bindu Chintalapudi - Software Testing -latest (1)Bindu Chintalapudi - Software Testing -latest (1)
Bindu Chintalapudi - Software Testing -latest (1)
 
Reliable software in a continuous integration/continuous deployment (CI/CD) e...
Reliable software in a continuous integration/continuous deployment (CI/CD) e...Reliable software in a continuous integration/continuous deployment (CI/CD) e...
Reliable software in a continuous integration/continuous deployment (CI/CD) e...
 
SE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software EngineeringSE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software Engineering
 
se01.ppt
se01.pptse01.ppt
se01.ppt
 
Foutse_Khomh.pptx
Foutse_Khomh.pptxFoutse_Khomh.pptx
Foutse_Khomh.pptx
 
Agile Development in Aerospace and Defense
Agile Development in Aerospace and DefenseAgile Development in Aerospace and Defense
Agile Development in Aerospace and Defense
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
David vernon software_engineering_notes
David vernon software_engineering_notesDavid vernon software_engineering_notes
David vernon software_engineering_notes
 
The New Categories of Software Defects in the Era of AI and ML - DevOps Next
The New Categories of Software Defects in the Era of AI and ML - DevOps NextThe New Categories of Software Defects in the Era of AI and ML - DevOps Next
The New Categories of Software Defects in the Era of AI and ML - DevOps Next
 
computer system validation
computer system validationcomputer system validation
computer system validation
 
Using formal methods in Industrial Software Development
Using formal methods in Industrial Software DevelopmentUsing formal methods in Industrial Software Development
Using formal methods in Industrial Software Development
 

More from Sharif Omar Salem

PhD Presentation (Doctorate)
PhD Presentation (Doctorate)PhD Presentation (Doctorate)
PhD Presentation (Doctorate)Sharif Omar Salem
 
#8 formal methods – pro logic
#8 formal methods – pro logic#8 formal methods – pro logic
#8 formal methods – pro logicSharif Omar Salem
 
#7 formal methods – loop proof examples
#7 formal methods – loop proof   examples#7 formal methods – loop proof   examples
#7 formal methods – loop proof examplesSharif Omar Salem
 
#6 formal methods – loop proof using induction method
#6 formal methods – loop proof using induction method#6 formal methods – loop proof using induction method
#6 formal methods – loop proof using induction methodSharif Omar Salem
 
#5 formal methods – hoare logic
#5 formal methods – hoare logic#5 formal methods – hoare logic
#5 formal methods – hoare logicSharif Omar Salem
 
#4 formal methods – predicate logic
#4 formal methods – predicate logic#4 formal methods – predicate logic
#4 formal methods – predicate logicSharif Omar Salem
 
#3 formal methods – propositional logic
#3 formal methods – propositional logic#3 formal methods – propositional logic
#3 formal methods – propositional logicSharif Omar Salem
 
#2 formal methods – principles of logic
#2 formal methods – principles of logic#2 formal methods – principles of logic
#2 formal methods – principles of logicSharif Omar Salem
 

More from Sharif Omar Salem (8)

PhD Presentation (Doctorate)
PhD Presentation (Doctorate)PhD Presentation (Doctorate)
PhD Presentation (Doctorate)
 
#8 formal methods – pro logic
#8 formal methods – pro logic#8 formal methods – pro logic
#8 formal methods – pro logic
 
#7 formal methods – loop proof examples
#7 formal methods – loop proof   examples#7 formal methods – loop proof   examples
#7 formal methods – loop proof examples
 
#6 formal methods – loop proof using induction method
#6 formal methods – loop proof using induction method#6 formal methods – loop proof using induction method
#6 formal methods – loop proof using induction method
 
#5 formal methods – hoare logic
#5 formal methods – hoare logic#5 formal methods – hoare logic
#5 formal methods – hoare logic
 
#4 formal methods – predicate logic
#4 formal methods – predicate logic#4 formal methods – predicate logic
#4 formal methods – predicate logic
 
#3 formal methods – propositional logic
#3 formal methods – propositional logic#3 formal methods – propositional logic
#3 formal methods – propositional logic
 
#2 formal methods – principles of logic
#2 formal methods – principles of logic#2 formal methods – principles of logic
#2 formal methods – principles of logic
 

Recently uploaded

Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Food processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsFood processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsManeerUddin
 
Activity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translationActivity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translationRosabel UA
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Celine George
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfVanessa Camilleri
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 

Recently uploaded (20)

Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Food processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsFood processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture hons
 
Activity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translationActivity 2-unit 2-update 2024. English translation
Activity 2-unit 2-update 2024. English translation
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdf
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Raw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptxRaw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptx
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 

#1 formal methods – introduction for software engineering

  • 2. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Scientists Quotes  Problems in software development  Formal Logic  Formal Methods  Why to use FM techniques  Case studies  Specification  Verification  Overview of programming paradigms  Formal Methods Tools and Notations 1
  • 3. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Teaching to unsuspecting youngsters the effective use of formal methods is one of the joys of life because it is so extremely rewarding (Edgser Dijkstra) 2
  • 4. Preparedby:SharifOmarSalem–ssalemg@gmail.com  A more mathematical approach is inevitable. Professional software development—not the everyday brand practiced by the public at large—will become more like a true engineering discipline, applying mathematical techniques. I don't know how long this evolution will take, but it will happen. The basic theory is there, but much work remains to make it widely applicable. (Bertrand Meyer, a pioneer of object technology) 3
  • 5. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Software engineers want to be real engineers. Real engineers use mathematics. Formal methods are the mathematics of software engineering. Therefore, software engineers should use formal methods. (Mike Holloway, NASA) 4
  • 6. Preparedby:SharifOmarSalem–ssalemg@gmail.com  How to ensure that S is not ambiguous so that it can be correctly understood by all the people involved?  How can S be effectively used for inspecting and testing P?  How can software tools effectively support the analysis of S, transformation from S to P, and verification of P against S? S P Construct Specification Program What to do How to do it 5
  • 9. Preparedby:SharifOmarSalem–ssalemg@gmail.com Simulation  Means constructing a model of an existing system to be studied or a system to be built and then executing actions allowed in this model.  The model can be:  a physical entity (e.g., scale clay model) or  a computer representation. Testing  Is a technique for detecting errors or problems in implemented software, hardware, or non-computer systems.  It consists of executing or operating the system to be tested using a finite set of inputs and then checking to see if the corresponding outputs or behavior are correct with respect to the specifications. 8
  • 10. Preparedby:SharifOmarSalem–ssalemg@gmail.com Verification  Is the procedure of confirming that software meets its requirement. In other words it means checking the software with admiration to the specification. Real time monitoring  Apply your final software in a real world input data.  ( like beta release software) 9
  • 11. Preparedby:SharifOmarSalem–ssalemg@gmail.com • Multiple definitions  Foundation for organized and careful method of thinking that characterizes reasoned activity.  The study of reasoning : specifically concerned with whether something is correct or false.  Formal logic focuses on the relationship between statements as opposed to the content of any particular statement. 10
  • 12. Preparedby:SharifOmarSalem–ssalemg@gmail.com Either it’s the fuel filter or it’s the fuel pump. It’s not the fuel filter.  It’s the fuel pump. Example 1: Imagine you’re a mechanic and you know that either the fuel filter is clogged or the fuel pump is defective. But you just replaced the fuel filter. So you know the problem must be with the fuel pump. 11
  • 13. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Major goal of software engineers  Develop reliable systems………..how?  Formal Methods  Mathematical languages, techniques and tools  Used to specify and verify systems  Goal: Help engineers construct more reliable systems  A mean to examine the entire state space of a design (whether hardware or software)  Establish a correctness or safety property that is true for all possible inputs 12
  • 14. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Formal methods are mathematical techniques for developing computer-based software and hardware systems.  In computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems. 13
  • 15. Preparedby:SharifOmarSalem–ssalemg@gmail.com What is formal methods? Formal methods = Formal Specification (Formal Notation) + Refinement + Formal Verification (Logical Calculus) Set theory, logics, algebra, etc. 14
  • 16. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Past years of the formal methods  Obscure notation  Non-scalable techniques  Inadequate tool support  Hard to use tools  Very few case studies  Not convincing for practitioners  Nowadays  Trying to find more rigorous notations  Model checking and theorem proving complement simulation in Hardware industry  More industrial sized case studies  Researchers try to gaining benefits of using formal methods  … 15
  • 17. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Formal methods can be applied at various points through the development process  Specification  Verification  Specification: Give a description of the system to be developed, and its properties  Verification: Prove or disprove the correctness of a system with respect to the formal specification or property 16
  • 18. Preparedby:SharifOmarSalem–ssalemg@gmail.com  The use of formal methods can contribute to the reliability and robustness of a design.  However, the high cost of using formal methods means that they are usually only used in the development of high-integrity systems, where safety or security is of utmost importance.  Transport, communications, health and energy are all representative examples of critical system where errors is not permitted.  A classic approach to ensuring the adequacy of a software system is testing or simulation.  But most of commercial system have a bug report with every release.  To mention some data, in 2002 the North-American Institute for Standards and Technologies estimated the cost of bugs in the American economy to ascend to 59 billion dollars. 17
  • 19. Preparedby:SharifOmarSalem–ssalemg@gmail.com  In 1994 an error was discovered in the implementation of division operations by Pentium processors. Even though millions of processors had by then been sold, Intel was forced to exchange (free of charge) all the units produced .  Beyond the financial impact, the media emphasized the loss of confidence shown by Intel users (i.e. the computer manufacturing industry) that had a much broader and dramatic effect to the company. 18
  • 20. Preparedby:SharifOmarSalem–ssalemg@gmail.com  It is very important to note that formal verification does not obviate the need for testing and other assertion techniques.  Formal verification cannot fix bad assumptions in the design, but it can help identify errors in reasoning which would otherwise be left unverified.  In several cases, engineers have reported finding flaws in systems once they reviewed their designs formally .  So, Formal Verification if used, it will be used as an additional tools for assertions and not as a replacement tool. 19
  • 21. Preparedby:SharifOmarSalem–ssalemg@gmail.com  The CICS project  CICS: Customer Information Control System  The on-line transaction processing system of choice for large IBM installations  In the 1980s Oxford Univ. and IBM Hursley Labs formalized parts of CICS with Z  There was an overall improvement in the quality of the product  It is estimated that it reduced 9% of the total development cost  This work won the Queen’s Award for Technological  The highest honor that can be bestowed on a UK company. 20
  • 22. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Intel uses formal verification quite extensively  Verification of Intel Pentium 4 floating-point unit with a mixture of STE and theorem proving  Verification of bus protocols using pure temporal logic model checking  Verification of microcode and software for many Intel Itanium floating- point operations, using pure theorem proving  FV found many high-quality bugs in P4 and verified “20%” of design  FV is now standard practice in the floating-point domain 21
  • 23. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Small Aircraft Transportation System (SATS)  Use of a software system that will sequence aircraft into the SATS airspace in the absence of an airport controller  There are serious safety issues associated with these software systems and their underlying key algorithms 22
  • 24. Preparedby:SharifOmarSalem–ssalemg@gmail.com  The criticality of such software systems necessitates that strong guarantees of the safety be developed for them  Under the SATS program NASA Langley researchers are currently investigating rigorous verification of these software system using formal methods  Modeling and Verification of Air Traffic  Conflict Detection and Alerting  … 23
  • 25. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Using a language with a mathematically defined syntax and semantics  System properties  Functional behavior  Timing behavior  Performance characteristics  Internal structure 24
  • 26. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Specification has been most successful for behavioral properties  A trend is to integrate different specification languages  Each enable to handle a different aspect of a system  Some other non-behavioral aspects of a system  Performance  Real-time constraints  Security policies  Architectural design 25
  • 27. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Formal methods for specification of the sequential systems  Z (Spivey 1988)  Constructive Z (Mirian 1997)  VDM (Jones 1986)  Larch (Guttag & Horning 1993)  States are described in rich math structures (set, relation, function)  Transition are described in terms of pre- and post- conditions 26
  • 28. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Formal methods for specification of the concurrent systems  CSP (Hoare 1985)  CCS (Milner 1980)  Statecharts (Harel 1987)  Temporal Logic (Pnueli 1981)  I/O Automata (Lynch and Tuttle 1987)  States range over simple domains, like integers  Behavior is defined in terms of sequences, trees, partial orders of events 27
  • 29. Preparedby:SharifOmarSalem–ssalemg@gmail.com Two well established approaches to verification  Model Checking  Theorem Proving Model checking  Build a finite model of system and perform an exhaustive search Theorem Proving  Mechanization of a logical proof 28
  • 30. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Both the system and its desired properties are expressed in some mathematical logic  Theorem proving is the process of finding a proof from the axioms of the system  It can be roughly classified  Highly automated programs  Interactive systems with special purpose capabilities  In contrast to model checking, it can deal with infinite space  Relies on techniques like reduction. 29
  • 31. Preparedby:SharifOmarSalem–ssalemg@gmail.com Transition System (Automaton, Kripke structure) System Description (VERILOG, VHDL, SMV) Informal Specification Temporal Logic Formula (CTL, LTL, etc.)  Build a mathematical graphical model of the system:  what are possible behaviors?  Write correctness requirement in a specification language:  what are desirable behaviors?  Analysis: (Automatically) check that model satisfies specification  Analysis is performed by an algorithm (tool)  Analysis gives counterexamples for debugging 30
  • 32. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Model checking is completely automatic  It produces counter examples  The counter example usually represents subtle error in design  The main disadvantage : state explosion problem! 31
  • 33. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Imperative programming  is a programming paradigm that describes computation in terms of statements that change a program state.  Imperative programs define sequences of commands for the computer to perform. It define how to achieve the system goals.  The focus is on How (what steps) the computer should take rather than what the computer will do  (ex. C, C++, Java).  Object Oriented Languages counted as advanced leases from the original languages. 32
  • 34. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Declarative programming  is a programming paradigm that expresses the logic of a computation without describing its control flow.  It attempts to minimize or eliminate side effects by describing what the program should accomplish, rather than describing how to go about accomplishing it.  The focus is on what the computer should do rather than how it should do it  (ex. SQL, ProLog, Z notation). 33
  • 35. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Functional programming  is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.  It emphasizes the application of functions.  Functional programming has its roots in the lambda calculus.  It is a subset of declarative languages that has heavy focus on recursion.  (ex. Lisp, Schema, Haskell). 34
  • 36. Preparedby:SharifOmarSalem–ssalemg@gmail.com The following is a sample of some tools and notations using Formal Methods techniques . Keep in mind that there is many other tools.  Z Notation: the formal specification notation Z (pronounced "zed"), useful for describing computer-based systems, is based on Zermelo- Fraenkel set theory and first order predicate logic.  Alloy Analyzer: an object modeling notation that is compatible with development approaches such as UML, and Catalysis, strongly influenced by the Z specification language. 35
  • 37. Preparedby:SharifOmarSalem–ssalemg@gmail.com  VCC: Microsoft Research - VCC is a mechanical verifier for concurrent C programs. VCC takes a C program, annotated with function specifications, data invariants, loop invariants, and ghost code, and tries to prove these annotations correct. If it succeeds, VCC promises that your program actually meets its specifications.  JML (Java Modeling Language): a behavioral interface specification language for Java.  ESC/Java2 Extended Static Checker for Java tool, using program verification technology. It attempts to find common run-time errors in JML-annotated Java programs by static analysis of the program code and its formal annotations 36
  • 38. Preparedby:SharifOmarSalem–ssalemg@gmail.com You can find more information and a list of tools in the following link  http://formalmethods.wikia.com/wiki/Formal_methods#Individual_nota tions.2C_methods_and_tools 37
  • 39. Preparedby:SharifOmarSalem–ssalemg@gmail.com  Scientists Quotes  Problems in software development  Formal Logic  Formal Methods  Why to use FM techniques  Case studies  Specification  Verification  Overview of programming paradigms  Formal Methods Tools and Notations 38