SlideShare une entreprise Scribd logo
1  sur  17
Detec%ng
So+ware

       Modularity
Viola%ons



       Sunny
Wong,^*
Yuanfang
Cai,*

       Miryung
Kim,†
and
Michael
Dalton*


       *
Drexel
University

       †
University
of
Texas
at
Aus%n

       ^
Siemens
Healthcare



Supported
in
part
by
NSF
CCF‐0916891,
CCF‐1043810,
and
DUE‐0837665

Mo%va%on

    The
Essence
of
Modularity:


          Allows
for
independent
module
evolu%on

           [Parnas
72;
Baldwin
and
Clark
00]

    In
reality,
modules
do
not
always
change
independently

          Quick
and
dirty
implementa%on
leaves
technical
debts

          So+ware
evolves
in
a
way
that
deviates
from
original
design


    Modularity
viola%on:


          Components
that
are
designed
to
evolve
independently
yet
change

           together
in
reality
frequently

    Our
goal:


          Detect
modularity
viola%ons

          Slow
down
modularity
decay

Limita%ons
of
Exis%ng
Approaches

    Verifica%on
and
valida%on

          Modularity
viola%ons
usually
do
not
affect
func%onality

          Not
testable

          Not
problema%c
un%l
maintenance

    Tradi%onal
modularity
analyses

          Prevailing
metrics
(e.g.,
coupling,
cohesion)
do
not
measure

           independence
of
module
evolu%on

          Do
not
detect
the
mismatches
between
design
and
reality

    Code
smell
analyses

          Not
all
code
smells
cause
modularity
viola%on

          Not
all
modularity
viola%ons
are
code
smells

Approach
Overview

    Step
1:
Find
which
modules
should
change
together
from
their

     design
structure

          Input:
design
model
(e.g.,
UML,
source
code)


          Clio
finds
modules
from
derived
design
structure
matrix
(DSM)

           [Baldwin
and
Clark
00]

    Step
2:
Find
which
modules
actually
change
together
in
reality

          Input:
revision
history

          Clio
finds
logical
coupling
of
components
[Ying
et
al.
04]

    Step
3:
Discover
recurring
discrepancies
between
the
output

     of
step
1
and
the
output
of
step
2
as
modularity
viola-ons

          Clio
compares
which
modules
should
change
together
with
which

           modules
actually
change
together

          Recurring
discrepancies
are
reported
as
modularity
viola%ons

Example
(Maze
Game)





          [Gamma
et
al.
94]

Design
Rule
Hierarchy
Analysis







            [Wong
et
al.
09]

Step
1:
Structure‐based
Impact
Analysis



                              Green: change seed
                              Blue: structure-based impact scope
Change seed: Door
Structure Impact-scope:
 MazeFactory
 DoorNeedingSpell
 …




                          Change seed:
                           EnchantedMazeFactory
                          Structure Impact-scope:
                           (none)
Step
2:
History‐based
Impact
Analysis



                            Green: change seed

                            Red: history-based impact scope
Change seed: Door
History Impact-scope:
 MapSite




                        Change seed:
                         EnchantedMazeFactory
                        History Impact-scope:
                         BombedMazeFactory
Step
3:
Find
Discrepancies



                              Green: change seed
                              Blue: structure-based impact scope
                              Red: history-based impact scope
Change seed: Door
Structure Impact-scope:
 MazeFactory
 DoorNeedingSpell
 …
History Impact-scope:
 MapSite


                          Change seed:
                           EnchantedMazeFactory
                          Structure Impact-scope:
                           (none)
                          History Impact-scope:
                           BombedMazeFactory
Iden%fy
Recurring
Discrepancies
as

          Modularity
Viola%ons

    Example
discrepancy
sets:
{a,
b},
{a,
b,
c},
{a,
b}


                                      Frequency

                       {a,
b}
            3

                       {a,
c}
            1

                      {a,
b,
c}
          1



    Clio
takes
minimal
frequency
threshold
as
input,
and
orders

     the
