SlideShare a Scribd company logo
1 of 28
Download to read offline
Brief Introduction to AOP
                     Rejuvenation Approach
                 Simple Motivating Example
                                  Downloads




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


             Raffi Khatchadourian, Awais Rashid
  khatchad@cse.ohio-state.edu,awais@comp.lancs.ac.uk
                    Ohio State University, Lancaster University


                              September 29, 2008


  1
   This material is based upon work supported in part by European
Commission grants IST-33710 (AMPLE) and IST-2-004349 (AOSD-Europe).
          Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                       Rejuvenation Approach
                   Simple Motivating Example
                                    Downloads


Outline


  1   Brief Introduction to AOP

  2   Rejuvenation Approach

  3   Simple Motivating Example
        Phase I: Analysis
        Phase II: Rejuvenation

  4   Downloads



            Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                     Rejuvenation Approach
                 Simple Motivating Example
                                  Downloads


Aspect-Oriented Programming




     AOP reduces scattering and tangling of crosscutting concern
     (CCCs) implementations.
     Developer specifies behavior (advice).
     Advice is composed at specific execution points (join points).
     Join points specified via pointcut expressions (PCEs).




          Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                     Rejuvenation Approach
                 Simple Motivating Example
                                  Downloads


Aspect-Oriented Programming




     AOP reduces scattering and tangling of crosscutting concern
     (CCCs) implementations.
     Developer specifies behavior (advice).
     Advice is composed at specific execution points (join points).
     Join points specified via pointcut expressions (PCEs).




          Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                     Rejuvenation Approach
                 Simple Motivating Example
                                  Downloads


Aspect-Oriented Programming




     AOP reduces scattering and tangling of crosscutting concern
     (CCCs) implementations.
     Developer specifies behavior (advice).
     Advice is composed at specific execution points (join points).
     Join points specified via pointcut expressions (PCEs).




          Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                     Rejuvenation Approach
                 Simple Motivating Example
                                  Downloads


Aspect-Oriented Programming




     AOP reduces scattering and tangling of crosscutting concern
     (CCCs) implementations.
     Developer specifies behavior (advice).
     Advice is composed at specific execution points (join points).
     Join points specified via pointcut expressions (PCEs).




          Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                    Rejuvenation Approach
                Simple Motivating Example
                                 Downloads


Example PCEs




     execution(* Foo.*(..))
     execution(* Foo.methodA())




         Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                    Rejuvenation Approach
                Simple Motivating Example
                                 Downloads


Example PCEs




     execution(* Foo.*(..))
     execution(* Foo.methodA())




         Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


Fragile Pointcut Problem


      Constructing optimal pointcut expressions that capture true
      intentions of where a CCC applies can be difficult.
      Ideally, pointcut expressions (PCEs) should remain valid as
      the software evolves.
      However, situations arise where base-code alterations induce
      the invalidity of existing PCEs.
      PCEs must be amended as a result.
      But which join points should be included?
      Can we automatically infer join points that should be included
      in the new version of the PCE upon evolution?


           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


Fragile Pointcut Problem


      Constructing optimal pointcut expressions that capture true
      intentions of where a CCC applies can be difficult.
      Ideally, pointcut expressions (PCEs) should remain valid as
      the software evolves.
      However, situations arise where base-code alterations induce
      the invalidity of existing PCEs.
      PCEs must be amended as a result.
      But which join points should be included?
      Can we automatically infer join points that should be included
      in the new version of the PCE upon evolution?


           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


Fragile Pointcut Problem


      Constructing optimal pointcut expressions that capture true
      intentions of where a CCC applies can be difficult.
      Ideally, pointcut expressions (PCEs) should remain valid as
      the software evolves.
      However, situations arise where base-code alterations induce
      the invalidity of existing PCEs.
      PCEs must be amended as a result.
      But which join points should be included?
      Can we automatically infer join points that should be included
      in the new version of the PCE upon evolution?


           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


Fragile Pointcut Problem


      Constructing optimal pointcut expressions that capture true
      intentions of where a CCC applies can be difficult.
      Ideally, pointcut expressions (PCEs) should remain valid as
      the software evolves.
      However, situations arise where base-code alterations induce
      the invalidity of existing PCEs.
      PCEs must be amended as a result.
      But which join points should be included?
      Can we automatically infer join points that should be included
      in the new version of the PCE upon evolution?


           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


