SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Destaque

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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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
 

Mais 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
 

Mais 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
 

Último

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Último (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

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