discrepancies
according
to
their
frequencies.


Evalua%on


    Evalua%on
ques%ons


          Q1:

How
accurate
are
the
viola%ons
iden%fied
by
Clio?

          Q2:

How
early
can
Clio
iden%fy
viola%ons?

          Q3:

What
are
the
characteris%cs
of
viola%ons
iden%fied
by
Clio?



    Manually
confirm
viola%ons
by
looking
forward
in
history

          Refactoring
in
codebase

          Developer
recogni%on
(e.g.,
change
request)

          Symptoms
of
code
smells



    Conserva%ve
confirma%on

Evalua%on
Subjects

    Eclipse
JDT

          10
releases
(~3
years)

          27806
commits
in
revision
history

          3458
modifica%on
requests

          222
KSLOC
in
latest
version

    Hadoop
Common

          15
releases
(~3
years)

          3001
commits
in
revision
history

          490
modifica%on
requests

          64
KSLOC
in
latest
version

    Experimental
Serngs

          Minimal
threshold
of
recurring
discrepancies:
2

          Length
of
sliding
window
for
analysis:

5
releases


Q1:
Accuracy
of
Detected
Modularity


Viola%ons



                Reported
      Total

                                         Precision

                Viola3ons
   Confirmed


 Eclipse
JDT
      399
        161
        40%


 Hadoop
           231
        152
        66%

Q2:
Timeliness
of
Modularity
Viola%on


          Detec%on

    Hadoop:
Clio
detects
modularity
viola%ons,
on
average,
6

     releases
before
developers
iden%fy
the
design
problems

    Eclipse:
Clio
detects
modularity
viola%ons,
on
average,
5

     releases
before
developers
iden%fy
the
design
problems

Q3:
Characteris%cs
of
Modularity


             Viola%ons


    Analyzed
symptoms
of
modularity
viola%ons

          Cyclic
dependencies

          Cloned
code

          Poor
inheritance
hierarchy

          Unnamed
coupling
(43%
in
Hadoop,
16%
in
Eclipse)

    Example
of
unnamed
coupling

          Several
classes
iden%fied
as
a
part
of
modularity
viola%ons,
but
do
not

           exhibit
any
symptoms
of
bad
code
smells.


          Open
modifica%on
request
to
“redesign/refactor”
those
classes

           because
they
are
“hard
to
maintain,
briwle,
and
merits
some
rework”

Summary

    We
define
modularity
viola-on
as
the
mismatches
between

     designed
modular
structure
and
actual
evolu%on
path

    Clio
compares
how
modules
should
change
together
against

     how
modules
actually
change
together
to
discover
modularity

     viola-ons

    Can
detect
modularity
viola%ons
with
40%
accuracy
for
Eclipse

     and
66%
accuracy
for
Hadoop

    Can
iden%fy
modularity
viola%ons
several
releases
before

     developers
discover
them


    Symptoms
of
modularity
viola%ons
observed
in
our
study
go

     beyond
known
bad
smells


Detec%ng
So+ware

       Modularity
Viola%ons



       Sunny
Wong,^*
Yuanfang
Cai,*

       Miryung
Kim,†
and
Michael
Dalton*


       *
Drexel
University

       †
University
of
Texas
at
Aus%n

       ^
Siemens
Healthcare



Supported
in
part
by
NSF
CCF‐0916891,
CCF‐1043810,
and
DUE‐0837665


Contenu connexe

Similaire à ICSE 2011 Research Paper on Modularity Violations

Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Detecting the High Level Similarities in Software Implementation Process Usin...
Detecting the High Level Similarities in Software Implementation Process Usin...Detecting the High Level Similarities in Software Implementation Process Usin...
Detecting the High Level Similarities in Software Implementation Process Usin...IOSR Journals
 
An Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelAn Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelNicolas Bettenburg
 
Incremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software EngineeringIncremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software EngineeringÁkos Horváth
 
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...Gui Padua
 
