SlideShare a Scribd company logo
Initiating a Benchmark for
UML and OCL Analysis Tools
Martin Gogolla, Fabian Büttner, Jordi Cabot
University of Bremen, Germany
AtlanMod, Ecole des Mines de Nantes - INRIA, LINA, France
Context: Model-Based (Software) Engineering
here focus on UML and OCL
Model: UML class diagram + OCL constraints
Various tools for analyzing such models exist
- Test-oriented tools (USE, EMF2toCSP, mOdCL, ...)
- Proof-oriented tools (HOL-OCL, KeY, ...)
Tools offer various functionalities
- building valid/invalid object diagrams, manually or
automatically; valid: explicit and inherent constraints
- debugging invalid object diagrams by revealing
failing constraints, constraint parts or model elements
- prooving consequences from stated constraints
- revealing classes or associations which cannot be populated
- ...
Aim of planned benchmark (here 1st version)
- Compare tool functionality with an agreed set of
example models
- Include models and proposals from other tool builders
Benchmark (currently): 4 models, 11 functionalities/questions
- Civil Status
- Writes Reviews
- Disjoint Subclasses
- Objects As Integers
? Consistent Invariants
? Independence
? Consequences
? Large State
? Instantiate Nonempty Class
? Instantiate Nonempty Assoc
? Instantiate Invariant Ignore
? Instantiate Disjoint Inheritance
? Instantiate Multiple Inheritance
? Object Represents Integer
? Integer Represents Object
Model: Civil Status
Model: Civil Status
context Person
inv attributesDefined: name<>null and civstat<>null and
gender<>null
inv nameCapitalThenSmallLetters:
let small:Set(String)=
Set{'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z'} in
let capital:Set(String)=
Set{'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'} in
capital->includes(name.substring(1,1)) and
Set{2..name.size}->forAll(i |
small->includes(name.substring(i,i)))
inv nameIsUnique: Person.allInstances->forAll(self2|
self<>self2 implies self.name<>self2.name)
inv femaleHasNoWife: gender=#female implies wife->isEmpty
inv maleHasNoHusband: gender=#male implies husband->isEmpty
inv hasSpouse_EQ_civstatMarried: (spouse()<>null)=(civstat=#married)
Benchmark (currently): 4 models, 11 functionalities/questions
- Civil Status
- Writes Reviews
- Disjoint Subclasses
- Objects As Integers
? Consistent Invariants
? Independence
? Consequences
? Large State
? Instantiate Nonempty Class
? Instantiate Nonempty Assoc
? Instantiate Invariant Ignore
? Instantiate Disjoint Inheritance
? Instantiate Multiple Inheritance
? Object Represents Integer
? Integer Represents Object
Model: Writes Reviews
Model: Writes Reviews
context Researcher inv oneManuscript:
self.manuscript->size=1
context Researcher inv oneSubmission:
self.submission->size=1
context Researcher inv noSelfReviews:
self.submission->excludes(self.manuscript)
context Paper inv paperLength:
self.wordCount < 10000
context Paper inv authorsOfStudentPaper:
self.studentPaper=self.author->exists(x | x.isStudent)
context Paper inv noStudentReviewers:
self.referee->forAll(r | not r.isStudent)
context Paper inv limitsOnStudentPapers:
Paper.allInstances->exists(p | p.studentPaper) and
Paper.allInstances->select(p | p.studentPaper)->size < 5
Benchmark (currently): 4 models, 11 functionalities/questions
- Civil Status
- Writes Reviews
- Disjoint Subclasses
- Objects As Integers
? Consistent Invariants
? Independence
? Consequences
? Large State
? Instantiate Nonempty Class
? Instantiate Nonempty Assoc
? Instantiate Invariant Ignore
? Instantiate Disjoint Inheritance
? Instantiate Multiple Inheritance
? Object Represents Integer
? Integer Represents Object
Model: Disjoint Subclasses
context b:B inv disjointBC: C.allInstances->forAll(c|b<>c)
Benchmark (currently): 4 models, 11 functionalities/questions
- Civil Status
- Writes Reviews
- Disjoint Subclasses
- Objects As Integers
? Consistent Invariants
? Independence
? Consequences
? Large State
? Instantiate Nonempty Class
? Instantiate Nonempty Assoc
? Instantiate Invariant Ignore
? Instantiate Disjoint Inheritance
? Instantiate Multiple Inheritance
? Object Represents Integer
? Integer Represents Object
Model: Objects As Integers
Model: Objects As Integers
VALID
INVALID
context Int
inv acyclicPredSucc:
predPlus()->union(succPlus())->excludes(self)
context Zero
inv zeroNotLinkedToZero:
not predPlus()->union(succPlus())->exists(i|
i.oclIsTypeOf(Zero))
inv zeroNotLinkedToNegAndPos:
not predPlus()->union(succPlus())->exists(n,p|
n.oclIsTypeOf(Neg) and p.oclIsTypeOf(Pos))
context Neg
inv negNotLinkedToPos:
not predPlus()->union(succPlus())->exists(p|
p.oclIsTypeOf(Pos))
inv negLinkedToZeroBySucc:
succPlus()->exists(z|z.oclIsTypeOf(Zero))
context Pos
inv posNotLinkedToNeg:
not predPlus()->union(succPlus())->exists(n|
n.oclIsTypeOf(Neg))
inv posLinkedToZeroByPred:
predPlus()->exists(z|z.oclIsTypeOf(Zero))
Model: Objects As Integers
Benchmark (currently): 4 models, 11 functionalities/questions
- Civil Status
- Writes Reviews
- Disjoint Subclasses
- Objects As Integers
? Consistent Invariants
? Independence
? Consequences
? Large State
? Instantiate Nonempty Class
? Instantiate Nonempty Assoc
? Instantiate Invariant Ignore
? Instantiate Disjoint Inheritance
? Instantiate Multiple Inheritance
? Object Represents Integer
? Integer Represents Object
Possible topics to be emphasized in further models
- local constraints (single class constraints)
- global constraints (many classes involved)
- easy tractable constraints
- hard constraints (NP hard problems)
- symmetry problems
- integer arithmetic
- real arithmetic
- string calculations
- redundant constraints
- sparse models (few links)
- recursive operations
- null value and collection operations
- large models, large instances
Planned benchmark
- Currently 1st version
- Compare tool functionality with an agreed set of
example models
- Include models and proposals from other tool builders
emphasizing the strength of their tool
- Used as input for the remaining tool builders
... waiting for contributions ...
Thanks for your attention!

More Related Content

What's hot

Pure Future
Pure FuturePure Future
Pure Future
Wiem Zine Elabidine
 
ZIO: Powerful and Principled Functional Programming in Scala
ZIO: Powerful and Principled Functional Programming in ScalaZIO: Powerful and Principled Functional Programming in Scala
ZIO: Powerful and Principled Functional Programming in Scala
Wiem Zine Elabidine
 
ZIO Queue
ZIO QueueZIO Queue
Teach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with ScalaTeach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with Scala
Damian Jureczko
 
Print input-presentation
Print input-presentationPrint input-presentation
Print input-presentation
Martin McBride
 
Scala best practices
Scala best practicesScala best practices
Scala best practices
Alexander Zaidel
 
C++ Template
C++ TemplateC++ Template
C++ Template
Saket Pathak
 
Zio from Home
Zio from Home Zio from Home
Zio from Home
Wiem Zine Elabidine
 
Berlin meetup
Berlin meetupBerlin meetup
Berlin meetup
Wiem Zine Elabidine
 
7 Habits For a More Functional Swift
7 Habits For a More Functional Swift7 Habits For a More Functional Swift
7 Habits For a More Functional Swift
Jason Larsen
 
Flying Futures at the same sky can make the sun rise at midnight
Flying Futures at the same sky can make the sun rise at midnightFlying Futures at the same sky can make the sun rise at midnight
Flying Futures at the same sky can make the sun rise at midnight
Wiem Zine Elabidine
 
Fiber supervision in ZIO
Fiber supervision in ZIOFiber supervision in ZIO
Fiber supervision in ZIO
Wiem Zine Elabidine
 
Variables, expressions, standard types
 Variables, expressions, standard types  Variables, expressions, standard types
Variables, expressions, standard types
Rubizza
 
C Structure and Union in C
C Structure and Union in CC Structure and Union in C
Templates in C++
Templates in C++Templates in C++
Templates in C++Tech_MX
 
Custom LINQ Providers
Custom LINQ ProvidersCustom LINQ Providers
Custom LINQ Providers
Vitaly Baum
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
진성 오
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragment
Chiwon Song
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duo
The Software House
 

What's hot (19)

Pure Future
Pure FuturePure Future
Pure Future
 
ZIO: Powerful and Principled Functional Programming in Scala
ZIO: Powerful and Principled Functional Programming in ScalaZIO: Powerful and Principled Functional Programming in Scala
ZIO: Powerful and Principled Functional Programming in Scala
 
ZIO Queue
ZIO QueueZIO Queue
ZIO Queue
 
Teach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with ScalaTeach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with Scala
 
Print input-presentation
Print input-presentationPrint input-presentation
Print input-presentation
 
Scala best practices
Scala best practicesScala best practices
Scala best practices
 
C++ Template
C++ TemplateC++ Template
C++ Template
 
Zio from Home
Zio from Home Zio from Home
Zio from Home
 
Berlin meetup
Berlin meetupBerlin meetup
Berlin meetup
 
7 Habits For a More Functional Swift
7 Habits For a More Functional Swift7 Habits For a More Functional Swift
7 Habits For a More Functional Swift
 
Flying Futures at the same sky can make the sun rise at midnight
Flying Futures at the same sky can make the sun rise at midnightFlying Futures at the same sky can make the sun rise at midnight
Flying Futures at the same sky can make the sun rise at midnight
 
Fiber supervision in ZIO
Fiber supervision in ZIOFiber supervision in ZIO
Fiber supervision in ZIO
 
Variables, expressions, standard types
 Variables, expressions, standard types  Variables, expressions, standard types
Variables, expressions, standard types
 
C Structure and Union in C
C Structure and Union in CC Structure and Union in C
C Structure and Union in C
 
Templates in C++
Templates in C++Templates in C++
Templates in C++
 
Custom LINQ Providers
Custom LINQ ProvidersCustom LINQ Providers
Custom LINQ Providers
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragment
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duo
 

Viewers also liked

Ecmfa2013
Ecmfa2013Ecmfa2013
Ecmfa2013gogolla
 
Física General
Física GeneralFísica General
Física General
Luis Vidal
 
Portfolio_Pankaj Sharma
Portfolio_Pankaj SharmaPortfolio_Pankaj Sharma
Portfolio_Pankaj SharmaPankaj Sharma
 
Gu a tur_stica_alejandro (1)
Gu a tur_stica_alejandro (1)Gu a tur_stica_alejandro (1)
Gu a tur_stica_alejandro (1)
Alex Pini Jimenez
 
Countus tulp over 2 jaar te koop
Countus tulp over 2 jaar te koopCountus tulp over 2 jaar te koop
Countus tulp over 2 jaar te koop
Countus
 
Tarea 01 - Nuevos Ambientes de Aprendizaje
Tarea 01 - Nuevos Ambientes de AprendizajeTarea 01 - Nuevos Ambientes de Aprendizaje
Tarea 01 - Nuevos Ambientes de Aprendizaje
Luis Vidal
 
Tutorial de-busquedas-con-google
Tutorial de-busquedas-con-googleTutorial de-busquedas-con-google
Tutorial de-busquedas-con-google
Ernestina Sandoval
 
Deber de informatica dayane caiza y danny cushpa
Deber de informatica dayane caiza y danny cushpaDeber de informatica dayane caiza y danny cushpa
Deber de informatica dayane caiza y danny cushpa
Däŋny Cữsĥpä
 
Pap2 3
Pap2 3Pap2 3
Pap2 3
Rosa Mitie
 
Het Nieuwe Werken Sra (Nr)
Het Nieuwe Werken Sra (Nr)Het Nieuwe Werken Sra (Nr)
Het Nieuwe Werken Sra (Nr)Fou-Khan Tsang
 
Cómo ayudar a su hijo a aprender ciencias
Cómo ayudar a su hijo a aprender cienciasCómo ayudar a su hijo a aprender ciencias
Cómo ayudar a su hijo a aprender ciencias
Vladimir Martinez
 
lecturas de primer ciclo
lecturas de primer ciclolecturas de primer ciclo
lecturas de primer ciclo
Yolanda González
 
Literatura en el Barroco ( S.XVII)
Literatura en el Barroco ( S.XVII)Literatura en el Barroco ( S.XVII)
Literatura en el Barroco ( S.XVII)
Letrasenelaula
 
Parodoncijum
Parodoncijum Parodoncijum
Parodoncijum
Vesna Danilovic
 
Inteligencia Verbal Lingüistica
Inteligencia Verbal LingüisticaInteligencia Verbal Lingüistica
Inteligencia Verbal Lingüistica
Joel Acosta
 

Viewers also liked (18)

Ecmfa2013
Ecmfa2013Ecmfa2013
Ecmfa2013
 
Física General
Física GeneralFísica General
Física General
 
DNV Satish
DNV SatishDNV Satish
DNV Satish
 
Portfolio_Pankaj Sharma
Portfolio_Pankaj SharmaPortfolio_Pankaj Sharma
Portfolio_Pankaj Sharma
 
Gu a tur_stica_alejandro (1)
Gu a tur_stica_alejandro (1)Gu a tur_stica_alejandro (1)
Gu a tur_stica_alejandro (1)
 
Countus tulp over 2 jaar te koop
Countus tulp over 2 jaar te koopCountus tulp over 2 jaar te koop
Countus tulp over 2 jaar te koop
 
Data handling
Data handlingData handling
Data handling
 
Tarea 01 - Nuevos Ambientes de Aprendizaje
Tarea 01 - Nuevos Ambientes de AprendizajeTarea 01 - Nuevos Ambientes de Aprendizaje
Tarea 01 - Nuevos Ambientes de Aprendizaje
 
Tutorial de-busquedas-con-google
Tutorial de-busquedas-con-googleTutorial de-busquedas-con-google
Tutorial de-busquedas-con-google
 
Deber de informatica dayane caiza y danny cushpa
Deber de informatica dayane caiza y danny cushpaDeber de informatica dayane caiza y danny cushpa
Deber de informatica dayane caiza y danny cushpa
 
Pap2 3
Pap2 3Pap2 3
Pap2 3
 
Het Nieuwe Werken Sra (Nr)
Het Nieuwe Werken Sra (Nr)Het Nieuwe Werken Sra (Nr)
Het Nieuwe Werken Sra (Nr)
 
Cómo ayudar a su hijo a aprender ciencias
Cómo ayudar a su hijo a aprender cienciasCómo ayudar a su hijo a aprender ciencias
Cómo ayudar a su hijo a aprender ciencias
 
An Dewaele, Veranderingsmanagement: do's and dont's voor archiefteams
An Dewaele, Veranderingsmanagement: do's and dont's voor archiefteamsAn Dewaele, Veranderingsmanagement: do's and dont's voor archiefteams
An Dewaele, Veranderingsmanagement: do's and dont's voor archiefteams
 
lecturas de primer ciclo
lecturas de primer ciclolecturas de primer ciclo
lecturas de primer ciclo
 
Literatura en el Barroco ( S.XVII)
Literatura en el Barroco ( S.XVII)Literatura en el Barroco ( S.XVII)
Literatura en el Barroco ( S.XVII)
 
Parodoncijum
Parodoncijum Parodoncijum
Parodoncijum
 
Inteligencia Verbal Lingüistica
Inteligencia Verbal LingüisticaInteligencia Verbal Lingüistica
Inteligencia Verbal Lingüistica
 

Similar to Tap2013

C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
Abhishek Tirkey
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
GauravPandey43518
 
Pointcuts and Analysis
Pointcuts and AnalysisPointcuts and Analysis
Pointcuts and AnalysisWiwat Ruengmee
 
“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic Diabetes“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic Diabetes
Tzach Zohar
 
Thinking In Swift
Thinking In SwiftThinking In Swift
Thinking In Swift
Janie Clayton
 
UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29
megaplanet20
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programming
Yuan Wang
 
Einführung in TypeScript
Einführung in TypeScriptEinführung in TypeScript
Einführung in TypeScript
Demian Holderegger
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in Swift
Michele Titolo
 
The Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unificationThe Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unificationNorman Richards
 
Types and Immutability: why you should care
Types and Immutability: why you should careTypes and Immutability: why you should care
Types and Immutability: why you should care
Jean Carlo Emer
 
Robots in Swift
Robots in SwiftRobots in Swift
Robots in Swift
Janie Clayton
 
Dynamic Semantics
Dynamic SemanticsDynamic Semantics
Dynamic Semantics
Eelco Visser
 
Types Working for You, Not Against You
Types Working for You, Not Against YouTypes Working for You, Not Against You
Types Working for You, Not Against You
C4Media
 
Declare Your Language: Dynamic Semantics
Declare Your Language: Dynamic SemanticsDeclare Your Language: Dynamic Semantics
Declare Your Language: Dynamic Semantics
Eelco Visser
 
Data structure manual
Data structure manualData structure manual
Data structure manual
sameer farooq
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05c
Kaz Yoshikawa
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
CodeOps Technologies LLP
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
Denis Voituron
 

Similar to Tap2013 (20)

C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
Pointcuts and Analysis
Pointcuts and AnalysisPointcuts and Analysis
Pointcuts and Analysis
 
“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic Diabetes“Insulin” for Scala’s Syntactic Diabetes
“Insulin” for Scala’s Syntactic Diabetes
 
Thinking In Swift
Thinking In SwiftThinking In Swift
Thinking In Swift
 
UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programming
 
Einführung in TypeScript
Einführung in TypeScriptEinführung in TypeScript
Einführung in TypeScript
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in Swift
 
The Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unificationThe Logical Burrito - pattern matching, term rewriting and unification
The Logical Burrito - pattern matching, term rewriting and unification
 
Types and Immutability: why you should care
Types and Immutability: why you should careTypes and Immutability: why you should care
Types and Immutability: why you should care
 
Robots in Swift
Robots in SwiftRobots in Swift
Robots in Swift
 
Dynamic Semantics
Dynamic SemanticsDynamic Semantics
Dynamic Semantics
 
Types Working for You, Not Against You
Types Working for You, Not Against YouTypes Working for You, Not Against You
Types Working for You, Not Against You
 
ppopoff
ppopoffppopoff
ppopoff
 
Declare Your Language: Dynamic Semantics
Declare Your Language: Dynamic SemanticsDeclare Your Language: Dynamic Semantics
Declare Your Language: Dynamic Semantics
 
Data structure manual
Data structure manualData structure manual
Data structure manual
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05c
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
 

Recently uploaded

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 

Recently uploaded (20)

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 

Tap2013

  • 1. Initiating a Benchmark for UML and OCL Analysis Tools Martin Gogolla, Fabian Büttner, Jordi Cabot University of Bremen, Germany AtlanMod, Ecole des Mines de Nantes - INRIA, LINA, France
  • 2. Context: Model-Based (Software) Engineering here focus on UML and OCL Model: UML class diagram + OCL constraints Various tools for analyzing such models exist - Test-oriented tools (USE, EMF2toCSP, mOdCL, ...) - Proof-oriented tools (HOL-OCL, KeY, ...) Tools offer various functionalities - building valid/invalid object diagrams, manually or automatically; valid: explicit and inherent constraints - debugging invalid object diagrams by revealing failing constraints, constraint parts or model elements - prooving consequences from stated constraints - revealing classes or associations which cannot be populated - ... Aim of planned benchmark (here 1st version) - Compare tool functionality with an agreed set of example models - Include models and proposals from other tool builders
  • 3. Benchmark (currently): 4 models, 11 functionalities/questions - Civil Status - Writes Reviews - Disjoint Subclasses - Objects As Integers ? Consistent Invariants ? Independence ? Consequences ? Large State ? Instantiate Nonempty Class ? Instantiate Nonempty Assoc ? Instantiate Invariant Ignore ? Instantiate Disjoint Inheritance ? Instantiate Multiple Inheritance ? Object Represents Integer ? Integer Represents Object
  • 5. Model: Civil Status context Person inv attributesDefined: name<>null and civstat<>null and gender<>null inv nameCapitalThenSmallLetters: let small:Set(String)= Set{'a','b','c','d','e','f','g','h','i','j','k','l','m', 'n','o','p','q','r','s','t','u','v','w','x','y','z'} in let capital:Set(String)= Set{'A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'} in capital->includes(name.substring(1,1)) and Set{2..name.size}->forAll(i | small->includes(name.substring(i,i))) inv nameIsUnique: Person.allInstances->forAll(self2| self<>self2 implies self.name<>self2.name) inv femaleHasNoWife: gender=#female implies wife->isEmpty inv maleHasNoHusband: gender=#male implies husband->isEmpty inv hasSpouse_EQ_civstatMarried: (spouse()<>null)=(civstat=#married)
  • 6. Benchmark (currently): 4 models, 11 functionalities/questions - Civil Status - Writes Reviews - Disjoint Subclasses - Objects As Integers ? Consistent Invariants ? Independence ? Consequences ? Large State ? Instantiate Nonempty Class ? Instantiate Nonempty Assoc ? Instantiate Invariant Ignore ? Instantiate Disjoint Inheritance ? Instantiate Multiple Inheritance ? Object Represents Integer ? Integer Represents Object
  • 8. Model: Writes Reviews context Researcher inv oneManuscript: self.manuscript->size=1 context Researcher inv oneSubmission: self.submission->size=1 context Researcher inv noSelfReviews: self.submission->excludes(self.manuscript) context Paper inv paperLength: self.wordCount < 10000 context Paper inv authorsOfStudentPaper: self.studentPaper=self.author->exists(x | x.isStudent) context Paper inv noStudentReviewers: self.referee->forAll(r | not r.isStudent) context Paper inv limitsOnStudentPapers: Paper.allInstances->exists(p | p.studentPaper) and Paper.allInstances->select(p | p.studentPaper)->size < 5
  • 9. Benchmark (currently): 4 models, 11 functionalities/questions - Civil Status - Writes Reviews - Disjoint Subclasses - Objects As Integers ? Consistent Invariants ? Independence ? Consequences ? Large State ? Instantiate Nonempty Class ? Instantiate Nonempty Assoc ? Instantiate Invariant Ignore ? Instantiate Disjoint Inheritance ? Instantiate Multiple Inheritance ? Object Represents Integer ? Integer Represents Object
  • 10. Model: Disjoint Subclasses context b:B inv disjointBC: C.allInstances->forAll(c|b<>c)
  • 11. Benchmark (currently): 4 models, 11 functionalities/questions - Civil Status - Writes Reviews - Disjoint Subclasses - Objects As Integers ? Consistent Invariants ? Independence ? Consequences ? Large State ? Instantiate Nonempty Class ? Instantiate Nonempty Assoc ? Instantiate Invariant Ignore ? Instantiate Disjoint Inheritance ? Instantiate Multiple Inheritance ? Object Represents Integer ? Integer Represents Object
  • 12. Model: Objects As Integers
  • 13. Model: Objects As Integers VALID INVALID
  • 14. context Int inv acyclicPredSucc: predPlus()->union(succPlus())->excludes(self) context Zero inv zeroNotLinkedToZero: not predPlus()->union(succPlus())->exists(i| i.oclIsTypeOf(Zero)) inv zeroNotLinkedToNegAndPos: not predPlus()->union(succPlus())->exists(n,p| n.oclIsTypeOf(Neg) and p.oclIsTypeOf(Pos)) context Neg inv negNotLinkedToPos: not predPlus()->union(succPlus())->exists(p| p.oclIsTypeOf(Pos)) inv negLinkedToZeroBySucc: succPlus()->exists(z|z.oclIsTypeOf(Zero)) context Pos inv posNotLinkedToNeg: not predPlus()->union(succPlus())->exists(n| n.oclIsTypeOf(Neg)) inv posLinkedToZeroByPred: predPlus()->exists(z|z.oclIsTypeOf(Zero)) Model: Objects As Integers
  • 15. Benchmark (currently): 4 models, 11 functionalities/questions - Civil Status - Writes Reviews - Disjoint Subclasses - Objects As Integers ? Consistent Invariants ? Independence ? Consequences ? Large State ? Instantiate Nonempty Class ? Instantiate Nonempty Assoc ? Instantiate Invariant Ignore ? Instantiate Disjoint Inheritance ? Instantiate Multiple Inheritance ? Object Represents Integer ? Integer Represents Object
  • 16. Possible topics to be emphasized in further models - local constraints (single class constraints) - global constraints (many classes involved) - easy tractable constraints - hard constraints (NP hard problems) - symmetry problems - integer arithmetic - real arithmetic - string calculations - redundant constraints - sparse models (few links) - recursive operations - null value and collection operations - large models, large instances
  • 17. Planned benchmark - Currently 1st version - Compare tool functionality with an agreed set of example models - Include models and proposals from other tool builders emphasizing the strength of their tool - Used as input for the remaining tool builders
  • 18. ... waiting for contributions ... Thanks for your attention!