Towards Domain Refinement for UML/OCL Bounded Verification

R
Towards Domain Refinement for
UML/OCL Bounded Verification
Robert Clarisó
Universitat Oberta de Catalunya - Spain
Carlos A. González
AtlanMod team - Inria, Mines Nantes, LINA - France
Jordi Cabot
ICREA - Spain
13th Int. Conf on SW Enginerering and Formal Methods
8-11 September 2015, York, UK
Motivation
Who? The reader
What?
Where?
Find Wally
Inside the page
Motivation
Who? The reader
What?
Where?
Find Wally
Inside the page
Motivation
Who? A solver
What?
Where?
Find faults
In a bounded
state space
1. Bounded verification
2. Related work
Outline
2. Related work
3. Solution: refinement
4. Experimental results
5. Conclusions
Model M
Model-Based Verification
A B
C
Consistent
No contradictions
A
1
2
Property P
UML
Class diagram
Non-redundant
Lack of duplicities
A B
C
context C inv:
self.a->
excludes(self)
OCL
Invariants
Does model M satisfy correctness property P?
VERIFICATION TOOL
Model-based verification: overview
?
Model
A B
C
Correctness
Formal Notation
SAT / CP
?Correctness
Property
Finite
Bounds
Designer
Feedback
Example or ?
Counterexample or ?
Reasoning Engine
Bound selection
Choose “suitable” verification
bounds for the solver
Goal
CONFIDENCE
EFFICIENCY
BOUNDSSmall Large
Fast Slow
Less More
Bound selection: heuristics
Small bounds are sufficient to
detect most faults
Small scope hypothesis
Repeat analysis progressively
increasing bounds
Incremental scoping
Our approach: bound refinement
VERIFICATION TOOL
Model
A B
C Formal Notation
SAT / CP
Correctness
Property
Finite
Bounds
Reasoning Engine
Feedback
Example or ?
Countexample or ?
Our approach: bound refinement
VERIFICATION TOOL
Model
A B
C Formal Notation
SAT / CP
Correctness
Property
Finite
Bounds
Reasoning Engine
Tighter
boundsBound
refinement
Feedback
Example or ?
Countexample or ?
Related work
Abstract size-related info to
reason about size properties
Size abstraction
Bound propagation
Yu et al (FSE’2007)
CP solvers e.g.
Remove improductive values
from verification bounds
CP solvers e.g.
Interval Constraint Solver in eCLiPSe
This work:
Size abstraction + Bound propagation
Size properties CP solvers
Arbitrary SAT
Running example: production facility
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Property : Strong satisfiability
“It should be possible to populate of each non-abstract class
while satisfying all integrity constraints”
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Running example: size abstraction
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Multiplicities
“4 Parts per Machine”
Generalizations
“All Cutters are
Machines”
Invariants
“There is at least one Grinder ”
Size abstraction for OCL
OCL Expression Abstract OCL Expression
Refers to the values in
an instance of the model
Refers to the size of the
model instance
OCL expression Abstraction
col->including( object ) Col <= Exp <= Col + 1
col->exists( var | cond ) (0 <= Exp <= 1) ∧
(Col = 0) -> (Exp = 0)
V = { x ∈ [0,5], y ∈ [0,7] }
C = { x + y = 7, x + 1 ≥ 2y }
y
(x ≤ 5) ∧ (x + 1 ≥ 2y)
Integer Bound Propagation
xz
=> y ≤ 3
(x ≤ 5) ∧ (x + y = 7)
=> y ≥ 2
(y ≤ 3) ∧ (x + y = 7)
=> x ≥ 4
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (1/4)
Domain bounds Source
Machine
Cutter
Grinder
Part
Uses
Serial
Number of objects of type Machine
Number of objects of type Cutter
Number of objects of type Grinder
Number of objects of type Part
Number of links in association Uses
Number of distinct values of attribute Serial
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (1/4)
Domain bounds Source
Machine
Cutter
Grinder
Part
Uses
Serial
Number of objects of type Machine
Number of objects of type Cutter
Number of objects of type Grinder
Number of objects of type Part
Number of links in association Uses
Number of distinct values of attribute Serial
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
Constraint Source
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (2/4)
Constraint Source
Machine = Cutter + Grinder
Uses ≤ Part * Machine
Uses = 4 * Machine
Uses ≤ Part
Part ≤ Serial
Cutter ≥ 1
Grinder ≥ 1
Generalization + Abstract class
Associaton Uses
Association end pieces
Association end device
Invariant UniqueSerials
Invariant MachineAvailability
Invariant MachineAvailability
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (3/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (3/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[2, ∞)
[1, ∞)
[1, ∞)
[8, ∞)
[8, ∞)
[8, ∞)
Inferred
bounds
with no
user input
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (4/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, 10]
[2, 2]
[1, 1]
[1, 1]
[8, 8]
[8, 8]
[8, 8]
context Part inv UniqueSerials :
Part::allInstances()->isUnique(serial)
context Machine inv MachineAvailability :
Cutter::allInstances()->exists(c|c:idle) and
Grinder::allInstances()->exists(g|g:idle)
Refinement (4/4)
Domain bounds Initial Bound Inferred Bound
Machine
Cutter
Grinder
Part
Uses
Serial
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, ∞)
[0, 10]
[2, 2]
[1, 1]
[1, 1]
[8, 8]
[8, 8]
[8, 8]
One choice
is sufficient
to bind the
state space
Designer
UML Model
A B
C
Domain Bounds
X = [1,20], Y = [2, 15], ...
Experimental set-up
KodKod Model Finder
Sat4j SAT Solver
UML-based Specification
Environment (USE)
Designer
Domain Bounds
X = [1,20], Y = [2, 15], ...
UML Model
A B
C
Bound refinement
Experimental set-up
KodKod Model Finder
Sat4j SAT Solver
Bound refinement
UML-based Specification
Environment (USE)
Experimental results: Summary (1/2)
Lightly
constrained
(“Easy”)
Satisfiable Unsatisfiable
–
Seconds Seconds
(“Easy”)
Highly
constrained
(“Hard”)
Difficulty +–
+
Minutes Hours
Experimental results: Summary (1/2)
Lightly
constrained
(“Easy”)
Satisfiable Unsatisfiable
No improvement No improvement
(“Easy”)
Highly
constrained
(“Hard”)
Speed-ups from
1,7x to 11x
Speed-ups from
2x to 50x
Overhead of bound tightening: <1 second
Conclusions… in 140 chars
Quick preprocessing to
make SAT-based verification
faster and more usable
Target: UML/OCL
Up to 50x speed-up
TODO: further experiments
Tweet0
Thank you for
your attention!
Robert Clarisó
rclariso@uoc.edu
@robertclariso
1 of 33

Recommended

JavaScript ES10 and React Js Introduction by
JavaScript ES10 and React Js IntroductionJavaScript ES10 and React Js Introduction
JavaScript ES10 and React Js IntroductionAmanpreet Singh
421 views25 slides
A Spin-off: CryEngine 3 SDK Checked with CppCat by
A Spin-off: CryEngine 3 SDK Checked with CppCatA Spin-off: CryEngine 3 SDK Checked with CppCat
A Spin-off: CryEngine 3 SDK Checked with CppCatAndrey Karpov
695 views13 slides
C++17 introduction - Meetup @EtixLabs by
C++17 introduction - Meetup @EtixLabsC++17 introduction - Meetup @EtixLabs
C++17 introduction - Meetup @EtixLabsStephane Gleizes
349 views18 slides
Fun with Lambdas: C++14 Style (part 1) by
Fun with Lambdas: C++14 Style (part 1)Fun with Lambdas: C++14 Style (part 1)
Fun with Lambdas: C++14 Style (part 1)Sumant Tambe
6.7K views46 slides
Fun with Lambdas: C++14 Style (part 2) by
Fun with Lambdas: C++14 Style (part 2)Fun with Lambdas: C++14 Style (part 2)
Fun with Lambdas: C++14 Style (part 2)Sumant Tambe
51.6K views30 slides
Lambda Expressions in C++ by
Lambda Expressions in C++Lambda Expressions in C++
Lambda Expressions in C++Patrick Viafore
615 views19 slides

More Related Content

What's hot

Generic programming and concepts that should be in C++ by
Generic programming and concepts that should be in C++Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++Anton Kolotaev
1.9K views33 slides
The present and the future of functional programming in c++ by
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++Alexander Granin
343 views125 slides
Monadic parsers in C++ by
Monadic parsers in C++Monadic parsers in C++
Monadic parsers in C++Alexander Granin
579 views58 slides
Functions by
FunctionsFunctions
FunctionsKamal Acharya
850 views13 slides
The Vanishing Pattern: from iterators to generators in Python by
The Vanishing Pattern: from iterators to generators in PythonThe Vanishing Pattern: from iterators to generators in Python
The Vanishing Pattern: from iterators to generators in PythonOSCON Byrum
4.4K views101 slides
Anomalies in X-Ray Engine by
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray EnginePVS-Studio
50 views25 slides

What's hot(20)

Generic programming and concepts that should be in C++ by Anton Kolotaev
Generic programming and concepts that should be in C++Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++
Anton Kolotaev1.9K views
The present and the future of functional programming in c++ by Alexander Granin
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++
Alexander Granin343 views
The Vanishing Pattern: from iterators to generators in Python by OSCON Byrum
The Vanishing Pattern: from iterators to generators in PythonThe Vanishing Pattern: from iterators to generators in Python
The Vanishing Pattern: from iterators to generators in Python
OSCON Byrum4.4K views
Anomalies in X-Ray Engine by PVS-Studio
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray Engine
PVS-Studio50 views
Operator Overloading & Type Conversions by Rokonuzzaman Rony
Operator Overloading & Type ConversionsOperator Overloading & Type Conversions
Operator Overloading & Type Conversions
Rokonuzzaman Rony1.4K views
PVS-Studio vs Chromium - Continuation by PVS-Studio
PVS-Studio vs Chromium - ContinuationPVS-Studio vs Chromium - Continuation
PVS-Studio vs Chromium - Continuation
PVS-Studio220 views
Hot C++: New Style of Arguments Passing by Andrey Upadyshev
Hot C++: New Style of Arguments PassingHot C++: New Style of Arguments Passing
Hot C++: New Style of Arguments Passing
Andrey Upadyshev2.1K views
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ... by Andrey Upadyshev
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
[OLD VERSION, SEE DESCRIPTION FOR THE NEWER VERSION LINK] Hot С++: Universal ...
Andrey Upadyshev3.4K views
C++ 11 Features by Jan Rüegg
C++ 11 FeaturesC++ 11 Features
C++ 11 Features
Jan Rüegg2.6K views
Gremlin's Graph Traversal Machinery by Marko Rodriguez
Gremlin's Graph Traversal MachineryGremlin's Graph Traversal Machinery
Gremlin's Graph Traversal Machinery
Marko Rodriguez8.3K views
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by... by PVS-Studio
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...
PVS-Studio368 views
Library functions in c++ by Neeru Mittal
Library functions in c++Library functions in c++
Library functions in c++
Neeru Mittal1.6K views
The Ring programming language version 1.5.2 book - Part 175 of 181 by Mahmoud Samir Fayed
The Ring programming language version 1.5.2 book - Part 175 of 181The Ring programming language version 1.5.2 book - Part 175 of 181
The Ring programming language version 1.5.2 book - Part 175 of 181

Viewers also liked

Información Máster Universitario de Ingeniería Informática UOC by
Información Máster Universitario de Ingeniería Informática UOCInformación Máster Universitario de Ingeniería Informática UOC
Información Máster Universitario de Ingeniería Informática UOCrclariso
968 views19 slides
Secudrive usb-office-slide1-setup-jp by
Secudrive usb-office-slide1-setup-jpSecudrive usb-office-slide1-setup-jp
Secudrive usb-office-slide1-setup-jpsecudrive1
4.3K views26 slides
Secudrive usb-office-slide4-capture-jp by
Secudrive usb-office-slide4-capture-jpSecudrive usb-office-slide4-capture-jp
Secudrive usb-office-slide4-capture-jpsecudrive1
4.3K views4 slides
Anurag by
AnuragAnurag
AnuragAnurag Kumar
211 views4 slides
NrgEdge® Build Your Profile Today! by
NrgEdge® Build Your Profile Today!NrgEdge® Build Your Profile Today!
NrgEdge® Build Your Profile Today!NrgEdge
556 views24 slides
Mike Brubaker Receives "Essence of Humanity" Award by
Mike Brubaker Receives "Essence of Humanity" AwardMike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker Receives "Essence of Humanity" AwardMike Brubaker
3.2K views5 slides

Viewers also liked(13)

Información Máster Universitario de Ingeniería Informática UOC by rclariso
Información Máster Universitario de Ingeniería Informática UOCInformación Máster Universitario de Ingeniería Informática UOC
Información Máster Universitario de Ingeniería Informática UOC
rclariso968 views
Secudrive usb-office-slide1-setup-jp by secudrive1
Secudrive usb-office-slide1-setup-jpSecudrive usb-office-slide1-setup-jp
Secudrive usb-office-slide1-setup-jp
secudrive14.3K views
Secudrive usb-office-slide4-capture-jp by secudrive1
Secudrive usb-office-slide4-capture-jpSecudrive usb-office-slide4-capture-jp
Secudrive usb-office-slide4-capture-jp
secudrive14.3K views
NrgEdge® Build Your Profile Today! by NrgEdge
NrgEdge® Build Your Profile Today!NrgEdge® Build Your Profile Today!
NrgEdge® Build Your Profile Today!
NrgEdge556 views
Mike Brubaker Receives "Essence of Humanity" Award by Mike Brubaker
Mike Brubaker Receives "Essence of Humanity" AwardMike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker Receives "Essence of Humanity" Award
Mike Brubaker3.2K views
How To: Creating Your Career Passport by NrgEdge
How To: Creating Your Career PassportHow To: Creating Your Career Passport
How To: Creating Your Career Passport
NrgEdge335 views
How to calculate the value of UX with standard financial models by Aaron Powers
How to calculate the value of UX with standard financial modelsHow to calculate the value of UX with standard financial models
How to calculate the value of UX with standard financial models
Aaron Powers1.2K views
William Maschinot-Resume-Process Engineer by William Maschinot
William Maschinot-Resume-Process EngineerWilliam Maschinot-Resume-Process Engineer
William Maschinot-Resume-Process Engineer
William Maschinot561 views
From Enterprise IA To Enterprise UX by jason hobbs
From Enterprise IA To Enterprise UXFrom Enterprise IA To Enterprise UX
From Enterprise IA To Enterprise UX
jason hobbs1.5K views
water conservation by Raj Kumar
water conservationwater conservation
water conservation
Raj Kumar163 views
難得的照片 by honan4108
難得的照片難得的照片
難得的照片
honan4108718 views

Similar to Towards Domain Refinement for UML/OCL Bounded Verification

Efficient Model Partitioning for Distributed Model Transformations by
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsAmine Benelallam
567 views36 slides
CodeChecker summary 21062021 by
CodeChecker summary 21062021CodeChecker summary 21062021
CodeChecker summary 21062021Olivera Milenkovic
277 views22 slides
Advanced Digital Design With The Verilog HDL by
Advanced Digital Design With The Verilog HDLAdvanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDLTony Lisko
5 views122 slides
Александр Зимин (Alexander Zimin) — Магия Swift by
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftCocoaHeads
652 views55 slides
Cocoaheads Meetup / Alex Zimin / Swift magic by
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicBadoo Development
6.7K views55 slides
Functional programming for production quality code by
Functional programming for production quality codeFunctional programming for production quality code
Functional programming for production quality codeJack Fox
1.5K views37 slides

Similar to Towards Domain Refinement for UML/OCL Bounded Verification(20)

Efficient Model Partitioning for Distributed Model Transformations by Amine Benelallam
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model Transformations
Amine Benelallam567 views
Advanced Digital Design With The Verilog HDL by Tony Lisko
Advanced Digital Design With The Verilog HDLAdvanced Digital Design With The Verilog HDL
Advanced Digital Design With The Verilog HDL
Tony Lisko5 views
Александр Зимин (Alexander Zimin) — Магия Swift by CocoaHeads
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия Swift
CocoaHeads652 views
Cocoaheads Meetup / Alex Zimin / Swift magic by Badoo Development
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
Badoo Development6.7K views
Functional programming for production quality code by Jack Fox
Functional programming for production quality codeFunctional programming for production quality code
Functional programming for production quality code
Jack Fox1.5K views
Search-Based Robustness Testing of Data Processing Systems by Lionel Briand
Search-Based Robustness Testing of Data Processing SystemsSearch-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing Systems
Lionel Briand485 views
Functional programming-advantages by Sergei Winitzki
Functional programming-advantagesFunctional programming-advantages
Functional programming-advantages
Sergei Winitzki127 views
A Brief Conceptual Introduction to Functional Java 8 and its API by Jörn Guy Süß JGS
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
Cleaner Code: How Clean Code is Functional Code by Dave Fancher
Cleaner Code: How Clean Code is Functional CodeCleaner Code: How Clean Code is Functional Code
Cleaner Code: How Clean Code is Functional Code
Dave Fancher131 views
The Swift Compiler and Standard Library by Santosh Rajan
The Swift Compiler and Standard LibraryThe Swift Compiler and Standard Library
The Swift Compiler and Standard Library
Santosh Rajan10.4K views
The Goal and The Journey - Turning back on one year of C++14 Migration by Joel Falcou
The Goal and The Journey - Turning back on one year of C++14 MigrationThe Goal and The Journey - Turning back on one year of C++14 Migration
The Goal and The Journey - Turning back on one year of C++14 Migration
Joel Falcou1.1K views
The operation principles of PVS-Studio static code analyzer by Andrey Karpov
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
Andrey Karpov624 views
Functional Programming Patterns for the Pragmatic Programmer by Raúl Raja Martínez
Functional Programming Patterns for the Pragmatic ProgrammerFunctional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic Programmer
M11 operator overloading and type conversion by NabeelaNousheen
M11 operator overloading and type conversionM11 operator overloading and type conversion
M11 operator overloading and type conversion
NabeelaNousheen59 views
Steffen Rendle, Research Scientist, Google at MLconf SF by MLconf
Steffen Rendle, Research Scientist, Google at MLconf SFSteffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SF
MLconf990 views
Steffen Rendle, Research Scientist, Google at MLconf SF by MLconf
Steffen Rendle, Research Scientist, Google at MLconf SFSteffen Rendle, Research Scientist, Google at MLconf SF
Steffen Rendle, Research Scientist, Google at MLconf SF
MLconf7.3K views

More from rclariso

Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020] by
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]rclariso
392 views14 slides
Informació Màster Universitari d'Enginyeria Informàtica UOC by
Informació Màster Universitari d'Enginyeria Informàtica UOCInformació Màster Universitari d'Enginyeria Informàtica UOC
Informació Màster Universitari d'Enginyeria Informàtica UOCrclariso
634 views19 slides
Máster Universitario en Ingeniería Informática de la UOC by
Máster Universitario en Ingeniería Informática de la UOCMáster Universitario en Ingeniería Informática de la UOC
Máster Universitario en Ingeniería Informática de la UOCrclariso
1.3K views28 slides
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ... by
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...rclariso
606 views38 slides
Orientacions generals per al Treball Final a la UOC by
Orientacions generals per al Treball Final a la UOCOrientacions generals per al Treball Final a la UOC
Orientacions generals per al Treball Final a la UOCrclariso
2.8K views19 slides
Orientaciones Generales para el Trabajo Final en la UOC by
Orientaciones Generales para el Trabajo Final en la UOCOrientaciones Generales para el Trabajo Final en la UOC
Orientaciones Generales para el Trabajo Final en la UOCrclariso
3.9K views19 slides