Fragile Pointcut Problem


      Constructing optimal pointcut expressions that capture true
      intentions of where a CCC applies can be difficult.
      Ideally, pointcut expressions (PCEs) should remain valid as
      the software evolves.
      However, situations arise where base-code alterations induce
      the invalidity of existing PCEs.
      PCEs must be amended as a result.
      But which join points should be included?
      Can we automatically infer join points that should be included
      in the new version of the PCE upon evolution?


           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


Fragile Pointcut Problem


      Constructing optimal pointcut expressions that capture true
      intentions of where a CCC applies can be difficult.
      Ideally, pointcut expressions (PCEs) should remain valid as
      the software evolves.
      However, situations arise where base-code alterations induce
      the invalidity of existing PCEs.
      PCEs must be amended as a result.
      But which join points should be included?
      Can we automatically infer join points that should be included
      in the new version of the PCE upon evolution?


           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


The Idea



     Capture rich program element relationships in a concern graph
     adapted for AOP.
     Associate graph elements with join point shadows contained
     in the PCE.
     Extract patterns from finite, acyclic paths in the graph.
     Place wildcards in place of the associated elements.
     Apply the patterns to the evolved version of the base-code.




           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


The Idea



     Capture rich program element relationships in a concern graph
     adapted for AOP.
     Associate graph elements with join point shadows contained
     in the PCE.
     Extract patterns from finite, acyclic paths in the graph.
     Place wildcards in place of the associated elements.
     Apply the patterns to the evolved version of the base-code.




           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


The Idea



     Capture rich program element relationships in a concern graph
     adapted for AOP.
     Associate graph elements with join point shadows contained
     in the PCE.
     Extract patterns from finite, acyclic paths in the graph.
     Place wildcards in place of the associated elements.
     Apply the patterns to the evolved version of the base-code.




           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


The Idea



     Capture rich program element relationships in a concern graph
     adapted for AOP.
     Associate graph elements with join point shadows contained
     in the PCE.
     Extract patterns from finite, acyclic paths in the graph.
     Place wildcards in place of the associated elements.
     Apply the patterns to the evolved version of the base-code.




           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                      Rejuvenation Approach
                  Simple Motivating Example
                                   Downloads


The Idea



     Capture rich program element relationships in a concern graph
     adapted for AOP.
     Associate graph elements with join point shadows contained
     in the PCE.
     Extract patterns from finite, acyclic paths in the graph.
     Place wildcards in place of the associated elements.
     Apply the patterns to the evolved version of the base-code.




           Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                       Rejuvenation Approach    Phase I: Analysis
                   Simple Motivating Example    Phase II: Rejuvenation
                                    Downloads


Base-code

  package p ;
  public class A {
      int f ;
      void m1 () {
          int a = f + 1;
      }
      void m2 () {
          int b = f + 2;
      }
      void n () {
          int c = f + 3;
      }
  }

            Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                    Rejuvenation Approach        Phase I: Analysis
                Simple Motivating Example        Phase II: Rejuvenation
                                 Downloads


Concern Graph


                                   p


                                    contains


                                   A


            declares_method                    declares_method     declares_method


           A.m2()               declares_field       A.n()           A.m1()


                    gets_field                   gets_field        gets_field


                                    A.f




         Raffi Khatchadourian, Awais Rashid        Rejuvenate Pointcut
Brief Introduction to AOP
                       Rejuvenation Approach    Phase I: Analysis
                   Simple Motivating Example    Phase II: Rejuvenation
                                    Downloads


An Aspect




  package p ;
  public aspect B {
      before () : execution (* m *(..) ) {
      }
  }




            Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                    Rejuvenation Approach        Phase I: Analysis
                Simple Motivating Example        Phase II: Rejuvenation
                                 Downloads


Concern Graph


                                   p


                                    contains


                                   A


            declares_method                    declares_method     declares_method


           A.m2()               declares_field       A.n()           A.m1()


                    gets_field                   gets_field        gets_field


                                    A.f




         Raffi Khatchadourian, Awais Rashid        Rejuvenate Pointcut
Brief Introduction to AOP
                       Rejuvenation Approach    Phase I: Analysis
                   Simple Motivating Example    Phase II: Rejuvenation
                                    Downloads


Base-code




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




            Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                        Rejuvenation Approach           Phase I: Analysis
                    Simple Motivating Example           Phase II: Rejuvenation
                                     Downloads


