SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Motivation
□ >50% of maintenance time spent trying to
  understand the program




Marc Eaddy           ICPC 2008               2
Motivation
□ >50% of maintenance time spent trying to
  understand the program
       □ Where are the features,
         reqs, etc. in the code?




Marc Eaddy                  ICPC 2008        3
Motivation
□ >50% of maintenance time spent trying to
  understand the program
       □ Where are the features,
         reqs, etc. in the code?
       □ What is this code for?




Marc Eaddy                  ICPC 2008        4
Motivation
□ >50% of maintenance time spent trying to
  understand the program
       □ Where are the features,
         reqs, etc. in the code?
       □ What is this code for?
       □ Why is it hard to
         understand and change
         the program?


Marc Eaddy                  ICPC 2008        5
What is a “concern?”
             Anything that affects the implementation of a program

□ Feature, requirement, design pattern,
  coding idiom, etc.
□ Raison d'être for code
       □ Every line of code exists to satisfy some concern




Marc Eaddy                          ICPC 2008                        6
Concern location problem
             Concern–code relationship hard to obtain

                                         Program
              Concerns                   Elements




Marc Eaddy                   ICPC 2008                  7
Concern location problem
             Concern–code relationship hard to obtain

                                         Program
              Concerns                   Elements




□ Concern–code relationship undocumented


Marc Eaddy                   ICPC 2008                  8
Concern location problem
                Concern–code relationship hard to obtain

                                            Program
                 Concerns                   Elements




□ Concern–code relationship undocumented
□ Reverse engineer the relationship
       □ (but, which one?)
Marc Eaddy                      ICPC 2008                  9
Software pruning
□ Remove code that supports certain features,
  reqs, etc.
       □ Reduce program’s footprint
       □ Support different platforms
       □ Simplify program




Marc Eaddy                  ICPC 2008       10
Prune dependency rule [ACOM’07]
□ Code is prune dependent on concern if
       □ Pruning the concern requires removing or
         altering the code
□ Must alter code that depends on removed
  code
       □ Prevent compile errors
       □ Eliminate “dead code”
□ Easy to determine/approximate
Marc Eaddy                  ICPC 2008               11
Automated concern location
             Concern–code relationship predicted by an “expert”

□ Experts mine clues in code, docs, etc.
□ Existing techniques use 1 or 2 experts only
□ Our solution: Cerberus
       1. Information retrieval
       2. Execution tracing
       3. Prune dependency analysis



Marc Eaddy                        ICPC 2008                       12
IR-based concern location
□ i.e., Google for code
□ Program entities are documents
□ Requirements are queries
             Requirement                Source
             “Array.join”                Code

                                        Id_joi
                 join                      n
                                        js_join(
                                             )
Marc Eaddy                  ICPC 2008              13
Vector space model [Salton]
□ Parse code and reqs doc to extract term vectors
       □ NativeArray.js_join() method “native,” “array,” “join”
       □ “Array.join” requirement “array,” “join”
□ Our contributions
       □ Expand abbreviations
             □ numconns   number, connections, numberconnections
       □ Index fields
□ Weigh terms (tf · idf)
       □ Term frequency (tf)
       □ Inverse document frequency (idf)
□ Similarity = cosine distance between document and
  query vectors
Marc Eaddy                         ICPC 2008                       14
Tracing-based concern location
□ Observe elements activated when concern is
  exercised
       □ Unit tests for each concern
       □ e.g., find elements uniquely activated by a concern




Marc Eaddy                      ICPC 2008                      15
Tracing-based concern location
□ Observe elements activated when concern is
  exercised
       □ Unit tests for each concern
       □ e.g., find elements uniquely activated by a concern
                      Unit Test               Call
                  for “Array.join”           Graph
                 var a = new Array(1,
                 2);
                 if (a.join(',') ==
                 "1,2")
                 {
                     print "Test
                 passed";
                 }
