model slicing

32
Program Slicing Model Slicing A General Slicing Framework Case Study Conclusion A General Model Based Slicing Framework Tony Clark School of Engineering and Information Sciences, Middlesex University September 30, 2011 Tony Clark A General Model Based Slicing Framework

Upload: clarktony

Post on 14-Jun-2015

7.375 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

A General Model Based Slicing Framework

Tony Clark

School of Engineering and Information Sciences, Middlesex University

September 30, 2011

Tony Clark A General Model Based Slicing Framework

Page 2: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Contents

1 Program Slicing

2 Model Slicing

3 A General Slicing FrameworkGSF for ProgramsGSF for Models

4 Case Study

5 Conclusion

Tony Clark A General Model Based Slicing Framework

Page 3: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Definition and Use Cases

What? Slicing is used to reduce the size of programs byremoving those statements that do not contribute tothe values of specified variables at a given programlocation.

Why? Debugging; comprehension; verification.

How? Static (backwards,forwards); dynamic; conditioned;union.

Tony Clark A General Model Based Slicing Framework

Page 4: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Backward Slicing: Example1

Original Criterion Slicex = 42

d = 23 d d = 23

Tony Clark A General Model Based Slicing Framework

Page 5: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Backward Slicing: Example2

Original Criterion Slicesum=0

prod=1

read(i)

while(i<11) {sum=sum+i

prod=prod*i

i=i+1

} prod

prod = 1

read(i)

while (i<11) {

prod=prod*i

i=i+1

}

Tony Clark A General Model Based Slicing Framework

Page 6: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Dynamic Slicing

Original Criterion Slicesum=0

prod=1

read(i)

while(i<11) {sum=sum+i

prod=prod*i

i=i+1

} prod, pos(next(input))=11

prod = 1

read(i)

Tony Clark A General Model Based Slicing Framework

Page 7: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Conditioned Slicing

Original Criterion Sliceread(a)

if(a<0)

a=-a

x=1/a x, +ve(next(input))

read(a)

x=1/a

Tony Clark A General Model Based Slicing Framework

Page 8: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Unions

Original Criterion Slicea = 42x = 2b = 23 + ay = 3c = b + 2 c

a = 42

b = 23 + a

c = b + 2

a = 42x = 2b = 23 + ay = 3c = b + 2 y

y = 3

a = 42x = 2b = 23 + ay = 3c = b + 2 y and c

a = 42

b = 23 + ay = 3c = b + 2

Tony Clark A General Model Based Slicing Framework

Page 9: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Contents

1 Program Slicing

2 Model Slicing

3 A General Slicing FrameworkGSF for ProgramsGSF for Models

4 Case Study

5 Conclusion

Tony Clark A General Model Based Slicing Framework

Page 10: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Definition and Use Cases

What? erm - drop some bits?

Why? Model management and comprehension; debuggingtransformations; debugging executable models; modelverification.

How? State machines; class diagrams (syntax); specifictechnologies.

Problem No general definition for model slicing.

Tony Clark A General Model Based Slicing Framework

Page 11: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Di!erences to Programs

No starting point for execution.

Static and dynamic slices.

Multiple languages.

DSLs, profiles, meta-models.

Highly structured.

Weak semantics.

Links to model transformations; transformation combinations.

Tony Clark A General Model Based Slicing Framework

Page 12: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

GSF for ProgramsGSF for Models

Contents

1 Program Slicing

2 Model Slicing

3 A General Slicing FrameworkGSF for ProgramsGSF for Models

4 Case Study

5 Conclusion

Tony Clark A General Model Based Slicing Framework

Page 13: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

GSF for ProgramsGSF for Models

A General Slicing Framework

! : !" ! # : "

!!! : !"!

p !

!

#!! : " !"

q!

z! $ : "

x

!

!! : !

p

#

"!

"

p!!

#! : "

q

#y

!q !!

!

! Syntax domain." Semantic domain.

p, q Projections." Semantics.

(x ,$) Slicing criterion.Tony Clark A General Model Based Slicing Framework

Page 14: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

GSF for ProgramsGSF for Models

Key Features

To set up the framework for a particular domain you will need:

syntax (!) The things you want to slice.

semantics (",") The meaning of the syntax defined as a semanticdomain and a semantic mapping.

projections (p, q) Relationships that hold between syntactic andsemantic elements and that remove items that arenot of interest.

criterion (x ,$) The things that remain invariant, defined in termsof the semantic domain.

products If the syntax and semantic domain also defineproducts for elements and projections then there isscope for slicing composition.

Tony Clark A General Model Based Slicing Framework

Page 15: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

GSF for ProgramsGSF for Models

Semantic Domain for Programs

Tony Clark A General Model Based Slicing Framework

Page 16: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

GSF for ProgramsGSF for Models

GSF: Program Example1

Original Criterion Slicex = 42

d = 23 d d = 23

Semantics is # = {[{x !" 41; d !" 23}]} The slice criterion requiresthat any trace in # when projected onto the second step has avalue for d , so $ = {{d !" v} | v # V } Therefore the smallest setof traces for which there exists a structural projection is#! = {[{d !" v} | v # V }]}.

Tony Clark A General Model Based Slicing Framework