An Exploration of Challenges Limiting Pragmatic Software Defect Prediction
An Exploration of Challenges Limiting Pragmatic Software Defect PredictionAn Exploration of Challenges Limiting Pragmatic Software Defect Prediction
An Exploration of Challenges Limiting Pragmatic Software Defect PredictionSAIL_QU
 
20080501 software verification_sharygina_lecture01
20080501 software verification_sharygina_lecture0120080501 software verification_sharygina_lecture01
20080501 software verification_sharygina_lecture01Computer Science Club
 
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...Benoit Combemale
 
Avoiding Software Insanity
Avoiding Software InsanityAvoiding Software Insanity
Avoiding Software Insanityjosephnaveen
 
10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)guestebde
 
2011-05-02 - VU Amsterdam - Testing safety critical systems
2011-05-02 - VU Amsterdam - Testing safety critical systems2011-05-02 - VU Amsterdam - Testing safety critical systems
2011-05-02 - VU Amsterdam - Testing safety critical systemsJaap van Ekris
 
Testing survey by_directions
Testing survey by_directionsTesting survey by_directions
Testing survey by_directionsTao He
 
IEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-Patterns
IEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-PatternsIEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-Patterns
IEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-PatternsGui Padua
 
Towards a Macrobenchmark Framework for Performance Analysis of Java Applications
Towards a Macrobenchmark Framework for Performance Analysis of Java ApplicationsTowards a Macrobenchmark Framework for Performance Analysis of Java Applications
Towards a Macrobenchmark Framework for Performance Analysis of Java ApplicationsGábor Szárnyas
 
STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...
STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...
STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...westand
 
2010-03-31 - VU Amsterdam - Experiences testing safety critical systems
2010-03-31 - VU Amsterdam - Experiences testing safety critical systems2010-03-31 - VU Amsterdam - Experiences testing safety critical systems
2010-03-31 - VU Amsterdam - Experiences testing safety critical systemsJaap van Ekris
 
Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburgSAIL_QU
 

Similaire à ICSE 2011 Research Paper on Modularity Violations (20)

Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Detecting the High Level Similarities in Software Implementation Process Usin...
Detecting the High Level Similarities in Software Implementation Process Usin...Detecting the High Level Similarities in Software Implementation Process Usin...
Detecting the High Level Similarities in Software Implementation Process Usin...
 
An Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelAn Empirical Study on Inconsistent Changes to Code Clones at Release Level
An Empirical Study on Inconsistent Changes to Code Clones at Release Level
 
Incremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software EngineeringIncremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software Engineering
 
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
 
An Exploration of Challenges Limiting Pragmatic Software Defect Prediction
An Exploration of Challenges Limiting Pragmatic Software Defect PredictionAn Exploration of Challenges Limiting Pragmatic Software Defect Prediction
An Exploration of Challenges Limiting Pragmatic Software Defect Prediction
 
20080501 software verification_sharygina_lecture01
20080501 software verification_sharygina_lecture0120080501 software verification_sharygina_lecture01
20080501 software verification_sharygina_lecture01
 
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
 
Avoiding Software Insanity
Avoiding Software InsanityAvoiding Software Insanity
Avoiding Software Insanity
 
10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)
 
2011-05-02 - VU Amsterdam - Testing safety critical systems
2011-05-02 - VU Amsterdam - Testing safety critical systems2011-05-02 - VU Amsterdam - Testing safety critical systems
2011-05-02 - VU Amsterdam - Testing safety critical systems
 
Testing survey by_directions
Testing survey by_directionsTesting survey by_directions
Testing survey by_directions
 
Scalax
ScalaxScalax
Scalax
 
IEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-Patterns
IEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-PatternsIEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-Patterns
IEEE ICPC 2017 - Studying the Prevalence of Exception Handling Anti-Patterns
 
Towards a Macrobenchmark Framework for Performance Analysis of Java Applications
Towards a Macrobenchmark Framework for Performance Analysis of Java ApplicationsTowards a Macrobenchmark Framework for Performance Analysis of Java Applications
Towards a Macrobenchmark Framework for Performance Analysis of Java Applications
 
STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...
STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...
STiki: An Anti-vandalism Tool for Wikipedia using the Spatio-temporal Propert...
 
2010-03-31 - VU Amsterdam - Experiences testing safety critical systems
2010-03-31 - VU Amsterdam - Experiences testing safety critical systems2010-03-31 - VU Amsterdam - Experiences testing safety critical systems
2010-03-31 - VU Amsterdam - Experiences testing safety critical systems
 
Symbolic Execution And KLEE
Symbolic Execution And KLEESymbolic Execution And KLEE
Symbolic Execution And KLEE
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburg
 

Dernier

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Dernier (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

ICSE 2011 Research Paper on Modularity Violations

  • 1. Detec%ng
So+ware
 Modularity
Viola%ons
 Sunny
Wong,^*
Yuanfang
Cai,*
 Miryung
Kim,†
and
Michael
Dalton*
 *
Drexel
University
 †
University
of
Texas
at
Aus%n
 ^
Siemens
Healthcare
 Supported
in
part
by
NSF
CCF‐0916891,
CCF‐1043810,
and
DUE‐0837665

  • 2. Mo%va%on
   The
Essence
of
Modularity:

   Allows
for
independent
module
evolu%on
 [Parnas
72;
Baldwin
and
Clark
00]
   In
reality,
modules
do
not
always
change
independently
   Quick
and
dirty
implementa%on
leaves
technical
debts
   So+ware
evolves
in
a
way
that
deviates
from
original
design

   Modularity
viola%on:

   Components
that
are
designed
to
evolve
independently
yet
change
 together
in
reality
frequently
   Our
goal:

   Detect
modularity
viola%ons
   Slow
down
modularity
decay

  • 3. Limita%ons
of
Exis%ng
Approaches
   Verifica%on
and
valida%on
   Modularity
viola%ons
usually
do
not
affect
func%onality
   Not
testable
   Not
problema%c
un%l
maintenance
   Tradi%onal
modularity
analyses
   Prevailing
metrics
(e.g.,
coupling,
cohesion)
do
not
measure
 independence
of
module
evolu%on
   Do
not
detect
the
mismatches
between
design
and
reality
   Code
smell
analyses
   Not
all
code
smells
cause
modularity
viola%on
   Not
all
modularity
viola%ons
are
code
smells

  • 4. Approach
Overview
   Step
1:
Find
which
modules
should
change
together
from
their
 design
structure
   Input:
design
model
(e.g.,
UML,
source
code)

   Clio
finds
modules
from
derived
design
structure
matrix
(DSM)
 [Baldwin
and
Clark
00]
   Step
2:
Find
which
modules
actually
change
together
in
reality
   Input:
revision
history
   Clio
finds
logical
coupling
of
components
[Ying
et
al.
04]
   Step
3:
Discover
recurring
discrepancies
between
the
output
 of
step
1
and
the
output
of
step
2
as
modularity
viola-ons
   Clio
compares
which
modules
should
change
together
with
which
 modules
actually
change
together
   Recurring
discrepancies
are
reported
as
modularity
viola%ons

  • 5. Example
(Maze
Game)
 [Gamma
et
al.
94]

  • 7. Step
1:
Structure‐based
Impact
Analysis

 Green: change seed Blue: structure-based impact scope Change seed: Door Structure Impact-scope: MazeFactory DoorNeedingSpell … Change seed: EnchantedMazeFactory Structure Impact-scope: (none)
  • 8. Step
2:
History‐based
Impact
Analysis

 Green: change seed Red: history-based impact scope Change seed: Door History Impact-scope: MapSite Change seed: EnchantedMazeFactory History Impact-scope: BombedMazeFactory
  • 9. Step
3:
Find
Discrepancies

 Green: change seed Blue: structure-based impact scope Red: history-based impact scope Change seed: Door Structure Impact-scope: MazeFactory DoorNeedingSpell … History Impact-scope: MapSite Change seed: EnchantedMazeFactory Structure Impact-scope: (none) History Impact-scope: BombedMazeFactory
  • 10. Iden%fy
Recurring
Discrepancies
as
 Modularity
Viola%ons
   Example
discrepancy
sets:
{a,
b},
{a,
b,
c},
{a,
b}
 Frequency
 {a,
b}
 3
 {a,
c}
 1
 {a,
b,
c}
 1
   Clio
takes
minimal
frequency
threshold
as
input,
and
orders
 the
discrepancies
according
to
their
frequencies.


  • 11. Evalua%on
   Evalua%on
ques%ons

   Q1:

How
accurate
are
the
viola%ons
iden%fied
by
Clio?
   Q2:

How
early
can
Clio
iden%fy
viola%ons?
   Q3:

What
are
the
characteris%cs
of
viola%ons
iden%fied
by
Clio?
   Manually
confirm
viola%ons
by
looking
forward
in
history
   Refactoring
in
codebase
   Developer
recogni%on
(e.g.,
change
request)
   Symptoms
of
code
smells
   Conserva%ve
confirma%on

  • 12. Evalua%on
Subjects
   Eclipse
JDT
   10
releases
(~3
years)
   27806
commits
in
revision
history
   3458
modifica%on
requests
   222
KSLOC
in
latest
version
   Hadoop
Common
   15
releases
(~3
years)
   3001
commits
in
revision
history
   490
modifica%on
requests
   64
KSLOC
in
latest
version
   Experimental
Serngs
   Minimal
threshold
of
recurring
discrepancies:
2
   Length
of
sliding
window
for
analysis:

5
releases


  • 13. Q1:
Accuracy
of
Detected
Modularity

 Viola%ons
 Reported
 Total
 Precision
 Viola3ons
 Confirmed
 Eclipse
JDT
 399
 161
 40%
 Hadoop
 231
 152
 66%

  • 14. Q2:
Timeliness
of
Modularity
Viola%on

 Detec%on
   Hadoop:
Clio
detects
modularity
viola%ons,
on
average,
6
 releases
before
developers
iden%fy
the
design
problems
   Eclipse:
Clio
detects
modularity
viola%ons,
on
average,
5
 releases
before
developers
iden%fy
the
design
problems

  • 15. Q3:
Characteris%cs
of
Modularity

 Viola%ons
   Analyzed
symptoms
of
modularity
viola%ons
   Cyclic
dependencies
   Cloned
code
   Poor
inheritance
hierarchy
   Unnamed
coupling
(43%
in
Hadoop,
16%
in
Eclipse)
   Example
of
unnamed
coupling
   Several
classes
iden%fied
as
a
part
of
modularity
viola%ons,
but
do
not
 exhibit
any
symptoms
of
bad
code
smells.

   Open
modifica%on
request
to
“redesign/refactor”
those
classes
 because
they
are
“hard
to
maintain,
briwle,
and
merits
some
rework”

  • 16. Summary
   We
define
modularity
viola-on
as
the
mismatches
between
 designed
modular
structure
and
actual
evolu%on
path
   Clio
compares
how
modules
should
change
together
against
 how
modules
actually
change
together
to
discover
modularity
 viola-ons
   Can
detect
modularity
viola%ons
with
40%
accuracy
for
Eclipse
 and
66%
accuracy
for
Hadoop
   Can
iden%fy
modularity
viola%ons
several
releases
before
 developers
discover
them

   Symptoms
of
modularity
viola%ons
observed
in
our
study
go
 beyond
known
bad
smells


  • 17. Detec%ng
So+ware
 Modularity
Viola%ons
 Sunny
Wong,^*
Yuanfang
Cai,*
 Miryung
Kim,†
and
Michael
Dalton*
 *
Drexel
University
 †
University
of
Texas
at
Aus%n
 ^
Siemens
Healthcare
 Supported
in
part
by
NSF
CCF‐0916891,
CCF‐1043810,
and
DUE‐0837665