SlideShare a Scribd company logo
1 of 30
Download to read offline
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

More Related Content

What's hot

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
 

What's hot (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
 

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
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
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"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
 
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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"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
 
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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 

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