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

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

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!