Concern Graph


                                    p


                                    contains


                                    A


       declares_method               declares_method         declares_method      declares_method


       A.m2()               declares_field        A.n()           A.o()           A.m1()


                gets_field                          gets_field gets_field           gets_field


                                                  A.f




           Raffi Khatchadourian, Awais Rashid             Rejuvenate Pointcut
Brief Introduction to AOP
                    Rejuvenation Approach    Phase I: Analysis
                Simple Motivating Example    Phase II: Rejuvenation
                                 Downloads


Patterns and Suggestions




         Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                     Rejuvenation Approach
                 Simple Motivating Example
                                  Downloads


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.




          Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut
Brief Introduction to AOP
                       Rejuvenation Approach
                   Simple Motivating Example
                                    Downloads


Question for SCAM




  Do more expressive PCE languages truly solve the fragile pointcut
  problem?




            Raffi Khatchadourian, Awais Rashid    Rejuvenate Pointcut

More Related Content

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

Aspect Oriented Software Development
Aspect Oriented Software DevelopmentAspect Oriented Software Development
Aspect Oriented Software DevelopmentJignesh Patel
 
Framework Engineering 2.1
Framework Engineering 2.1Framework Engineering 2.1
Framework Engineering 2.1YoungSu Son
 
AOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC Team
AOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC TeamAOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC Team
AOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC TeamThuy_Dang
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Raffi Khatchadourian
 
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...Teemu Karvonen
 
Capacity Planning and Modelling
Capacity Planning and ModellingCapacity Planning and Modelling
Capacity Planning and ModellingAnthony Dehnashi
 
Pcf cross industry V5.2.0
Pcf cross industry V5.2.0Pcf cross industry V5.2.0
Pcf cross industry V5.2.0Zhongwei Lin
 
Define and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements ComposerDefine and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements ComposerAlan Kan
 
Application Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and SucceedApplication Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and SucceedVMware Tanzu
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingRajesh Ganesan
 
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...Erez PEDRO
 
Pointcut rejuvenation
Pointcut rejuvenationPointcut rejuvenation
Pointcut rejuvenationRavi Theja
 
Apqc business improvement
Apqc business improvementApqc business improvement
Apqc business improvementHaryo Utomo
 
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...Ana Nicolaescu
 
Ontology-based Description and Discovery of Business Processes
Ontology-based Description and Discovery of Business ProcessesOntology-based Description and Discovery of Business Processes
Ontology-based Description and Discovery of Business ProcessesMarco Brambilla
 
DevOps Loop - Jeffrey Hammond.pptx.pdf
DevOps Loop - Jeffrey Hammond.pptx.pdfDevOps Loop - Jeffrey Hammond.pptx.pdf
DevOps Loop - Jeffrey Hammond.pptx.pdfVMware Tanzu
 

Similar to Rejuvenate Pointcut: A Tool for Pointcut Expression Recovery in Evolving Aspect-Oriented Software (20)

Aspect Oriented Software Development
Aspect Oriented Software DevelopmentAspect Oriented Software Development
Aspect Oriented Software Development
 
Framework Engineering 2.1
Framework Engineering 2.1Framework Engineering 2.1
Framework Engineering 2.1
 
AOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC Team
AOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC TeamAOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC Team
AOP-IOC made by Vi Quoc Hanh and Vu Cong Thanh in SC Team
 
PM_WBS
PM_WBSPM_WBS
PM_WBS
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
Adapting the Lean Enterprise Self-Assessment Tool for Software Development Do...
 
End of Year Presentation
End of Year PresentationEnd of Year Presentation
End of Year Presentation
 
Capacity Planning and Modelling
Capacity Planning and ModellingCapacity Planning and Modelling
Capacity Planning and Modelling
 
Pcf cross industry V5.2.0
Pcf cross industry V5.2.0Pcf cross industry V5.2.0
Pcf cross industry V5.2.0
 
Define and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements ComposerDefine and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements Composer
 
Application Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and SucceedApplication Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and Succeed
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...
 
Pointcut rejuvenation
Pointcut rejuvenationPointcut rejuvenation
Pointcut rejuvenation
 
Apqc business improvement
Apqc business improvementApqc business improvement
Apqc business improvement
 
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
 
Unit 2
Unit 2Unit 2
Unit 2
 
