70
Submodel Pattern Extraction for Simulink Models James R. Cordy Queen’s University NECSIS Automotive Partnership Canada

131010 jim cordy - submodel pattern extraction for simulink models

Embed Size (px)

DESCRIPTION

Simulink, patterns, extraction

Citation preview

Page 1: 131010   jim cordy - submodel pattern extraction for simulink models

Submodel Pattern Extraction for Simulink Models

James R. CordyQueen’s University

NECSIS Automotive Partnership Canada

Page 2: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 3: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 4: 131010   jim cordy - submodel pattern extraction for simulink models

Model Pattern Engineering

discover, catalogue and formalize submodel patterns

emergentdomain-specific, client-specific

Page 5: 131010   jim cordy - submodel pattern extraction for simulink models

discovery analysis, identification methodology, techniques

classification characterization, formalization notation, tooling, catalogues

application deployment, analysis organization, documentation, use cases

Page 6: 131010   jim cordy - submodel pattern extraction for simulink models

why?

reuse in model development

standards/consistency analysis/enforcement

failure/change propagation in model maintenance

verification/test optimization

deployment variation/optimization

model product lines

Page 7: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 8: 131010   jim cordy - submodel pattern extraction for simulink models

code clonescopy-paste programming

efficient, widely usedproblematic

Page 9: 131010   jim cordy - submodel pattern extraction for simulink models

code clonestype 1 - exact

