SlideShare a Scribd company logo
1 of 41
Download to read offline
Rejuvenate Pointcut
   A Tool for Pointcut Expression Recovery in Evolving
                Aspect-Oriented Software


Raffi Khatchadourian1    Phil Greenwood2          Awais Rashid2
                      Guoqing Xu1

                    1 Ohio   State University
                    2 Lancaster   University


  International Conference on Aspect-Oriented Software
                   Development, 2009



                             A
Motivation
                                      Approach
                                     Evaluation
                               More Information


Outline



  1   Motivation


  2   Approach


  3   Evaluation


  4   More Information




          Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                   Approach
                                  Evaluation
                            More Information


Base-code

                                           package p ;
                                           public class A {
                                               int f ;
                                               void m1 () {
                                                   int a = f + 1;
                                               }
     Two methods whose
     name begins with the
                                               void m2 () {
     character m.
                                                   int b = f + 2;
                                               }
                                               void n () {
                                                   int c = f + 3;
                                               }
                                           }

       Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                   Approach
                                  Evaluation
                            More Information


Base-code

                             package p ;
                             public class A {
                                 int f ;
                                 void m1 () {
     Two methods whose               int a = f + 1;
     name begins with the        }
     character m.                void m2 () {
     One method whose name           int b = f + 2;
     does not begin with the     }
     character m.                void n () {
                                     int c = f + 3;
                                 }
                             }

       Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                   Approach
                                  Evaluation
                            More Information


Base-code

                              package p ;
                              public class A {
                                  int f ;
     Two methods whose            void m1 () {
     name begins with the             int a = f + 1;
     character m.                 }
     One method whose name        void m2 () {
     does not begin with the          int b = f + 2;
     character m.                 }
     All method bodies access     void n () {
     a field f.                        int c = f + 3;
                                  }
                              }

       Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                     Approach
                                    Evaluation
                              More Information


Along Came a Pointcut




  pointcut fragile() : execution(* m*(..));



  Base-code V1
  Selects m1() and m2() but not n().

  Assume pointcut is correct in V1.




         Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                     Approach
                                    Evaluation
                              More Information


Along Came a Pointcut




  pointcut fragile() : execution(* m*(..));



  Base-code V1
  Selects m1() and m2() but not n().

  Assume pointcut is correct in V1.




         Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                     Approach
                                    Evaluation
                              More Information


Along Came a Pointcut




  pointcut fragile() : execution(* m*(..));



  Base-code V1
  Selects m1() and m2() but not n().

  Assume pointcut is correct in V1.




         Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Evolution

  // . . .
  void p () {
         int d = f + 4;
  }
  // . . .

  pointcut fragile() : execution(* m*(..));


  Base-code V2
  Same pointcut selects m1() and m2() but not n() and p().

  Fragile!
  CCC applies to p() in V2 but not selected!

  How to identify such join points as code evolves?
Evolution

  // . . .
  void p () {
         int d = f + 4;
  }
  // . . .

  pointcut fragile() : execution(* m*(..));


  Base-code V2
  Same pointcut selects m1() and m2() but not n() and p().

  Fragile!
  CCC applies to p() in V2 but not selected!

  How to identify such join points as code evolves?
Evolution

  // . . .
  void p () {
         int d = f + 4;
  }
  // . . .

  pointcut fragile() : execution(* m*(..));


  Base-code V2
  Same pointcut selects m1() and m2() but not n() and p().

  Fragile!
  CCC applies to p() in V2 but not selected!

  How to identify such join points as code evolves?
Evolution

  // . . .
  void p () {
         int d = f + 4;
  }
  // . . .

  pointcut fragile() : execution(* m*(..));


  Base-code V2
  Same pointcut selects m1() and m2() but not n() and p().

  Fragile!
  CCC applies to p() in V2 but not selected!

  How to identify such join points as code evolves?