Ontology-based Description and Discovery of Business Processes
Ontology-based Description and Discovery of Business ProcessesOntology-based Description and Discovery of Business Processes
Ontology-based Description and Discovery of Business Processes
 
DevOps Loop - Jeffrey Hammond.pptx.pdf
DevOps Loop - Jeffrey Hammond.pptx.pdfDevOps Loop - Jeffrey Hammond.pptx.pdf
DevOps Loop - Jeffrey Hammond.pptx.pdf
 

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
 
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...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
 
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 StreamsRaffi 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 StreamsRaffi 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 StreamsRaffi Khatchadourian
 
A Brief Introduction to Type Constraints
A Brief Introduction to Type ConstraintsA Brief Introduction to Type Constraints
A Brief Introduction to Type ConstraintsRaffi 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 RefactoringRaffi Khatchadourian
 
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...Raffi Khatchadourian
 
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 StreamsRaffi 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
 
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...Raffi Khatchadourian
 
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...Raffi Khatchadourian
 
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...Raffi Khatchadourian
 
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 MethodsRaffi 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

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

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

  • 1. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Rejuvenate Pointcut1 A Tool for Pointcut Expression Recovery in Evolving Aspect-Oriented Software Raffi Khatchadourian, Awais Rashid khatchad@cse.ohio-state.edu,awais@comp.lancs.ac.uk Ohio State University, Lancaster University September 29, 2008 1 This material is based upon work supported in part by European Commission grants IST-33710 (AMPLE) and IST-2-004349 (AOSD-Europe). Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 2. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Outline 1 Brief Introduction to AOP 2 Rejuvenation Approach 3 Simple Motivating Example Phase I: Analysis Phase II: Rejuvenation 4 Downloads Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 3. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Aspect-Oriented Programming AOP reduces scattering and tangling of crosscutting concern (CCCs) implementations. Developer specifies behavior (advice). Advice is composed at specific execution points (join points). Join points specified via pointcut expressions (PCEs). Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 4. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Aspect-Oriented Programming AOP reduces scattering and tangling of crosscutting concern (CCCs) implementations. Developer specifies behavior (advice). Advice is composed at specific execution points (join points). Join points specified via pointcut expressions (PCEs). Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 5. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Aspect-Oriented Programming AOP reduces scattering and tangling of crosscutting concern (CCCs) implementations. Developer specifies behavior (advice). Advice is composed at specific execution points (join points). Join points specified via pointcut expressions (PCEs). Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 6. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Aspect-Oriented Programming AOP reduces scattering and tangling of crosscutting concern (CCCs) implementations. Developer specifies behavior (advice). Advice is composed at specific execution points (join points). Join points specified via pointcut expressions (PCEs). Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 7. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Example PCEs execution(* Foo.*(..)) execution(* Foo.methodA()) Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 8. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Example PCEs execution(* Foo.*(..)) execution(* Foo.methodA()) Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 9. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Fragile Pointcut Problem Constructing optimal pointcut expressions that capture true intentions of where a CCC applies can be difficult. Ideally, pointcut expressions (PCEs) should remain valid as the software evolves. However, situations arise where base-code alterations induce the invalidity of existing PCEs. PCEs must be amended as a result. But which join points should be included? Can we automatically infer join points that should be included in the new version of the PCE upon evolution? Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 10. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Fragile Pointcut Problem Constructing optimal pointcut expressions that capture true intentions of where a CCC applies can be difficult. Ideally, pointcut expressions (PCEs) should remain valid as the software evolves. However, situations arise where base-code alterations induce the invalidity of existing PCEs. PCEs must be amended as a result. But which join points should be included? Can we automatically infer join points that should be included in the new version of the PCE upon evolution? Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 11. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Fragile Pointcut Problem Constructing optimal pointcut expressions that capture true intentions of where a CCC applies can be difficult. Ideally, pointcut expressions (PCEs) should remain valid as the software evolves. However, situations arise where base-code alterations induce the invalidity of existing PCEs. PCEs must be amended as a result. But which join points should be included? Can we automatically infer join points that should be included in the new version of the PCE upon evolution? Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 12. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Fragile Pointcut Problem Constructing optimal pointcut expressions that capture true intentions of where a CCC applies can be difficult. Ideally, pointcut expressions (PCEs) should remain valid as the software evolves. However, situations arise where base-code alterations induce the invalidity of existing PCEs. PCEs must be amended as a result. But which join points should be included? Can we automatically infer join points that should be included in the new version of the PCE upon evolution? Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 13. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Fragile Pointcut Problem Constructing optimal pointcut expressions that capture true intentions of where a CCC applies can be difficult. Ideally, pointcut expressions (PCEs) should remain valid as the software evolves. However, situations arise where base-code alterations induce the invalidity of existing PCEs. PCEs must be amended as a result. But which join points should be included? Can we automatically infer join points that should be included in the new version of the PCE upon evolution? Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 14. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Fragile Pointcut Problem Constructing optimal pointcut expressions that capture true intentions of where a CCC applies can be difficult. Ideally, pointcut expressions (PCEs) should remain valid as the software evolves. However, situations arise where base-code alterations induce the invalidity of existing PCEs. PCEs must be amended as a result. But which join points should be included? Can we automatically infer join points that should be included in the new version of the PCE upon evolution? Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 15. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads The Idea Capture rich program element relationships in a concern graph adapted for AOP. Associate graph elements with join point shadows contained in the PCE. Extract patterns from finite, acyclic paths in the graph. Place wildcards in place of the associated elements. Apply the patterns to the evolved version of the base-code. Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 16. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads The Idea Capture rich program element relationships in a concern graph adapted for AOP. Associate graph elements with join point shadows contained in the PCE. Extract patterns from finite, acyclic paths in the graph. Place wildcards in place of the associated elements. Apply the patterns to the evolved version of the base-code. Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 17. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads The Idea Capture rich program element relationships in a concern graph adapted for AOP. Associate graph elements with join point shadows contained in the PCE. Extract patterns from finite, acyclic paths in the graph. Place wildcards in place of the associated elements. Apply the patterns to the evolved version of the base-code. Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 18. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads The Idea Capture rich program element relationships in a concern graph adapted for AOP. Associate graph elements with join point shadows contained in the PCE. Extract patterns from finite, acyclic paths in the graph. Place wildcards in place of the associated elements. Apply the patterns to the evolved version of the base-code. Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 19. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads The Idea Capture rich program element relationships in a concern graph adapted for AOP. Associate graph elements with join point shadows contained in the PCE. Extract patterns from finite, acyclic paths in the graph. Place wildcards in place of the associated elements. Apply the patterns to the evolved version of the base-code. Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 20. Brief Introduction to AOP Rejuvenation Approach Phase I: Analysis Simple Motivating Example Phase II: Rejuvenation Downloads Base-code package p ; public class A { int f ; void m1 () { int a = f + 1; } void m2 () { int b = f + 2; } void n () { int c = f + 3; } } Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 21. Brief Introduction to AOP Rejuvenation Approach Phase I: Analysis Simple Motivating Example Phase II: Rejuvenation Downloads Concern Graph p contains A declares_method declares_method declares_method A.m2() declares_field A.n() A.m1() gets_field gets_field gets_field A.f Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 22. Brief Introduction to AOP Rejuvenation Approach Phase I: Analysis Simple Motivating Example Phase II: Rejuvenation Downloads An Aspect package p ; public aspect B { before () : execution (* m *(..) ) { } } Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 23. Brief Introduction to AOP Rejuvenation Approach Phase I: Analysis Simple Motivating Example Phase II: Rejuvenation Downloads Concern Graph p contains A declares_method declares_method declares_method A.m2() declares_field A.n() A.m1() gets_field gets_field gets_field A.f Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 24. Brief Introduction to AOP Rejuvenation Approach Phase I: Analysis Simple Motivating Example Phase II: Rejuvenation Downloads Base-code // . . . void o () { int d = f + 4; } // . . . Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 25. Brief Introduction to AOP Rejuvenation Approach Phase I: Analysis Simple Motivating Example Phase II: Rejuvenation Downloads Concern Graph p contains A declares_method declares_method declares_method declares_method A.m2() declares_field A.n() A.o() A.m1() gets_field gets_field gets_field gets_field A.f Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 26. Brief Introduction to AOP Rejuvenation Approach Phase I: Analysis Simple Motivating Example Phase II: Rejuvenation Downloads Patterns and Suggestions Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 27. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads 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. Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut
  • 28. Brief Introduction to AOP Rejuvenation Approach Simple Motivating Example Downloads Question for SCAM Do more expressive PCE languages truly solve the fragile pointcut problem? Raffi Khatchadourian, Awais Rashid Rejuvenate Pointcut