bool ConfNextToken (char **p) { // skip white space while (1) switch (**p) { case '\t' : // ignore case ' ' : (*p)++; break; case '\0' : return FALSE; default : return TRUE; };}

bool ConfNextToken (char **p) { // skip white space while (1) switch (**p) { case '\t' : // ignore case ' ' : (*p)++; break; case '\0' : return FALSE; default : return TRUE; };}

[Roy, Cordy, Koschke SCP 2009]

Page 10: 131010   jim cordy - submodel pattern extraction for simulink models

code clonestype 1 - exact

bool ConfNextToken (char **p) { // skip white space while (1) switch (**p) { case '\t' : // ignore case ' ' : (*p)++; break; case '\0' : return FALSE; default : return TRUE; };}

bool ConfNextToken (char **p) { while (1) switch (**p) { case '\t': case ' ': // just skip (*p)++; break; case '\0': // eof return FALSE; default: // something we want return TRUE; };}

[Roy, Cordy, Koschke SCP 2009]

Page 11: 131010   jim cordy - submodel pattern extraction for simulink models

code clonestype 2 - renamed

bool ConfNextToken (char **p) { // skip white space while (1) switch (**p) { case '\t' : // ignore case ' ' : (*p)++; break; case '\0' : return FALSE; default : return TRUE; };}

bool NextToken (char **bp) { while (1) // not really switch (**bp) { case '\t': case ' ': // next (*bp)++; break; case '\0': return 0; default: return 1; };}

[Roy, Cordy, Koschke SCP 2009]

Page 12: 131010   jim cordy - submodel pattern extraction for simulink models

bool ConfNextToken (char **p) { // skip white space while (1) switch (**p) { case '\t' : // ignore case ' ' : (*p)++; break; case '\0' : return FALSE; default : return TRUE; };}

code clonestype 3 - near miss

bool NextToken (char **bp){ while (1) // not really switch (**bp) { case '\t': (*bp)++ case ' ': break; case '\0': return 0; default: return 1; } }

[Roy, Cordy, Koschke SCP 2009]

Page 13: 131010   jim cordy - submodel pattern extraction for simulink models

model clonestype 1 - exact

Tfmaxs2

Tfmaxk1

TorqueConversion

2/3*R*muk

Ratio of staticto kinetic

mus/muk

Fn1

Tfmaxs2

Tfmaxk1

TorqueConversion

2/3*R*muk

Ratio of staticto kinetic

mus/muk

Fn1

[Alalfi, Cordy, Dean, Stephan, Stevenson ICSM 2012] [Störrle SSM 2013]

Page 14: 131010   jim cordy - submodel pattern extraction for simulink models

model clonestype 2 - renamed

[Alalfi, Cordy, Dean, Stephan, Stevenson ICSM 2012] [Störrle SSM 2013]

Page 15: 131010   jim cordy - submodel pattern extraction for simulink models

model clonestype 3 - near miss

[Alalfi, Cordy, Dean, Stephan, Stevenson ICSM 2012] [Störrle SSM 2013]

Page 16: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 17: 131010   jim cordy - submodel pattern extraction for simulink models

ConQATgraph-based model clone detection

[Deissenboeck et al. IWSC 2010]

Page 18: 131010   jim cordy - submodel pattern extraction for simulink models

graph flattening ignores hierarchical structure

problems with near-miss

Page 19: 131010   jim cordy - submodel pattern extraction for simulink models

graph flattening ignores hierarchical structure

problems with near-miss

Page 20: 131010   jim cordy - submodel pattern extraction for simulink models

code-based near-miss works well NiCad, iClones, others

mature, accurate, efficient handles unexpected differences

threshold-based, tunable scalable

Page 21: 131010   jim cordy - submodel pattern extraction for simulink models

NiCadparse - extract - normalize - diff threshold

Pretty-printedPotential Clones

1234

Parsing & Potential Clone

Extraction

OriginalCode Base

1. Parse / Extract 2. Rename / Filter / Normalize

Renaming, Filtering,

Normalization

NormalizedPotential Clones

1234

CloneClasses

5.pc23.pc67.pc . . .

12.pc17.pc22.pc . . .

15.pc18.pc78.pc . . .

21.pc63.pc97.pc . . .

37.pc39.pc44.pc . . .

Choose Next Potential Clone

as Exemplar

3. Clone Analysis

Comparable Size Potential Clone Cluster

Pairwise Comparison

with Exemplar

(Repeat)

Cluster Comparable

Size PCs

NormalizedPotential Clones

1234

Pretty-printedPotential Clones

1234

Parsing & Potential Clone

Extraction

OriginalCode Base

1. Parse / Extract 2. Rename / Filter / Normalize

Renaming, Filtering,

Normalization

NormalizedPotential Clones

1234

CloneClasses

5.pc23.pc67.pc . . .

12.pc17.pc22.pc . . .

15.pc18.pc78.pc . . .

21.pc63.pc97.pc . . .

37.pc39.pc44.pc . . .

Choose Next Potential Clone

as Exemplar

3. Clone Analysis

Comparable Size Potential Clone Cluster

Pairwise Comparison

with Exemplar

(Repeat)

Cluster Comparable

Size PCs

NormalizedPotential Clones

1234

[Roy, Cordy ICPC 2008]

Page 22: 131010   jim cordy - submodel pattern extraction for simulink models

crazy idea: can we use near-miss text code methods on graphical models?

“Models are source code too” Mark Harman, keynote at SCAM 2010

[Harman SCAM 2010]

Page 23: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 24: 131010   jim cordy - submodel pattern extraction for simulink models

Simone

Simulink near-miss clone detectionexperiment

adapt NiCad near-miss code clone detector to graphical modelsvalidate vs. ConQAT

for types 1 & 2hand validate type 3 (near-miss)

[Alalfi, Cordy,Dean, Stephan, Stevenson ICSM 2012]

Page 25: 131010   jim cordy - submodel pattern extraction for simulink models

Simulink

hybrid hardware/software modelswidespread in industry - automotive, aerospace, embedded systems

mature and interesting at GM

Page 26: 131010   jim cordy - submodel pattern extraction for simulink models

Simulink

hierarchical models

[Alalfi, Cordy,Dean, Stephan, Stevenson ICSM 2012]

Page 27: 131010   jim cordy - submodel pattern extraction for simulink models

Challenge #1 code methods require text

NiCad requires a parserSolution: grammar inference

on Simulink’s internal form

...! System {! Name "onoff"! Location [168, 385, 668, 686]! Open on! ModelBrowserVisibility off! ModelBrowserWidth 200! ScreenColor "automatic"! PaperOrientationi "landscape"! PaperPositionMode "auto"! PaperType "usletter"! PaperUnits "inches"! ZoomFactor "100"! AutoZoom on! ReportName "simulink-default.rpt"! Block {! BlockType DiscretePulseGenerator! Name "Discrete Pulse\nGenerator"! Position [45, 25, 75, 55]! Amplitude "1"! Period "2"! PulseWidth "1"! PhaseDelay "0"! SampleTime "1"! }! Block {! BlockType Product! Name "Product"! Ports [2, 1, 0, 0, 0]! Position [145, 67, 175, 98]! Inputs "2"! SaturateOnIntegerOverflow on! }! ...! }! ...!

Page 28: 131010   jim cordy - submodel pattern extraction for simulink models

Challenge #2 what granularity?

NiCad requires candidates for comparisonSimulink: model (too big) block (too small) system (just right!)

...! System {! Name "onoff"! Location [168, 385, 668, 686]! Open on! ModelBrowserVisibility off! ModelBrowserWidth 200! ScreenColor "automatic"! PaperOrientationi "landscape"! PaperPositionMode "auto"! PaperType "usletter"! PaperUnits "inches"! ZoomFactor "100"! AutoZoom on! ReportName "simulink-default.rpt"! Block {! BlockType DiscretePulseGenerator! Name "Discrete Pulse\nGenerator"! Position [45, 25, 75, 55]! Amplitude "1"! Period "2"! PulseWidth "1"! PhaseDelay "0"! SampleTime "1"! }! Block {! BlockType Product! Name "Product"! Ports [2, 1, 0, 0, 0]! Position [145, 67, 175, 98]! Inputs "2"! SaturateOnIntegerOverflow on! }! ...! }! ...!

Page 29: 131010   jim cordy - submodel pattern extraction for simulink models

even with raw text, find some subsystem clones

but:90% irrelevant Simulink internal “formatting” systems

some identical systems only 70% sameentirely missed exact copies displayed differently

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

Page 30: 131010   jim cordy - submodel pattern extraction for simulink models

Challenge #3 problems with “noise”

solution: “agile parsing” to filter out irrelevant elements

...! System {! Name "onoff"! Location [168, 385, 668, 686]! Open on! ModelBrowserVisibility off! ModelBrowserWidth 200! ScreenColor "automatic"! PaperOrientationi "landscape"! PaperPositionMode "auto"! PaperType "usletter"! PaperUnits "inches"! ZoomFactor "100"! AutoZoom on! ReportName "simulink-default.rpt"! Block {! BlockType DiscretePulseGenerator! Name "Discrete Pulse\nGenerator"! Position [45, 25, 75, 55]! Amplitude "1"! Period "2"! PulseWidth "1"! PhaseDelay "0"! SampleTime "1"! }! Block {! BlockType Product! Name "Product"! Ports [2, 1, 0, 0, 0]! Position [145, 67, 175, 98]! Inputs "2"! SaturateOnIntegerOverflow on! }! ...! }! ...!

[Dean, Cordy, Malton, Schneider JASE 2003]

Page 31: 131010   jim cordy - submodel pattern extraction for simulink models

filtering removes more than 300 kinds of irrelevant elements and blocks

increases signal-to-noise ratio in text

...! System {! Name "onoff”! Block {! BlockType DiscretePulseGenerator! Name "Discrete Pulse\nGenerator”! Amplitude "1"! Period "2"! PulseWidth "1"! PhaseDelay "0"! SampleTime "1"! }! Block {! BlockType Product! Name "Product"! Ports [2, 1, 0, 0, 0]! Inputs "2”! }! ...! }! ...!

Page 32: 131010   jim cordy - submodel pattern extraction for simulink models

filtering significantly improved performance precision - 10x fewer false positives

hand validation of results

recall - many fewer false negatives fewer missed clones

much larger clones

but: some clones we could clearly see by hand still not detected - why?

Page 33: 131010   jim cordy - submodel pattern extraction for simulink models

Challenge #4 no linear order of model elements

Page 34: 131010   jim cordy - submodel pattern extraction for simulink models

Challenge #4 solution: topological sort by block, line, port, branch

Page 35: 131010   jim cordy - submodel pattern extraction for simulink models

sorting increases recall, to find many more clones

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driverneutral_up_down

1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

Page 36: 131010   jim cordy - submodel pattern extraction for simulink models

sorting increases recall, to find many more clones

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driverneutral_up_down

1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

neutral_up_down1

mutually_exclusive

neutral

up

down

validated_neutral

validated_up

validated_down

check_up

action

resetchecked_action

check_down

action

resetchecked_action

Goto1[reset]

From2[reset]

From1[reset]

reset4

down3

up2

neutral1

/Users/manaralalfi/Desktop/NiCad 3.2 Simulink/Simulink/Publicmodel/automotive/powerwindow03.mdl

printed 13 Apr 2012 14:56 page 1/1

powerwindow03/power_window_control_system/validate_driver

Page 37: 131010   jim cordy - submodel pattern extraction for simulink models

...! System {! Name "onoff”! Block {! BlockType DiscretePulseGenerator! Name "Discrete Pulse\nGenerator”! Amplitude "1"! Period "2"! PulseWidth "1"! PhaseDelay "0"! SampleTime "1"! }! Block {! BlockType Product! Name "Product"! Ports [2, 1, 0, 0, 0]! Inputs "2”! }! ...! }! ...!

Challenge #5 finding type 2 (renamed) requires anonymization

names in Simulink not like other languages

solution: context-dependent anonymizer

Page 38: 131010   jim cordy - submodel pattern extraction for simulink models

validation - Simone vs. ConQAT on Matlab Central public model systems

finds all type1(exact) and type 2 (renamed) clones found by ConQAT

finds many new type 3 (near-miss) clones not found by ConQAT

finds larger clones and larger clone classes

[Alalfi, Cordy,Dean, Stephan, Stevenson ICSM 2012]

Page 39: 131010   jim cordy - submodel pattern extraction for simulink models

Simone vs. ConQAT

Page 40: 131010   jim cordy - submodel pattern extraction for simulink models

Total nontrivial subsystems

357 Extractor only Filtered Filtered & Sorted Filtered, Sorted &

Renamed

Clone Type Type 1 Type 3-1 @30% Type 1 Type 3-1

@30% Type 1 Type 3-1 @30% Type 2 Type 3-2

@30%

Clone Pairs 116 / 10* 364 / 164* 204 204 303 181 279 1938

Clone Classes 8 / 4* 57 / 56* 44 55 45 52 48 24

Clone Coverage 8% / 3% 52% / 46% 37% 48% 42% 45% 49% 75%

Simone near-miss clones in Simulink public automotive model variants

[Alalfi, Cordy,Dean, Stephan, Stevenson ICSM 2012]

Page 41: 131010   jim cordy - submodel pattern extraction for simulink models

!"#$%&%'()(*+&$%'( ,+-.".$%-$(/%-01"-2( 3#"-'(/%-01"-2(

*4.$%1.(56$&07$%'( ,#+-%.( ,#0..%.( ,#+-%.( ,#0..%.( ,#+-%.( ,#0..%.(

!"#$"%&'()#*"$& +,-& ,,.& ,+& ,/+& ,.& -0,& ,1&

2345$3)6&7(48& 1/9:& ;0-& .,& ,11& .,& 1.;0& --&

'8)<"#&=>"4?$(@& --0& 1+.& -0& ;;;& -0& -,.& -,&

89('+$)::( 099& ;11& ;.& ;90& ;0& /::& ;:&

89('+$):;( 099& ;11& ;/& ;.-& ;.& /1.& ;1&

89('+$):<( 0./& ;1;& ;+& ;.-& ;/& /;-& ;,&

89('+$):=( 1:01& ;/-& ,+& ,9;& -1& 11-9& ,:&

Simone near-miss pattern mining in Simulink models

Page 42: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 43: 131010   jim cordy - submodel pattern extraction for simulink models

Case studyGM fuel system models

SimGraph visualizationunderstanding Simulink model subsystem similarity

Page 44: 131010   jim cordy - submodel pattern extraction for simulink models

GM Fuel System ModelsSubsystem similarity overview

Largesubsystems

Midsize subsystems

Smallsubsystems

Z models (red)

Y models (green)

X models (blue)

Page 45: 131010   jim cordy - submodel pattern extraction for simulink models

GM Fuel System ModelsSubsystem similarity overview

Many subsystems unique - not similar to any others in

these models

Page 46: 131010   jim cordy - submodel pattern extraction for simulink models

GM Fuel System ModelsRemove unique subsystems Connecting lines represent subsystem similarity -

thick lines, 90-100% similarthin lines, 70-80% similar

Similar subsystems “near-miss clones”

both within and between models

Page 47: 131010   jim cordy - submodel pattern extraction for simulink models

GM Fuel System ModelsRearrange to cluster similar subsystems Clusters reveal groups of

similar subsystems -“clone classes”

Page 48: 131010   jim cordy - submodel pattern extraction for simulink models

GM Fuel System ModelsInfer common subsystem patterns

Patterns characterize common repeated similar

subsystem paradigms

Small groups of relatively large

similar subsystems both within and across models

Large groups of small to mid-sized similar subsystems across

models

Page 49: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 50: 131010   jim cordy - submodel pattern extraction for simulink models

using patterns

SimNavexemplar sets as patterns

SimPatmodeling variance

Page 51: 131010   jim cordy - submodel pattern extraction for simulink models

SimNav presenting and integrating results in Simulink

exemplar sets as patterns

Page 52: 131010   jim cordy - submodel pattern extraction for simulink models

SimNav

&'()*'+,

-'./0

&=!>-?

!"#$"%#12345/61078*9+170131839:7;69):8178901<

&'()*'+,78*9+170131839:7;(901*6<&'(-/@

Page 53: 131010   jim cordy - submodel pattern extraction for simulink models
Page 54: 131010   jim cordy - submodel pattern extraction for simulink models

SimPat characterizing and representing subsystem patterns

modeling variance

Page 55: 131010   jim cordy - submodel pattern extraction for simulink models

SimPat

Page 56: 131010   jim cordy - submodel pattern extraction for simulink models

!901*7D/E1:+6!901*7.*9+17.*/66A7B76)56C631(78*9+16

!901*7D/E1:+7FA!1:G17#H:9E*177/+07D:166):17?6I(/I9+

Page 57: 131010   jim cordy - submodel pattern extraction for simulink models

!901*7D/E1:+7JA777!1:G17/**73H:11777777776)56C631(67

!901*7D/E1:+6!901*7.*9+17.*/66A7B76)56C631(78*9+16

Page 58: 131010   jim cordy - submodel pattern extraction for simulink models

!901*7D/E1:+7BA.9((9+71*1(1+3677777777777779+*C

!901*7D/E1:+6!901*7.*9+17.*/66A7B76)56C631(78*9+16

Page 59: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

!"#$

%&$

%"$

&'$ &($ &)$

&'$

&'$

&*$

%!$

&($ &)$ &*$

&($ &)$ &*$

!"#$

Page 60: 131010   jim cordy - submodel pattern extraction for simulink models

model pattern evolutionSimCCT

evolution of patterns across versions

pattern variance in two dimensionsinstance, time

[Stephan, Alalfi, Cordy, Stevenson ME 2013]

Page 61: 131010   jim cordy - submodel pattern extraction for simulink models

model patternMCC - model clone class

elements of a model patternMCI - model clone instance

evolution of patterns migration of MCIs between MCCs across versions of the system

Page 62: 131010   jim cordy - submodel pattern extraction for simulink models

evolution of patterns1-1 pattern is stable across versions

1-1* pattern exists, but loses or gains MCIs

1-many pattern splits into multiple patterns

1-many* pattern splits, losing or gaining MCIs

1-0 pattern unifies or disappears

Page 63: 131010   jim cordy - submodel pattern extraction for simulink models

SimCCT

Page 64: 131010   jim cordy - submodel pattern extraction for simulink models

SimCCT - Power Window MCC 3 !" #"

!" $" %" &" '(" '!" '#"

!" $" %" &" '(" '!" '#" )("

*'"

*)"

*+"

*,"-"*!" ./01"2/3"405/26"3/"728"9::"

!"#"$#%&'()#*+,-!,.,

!"#"$#%/0)#1$2",-!,3,

45"$6%78,-!,9,

Page 65: 131010   jim cordy - submodel pattern extraction for simulink models

!"#

!$#

$# %# &#

%# &#

%# &#

!'# ()*+#,)-#.*/),0#-)#1,2#344#

%# &#

!%#

!&#

SimCCT - Power Window MCC 2

Page 66: 131010   jim cordy - submodel pattern extraction for simulink models

!"#$

%&$

%"$

&'$ &($ &)$

&'$

&'$

&*$

%!$

&($ &)$ &*$

&($ &)$ &*$

!"#$

SimCCT - AVS MCC 7

Page 67: 131010   jim cordy - submodel pattern extraction for simulink models

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Page 68: 131010   jim cordy - submodel pattern extraction for simulink models

current workStateflow models

deployment at GManalysis of more systems

Page 69: 131010   jim cordy - submodel pattern extraction for simulink models

Thank you! Manar H. AlalfiThomas R. DeanMatthew StephanAndrew Stevenson

Joseph d’AmbrosioCheryl Williams

Page 70: 131010   jim cordy - submodel pattern extraction for simulink models

James R. CordyQueen’s University

NECSIS Automotive Partnership Canada

Submodel Pattern Extraction for Simulink Models