Page 17: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

GSF for ProgramsGSF for Models

GSF: Program Example2

Original Criterion Slicesum=0prod=1read(i)while(i<11) {sum=sum+iprod=prod*ii=i+1

} prod

prod = 1read(i)while (i<11) {

prod=prod*ii=i+1

}Semantics is ! = {[{sum !" 0}, {sum !" 0; prod !" 1}, {sum !" 0; prod !"1; i !" v}] + trace(v) | v # 0 . . . 10} ] where trace(0) = []

trace(v) = trace(v $ 1) + [{sum !"!

i!0...v

i ; prod !"!v ; i !" v}]

Criterion requires that " = {prod !" v | v # V } and x maps each trace onto

the last maplet for prod.

Tony Clark A General Model Based Slicing Framework

Page 18: Model Slicing

Program

Slicin

gModel

Slicin

gA

Gen

eralSlicin

gFram

ework

Case

Study

Con

clusion

GSFfor

Program

sGSFfor

Models

Modelling

Language:Syntax

Ton

yClark

AGen

eralModel

Based

Slicin

gFram

ework

Page 19: Model Slicing

Program

Slicin

gModel

Slicin

gA

Gen

eralSlicin

gFram

ework

Case

Study

Con

clusion

GSFfor

Program

sGSFfor

Models

Modelling

Language:Sem

anticDom

ain

Ton

yClark

AGen

eralModel

Based

Slicin

gFram

ework

Page 20: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Contents

1 Program Slicing

2 Model Slicing

3 A General Slicing FrameworkGSF for ProgramsGSF for Models

4 Case Study

5 Conclusion

Tony Clark A General Model Based Slicing Framework

Page 21: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Case Study: Use Cases

Tony Clark A General Model Based Slicing Framework

Page 22: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Case Study: Class Model

Tony Clark A General Model Based Slicing Framework

Page 23: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

OCL

context Library :: borrow(reader ,book)pre not hasFine(reader) andpost borrows ->includes(b |

b.reader = getReader(reader) andb.book = getBook(book) andb.date = date ())

Tony Clark A General Model Based Slicing Framework

Page 24: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Case Study: State Machine

Tony Clark A General Model Based Slicing Framework

Page 25: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Case Study: Sequence Model

Tony Clark A General Model Based Slicing Framework

Page 26: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

A Borrowing Step

(s1 ,ok = 0 <- borrow(fred ,b),f,s6)where

s1 = ({(0,*, Library )[limit=l],(1,*,Book)[name=n,id=1],(2,initialized ,Reader )[name=fred ,id=2]} ,{})

f = [(s1,false = 0 <- hasFine(fred),...,s1),(s1 ,2 = 0 <- getReader(fred),...,s1),(s1 ,1 = 0 <- getBook(n),...,s1),(s1 ,d = 0 <- getDate (),...,s1),(s1 ,3 = 0 <- new(Borrows ),[],s2),(s2 ,ok = 3 <- setReader (2),...,s4),

....]s2 = ({(0,*, Library )[ limit=l],(1,*,Book)[name=n,id=1],

(2,initialized ,Reader )[name=fred ,id=2],(3,*, Borrows )[]} ,{})

Tony Clark A General Model Based Slicing Framework

Page 27: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Slicing Criterion

B={(s1,v = l <- borrow(r,b),F,s2) |F <- Filmstrip ,s1 <- Snapshot ,s2 <- Snapshot ,v <- Value ,l <- Id ,r <- Str ,b <- Str}

Use $ = B" as basis for slicing criterion.x1 projects a filmstrip to the sequence of borrow steps it contains.

Tony Clark A General Model Based Slicing Framework

Page 28: Model Slicing

Program

Slicin

gModel

Slicin

gA

Gen

eralSlicin

gFram

ework

Case

Study

Con

clusion

Sliced

Model

Ton

yClark

AGen

eralModel

Based

Slicin

gFram

ework

Page 29: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Refining the Slice

{[(s1 ,v = l <- borrow(r,b),[],s2)] |s1 <- Snapshot ,s2 <- Snapshot ,v <- Value ,l <- Id,r <- Str ,b <- Str}

The mapping part x2 is a refinement of x1 that maps all nestedfilmstrips to [].

Tony Clark A General Model Based Slicing Framework

Page 30: Model Slicing

Program

Slicin

gModel

Slicin

gA

Gen

eralSlicin

gFram

ework

Case

Study

Con

clusion

Refined

Slice

Ton

yClark

AGen

eralModel

Based

Slicin

gFram

ework

Page 31: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Contents

1 Program Slicing

2 Model Slicing

3 A General Slicing FrameworkGSF for ProgramsGSF for Models

4 Case Study

5 Conclusion

Tony Clark A General Model Based Slicing Framework

Page 32: Model Slicing

Program SlicingModel Slicing

A General Slicing FrameworkCase StudyConclusion

Issues and Problems

Constructing slicing transformations: use of existing modeltransformation languages? New languages?

Projection definition for OCL - requires theorem proving?

Combination of slices? Consistency of slices?

Slicing theories?

Restricted forms of slicing: static, dynamic, conditioned?

Tony Clark A General Model Based Slicing Framework