More from rclariso(7)

Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020] by rclariso
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
Participation Inequality and the 90-9-1 Principle in Open Source [OpenSym'2020]
rclariso392 views
Informació Màster Universitari d'Enginyeria Informàtica UOC by rclariso
Informació Màster Universitari d'Enginyeria Informàtica UOCInformació Màster Universitari d'Enginyeria Informàtica UOC
Informació Màster Universitari d'Enginyeria Informàtica UOC
rclariso634 views
Máster Universitario en Ingeniería Informática de la UOC by rclariso
Máster Universitario en Ingeniería Informática de la UOCMáster Universitario en Ingeniería Informática de la UOC
Máster Universitario en Ingeniería Informática de la UOC
rclariso1.3K views
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ... by rclariso
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
Sessió informativa dels Màsters d'Enginyeria Informàtica i Programari Lliure ...
rclariso606 views
Orientacions generals per al Treball Final a la UOC by rclariso
Orientacions generals per al Treball Final a la UOCOrientacions generals per al Treball Final a la UOC
Orientacions generals per al Treball Final a la UOC
rclariso2.8K views
Orientaciones Generales para el Trabajo Final en la UOC by rclariso
Orientaciones Generales para el Trabajo Final en la UOCOrientaciones Generales para el Trabajo Final en la UOC
Orientaciones Generales para el Trabajo Final en la UOC
rclariso3.9K views
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC by rclariso
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOCMásters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
Másters en los Estudios de Informática, Multimedia y Telecomunicación de la UOC
rclariso802 views

Recently uploaded

Bootstrapping vs Venture Capital.pptx by
Bootstrapping vs Venture Capital.pptxBootstrapping vs Venture Capital.pptx
Bootstrapping vs Venture Capital.pptxZeljko Svedic
14 views17 slides
Playwright Retries by
Playwright RetriesPlaywright Retries
Playwright Retriesartembondar5
5 views1 slide
predicting-m3-devopsconMunich-2023.pptx by
predicting-m3-devopsconMunich-2023.pptxpredicting-m3-devopsconMunich-2023.pptx
predicting-m3-devopsconMunich-2023.pptxTier1 app
7 views24 slides
The Path to DevOps by
The Path to DevOpsThe Path to DevOps
The Path to DevOpsJohn Valentino
5 views6 slides
Top-5-production-devconMunich-2023-v2.pptx by
Top-5-production-devconMunich-2023-v2.pptxTop-5-production-devconMunich-2023-v2.pptx
Top-5-production-devconMunich-2023-v2.pptxTier1 app
6 views42 slides
Introduction to Maven by
Introduction to MavenIntroduction to Maven
Introduction to MavenJohn Valentino
6 views10 slides

Recently uploaded(20)

Bootstrapping vs Venture Capital.pptx by Zeljko Svedic
Bootstrapping vs Venture Capital.pptxBootstrapping vs Venture Capital.pptx
Bootstrapping vs Venture Capital.pptx
Zeljko Svedic14 views
predicting-m3-devopsconMunich-2023.pptx by Tier1 app
predicting-m3-devopsconMunich-2023.pptxpredicting-m3-devopsconMunich-2023.pptx
predicting-m3-devopsconMunich-2023.pptx
Tier1 app7 views
Top-5-production-devconMunich-2023-v2.pptx by Tier1 app
Top-5-production-devconMunich-2023-v2.pptxTop-5-production-devconMunich-2023-v2.pptx
Top-5-production-devconMunich-2023-v2.pptx
Tier1 app6 views
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium... by Lisi Hocke
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Lisi Hocke35 views
Top-5-production-devconMunich-2023.pptx by Tier1 app
Top-5-production-devconMunich-2023.pptxTop-5-production-devconMunich-2023.pptx
Top-5-production-devconMunich-2023.pptx
Tier1 app8 views
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... by TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin96 views
ADDO_2022_CICID_Tom_Halpin.pdf by TomHalpin9
ADDO_2022_CICID_Tom_Halpin.pdfADDO_2022_CICID_Tom_Halpin.pdf
ADDO_2022_CICID_Tom_Halpin.pdf
TomHalpin95 views
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P... by NimaTorabi2
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
NimaTorabi215 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok15 views
JioEngage_Presentation.pptx by admin125455
JioEngage_Presentation.pptxJioEngage_Presentation.pptx
JioEngage_Presentation.pptx
admin1254556 views
Electronic AWB - Electronic Air Waybill by Freightoscope
Electronic AWB - Electronic Air Waybill Electronic AWB - Electronic Air Waybill
Electronic AWB - Electronic Air Waybill
Freightoscope 5 views
DRYiCE™ iAutomate: AI-enhanced Intelligent Runbook Automation by HCLSoftware
DRYiCE™ iAutomate: AI-enhanced Intelligent Runbook AutomationDRYiCE™ iAutomate: AI-enhanced Intelligent Runbook Automation
DRYiCE™ iAutomate: AI-enhanced Intelligent Runbook Automation
HCLSoftware6 views
Generic or specific? Making sensible software design decisions by Bert Jan Schrijver
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
Dapr Unleashed: Accelerating Microservice Development by Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski12 views

Towards Domain Refinement for UML/OCL Bounded Verification

  • 1. Towards Domain Refinement for UML/OCL Bounded Verification Robert Clarisó Universitat Oberta de Catalunya - Spain Carlos A. González AtlanMod team - Inria, Mines Nantes, LINA - France Jordi Cabot ICREA - Spain 13th Int. Conf on SW Enginerering and Formal Methods 8-11 September 2015, York, UK
  • 4. Motivation Who? A solver What? Where? Find faults In a bounded state space
  • 5. 1. Bounded verification 2. Related work Outline 2. Related work 3. Solution: refinement 4. Experimental results 5. Conclusions
  • 6. Model M Model-Based Verification A B C Consistent No contradictions A 1 2 Property P UML Class diagram Non-redundant Lack of duplicities A B C context C inv: self.a-> excludes(self) OCL Invariants Does model M satisfy correctness property P?
  • 7. VERIFICATION TOOL Model-based verification: overview ? Model A B C Correctness Formal Notation SAT / CP ?Correctness Property Finite Bounds Designer Feedback Example or ? Counterexample or ? Reasoning Engine
  • 8. Bound selection Choose “suitable” verification bounds for the solver Goal CONFIDENCE EFFICIENCY BOUNDSSmall Large Fast Slow Less More
  • 9. Bound selection: heuristics Small bounds are sufficient to detect most faults Small scope hypothesis Repeat analysis progressively increasing bounds Incremental scoping
  • 10. Our approach: bound refinement VERIFICATION TOOL Model A B C Formal Notation SAT / CP Correctness Property Finite Bounds Reasoning Engine Feedback Example or ? Countexample or ?
  • 11. Our approach: bound refinement VERIFICATION TOOL Model A B C Formal Notation SAT / CP Correctness Property Finite Bounds Reasoning Engine Tighter boundsBound refinement Feedback Example or ? Countexample or ?
  • 12. Related work Abstract size-related info to reason about size properties Size abstraction Bound propagation Yu et al (FSE’2007) CP solvers e.g. Remove improductive values from verification bounds CP solvers e.g. Interval Constraint Solver in eCLiPSe This work: Size abstraction + Bound propagation Size properties CP solvers Arbitrary SAT
  • 13. Running example: production facility context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability :context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Property : Strong satisfiability “It should be possible to populate of each non-abstract class while satisfying all integrity constraints”
  • 14. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Running example: size abstraction context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Multiplicities “4 Parts per Machine” Generalizations “All Cutters are Machines” Invariants “There is at least one Grinder ”
  • 15. Size abstraction for OCL OCL Expression Abstract OCL Expression Refers to the values in an instance of the model Refers to the size of the model instance OCL expression Abstraction col->including( object ) Col <= Exp <= Col + 1 col->exists( var | cond ) (0 <= Exp <= 1) ∧ (Col = 0) -> (Exp = 0)
  • 16. V = { x ∈ [0,5], y ∈ [0,7] } C = { x + y = 7, x + 1 ≥ 2y } y (x ≤ 5) ∧ (x + 1 ≥ 2y) Integer Bound Propagation xz => y ≤ 3 (x ≤ 5) ∧ (x + y = 7) => y ≥ 2 (y ≤ 3) ∧ (x + y = 7) => x ≥ 4
  • 17. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (1/4) Domain bounds Source Machine Cutter Grinder Part Uses Serial Number of objects of type Machine Number of objects of type Cutter Number of objects of type Grinder Number of objects of type Part Number of links in association Uses Number of distinct values of attribute Serial
  • 18. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (1/4) Domain bounds Source Machine Cutter Grinder Part Uses Serial Number of objects of type Machine Number of objects of type Cutter Number of objects of type Grinder Number of objects of type Part Number of links in association Uses Number of distinct values of attribute Serial
  • 19. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 20. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 21. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 22. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 23. Constraint Source context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (2/4) Constraint Source Machine = Cutter + Grinder Uses ≤ Part * Machine Uses = 4 * Machine Uses ≤ Part Part ≤ Serial Cutter ≥ 1 Grinder ≥ 1 Generalization + Abstract class Associaton Uses Association end pieces Association end device Invariant UniqueSerials Invariant MachineAvailability Invariant MachineAvailability
  • 24. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (3/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞)
  • 25. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (3/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [2, ∞) [1, ∞) [1, ∞) [8, ∞) [8, ∞) [8, ∞) Inferred bounds with no user input
  • 26. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (4/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, 10] [2, 2] [1, 1] [1, 1] [8, 8] [8, 8] [8, 8]
  • 27. context Part inv UniqueSerials : Part::allInstances()->isUnique(serial) context Machine inv MachineAvailability : Cutter::allInstances()->exists(c|c:idle) and Grinder::allInstances()->exists(g|g:idle) Refinement (4/4) Domain bounds Initial Bound Inferred Bound Machine Cutter Grinder Part Uses Serial [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, ∞) [0, 10] [2, 2] [1, 1] [1, 1] [8, 8] [8, 8] [8, 8] One choice is sufficient to bind the state space
  • 28. Designer UML Model A B C Domain Bounds X = [1,20], Y = [2, 15], ... Experimental set-up KodKod Model Finder Sat4j SAT Solver UML-based Specification Environment (USE)
  • 29. Designer Domain Bounds X = [1,20], Y = [2, 15], ... UML Model A B C Bound refinement Experimental set-up KodKod Model Finder Sat4j SAT Solver Bound refinement UML-based Specification Environment (USE)
  • 30. Experimental results: Summary (1/2) Lightly constrained (“Easy”) Satisfiable Unsatisfiable – Seconds Seconds (“Easy”) Highly constrained (“Hard”) Difficulty +– + Minutes Hours
  • 31. Experimental results: Summary (1/2) Lightly constrained (“Easy”) Satisfiable Unsatisfiable No improvement No improvement (“Easy”) Highly constrained (“Hard”) Speed-ups from 1,7x to 11x Speed-ups from 2x to 50x Overhead of bound tightening: <1 second
  • 32. Conclusions… in 140 chars Quick preprocessing to make SAT-based verification faster and more usable Target: UML/OCL Up to 50x speed-up TODO: further experiments Tweet0
  • 33. Thank you for your attention! Robert Clarisó rclariso@uoc.edu @robertclariso