Evolution

  // . . .
  void p () {
         int d = f + 4;
  }
  // . . .

  pointcut fragile() : execution(* m*(..));


  Base-code V2
  Same pointcut selects m1() and m2() but not n() and p().

  Fragile!
  CCC applies to p() in V2 but not selected!

  How to identify such join points as code evolves?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.


                               A.m2()

                gets_field               declares_method

          A.f               declares_field                 A   contains   p
                gets_field               declares_method
                                A.n()
                gets_field               declares_method


                               A.m1()



          Would execution(* A.n()) also be suggested?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.

                               A.m2()

               gets_field                 declares_method

         A.f                declares_field                   A   contains   p
                gets_field               declares_method
                                A.n()
               gets_field                  declares_method


                               A.m1()


          Would execution(* A.n()) also be suggested?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.

                               A.m2()

               gets_field                declares_method

         A.f                declares_field                 A   contains   p
                gets_field               declares_method
                                A.n()
               gets_field               declares_method


                               A.m1()


          Would execution(* A.n()) also be suggested?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.

                              A.m2()

               gets_field               declares_method

         A.f               declares_field                 A   contains   p
               gets_field               declares_method
                               A.n()
               gets_field              declares_method


                              A.m1()


          Would execution(* A.n()) also be suggested?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.

                                A.m2()

               gets_field                  declares_method


                             declares_field
         A.f     gets_field       A.n() declares_method      A   contains   p

                 gets_field               declares_method

                gets_field       A.p()    declares_method


                                A.m1()


          Would execution(* A.n()) also be suggested?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.

                                A.m2()

               gets_field                  declares_method


                             declares_field
         A.f     gets_field       A.n() declares_method      A   contains   p

                gets_field                declares_method

                gets_field       A.p()    declares_method


                                A.m1()


          Would execution(* A.n()) also be suggested?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.

                                A.m2()

               gets_field                  declares_method


                             declares_field
         A.f     gets_field       A.n() declares_method      A   contains   p

                gets_field                declares_method

                gets_field       A.p()    declares_method


                                A.m1()


          Would execution(* A.n()) also be suggested?
Pointcut Rejuvenation: Leveraging Commonality

  Phase I: Analysis using Concern Graphs
  Extract commonalities between currently selected join points.

  Phase II: Rejuvenation
  Apply extracted patterns to new version of the base-code.

                                A.m2()

               gets_field                  declares_method


                             declares_field
         A.f     gets_field       A.n() declares_method      A   contains   p

                gets_field                declares_method

                gets_field       A.p()    declares_method


                                A.m1()


          Would execution(* A.n()) also be suggested?
Suggestion Ranking Scheme




  Measurements for Suggestion Ranking
      α error: How strong are the relationships between advised
               shadows compared to ones captured by a pattern?
      β error: How well does the pattern express the same
               intentions as the pointcut?
Suggestion Ranking Scheme
  Measurements for Suggestion Ranking
      α error: How strong are the relationships between advised
               shadows compared to ones captured by a pattern?
      β error: How well does the pattern express the same
               intentions as the pointcut?


                                   All Join Point Shadows
Suggestion Ranking Scheme
  Measurements for Suggestion Ranking
      α error: How strong are the relationships between advised
               shadows compared to ones captured by a pattern?
      β error: How well does the pattern express the same
               intentions as the pointcut?

                             ω       a join point shadow; code correspondi
                                    All Join Point Shadows
                             A       a piece of advice
                             Apce    a pointcut bound to advice A; a set of
                             Apce    a subsequent revision of Apce
                             P       the original program, the underlying b
                             P       a subsequence revision of program P
                             ΩP      the set of join point shadows containe
                             IG P    a finite graph representing structura
                                     tween program elements in P
                             π       an acyclic path (sequence of arcs) in I
                             ΠP      a set of acyclic paths derived from pro
P
                  o.w.
  Suggestion Ranking Scheme
     +
(CG P ))|
    Measurements for Suggestion Ranking
                      if |Apce | = 0
        α error: How strong are the relationships between advised
          +
