SlideShare a Scribd company logo
1 of 18
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

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 ScalaWiem Zine Elabidine
 
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 ScalaDamian Jureczko
 
Print input-presentation
Print input-presentationPrint input-presentation
Print input-presentationMartin McBride
 
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 SwiftJason 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 midnightWiem Zine Elabidine
 
Variables, expressions, standard types
 Variables, expressions, standard types  Variables, expressions, standard types
Variables, expressions, standard types Rubizza
 
Templates in C++
Templates in C++Templates in C++
Templates in C++Tech_MX
 
Custom LINQ Providers
Custom LINQ ProvidersCustom LINQ Providers
Custom LINQ ProvidersVitaly Baum
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기진성 오
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragmentChiwon 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 duoThe 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 GeneralLuis 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 koopCountus
 
Tarea 01 - Nuevos Ambientes de Aprendizaje
Tarea 01 - Nuevos Ambientes de AprendizajeTarea 01 - Nuevos Ambientes de Aprendizaje
Tarea 01 - Nuevos Ambientes de AprendizajeLuis Vidal
 
Tutorial de-busquedas-con-google
Tutorial de-busquedas-con-googleTutorial de-busquedas-con-google
Tutorial de-busquedas-con-googleErnestina 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 cushpaDäŋny Cữsĥpä
 
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 cienciasVladimir Martinez
 
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
 
Inteligencia Verbal Lingüistica
Inteligencia Verbal LingüisticaInteligencia Verbal Lingüistica
Inteligencia Verbal LingüisticaJoel 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).pptxAbhishek 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).pptxGauravPandey43518
 
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 DiabetesTzach Zohar
 
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 -- 29megaplanet20
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional ProgrammingYuan Wang
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftMichele 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 careJean Carlo Emer
 
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 YouC4Media
 
Declare Your Language: Dynamic Semantics
Declare Your Language: Dynamic SemanticsDeclare Your Language: Dynamic Semantics
Declare Your Language: Dynamic SemanticsEelco Visser
 
Data structure manual
Data structure manualData structure manual
Data structure manualsameer farooq
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05cKaz Yoshikawa
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScriptDenis 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

Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxjbellis
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxFIDO Alliance
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxFIDO Alliance
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهMohamed Sweelam
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...ScyllaDB
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewDianaGray10
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentationyogeshlabana357357
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctBrainSell Technologies
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfOverkill Security
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityVictorSzoltysek
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireExakis Nelite
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTopCSSGallery
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)Wonjun Hwang
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxMarkSteadman7
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 

Recently uploaded (20)

Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهله
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdf
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 

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!