• Save
Tap2013
Upcoming SlideShare
Loading in...5
×
 

Tap2013

on

  • 154 views

Talk at TAP 2013

Talk at TAP 2013

Statistics

Views

Total Views
154
Views on SlideShare
154
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tap2013 Tap2013 Presentation Transcript

    • Initiating a Benchmark forUML and OCL Analysis ToolsMartin Gogolla, Fabian Büttner, Jordi CabotUniversity of Bremen, GermanyAtlanMod, Ecole des Mines de Nantes - INRIA, LINA, France
    • Context: Model-Based (Software) Engineeringhere focus on UML and OCLModel: UML class diagram + OCL constraintsVarious 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 orautomatically; valid: explicit and inherent constraints- debugging invalid object diagrams by revealingfailing 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 ofexample 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 Statuscontext Personinv attributesDefined: name<>null and civstat<>null andgender<>nullinv 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} inlet 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} incapital->includes(name.substring(1,1)) andSet{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->isEmptyinv maleHasNoHusband: gender=#male implies husband->isEmptyinv 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 Reviewscontext Researcher inv oneManuscript:self.manuscript->size=1context Researcher inv oneSubmission:self.submission->size=1context Researcher inv noSelfReviews:self.submission->excludes(self.manuscript)context Paper inv paperLength:self.wordCount < 10000context 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) andPaper.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 Subclassescontext 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 IntegersVALIDINVALID
    • context Intinv acyclicPredSucc:predPlus()->union(succPlus())->excludes(self)context Zeroinv 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 Neginv negNotLinkedToPos:not predPlus()->union(succPlus())->exists(p|p.oclIsTypeOf(Pos))inv negLinkedToZeroBySucc:succPlus()->exists(z|z.oclIsTypeOf(Zero))context Posinv 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 ofexample models- Include models and proposals from other tool buildersemphasizing the strength of their tool- Used as input for the remaining tool builders
    • ... waiting for contributions ...Thanks for your attention!