ths(CG P ))|     shadows compared to ones captured by a pattern?    (2
          β error:
                         o.w.
                     How well does the pattern express the same
                     intentions as the pointcut?
=0
                         ω     a join point shadow; code correspondi
                         A
                             All Join Point Shadows
                               a piece of advice
                                                                   (3
                         Apce a pointcut bound to advice A; a set of
                         Apce a subsequent revision of Apce
π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b
ˆ             π          P
                              πthe
                                                                   (4
                         P     a subsequence revision of program P
                         ΩP    the set of join point shadows containe
tribute equations.       IG P a finite graph representing structura
                               tween program elements in P
                         π     an acyclic path (sequence of arcs) in I
                         ΠP    a set of acyclic paths derived from pro
P
                  o.w.
  Suggestion Ranking Scheme
     +
(CG P ))|
    Measurements for Suggestion Ranking
                      if |Apce | = 0
        α error: How strong are the relationships between advised
          +
ths(CG P ))|     shadows compared to ones captured by a pattern?    (2
          β error:
                         o.w.
                     How well does the pattern express the same
                     intentions as the pointcut?
=0
                         ω     a join point shadow; code correspondi
                         A
                             All Join Point Shadows
                               a piece of advice
                                                                   (3
                         Apce a pointcut bound to advice A; a set of
                         Apce a subsequent revision of Apce
π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b
ˆ             π          P
                              πthe
                                                                   (4
                         P     a subsequence revision of program P
                         ΩP    the set of join point shadows containe
tribute equations.       IG P a αfinite graph representing structura
                               tween program elements in P
                         π     an acyclic path (sequence of arcs) in I
                         ΠP    a set of acyclic paths derived from pro
P
                  o.w.
  Suggestion Ranking Scheme
     +
(CG P ))|
    Measurements for Suggestion Ranking
                      if |Apce | = 0
        α error: How strong are the relationships between advised
          +
ths(CG P ))|     shadows compared to ones captured by a pattern?    (2
          β error:
                         o.w.
                     How well does the pattern express the same
                     intentions as the pointcut?
=0
                         ω     a join point shadow; code correspondi
                         A
                             All Join Point Shadows
                               a piece of advice
                                                                   (3
                         Apce a pointcut bound to advice A; a set of
                         Apce a subsequent revision of Apce
π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b
ˆ             π          P
                              πthe
                                                                   (4
                         P     a subsequence revision of program P
                         ΩP    the set of join point shadows containe
tribute equations.       IG P a αfinite graph representing structura
                               tween program elements in P
                         π     an acyclic path (sequence of arcs) in I
                         ΠP    a set of acyclic paths derived from pro
P
                  o.w.
  Suggestion Ranking Scheme
     +
(CG P ))|
    Measurements for Suggestion Ranking
                      if |Apce | = 0
        α error: How strong are the relationships between advised
          +
ths(CG P ))|     shadows compared to ones captured by a pattern?    (2
          β error:
                         o.w.
                     How well does the pattern express the same
                     intentions as the pointcut?
=0
                         ω     a join point shadow; code correspondi
                         A
                             All Join Point Shadows
                               a piece of advice
                                                                   (3
                         Apce a pointcut bound to advice A; a set of
                      β  Apce a subsequent revision of Apce
π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b
ˆ             π          P
                              πthe
                                                                   (4
                         P     a subsequence revision of program P
                         ΩP    the set of join point shadows containe
tribute equations.       IG P a αfinite graph representing structura
                               tween program elements in P
                         π     an acyclic path (sequence of arcs) in I
                         ΠP    a set of acyclic paths derived from pro
Motivation
                                    Approach
                                   Evaluation
                             More Information


Suggestion Confidence




     Each suggestion is associated with a confidence value ([0,1]).
     A suggestion inherits the confidence of the pattern that
     produced it.
     A pattern’s confidence is calculated using a combination of α,
     β, and the depth of the patterns.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


Suggestion Confidence




     Each suggestion is associated with a confidence value ([0,1]).
     A suggestion inherits the confidence of the pattern that
     produced it.
     A pattern’s confidence is calculated using a combination of α,
     β, and the depth of the patterns.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


Suggestion Confidence




     Each suggestion is associated with a confidence value ([0,1]).
     A suggestion inherits the confidence of the pattern that
     produced it.
     A pattern’s confidence is calculated using a combination of α,
     β, and the depth of the patterns.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Implementation
Motivation
                                    Approach
                                   Evaluation
                             More Information


But How Well Does It Work?



     Correlation analysis (Phase I) on 20+ AspectJ benchmarks.
          Average confidence was 0.66.
     Applied to 4 multi-versioned AspectJ projects (Phase II).
          Rejuvenated pointcuts in major releases (26 in total).
          Able to identify 94% of new shadows introduced in later
          versions
          On average, appearing in the top 4% of results.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


But How Well Does It Work?



     Correlation analysis (Phase I) on 20+ AspectJ benchmarks.
          Average confidence was 0.66.
     Applied to 4 multi-versioned AspectJ projects (Phase II).
          Rejuvenated pointcuts in major releases (26 in total).
          Able to identify 94% of new shadows introduced in later
          versions
          On average, appearing in the top 4% of results.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


But How Well Does It Work?



     Correlation analysis (Phase I) on 20+ AspectJ benchmarks.
          Average confidence was 0.66.
     Applied to 4 multi-versioned AspectJ projects (Phase II).
          Rejuvenated pointcuts in major releases (26 in total).
          Able to identify 94% of new shadows introduced in later
          versions
          On average, appearing in the top 4% of results.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


But How Well Does It Work?



     Correlation analysis (Phase I) on 20+ AspectJ benchmarks.
          Average confidence was 0.66.
     Applied to 4 multi-versioned AspectJ projects (Phase II).
          Rejuvenated pointcuts in major releases (26 in total).
          Able to identify 94% of new shadows introduced in later
          versions
          On average, appearing in the top 4% of results.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


But How Well Does It Work?



     Correlation analysis (Phase I) on 20+ AspectJ benchmarks.
          Average confidence was 0.66.
     Applied to 4 multi-versioned AspectJ projects (Phase II).
          Rejuvenated pointcuts in major releases (26 in total).
          Able to identify 94% of new shadows introduced in later
          versions
          On average, appearing in the top 4% of results.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


But How Well Does It Work?



     Correlation analysis (Phase I) on 20+ AspectJ benchmarks.
          Average confidence was 0.66.
     Applied to 4 multi-versioned AspectJ projects (Phase II).
          Rejuvenated pointcuts in major releases (26 in total).
          Able to identify 94% of new shadows introduced in later
          versions
          On average, appearing in the top 4% of results.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


Tool and Material Downloads

     Tool research prototype publicly available at
     http://code.google.com/p/rejuvenate-pc.
     Research related material publicly available at
     http://sites.google.com/site/pointcutrejuvenation.
     Full evaluation available in corresponding technical report.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


Tool and Material Downloads

     Tool research prototype publicly available at
     http://code.google.com/p/rejuvenate-pc.
     Research related material publicly available at
     http://sites.google.com/site/pointcutrejuvenation.
     Full evaluation available in corresponding technical report.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut
Motivation
                                    Approach
                                   Evaluation
                             More Information


Tool and Material Downloads

     Tool research prototype publicly available at
     http://code.google.com/p/rejuvenate-pc.
     Research related material publicly available at
     http://sites.google.com/site/pointcutrejuvenation.
     Full evaluation available in corresponding technical report.




        Khatchadourian, Greenwood, Rashid, Xu   Rejuvenate Pointcut

More Related Content

What's hot

20101017 program analysis_for_security_livshits_lecture02_compilers
20101017 program analysis_for_security_livshits_lecture02_compilers20101017 program analysis_for_security_livshits_lecture02_compilers
20101017 program analysis_for_security_livshits_lecture02_compilers
Computer Science Club
 
Data structures question paper anna university
Data structures question paper anna universityData structures question paper anna university
Data structures question paper anna university
sangeethajames07
 
Cbse question-paper-computer-science-2009
Cbse question-paper-computer-science-2009Cbse question-paper-computer-science-2009
Cbse question-paper-computer-science-2009
Deepak Singh
 
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
ijceronline
 
Datastructure notes
Datastructure notesDatastructure notes
Datastructure notes
Srikanth
 

What's hot (20)

20101017 program analysis_for_security_livshits_lecture02_compilers
20101017 program analysis_for_security_livshits_lecture02_compilers20101017 program analysis_for_security_livshits_lecture02_compilers
20101017 program analysis_for_security_livshits_lecture02_compilers
 
C++ questions And Answer
C++ questions And AnswerC++ questions And Answer
C++ questions And Answer
 
Data structures question paper anna university
Data structures question paper anna universityData structures question paper anna university
Data structures question paper anna university
 
Java cơ bản java co ban
Java cơ bản java co ban Java cơ bản java co ban
Java cơ bản java co ban
 
Sample paper i.p
Sample paper i.pSample paper i.p
Sample paper i.p
 
Qno 1 (f)
Qno 1 (f)Qno 1 (f)
Qno 1 (f)
 
Algorithm
AlgorithmAlgorithm
Algorithm
 
Cbse question-paper-computer-science-2009
Cbse question-paper-computer-science-2009Cbse question-paper-computer-science-2009
Cbse question-paper-computer-science-2009
 
Boost.Dispatch
Boost.DispatchBoost.Dispatch
Boost.Dispatch
 
Bt32444450
Bt32444450Bt32444450
Bt32444450
 
Automatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSELAutomatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSEL
 
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
 
Software Abstractions for Parallel Hardware
Software Abstractions for Parallel HardwareSoftware Abstractions for Parallel Hardware
Software Abstractions for Parallel Hardware
 
บทที่ 2
บทที่ 2บทที่ 2
บทที่ 2
 
Cbse marking scheme 2006 2011
Cbse marking scheme 2006  2011Cbse marking scheme 2006  2011
Cbse marking scheme 2006 2011
 
Datastructure notes
Datastructure notesDatastructure notes
Datastructure notes
 
17432 object oriented programming
17432   object oriented programming17432   object oriented programming
17432 object oriented programming
 
An ElGamal Encryption Scheme of Adjacency Matrix and Finite Machines
An ElGamal Encryption Scheme of Adjacency Matrix and Finite MachinesAn ElGamal Encryption Scheme of Adjacency Matrix and Finite Machines
An ElGamal Encryption Scheme of Adjacency Matrix and Finite Machines
 
The Goal and The Journey - Turning back on one year of C++14 Migration
The Goal and The Journey - Turning back on one year of C++14 MigrationThe Goal and The Journey - Turning back on one year of C++14 Migration
The Goal and The Journey - Turning back on one year of C++14 Migration
 
Implementation of Elliptic Curve Digital Signature Algorithm Using Variable T...
Implementation of Elliptic Curve Digital Signature Algorithm Using Variable T...Implementation of Elliptic Curve Digital Signature Algorithm Using Variable T...
Implementation of Elliptic Curve Digital Signature Algorithm Using Variable T...
 

More from Raffi Khatchadourian

Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Raffi Khatchadourian
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Raffi Khatchadourian
 
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Raffi Khatchadourian
 
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Raffi Khatchadourian
 
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
Raffi Khatchadourian
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Raffi Khatchadourian
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Raffi Khatchadourian
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Raffi Khatchadourian
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Raffi Khatchadourian
 
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringA Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
Raffi Khatchadourian
 
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Raffi Khatchadourian
 

More from Raffi Khatchadourian (20)

Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
 
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
 
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
 
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
 
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
 
An Empirical Study on the Use and Misuse of Java 8 Streams
An Empirical Study on the Use and Misuse of Java 8 StreamsAn Empirical Study on the Use and Misuse of Java 8 Streams
An Empirical Study on the Use and Misuse of Java 8 Streams
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
 
A Brief Introduction to Type Constraints
A Brief Introduction to Type ConstraintsA Brief Introduction to Type Constraints
A Brief Introduction to Type Constraints
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
 
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringA Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
 
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
 
Towards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
Towards Safe Refactoring for Intelligent Parallelization of Java 8 StreamsTowards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
Towards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
 
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
 
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
 
Poster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default MethodsPoster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default Methods
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

Rejuvenate Pointcut: A Tool for Pointcut Expression Recovery in Evolving Aspect-Oriented Software

  • 1. Rejuvenate Pointcut A Tool for Pointcut Expression Recovery in Evolving Aspect-Oriented Software Raffi Khatchadourian1 Phil Greenwood2 Awais Rashid2 Guoqing Xu1 1 Ohio State University 2 Lancaster University International Conference on Aspect-Oriented Software Development, 2009 A
  • 2. Motivation Approach Evaluation More Information Outline 1 Motivation 2 Approach 3 Evaluation 4 More Information Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 3. Motivation Approach Evaluation More Information Base-code package p ; public class A { int f ; void m1 () { int a = f + 1; } Two methods whose name begins with the void m2 () { character m. int b = f + 2; } void n () { int c = f + 3; } } Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 4. Motivation Approach Evaluation More Information Base-code package p ; public class A { int f ; void m1 () { Two methods whose int a = f + 1; name begins with the } character m. void m2 () { One method whose name int b = f + 2; does not begin with the } character m. void n () { int c = f + 3; } } Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 5. Motivation Approach Evaluation More Information Base-code package p ; public class A { int f ; Two methods whose void m1 () { name begins with the int a = f + 1; character m. } One method whose name void m2 () { does not begin with the int b = f + 2; character m. } All method bodies access void n () { a field f. int c = f + 3; } } Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 6. Motivation Approach Evaluation More Information Along Came a Pointcut pointcut fragile() : execution(* m*(..)); Base-code V1 Selects m1() and m2() but not n(). Assume pointcut is correct in V1. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 7. Motivation Approach Evaluation More Information Along Came a Pointcut pointcut fragile() : execution(* m*(..)); Base-code V1 Selects m1() and m2() but not n(). Assume pointcut is correct in V1. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 8. Motivation Approach Evaluation More Information Along Came a Pointcut pointcut fragile() : execution(* m*(..)); Base-code V1 Selects m1() and m2() but not n(). Assume pointcut is correct in V1. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 9. Evolution // . . . void p () { int d = f + 4; } // . . . pointcut fragile() : execution(* m*(..)); Base-code V2 Same pointcut selects m1() and m2() but not n() and p(). Fragile! CCC applies to p() in V2 but not selected! How to identify such join points as code evolves?
  • 10. Evolution // . . . void p () { int d = f + 4; } // . . . pointcut fragile() : execution(* m*(..)); Base-code V2 Same pointcut selects m1() and m2() but not n() and p(). Fragile! CCC applies to p() in V2 but not selected! How to identify such join points as code evolves?
  • 11. Evolution // . . . void p () { int d = f + 4; } // . . . pointcut fragile() : execution(* m*(..)); Base-code V2 Same pointcut selects m1() and m2() but not n() and p(). Fragile! CCC applies to p() in V2 but not selected! How to identify such join points as code evolves?
  • 12. Evolution // . . . void p () { int d = f + 4; } // . . . pointcut fragile() : execution(* m*(..)); Base-code V2 Same pointcut selects m1() and m2() but not n() and p(). Fragile! CCC applies to p() in V2 but not selected! How to identify such join points as code evolves?
  • 13. Evolution // . . . void p () { int d = f + 4; } // . . . pointcut fragile() : execution(* m*(..)); Base-code V2 Same pointcut selects m1() and m2() but not n() and p(). Fragile! CCC applies to p() in V2 but not selected! How to identify such join points as code evolves?
  • 14. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method A.f declares_field A contains p gets_field declares_method A.n() gets_field declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 15. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method A.f declares_field A contains p gets_field declares_method A.n() gets_field declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 16. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method A.f declares_field A contains p gets_field declares_method A.n() gets_field declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 17. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method A.f declares_field A contains p gets_field declares_method A.n() gets_field declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 18. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method declares_field A.f gets_field A.n() declares_method A contains p gets_field declares_method gets_field A.p() declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 19. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method declares_field A.f gets_field A.n() declares_method A contains p gets_field declares_method gets_field A.p() declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 20. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method declares_field A.f gets_field A.n() declares_method A contains p gets_field declares_method gets_field A.p() declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 21. Pointcut Rejuvenation: Leveraging Commonality Phase I: Analysis using Concern Graphs Extract commonalities between currently selected join points. Phase II: Rejuvenation Apply extracted patterns to new version of the base-code. A.m2() gets_field declares_method declares_field A.f gets_field A.n() declares_method A contains p gets_field declares_method gets_field A.p() declares_method A.m1() Would execution(* A.n()) also be suggested?
  • 22. Suggestion Ranking Scheme Measurements for Suggestion Ranking α error: How strong are the relationships between advised shadows compared to ones captured by a pattern? β error: How well does the pattern express the same intentions as the pointcut?
  • 23. Suggestion Ranking Scheme Measurements for Suggestion Ranking α error: How strong are the relationships between advised shadows compared to ones captured by a pattern? β error: How well does the pattern express the same intentions as the pointcut? All Join Point Shadows
  • 24. Suggestion Ranking Scheme Measurements for Suggestion Ranking α error: How strong are the relationships between advised shadows compared to ones captured by a pattern? β error: How well does the pattern express the same intentions as the pointcut? ω a join point shadow; code correspondi All Join Point Shadows A a piece of advice Apce a pointcut bound to advice A; a set of Apce a subsequent revision of Apce P the original program, the underlying b P a subsequence revision of program P ΩP the set of join point shadows containe IG P a finite graph representing structura tween program elements in P π an acyclic path (sequence of arcs) in I ΠP a set of acyclic paths derived from pro
  • 25. P o.w. Suggestion Ranking Scheme + (CG P ))| Measurements for Suggestion Ranking if |Apce | = 0 α error: How strong are the relationships between advised + ths(CG P ))| shadows compared to ones captured by a pattern? (2 β error: o.w. How well does the pattern express the same intentions as the pointcut? =0 ω a join point shadow; code correspondi A All Join Point Shadows a piece of advice (3 Apce a pointcut bound to advice A; a set of Apce a subsequent revision of Apce π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b ˆ π P πthe (4 P a subsequence revision of program P ΩP the set of join point shadows containe tribute equations. IG P a finite graph representing structura tween program elements in P π an acyclic path (sequence of arcs) in I ΠP a set of acyclic paths derived from pro
  • 26. P o.w. Suggestion Ranking Scheme + (CG P ))| Measurements for Suggestion Ranking if |Apce | = 0 α error: How strong are the relationships between advised + ths(CG P ))| shadows compared to ones captured by a pattern? (2 β error: o.w. How well does the pattern express the same intentions as the pointcut? =0 ω a join point shadow; code correspondi A All Join Point Shadows a piece of advice (3 Apce a pointcut bound to advice A; a set of Apce a subsequent revision of Apce π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b ˆ π P πthe (4 P a subsequence revision of program P ΩP the set of join point shadows containe tribute equations. IG P a αfinite graph representing structura tween program elements in P π an acyclic path (sequence of arcs) in I ΠP a set of acyclic paths derived from pro
  • 27. P o.w. Suggestion Ranking Scheme + (CG P ))| Measurements for Suggestion Ranking if |Apce | = 0 α error: How strong are the relationships between advised + ths(CG P ))| shadows compared to ones captured by a pattern? (2 β error: o.w. How well does the pattern express the same intentions as the pointcut? =0 ω a join point shadow; code correspondi A All Join Point Shadows a piece of advice (3 Apce a pointcut bound to advice A; a set of Apce a subsequent revision of Apce π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b ˆ π P πthe (4 P a subsequence revision of program P ΩP the set of join point shadows containe tribute equations. IG P a αfinite graph representing structura tween program elements in P π an acyclic path (sequence of arcs) in I ΠP a set of acyclic paths derived from pro
  • 28. P o.w. Suggestion Ranking Scheme + (CG P ))| Measurements for Suggestion Ranking if |Apce | = 0 α error: How strong are the relationships between advised + ths(CG P ))| shadows compared to ones captured by a pattern? (2 β error: o.w. How well does the pattern express the same intentions as the pointcut? =0 ω a join point shadow; code correspondi A All Join Point Shadows a piece of advice (3 Apce a pointcut bound to advice A; a set of β Apce a subsequent revision of Apce π )) + err β (ˆ , Apce )abs(ˆ ) original program, the underlying b ˆ π P πthe (4 P a subsequence revision of program P ΩP the set of join point shadows containe tribute equations. IG P a αfinite graph representing structura tween program elements in P π an acyclic path (sequence of arcs) in I ΠP a set of acyclic paths derived from pro
  • 29. Motivation Approach Evaluation More Information Suggestion Confidence Each suggestion is associated with a confidence value ([0,1]). A suggestion inherits the confidence of the pattern that produced it. A pattern’s confidence is calculated using a combination of α, β, and the depth of the patterns. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 30. Motivation Approach Evaluation More Information Suggestion Confidence Each suggestion is associated with a confidence value ([0,1]). A suggestion inherits the confidence of the pattern that produced it. A pattern’s confidence is calculated using a combination of α, β, and the depth of the patterns. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 31. Motivation Approach Evaluation More Information Suggestion Confidence Each suggestion is associated with a confidence value ([0,1]). A suggestion inherits the confidence of the pattern that produced it. A pattern’s confidence is calculated using a combination of α, β, and the depth of the patterns. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 33. Motivation Approach Evaluation More Information But How Well Does It Work? Correlation analysis (Phase I) on 20+ AspectJ benchmarks. Average confidence was 0.66. Applied to 4 multi-versioned AspectJ projects (Phase II). Rejuvenated pointcuts in major releases (26 in total). Able to identify 94% of new shadows introduced in later versions On average, appearing in the top 4% of results. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 34. Motivation Approach Evaluation More Information But How Well Does It Work? Correlation analysis (Phase I) on 20+ AspectJ benchmarks. Average confidence was 0.66. Applied to 4 multi-versioned AspectJ projects (Phase II). Rejuvenated pointcuts in major releases (26 in total). Able to identify 94% of new shadows introduced in later versions On average, appearing in the top 4% of results. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 35. Motivation Approach Evaluation More Information But How Well Does It Work? Correlation analysis (Phase I) on 20+ AspectJ benchmarks. Average confidence was 0.66. Applied to 4 multi-versioned AspectJ projects (Phase II). Rejuvenated pointcuts in major releases (26 in total). Able to identify 94% of new shadows introduced in later versions On average, appearing in the top 4% of results. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 36. Motivation Approach Evaluation More Information But How Well Does It Work? Correlation analysis (Phase I) on 20+ AspectJ benchmarks. Average confidence was 0.66. Applied to 4 multi-versioned AspectJ projects (Phase II). Rejuvenated pointcuts in major releases (26 in total). Able to identify 94% of new shadows introduced in later versions On average, appearing in the top 4% of results. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 37. Motivation Approach Evaluation More Information But How Well Does It Work? Correlation analysis (Phase I) on 20+ AspectJ benchmarks. Average confidence was 0.66. Applied to 4 multi-versioned AspectJ projects (Phase II). Rejuvenated pointcuts in major releases (26 in total). Able to identify 94% of new shadows introduced in later versions On average, appearing in the top 4% of results. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 38. Motivation Approach Evaluation More Information But How Well Does It Work? Correlation analysis (Phase I) on 20+ AspectJ benchmarks. Average confidence was 0.66. Applied to 4 multi-versioned AspectJ projects (Phase II). Rejuvenated pointcuts in major releases (26 in total). Able to identify 94% of new shadows introduced in later versions On average, appearing in the top 4% of results. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 39. Motivation Approach Evaluation More Information Tool and Material Downloads Tool research prototype publicly available at http://code.google.com/p/rejuvenate-pc. Research related material publicly available at http://sites.google.com/site/pointcutrejuvenation. Full evaluation available in corresponding technical report. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 40. Motivation Approach Evaluation More Information Tool and Material Downloads Tool research prototype publicly available at http://code.google.com/p/rejuvenate-pc. Research related material publicly available at http://sites.google.com/site/pointcutrejuvenation. Full evaluation available in corresponding technical report. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut
  • 41. Motivation Approach Evaluation More Information Tool and Material Downloads Tool research prototype publicly available at http://code.google.com/p/rejuvenate-pc. Research related material publicly available at http://sites.google.com/site/pointcutrejuvenation. Full evaluation available in corresponding technical report. Khatchadourian, Greenwood, Rashid, Xu Rejuvenate Pointcut