131010 jim cordy - submodel pattern extraction for simulink models

Preview:

DESCRIPTION

Simulink, patterns, extraction

Citation preview

Submodel Pattern Extraction for Simulink Models

James R. CordyQueen’s University

NECSIS Automotive Partnership Canada

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Model Pattern Engineering

discover, catalogue and formalize submodel patterns

emergentdomain-specific, client-specific

discovery analysis, identification methodology, techniques

classification characterization, formalization notation, tooling, catalogues

application deployment, analysis organization, documentation, use cases

why?

reuse in model development

standards/consistency analysis/enforcement

failure/change propagation in model maintenance

verification/test optimization

deployment variation/optimization

model product lines

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

code clonescopy-paste programming

efficient, widely usedproblematic

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]

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]

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]

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]

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]

model clonestype 2 - renamed

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

model clonestype 3 - near miss

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

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

ConQATgraph-based model clone detection

[Deissenboeck et al. IWSC 2010]

graph flattening ignores hierarchical structure

problems with near-miss

graph flattening ignores hierarchical structure

problems with near-miss

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

mature, accurate, efficient handles unexpected differences

threshold-based, tunable scalable

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]

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]

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

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]

Simulink

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

mature and interesting at GM

Simulink

hierarchical models

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

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! }! ...! }! ...!

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! }! ...! }! ...!

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

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]

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”! }! ...! }! ...!

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?

Challenge #4 no linear order of model elements

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

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

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

...! 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

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]

Simone vs. ConQAT

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]

!"#$%&%'()(*+&$%'( ,+-.".$%-$(/%-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

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

Case studyGM fuel system models

SimGraph visualizationunderstanding Simulink model subsystem similarity

GM Fuel System ModelsSubsystem similarity overview

Largesubsystems

Midsize subsystems

Smallsubsystems

Z models (red)

Y models (green)

X models (blue)

GM Fuel System ModelsSubsystem similarity overview

Many subsystems unique - not similar to any others in

these 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

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

similar subsystems -“clone classes”

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

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

using patterns

SimNavexemplar sets as patterns

SimPatmodeling variance

SimNav presenting and integrating results in Simulink

exemplar sets as patterns

SimNav

&'()*'+,

-'./0

&=!>-?

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

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

SimPat characterizing and representing subsystem patterns

modeling variance

SimPat

!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+

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

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

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

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

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

!"#$

%&$

%"$

&'$ &($ &)$

&'$

&'$

&*$

%!$

&($ &)$ &*$

&($ &)$ &*$

!"#$

model pattern evolutionSimCCT

evolution of patterns across versions

pattern variance in two dimensionsinstance, time

[Stephan, Alalfi, Cordy, Stevenson ME 2013]

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

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

SimCCT

SimCCT - Power Window MCC 3 !" #"

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

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

*'"

*)"

*+"

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

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

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

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

!"#

!$#

$# %# &#

%# &#

%# &#

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

%# &#

!%#

!&#

SimCCT - Power Window MCC 2

!"#$

%&$

%"$

&'$ &($ &)$

&'$

&'$

&*$

%!$

&($ &)$ &*$

&($ &)$ &*$

!"#$

SimCCT - AVS MCC 7

MPE near-miss clones

near-miss clone detection Simone

analysis of GM models pattern extraction

pattern evolution

current workStateflow models

deployment at GManalysis of more systems

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

Joseph d’AmbrosioCheryl Williams

James R. CordyQueen’s University

NECSIS Automotive Partnership Canada

Submodel Pattern Extraction for Simulink Models

Recommended