Marc Eaddy       else {                                        16
                     print "Test      js_construct js_joi
                 failed";                            n
Tracing-based concern location
□ Observe elements activated when concern is
  exercised
       □ Unit tests for each concern
       □ e.g., find elements uniquely activated by a concern
                      Unit Test               Call
                  for “Array.join”           Graph
                 var a = new Array(1,
                 2);
                 if (a.join(',') ==
                 "1,2")
                 {
                     print "Test
                 passed";
                 }
Marc Eaddy       else {                                        17
                     print "Test      js_construct js_joi
                 failed";                            n
Prune dependency analysis
□ Infer relevant elements based on structural
  relationship to relevant element e (seed)
       □ Assumes we already have some seeds
□ Prune dependency analysis
       □ Determines prune dependency rule using
         program analysis
       □ Find references to e
       □ Find superclasses and subclasses of e

Marc Eaddy                 ICPC 2008              18
PDA example

               Source Code               Program Dependency Graph
             interface A {                                        inherits
                 public void foo();                                         A
             }                               C                B
             public class B implements A {
                 public void foo() { ... }         refs
                 public void bar() { ... }
                                          contains            contains contains
             }
             public class C {                           contains
                 public static void main() {
                     B b = new B();
                     b.bar();                    calls
                 }                         main        bar       foo       foo




Marc Eaddy                                ICPC 2008                               19
PDA example

               Source Code               Program Dependency Graph
             interface A {                                        inherits
                 public void foo();                                         A
             }                               C                B
             public class B implements A {
                 public void foo() { ... }         refs
                 public void bar() { ... }
                                          contains            contains contains
             }
             public class C {                           contains
                 public static void main() {
                     B b = new B();
                     b.bar();                    calls
                 }                         main        bar       foo       foo




Marc Eaddy                                ICPC 2008                               20
PDA example

               Source Code               Program Dependency Graph
             interface A {                                        inherits
                 public void foo();                                         A
             }                               C                B
             public class B implements A {
                 public void foo() { ... }         refs
                 public void bar() { ... }
                                          contains            contains contains
             }
             public class C {                           contains
                 public static void main() {
                     B b = new B();
                     b.bar();                    calls
                 }                         main        bar       foo       foo




Marc Eaddy                                ICPC 2008                               21
PDA example

               Source Code               Program Dependency Graph
             interface A {
                 public void foo();
                                                                  inherits
                                             C                B             A
             }
             public class B implements A {
                 public void foo() { ... }         refs
                 public void bar() { ... }
                                          contains            contains contains
             }
             public class C {                           contains
                 public static void main() {
                     B b = new B();
                     b.bar();                    calls
                 }                         main        bar       foo       foo




Marc Eaddy                                ICPC 2008                               22
PDA example

               Source Code               Program Dependency Graph
             interface A {                                        inherits
                 public void foo();                                         A
             }                               C                B
             public class B implements A {
                 public void foo() { ... }         refs
                 public void bar() { ... }
                                          contains            contains contains
             }
             public class C {                           contains
                 public static void main() {
                     B b = new B();
                     b.bar();                    calls
                 }                         main        bar       foo       foo




Marc Eaddy                                ICPC 2008                               23
Cerberus




Marc Eaddy    ICPC 2008   24
Cerberus ≈ PROMESIR + SNIAFL




Marc Eaddy              ICPC 2008           25
Cerberus effectiveness
               Cerberus




Marc Eaddy                            26
Ignoring “No results found”

                      Cerberus




Marc Eaddy                                 27
Future work
□ Improve PDA
       □ Reimplemented using Soot and Polyglot
       □ Generalize using prune dependency predicates
       □ Improve precision using points-to analysis
       □ Improve accuracy using
             □ Dominator heuristic
             □ Variable liveness analysis
□ Improve accuracy of Cerberus
       □ Combine experts using matrix linear regression

Marc Eaddy                          ICPC 2008             28
Cerberus contributions
□ Effectively combined 3
  concern location techniques



□ PDA boosts performance of         Source Code
                                 interface A {
                                     public void foo();
                                                                    Program Dependency Graph

                                                                     C                   B           A




  other techniques
                                 }
                                 public class B implements A {
                                     public void foo() { ... }                refs
                                     public void bar() { ... }
                                                                   contains              contains contains
                                 }
                                 public class C {                                  contains
                                     public static void main() {
                                         B b = new B();
                                         b.bar();
                                                                           calls
                                     }                              main           bar        foo   foo




Marc Eaddy           ICPC 2008                                                                               29
Questions?


                   Marc Eaddy
               Columbia University
             eaddy@cs.columbia.edu




Marc Eaddy            ICPC 2008      30

Contenu connexe

Tendances

A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
 
Accelerated Windows Debugging 3 training public slides
Accelerated Windows Debugging 3 training public slidesAccelerated Windows Debugging 3 training public slides
Accelerated Windows Debugging 3 training public slidesDmitry Vostokov
 
Accelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slidesAccelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slidesDmitry Vostokov
 
Learning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesLearning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesDongsun Kim
 
A (too) Short Introduction to Scala
A (too) Short Introduction to ScalaA (too) Short Introduction to Scala
A (too) Short Introduction to ScalaRiccardo Cardin
 
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...Shinpei Hayashi
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programmingRiccardo Cardin
 
Introduction to-vhdl
Introduction to-vhdlIntroduction to-vhdl
Introduction to-vhdlNeeraj Gupta
 
A recommender system for generalizing and refining code templates
A recommender system for generalizing and refining code templatesA recommender system for generalizing and refining code templates
A recommender system for generalizing and refining code templatesCoen De Roover
 
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practicePHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practiceSebastian Marek
 
Applicative Logic Meta-Programming as the foundation for Template-based Progr...
Applicative Logic Meta-Programming as the foundation for Template-based Progr...Applicative Logic Meta-Programming as the foundation for Template-based Progr...
Applicative Logic Meta-Programming as the foundation for Template-based Progr...Coen De Roover
 
Fnt software solutions placement paper
Fnt software solutions placement paperFnt software solutions placement paper
Fnt software solutions placement paperfntsofttech
 
Accelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slidesAccelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slidesDmitry Vostokov
 
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Coen De Roover
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in javakim.mens
 

Tendances (19)

A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
 
Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
Accelerated Windows Debugging 3 training public slides
Accelerated Windows Debugging 3 training public slidesAccelerated Windows Debugging 3 training public slides
Accelerated Windows Debugging 3 training public slides
 
Accelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slidesAccelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slides
 
Learning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesLearning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method Names
 
A (too) Short Introduction to Scala
A (too) Short Introduction to ScalaA (too) Short Introduction to Scala
A (too) Short Introduction to Scala
 
Introduction to VHDL
Introduction to VHDLIntroduction to VHDL
Introduction to VHDL
 
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programming
 
Introduction to-vhdl
Introduction to-vhdlIntroduction to-vhdl
Introduction to-vhdl
 
A recommender system for generalizing and refining code templates
A recommender system for generalizing and refining code templatesA recommender system for generalizing and refining code templates
A recommender system for generalizing and refining code templates
 
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practicePHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
 
Applicative Logic Meta-Programming as the foundation for Template-based Progr...
Applicative Logic Meta-Programming as the foundation for Template-based Progr...Applicative Logic Meta-Programming as the foundation for Template-based Progr...
Applicative Logic Meta-Programming as the foundation for Template-based Progr...
 
Java concurrency
Java concurrencyJava concurrency
Java concurrency
 
Fnt software solutions placement paper
Fnt software solutions placement paperFnt software solutions placement paper
Fnt software solutions placement paper
 
Accelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slidesAccelerated Linux Core Dump Analysis training public slides
Accelerated Linux Core Dump Analysis training public slides
 
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in java
 
Lecture1
Lecture1Lecture1
Lecture1
 

En vedette

Soundcloud desktop
Soundcloud desktopSoundcloud desktop
Soundcloud desktoprogercana
 
Ase07 tooldemo.ppt
Ase07 tooldemo.pptAse07 tooldemo.ppt
Ase07 tooldemo.pptPtidej Team
 
I want more pinterest followers
I want more pinterest followersI want more pinterest followers
I want more pinterest followerssimon220
 
I need more followers on pinterest
I need more followers on pinterestI need more followers on pinterest
I need more followers on pinterestsimon220
 
Soundcloud buttons
Soundcloud buttonsSoundcloud buttons
Soundcloud buttonsrogercana
 
130321 zephyrin soh - on the effect of exploration strategies on maintenanc...
130321   zephyrin soh - on the effect of exploration strategies on maintenanc...130321   zephyrin soh - on the effect of exploration strategies on maintenanc...
130321 zephyrin soh - on the effect of exploration strategies on maintenanc...Ptidej Team
 
LinkedIn Latest Updates 2014
LinkedIn Latest Updates 2014LinkedIn Latest Updates 2014
LinkedIn Latest Updates 2014Smart Insights
 
تصريح الناتج القومي المحلي
تصريح الناتج القومي المحليتصريح الناتج القومي المحلي
تصريح الناتج القومي المحليNayef Bastaki
 
Software Design Patterns in Theory
Software Design Patterns in TheorySoftware Design Patterns in Theory
Software Design Patterns in TheoryPtidej Team
 
AsianPLoP'14: How and Why Design Patterns Impact Quality and Future Challenges
AsianPLoP'14: How and Why Design Patterns Impact Quality and Future ChallengesAsianPLoP'14: How and Why Design Patterns Impact Quality and Future Challenges
AsianPLoP'14: How and Why Design Patterns Impact Quality and Future ChallengesPtidej Team
 

En vedette (14)

Soundcloud desktop
Soundcloud desktopSoundcloud desktop
Soundcloud desktop
 
Autocom cdp plus
Autocom cdp plusAutocom cdp plus
Autocom cdp plus
 
Ase07 tooldemo.ppt
Ase07 tooldemo.pptAse07 tooldemo.ppt
Ase07 tooldemo.ppt
 
I want more pinterest followers
I want more pinterest followersI want more pinterest followers
I want more pinterest followers
 
I need more followers on pinterest
I need more followers on pinterestI need more followers on pinterest
I need more followers on pinterest
 
Soundcloud buttons
Soundcloud buttonsSoundcloud buttons
Soundcloud buttons
 
130321 zephyrin soh - on the effect of exploration strategies on maintenanc...
130321   zephyrin soh - on the effect of exploration strategies on maintenanc...130321   zephyrin soh - on the effect of exploration strategies on maintenanc...
130321 zephyrin soh - on the effect of exploration strategies on maintenanc...
 
Visita de estudios
Visita de estudiosVisita de estudios
Visita de estudios
 
17975 20356-1-pb
17975 20356-1-pb17975 20356-1-pb
17975 20356-1-pb
 
LinkedIn Latest Updates 2014
LinkedIn Latest Updates 2014LinkedIn Latest Updates 2014
LinkedIn Latest Updates 2014
 
تصريح الناتج القومي المحلي
تصريح الناتج القومي المحليتصريح الناتج القومي المحلي
تصريح الناتج القومي المحلي
 
Coral erp garment
Coral erp garmentCoral erp garment
Coral erp garment
 
Software Design Patterns in Theory
Software Design Patterns in TheorySoftware Design Patterns in Theory
Software Design Patterns in Theory
 
AsianPLoP'14: How and Why Design Patterns Impact Quality and Future Challenges
AsianPLoP'14: How and Why Design Patterns Impact Quality and Future ChallengesAsianPLoP'14: How and Why Design Patterns Impact Quality and Future Challenges
AsianPLoP'14: How and Why Design Patterns Impact Quality and Future Challenges
 

Similaire à ICPC08b.ppt

Distributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMIDistributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMIelliando dias
 
Формальная верификация как средство тестирования (в Java)
Формальная верификация как средство тестирования (в Java)Формальная верификация как средство тестирования (в Java)
Формальная верификация как средство тестирования (в Java)SQALab
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011YoungSu Son
 
MongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataMongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataChris Richardson
 
How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malwarezynamics GmbH
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malwarezynamics GmbH
 
Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...Ryan M Harrison
 
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...LF_APIStrat
 
4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdfamitbhachne
 
Neal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureNeal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureThoughtworks
 
Pycvf
PycvfPycvf
Pycvftranx
 
14.jun.2012
14.jun.201214.jun.2012
14.jun.2012Tech_MX
 
Developer Friendly API Design
Developer Friendly API DesignDeveloper Friendly API Design
Developer Friendly API Designtheamiableapi
 

Similaire à ICPC08b.ppt (20)

Icpc08b.ppt
Icpc08b.pptIcpc08b.ppt
Icpc08b.ppt
 
Distributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMIDistributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMI
 
Js tacktalk team dev js testing performance
Js tacktalk team dev js testing performanceJs tacktalk team dev js testing performance
Js tacktalk team dev js testing performance
 
ExSchema
ExSchemaExSchema
ExSchema
 
Формальная верификация как средство тестирования (в Java)
Формальная верификация как средство тестирования (в Java)Формальная верификация как средство тестирования (в Java)
Формальная верификация как средство тестирования (в Java)
 
Coding Naked
Coding NakedCoding Naked
Coding Naked
 
Android ndk
Android ndkAndroid ndk
Android ndk
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
 
Intro to J Ruby
Intro to J RubyIntro to J Ruby
Intro to J Ruby
 
MongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataMongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring Data
 
How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malware
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malware
 
Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...
 
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
 
4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf
 
Neal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureNeal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary Architecture
 
Pycvf
PycvfPycvf
Pycvf
 
14.jun.2012
14.jun.201214.jun.2012
14.jun.2012
 
Developer Friendly API Design
Developer Friendly API DesignDeveloper Friendly API Design
Developer Friendly API Design
 
Csharp dot net
Csharp dot netCsharp dot net
Csharp dot net
 

Plus de Ptidej Team

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software MiniaturisationPtidej Team
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel BriandPtidej Team
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel AbdellatifPtidej Team
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh KermansaraviPtidej Team
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel GrichiPtidej Team
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano PolitowskiPtidej Team
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisisPtidej Team
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptPtidej Team
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptPtidej Team
 

Plus de Ptidej Team (20)

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software Miniaturisation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel Briand
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel Abdellatif
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh Kermansaravi
 
Mouna Abidi
Mouna AbidiMouna Abidi
Mouna Abidi
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel Grichi
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano Politowski
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisis
 
MIPA
MIPAMIPA
MIPA
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.ppt
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.ppt
 
Medicine15.ppt
Medicine15.pptMedicine15.ppt
Medicine15.ppt
 
Qrs17b.ppt
Qrs17b.pptQrs17b.ppt
Qrs17b.ppt
 
Icpc11c.ppt
Icpc11c.pptIcpc11c.ppt
Icpc11c.ppt
 
Icsme16.ppt
Icsme16.pptIcsme16.ppt
Icsme16.ppt
 
Msr17a.ppt
Msr17a.pptMsr17a.ppt
Msr17a.ppt
 
Icsoc15.ppt
Icsoc15.pptIcsoc15.ppt
Icsoc15.ppt
 

Dernier

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
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
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
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
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 

Dernier (20)

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
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
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
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
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 

ICPC08b.ppt

  • 1.
  • 2. Motivation □ >50% of maintenance time spent trying to understand the program Marc Eaddy ICPC 2008 2
  • 3. Motivation □ >50% of maintenance time spent trying to understand the program □ Where are the features, reqs, etc. in the code? Marc Eaddy ICPC 2008 3
  • 4. Motivation □ >50% of maintenance time spent trying to understand the program □ Where are the features, reqs, etc. in the code? □ What is this code for? Marc Eaddy ICPC 2008 4
  • 5. Motivation □ >50% of maintenance time spent trying to understand the program □ Where are the features, reqs, etc. in the code? □ What is this code for? □ Why is it hard to understand and change the program? Marc Eaddy ICPC 2008 5
  • 6. What is a “concern?” Anything that affects the implementation of a program □ Feature, requirement, design pattern, coding idiom, etc. □ Raison d'être for code □ Every line of code exists to satisfy some concern Marc Eaddy ICPC 2008 6
  • 7. Concern location problem Concern–code relationship hard to obtain Program Concerns Elements Marc Eaddy ICPC 2008 7
  • 8. Concern location problem Concern–code relationship hard to obtain Program Concerns Elements □ Concern–code relationship undocumented Marc Eaddy ICPC 2008 8
  • 9. Concern location problem Concern–code relationship hard to obtain Program Concerns Elements □ Concern–code relationship undocumented □ Reverse engineer the relationship □ (but, which one?) Marc Eaddy ICPC 2008 9
  • 10. Software pruning □ Remove code that supports certain features, reqs, etc. □ Reduce program’s footprint □ Support different platforms □ Simplify program Marc Eaddy ICPC 2008 10
  • 11. Prune dependency rule [ACOM’07] □ Code is prune dependent on concern if □ Pruning the concern requires removing or altering the code □ Must alter code that depends on removed code □ Prevent compile errors □ Eliminate “dead code” □ Easy to determine/approximate Marc Eaddy ICPC 2008 11
  • 12. Automated concern location Concern–code relationship predicted by an “expert” □ Experts mine clues in code, docs, etc. □ Existing techniques use 1 or 2 experts only □ Our solution: Cerberus 1. Information retrieval 2. Execution tracing 3. Prune dependency analysis Marc Eaddy ICPC 2008 12
  • 13. IR-based concern location □ i.e., Google for code □ Program entities are documents □ Requirements are queries Requirement Source “Array.join” Code Id_joi join n js_join( ) Marc Eaddy ICPC 2008 13
  • 14. Vector space model [Salton] □ Parse code and reqs doc to extract term vectors □ NativeArray.js_join() method “native,” “array,” “join” □ “Array.join” requirement “array,” “join” □ Our contributions □ Expand abbreviations □ numconns number, connections, numberconnections □ Index fields □ Weigh terms (tf · idf) □ Term frequency (tf) □ Inverse document frequency (idf) □ Similarity = cosine distance between document and query vectors Marc Eaddy ICPC 2008 14
  • 15. Tracing-based concern location □ Observe elements activated when concern is exercised □ Unit tests for each concern □ e.g., find elements uniquely activated by a concern Marc Eaddy ICPC 2008 15
  • 16. Tracing-based concern location □ Observe elements activated when concern is exercised □ Unit tests for each concern □ e.g., find elements uniquely activated by a concern Unit Test Call for “Array.join” Graph var a = new Array(1, 2); if (a.join(',') == "1,2") { print "Test passed"; } Marc Eaddy else { 16 print "Test js_construct js_joi failed"; n
  • 17. Tracing-based concern location □ Observe elements activated when concern is exercised □ Unit tests for each concern □ e.g., find elements uniquely activated by a concern Unit Test Call for “Array.join” Graph var a = new Array(1, 2); if (a.join(',') == "1,2") { print "Test passed"; } Marc Eaddy else { 17 print "Test js_construct js_joi failed"; n
  • 18. Prune dependency analysis □ Infer relevant elements based on structural relationship to relevant element e (seed) □ Assumes we already have some seeds □ Prune dependency analysis □ Determines prune dependency rule using program analysis □ Find references to e □ Find superclasses and subclasses of e Marc Eaddy ICPC 2008 18
  • 19. PDA example Source Code Program Dependency Graph interface A { inherits public void foo(); A } C B public class B implements A { public void foo() { ... } refs public void bar() { ... } contains contains contains } public class C { contains public static void main() { B b = new B(); b.bar(); calls } main bar foo foo Marc Eaddy ICPC 2008 19
  • 20. PDA example Source Code Program Dependency Graph interface A { inherits public void foo(); A } C B public class B implements A { public void foo() { ... } refs public void bar() { ... } contains contains contains } public class C { contains public static void main() { B b = new B(); b.bar(); calls } main bar foo foo Marc Eaddy ICPC 2008 20
  • 21. PDA example Source Code Program Dependency Graph interface A { inherits public void foo(); A } C B public class B implements A { public void foo() { ... } refs public void bar() { ... } contains contains contains } public class C { contains public static void main() { B b = new B(); b.bar(); calls } main bar foo foo Marc Eaddy ICPC 2008 21
  • 22. PDA example Source Code Program Dependency Graph interface A { public void foo(); inherits C B A } public class B implements A { public void foo() { ... } refs public void bar() { ... } contains contains contains } public class C { contains public static void main() { B b = new B(); b.bar(); calls } main bar foo foo Marc Eaddy ICPC 2008 22
  • 23. PDA example Source Code Program Dependency Graph interface A { inherits public void foo(); A } C B public class B implements A { public void foo() { ... } refs public void bar() { ... } contains contains contains } public class C { contains public static void main() { B b = new B(); b.bar(); calls } main bar foo foo Marc Eaddy ICPC 2008 23
  • 24. Cerberus Marc Eaddy ICPC 2008 24
  • 25. Cerberus ≈ PROMESIR + SNIAFL Marc Eaddy ICPC 2008 25
  • 26. Cerberus effectiveness Cerberus Marc Eaddy 26
  • 27. Ignoring “No results found” Cerberus Marc Eaddy 27
  • 28. Future work □ Improve PDA □ Reimplemented using Soot and Polyglot □ Generalize using prune dependency predicates □ Improve precision using points-to analysis □ Improve accuracy using □ Dominator heuristic □ Variable liveness analysis □ Improve accuracy of Cerberus □ Combine experts using matrix linear regression Marc Eaddy ICPC 2008 28
  • 29. Cerberus contributions □ Effectively combined 3 concern location techniques □ PDA boosts performance of Source Code interface A { public void foo(); Program Dependency Graph C B A other techniques } public class B implements A { public void foo() { ... } refs public void bar() { ... } contains contains contains } public class C { contains public static void main() { B b = new B(); b.bar(); calls } main bar foo foo Marc Eaddy ICPC 2008 29
  • 30. Questions? Marc Eaddy Columbia University eaddy@cs.columbia.edu Marc Eaddy ICPC 2008 30