SlideShare a Scribd company logo
1 of 149
Enforcing Behavioral Constraints in
               Evolving
       Aspect-Oriented Programs
Raffi Khatchadourian1*, Johan Dovland2, and Neelam Soundarajan1

                1The  Ohio State University, USA
                   2University of Oslo, Norway
 *Partially administered during visit to Lancaster University, UK
Introduction
Introduction




• AOP enables modular implementation of cross-
 cutting concerns.
Introduction




• AOP enables modular implementation of cross-
 cutting concerns.
• Both formal and informal reasoning about AOP
 presents unique challenges especially in respect to
 evolution.
Introduction




• AOP enables modular implementation of cross-
 cutting concerns.
• Both formal and informal reasoning about AOP
 presents unique challenges especially in respect to
 evolution.
• As components enter, exit, and re-enter software,
 conclusions about behavior of components may be
 invalidated.
C
A




C
A




C
A




C
A




     C

Behavior of C+A
C

Behavior of C+A
C

Behavior of C+A
C

    Behavior of C+A
C
What We Want
What We Want




• Desire a compositional reasoning approach, however
 the invasive nature of AOP makes this difficult.
What We Want




• Desire a compositional reasoning approach, however
 the invasive nature of AOP makes this difficult.
• In the worst case, changes made to a single
 component require reexamining the entire program.
Questions
Questions



• Can we draw meaningful conclusions about
 component code without considering the actual
 advice code?
Questions



• Can we draw meaningful conclusions about
 component code without considering the actual
 advice code?
• Can we specify the behavior of components without
 any particular advice in mind?
Questions



• Can we draw meaningful conclusions about
 component code without considering the actual
 advice code?
• Can we specify the behavior of components without
 any particular advice in mind?
• Can we parameterize specifications over all possibly
 applicable aspects?
Questions



• Can we draw meaningful conclusions about
 component code without considering the actual
 advice code?
• Can we specify the behavior of components without
 any particular advice in mind?
• Can we parameterize specifications over all possibly
 applicable aspects?
• Can we suitably constrain the behavior of aspects as
 the software evolves?
Hiding Behind Interfaces
Hiding Behind Interfaces




• Using interface is
 one answer (e.g.,
 XPIs, Open
 Modules)
Hiding Behind Interfaces




• Using interface is
 one answer (e.g.,
 XPIs, Open
 Modules)

• But it would be
 nice to have a way
 to derive the
 enriched behavior
 of the base plus the
 aspects at compile
 time.
Insight
Insight




• AO programs inherently enjoy plug-n-play
 capabilities [Laddad03]
Insight




• AO programs inherently enjoy plug-n-play
 capabilities [Laddad03]
• Crosscutting features can be plugged-in to enrich the
 behavior of advised components.
Insight




• AO programs inherently enjoy plug-n-play
 capabilities [Laddad03]
• Crosscutting features can be plugged-in to enrich the
 behavior of advised components.
• Likewise, can we specify components so that we can
 derive their behaviors in a similar fashion?
C
Spec(C)

  C
Spec(C)




  C
Spec(C)




  C
Spec(C)




A1     C       A2
Spec(C)




Spec(A1 )             Spec(A2 )

   A1         C         A2
Spec(A1 )   Spec(C)   Spec(A2 )
Spec(A1 )          Spec(C)   Spec(A2 )

      Compose




Behavior of C+A1
Spec(A1 )          Spec(C)    Spec(A2 )

      Compose




                                   Compose
Behavior of C+A1             Behavior of C+A2
Spec(A1 )             Spec(C)             Spec(A2 )

      Compose




                           Compose




                                               Compose
Behavior of C+A1   Behavior of C+A1+A2   Behavior of C+A2
Obstacles
Obstacles




• Usefulness
Obstacles




• Usefulness
 • Is it possible to draw meaningful conclusions from
   such incomplete information?
Obstacles




• Usefulness
 • Is it possible to draw meaningful conclusions from
   such incomplete information?
• Obliviousness
Obstacles




• Usefulness
 • Is it possible to draw meaningful conclusions from
   such incomplete information?
• Obliviousness
 • Specifications contain “slots” for applications of
   crosscutting concerns.
Obstacles
Obstacles


• Abstraction
Obstacles


• Abstraction
 • Competing forces:
Obstacles


• Abstraction
 • Competing forces:
   • Specs abstract internal details components,
     aspects directly manipulate them.
Obstacles


• Abstraction
 • Competing forces:
   • Specs abstract internal details components,
     aspects directly manipulate them.
• Composition
Obstacles


• Abstraction
 • Competing forces:
   • Specs abstract internal details components,
     aspects directly manipulate them.
• Composition
 • Which pegs go into which holes?
Obstacles


• Abstraction
 • Competing forces:
   • Specs abstract internal details components,
     aspects directly manipulate them.
• Composition
 • Which pegs go into which holes?
 • How to deal with dynamic and lexical pointcuts?
Obstacles


• Abstraction
 • Competing forces:
   • Specs abstract internal details components,
     aspects directly manipulate them.
• Composition
 • Which pegs go into which holes?
 • How to deal with dynamic and lexical pointcuts?
• Complexity
Obstacles


• Abstraction
 • Competing forces:
   • Specs abstract internal details components,
     aspects directly manipulate them.
• Composition
 • Which pegs go into which holes?
 • How to deal with dynamic and lexical pointcuts?
• Complexity
 • What if no advice is applicable?
Tackling Specification Complexity
Tackling Specification Complexity

• May need to make assumptions about the behavior of
 evolving components.
Tackling Specification Complexity

• May need to make assumptions about the behavior of
 evolving components.
• Specification pointcuts
Tackling Specification Complexity

• May need to make assumptions about the behavior of
 evolving components.
• Specification pointcuts
 • Pointcut interfaces [Gudmundson01] annotated
   with behavioral specifications.
Tackling Specification Complexity

• May need to make assumptions about the behavior of
 evolving components.
• Specification pointcuts
 • Pointcut interfaces [Gudmundson01] annotated
   with behavioral specifications.
 • “Exported” internal semantic events within the
   component.
Tackling Specification Complexity

• May need to make assumptions about the behavior of
 evolving components.
• Specification pointcuts
 • Pointcut interfaces [Gudmundson01] annotated
   with behavioral specifications.
 • “Exported” internal semantic events within the
   component.
 • Adopt a rely-guarantee approach [Xu97] from
   concurrent programming to constrain the behavior
   of all possibly applicable advice using a rely clause.
Tackling Specification Complexity

• May need to make assumptions about the behavior of
 evolving components.
• Specification pointcuts
 • Pointcut interfaces [Gudmundson01] annotated
   with behavioral specifications.
 • “Exported” internal semantic events within the
   component.
 • Adopt a rely-guarantee approach [Xu97] from
   concurrent programming to constrain the behavior
   of all possibly applicable advice using a rely clause.
 • A guar clause may be used to constrain components.
Review of R/G for AOP [Khatchadourian07,
                                Soundarajan07]



                the set of all variables of
     σ          the program

                states in which each
σi , σj , ...   variable has a particular
                value
!1




!2




!3
!1

      Aspect




!2'




!3
!a

     Aspect




!b
The state at a point in the execution
       of a component is σa.

      !a

                        Aspect




      !b
The state at a point in the execution
       of a component is σa.

      !a

                        Aspect




      !b

The state when the class gets control
     back from an aspect is σb.
The state at a point in the execution
       of a component is σa.

      !a

                        Aspect
  rely(σa, σb)


      !b

The state when the class gets control
     back from an aspect is σb.
Rely() Example




rely(σ, σ ) ≡ (σ = σ )
Rely() Example



         The entire state of
                 C


rely(σ, σ ) ≡ (σ = σ )
Rely() Example




rely(σ, σ ) ≡ (σ = σ )
                            le y
                          ab an
                       lic g
                    pp kin e!
                y a ma tat
              an
             s om he s
           id fr       t
        rb e
       o ic         in
      F v        es
        a d ang
           ch
Rely() Example

      This is
 “Harmless”[D&W
     POPL’06]



rely(σ, σ ) ≡ (σ = σ )
Deriving Effective Behavior
Deriving Effective Behavior


• Constraining parameterized behavior reduces
 complexity, but ...
Deriving Effective Behavior


• Constraining parameterized behavior reduces
 complexity, but ...
 • How are formal parameters expressed?
Deriving Effective Behavior


• Constraining parameterized behavior reduces
 complexity, but ...
 • How are formal parameters expressed?
 • How are actual parameters deduced?
Deriving Effective Behavior


• Constraining parameterized behavior reduces
 complexity, but ...
 • How are formal parameters expressed?
 • How are actual parameters deduced?
 • How are the specifications composed?
Deriving Effective Behavior


• Constraining parameterized behavior reduces
  complexity, but ...
 • How are formal parameters expressed?
 • How are actual parameters deduced?
 • How are the specifications composed?
• Aspects are typically used to enrich the behavior of
  the an underlying component.
Deriving Effective Behavior


• Constraining parameterized behavior reduces
  complexity, but ...
 • How are formal parameters expressed?
 • How are actual parameters deduced?
 • How are the specifications composed?
• Aspects are typically used to enrich the behavior of
  the an underlying component.
• Thus, we want to deriving the actual behavior of
  components with the aspects.
Join Point Traces
Join Point Traces



• A Join Point Trace (JPT) variable is introduced to
 track the flow-of-control through various join points
 within a component.
Join Point Traces



• A Join Point Trace (JPT) variable is introduced to
  track the flow-of-control through various join points
  within a component.
• A JPT is used as a parameter over the actions of all
  possibly applicable aspects.
Join Point Traces



• A Join Point Trace (JPT) variable is introduced to
  track the flow-of-control through various join points
  within a component.
• A JPT is used as a parameter over the actions of all
  possibly applicable aspects.
• Method post-conditions will references to the JPT.
Join Point Traces



• A Join Point Trace (JPT) variable is introduced to
  track the flow-of-control through various join points
  within a component.
• A JPT is used as a parameter over the actions of all
  possibly applicable aspects.
• Method post-conditions will references to the JPT.
• Informally, a JPT is used to refer to the actions and
  resulting values taken by advice at certain join point.
Elements of the JPT
Elements of the JPT




• The JPT is composed of several components that are
 associated with each join point.
Elements of the JPT




• The JPT is composed of several components that are
  associated with each join point.
• Just as there are different kinds of join points (e.g.,
  call, execution), there different kinds of JPT
  entries.
JPT Method Call Completion Element




(oid , mid , aid , args, res, σ, σ )
JPT Method Call Completion Element




(oid , mid , aid , args, res, σ, σ )
     Called Object
JPT Method Call Completion Element




 Called
 Method

(oid , mid , aid , args, res, σ, σ )
     Called Object
JPT Method Call Completion Element




 Called
 Method

(oid , mid , aid , args, res, σ, σ )
                     Applicable
     Called Object
                       Aspect
JPT Method Call Completion Element




 Called       Argument
 Method         Values

(oid , mid , aid , args, res, σ, σ )
                         Applicable
     Called Object
                           Aspect
JPT Method Call Completion Element




 Called       Argument
 Method         Values

(oid , mid , aid , args, res, σ, σ )
                         Applicable     Method
     Called Object                    Return Value
                           Aspect
JPT Method Call Completion Element




   σ, σ
JPT Method Call Completion Element




  State Vectors

   σ, σ
JPT Method Call Completion Element




           State Vectors

            σ, σ
σ[oid]    State of object oid after
         completion of method mid
JPT Method Call Completion Element




            State Vectors

             σ, σ
σ[oid]     State of object oid after
          completion of method mid
σ [oid]     State of object oid after
           completion of aspect aid
JPT Method Call Completion Element




            State Vectors

             σ, σ
σ[oid]     State of object oid after
          completion of method mid
σ [oid]     State of object oid after
           completion of aspect aid
No applicable advice   =⇒ σ = σ
Rule for method specification
Rule for method specification




   Normal
pre-condition
Rule for method specification




  Post-condition, may
include references to
    portions of JPT
Rule for method specification




             R/G Clauses
Rule for method specification
Rule for method specification
Rule for method specification




Invocation of C.m
  on the local JPT
Rule for method specification
Rule for method specification
Rule for method specification




      Classic
    Hoare Triple
Rule for method specification
Rule for method specification
Rule for method specification




Don’t forget
about the
guarantee
Rule for method specification
Rule for method specification
Rule for method specification




      If when q holds and
   applicable advice behaves
    properly implies that ...
Rule for method specification
Rule for method specification
Rule for method specification




    ... our post-
condition holds with a a
 new entry in the local
           JPT
Rule for method specification




     Not sure which
aspect is applicable yet, so
   we’ll leave this blank
Rule for method specification




          Replace all
        occurrences of
           σ with σ’
Rule for Method Calls
Rule for Method Calls
Rule for Method Calls


    Substitute
actuals for formals
Rule for Method Calls
Rule for Method Calls
Rule for Method Calls



Local JPT for
   caller
Rule for Method Calls




Local JPT for
   callee
Rule for Method Calls




    Substitute
formals for actuals
Rule for Aspect Application (Simple)
Rule for Aspect Application (Simple)




             Base-code
           plus an aspect
Rule for Aspect Application (Simple)




  Base-code
pre-condition
Rule for Aspect Application (Simple)




 Aspect pre-
  condition
Rule for Aspect Application (Simple)




                    Base-code
                   post-condition
Rule for Aspect Application (Simple)




        Aspect post-
         condition
Rule for Aspect Application (Simple)
Rule for Aspect Application (Simple)


 Base-code
satisfies guar
Rule for Aspect Application (Simple)



    Advice body
Rule for Aspect Application (Simple)




    State vector
immediately prior to
the execution of the
       advice
Rule for Aspect Application (Simple)
Conclusion
Conclusion


• On-going work (hopefully thesis worthy! ;) )
Conclusion


• On-going work (hopefully thesis worthy! ;) )
• Complete formal model (suggestions here?)
Conclusion


• On-going work (hopefully thesis worthy! ;) )
• Complete formal model (suggestions here?)
• Sound axiomatic proof system
Conclusion


• On-going work (hopefully thesis worthy! ;) )
• Complete formal model (suggestions here?)
• Sound axiomatic proof system
• Curbing notational complexity via predicates.
Conclusion


• On-going work (hopefully thesis worthy! ;) )
• Complete formal model (suggestions here?)
• Sound axiomatic proof system
• Curbing notational complexity via predicates.
• Integration with IDE/theorem provers.
Conclusion


• On-going work (hopefully thesis worthy! ;) )
• Complete formal model (suggestions here?)
• Sound axiomatic proof system
• Curbing notational complexity via predicates.
• Integration with IDE/theorem provers.
 • Complement the Eclipse AJDT with a behavioral
   cross reference view?
Conclusion


• On-going work (hopefully thesis worthy! ;) )
• Complete formal model (suggestions here?)
• Sound axiomatic proof system
• Curbing notational complexity via predicates.
• Integration with IDE/theorem provers.
 • Complement the Eclipse AJDT with a behavioral
   cross reference view?
• Integration with languages (e.g., via annotated
  pointcuts, JML)

More Related Content

Viewers also liked

Presentacion Dia De La Paz 2009
Presentacion Dia De La Paz 2009Presentacion Dia De La Paz 2009
Presentacion Dia De La Paz 2009
3sanagus
 
Filename intelvmwaresolutionbrief asset4
Filename intelvmwaresolutionbrief asset4Filename intelvmwaresolutionbrief asset4
Filename intelvmwaresolutionbrief asset4
ReadWrite
 

Viewers also liked (14)

Issues in disasters for health professionals
Issues in disasters for health professionalsIssues in disasters for health professionals
Issues in disasters for health professionals
 
Decoding Personalisation
Decoding PersonalisationDecoding Personalisation
Decoding Personalisation
 
Presentacion Dia De La Paz 2009
Presentacion Dia De La Paz 2009Presentacion Dia De La Paz 2009
Presentacion Dia De La Paz 2009
 
SDS & Work
SDS & WorkSDS & Work
SDS & Work
 
2010 Subaru Impreza Wrx Buffalo
2010 Subaru Impreza Wrx Buffalo2010 Subaru Impreza Wrx Buffalo
2010 Subaru Impreza Wrx Buffalo
 
Writing web content
Writing web contentWriting web content
Writing web content
 
Filename intelvmwaresolutionbrief asset4
Filename intelvmwaresolutionbrief asset4Filename intelvmwaresolutionbrief asset4
Filename intelvmwaresolutionbrief asset4
 
Website Globalization And E Business Japan
Website Globalization And E Business JapanWebsite Globalization And E Business Japan
Website Globalization And E Business Japan
 
Self-Directed Support - International Learning
Self-Directed Support - International LearningSelf-Directed Support - International Learning
Self-Directed Support - International Learning
 
Boğaziçi, Bosphorus
Boğaziçi, BosphorusBoğaziçi, Bosphorus
Boğaziçi, Bosphorus
 
Nev york dvojeata(2)
Nev york dvojeata(2)Nev york dvojeata(2)
Nev york dvojeata(2)
 
Self-Directed Support in Northern Ireland
Self-Directed Support in Northern IrelandSelf-Directed Support in Northern Ireland
Self-Directed Support in Northern Ireland
 
0 φ- δολλαριο και οικονομια kv
0  φ- δολλαριο και οικονομια  kv0  φ- δολλαριο και οικονομια  kv
0 φ- δολλαριο και οικονομια kv
 
Content Strategy for Intermediate Bloggers
Content Strategy for Intermediate BloggersContent Strategy for Intermediate Bloggers
Content Strategy for Intermediate Bloggers
 

Similar to Enforcing Behavioral Constraints in Evolving Aspect-Oriented Programs

Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
YoungSu Son
 
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
Steve Lange
 
Improving software econimics
Improving software econimicsImproving software econimics
Improving software econimics
Kalica Wadhwa
 

Similar to Enforcing Behavioral Constraints in Evolving Aspect-Oriented Programs (20)

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...
 
Design of Design of Technology Transfer Services
Design of Design of Technology Transfer ServicesDesign of Design of Technology Transfer Services
Design of Design of Technology Transfer Services
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
 
Paving the Way for Agile Engineering Practices
Paving the Way for Agile Engineering PracticesPaving the Way for Agile Engineering Practices
Paving the Way for Agile Engineering Practices
 
Agile Estimation And Planning Part I
Agile Estimation And Planning Part IAgile Estimation And Planning Part I
Agile Estimation And Planning Part I
 
Rely-Guarantee Approach to Reasoning about Aspect-Oriented Programs
 Rely-Guarantee Approach to Reasoning about Aspect-Oriented Programs Rely-Guarantee Approach to Reasoning about Aspect-Oriented Programs
Rely-Guarantee Approach to Reasoning about Aspect-Oriented Programs
 
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
 
Design Principles
Design PrinciplesDesign Principles
Design Principles
 
Functional solid
Functional solidFunctional solid
Functional solid
 
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
 
Functional Programming in C#
Functional Programming in C#Functional Programming in C#
Functional Programming in C#
 
CM NCCU Class2
CM NCCU Class2CM NCCU Class2
CM NCCU Class2
 
UML for Aspect Oriented Design
UML for Aspect Oriented DesignUML for Aspect Oriented Design
UML for Aspect Oriented Design
 
Using triz to make systems more reliable
Using triz to make systems more reliable Using triz to make systems more reliable
Using triz to make systems more reliable
 
On codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiencesOn codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiences
 
Unified Modeling Language (UML)
Unified Modeling Language (UML)Unified Modeling Language (UML)
Unified Modeling Language (UML)
 
Improving software econimics
Improving software econimicsImproving software econimics
Improving software econimics
 
Design pattern
Design patternDesign pattern
Design pattern
 
The Search for a New Visual Search Beyond Language - StampedeCon AI Summit 2017
The Search for a New Visual Search Beyond Language - StampedeCon AI Summit 2017The Search for a New Visual Search Beyond Language - StampedeCon AI Summit 2017
The Search for a New Visual Search Beyond Language - StampedeCon AI Summit 2017
 
Software variability management - 2019
Software variability management - 2019Software variability management - 2019
Software variability management - 2019
 

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

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
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
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
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)
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
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
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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)
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Enforcing Behavioral Constraints in Evolving Aspect-Oriented Programs

  • 1. Enforcing Behavioral Constraints in Evolving Aspect-Oriented Programs Raffi Khatchadourian1*, Johan Dovland2, and Neelam Soundarajan1 1The Ohio State University, USA 2University of Oslo, Norway *Partially administered during visit to Lancaster University, UK
  • 3. Introduction • AOP enables modular implementation of cross- cutting concerns.
  • 4. Introduction • AOP enables modular implementation of cross- cutting concerns. • Both formal and informal reasoning about AOP presents unique challenges especially in respect to evolution.
  • 5. Introduction • AOP enables modular implementation of cross- cutting concerns. • Both formal and informal reasoning about AOP presents unique challenges especially in respect to evolution. • As components enter, exit, and re-enter software, conclusions about behavior of components may be invalidated.
  • 6. C
  • 7. A C
  • 8. A C
  • 9. A C
  • 10. A C Behavior of C+A
  • 13. C Behavior of C+A
  • 14. C
  • 16. What We Want • Desire a compositional reasoning approach, however the invasive nature of AOP makes this difficult.
  • 17. What We Want • Desire a compositional reasoning approach, however the invasive nature of AOP makes this difficult. • In the worst case, changes made to a single component require reexamining the entire program.
  • 19. Questions • Can we draw meaningful conclusions about component code without considering the actual advice code?
  • 20. Questions • Can we draw meaningful conclusions about component code without considering the actual advice code? • Can we specify the behavior of components without any particular advice in mind?
  • 21. Questions • Can we draw meaningful conclusions about component code without considering the actual advice code? • Can we specify the behavior of components without any particular advice in mind? • Can we parameterize specifications over all possibly applicable aspects?
  • 22. Questions • Can we draw meaningful conclusions about component code without considering the actual advice code? • Can we specify the behavior of components without any particular advice in mind? • Can we parameterize specifications over all possibly applicable aspects? • Can we suitably constrain the behavior of aspects as the software evolves?
  • 24. Hiding Behind Interfaces • Using interface is one answer (e.g., XPIs, Open Modules)
  • 25. Hiding Behind Interfaces • Using interface is one answer (e.g., XPIs, Open Modules) • But it would be nice to have a way to derive the enriched behavior of the base plus the aspects at compile time.
  • 27. Insight • AO programs inherently enjoy plug-n-play capabilities [Laddad03]
  • 28. Insight • AO programs inherently enjoy plug-n-play capabilities [Laddad03] • Crosscutting features can be plugged-in to enrich the behavior of advised components.
  • 29. Insight • AO programs inherently enjoy plug-n-play capabilities [Laddad03] • Crosscutting features can be plugged-in to enrich the behavior of advised components. • Likewise, can we specify components so that we can derive their behaviors in a similar fashion?
  • 30. C
  • 34. Spec(C) A1 C A2
  • 35. Spec(C) Spec(A1 ) Spec(A2 ) A1 C A2
  • 36. Spec(A1 ) Spec(C) Spec(A2 )
  • 37. Spec(A1 ) Spec(C) Spec(A2 ) Compose Behavior of C+A1
  • 38. Spec(A1 ) Spec(C) Spec(A2 ) Compose Compose Behavior of C+A1 Behavior of C+A2
  • 39. Spec(A1 ) Spec(C) Spec(A2 ) Compose Compose Compose Behavior of C+A1 Behavior of C+A1+A2 Behavior of C+A2
  • 42. Obstacles • Usefulness • Is it possible to draw meaningful conclusions from such incomplete information?
  • 43. Obstacles • Usefulness • Is it possible to draw meaningful conclusions from such incomplete information? • Obliviousness
  • 44. Obstacles • Usefulness • Is it possible to draw meaningful conclusions from such incomplete information? • Obliviousness • Specifications contain “slots” for applications of crosscutting concerns.
  • 47. Obstacles • Abstraction • Competing forces:
  • 48. Obstacles • Abstraction • Competing forces: • Specs abstract internal details components, aspects directly manipulate them.
  • 49. Obstacles • Abstraction • Competing forces: • Specs abstract internal details components, aspects directly manipulate them. • Composition
  • 50. Obstacles • Abstraction • Competing forces: • Specs abstract internal details components, aspects directly manipulate them. • Composition • Which pegs go into which holes?
  • 51. Obstacles • Abstraction • Competing forces: • Specs abstract internal details components, aspects directly manipulate them. • Composition • Which pegs go into which holes? • How to deal with dynamic and lexical pointcuts?
  • 52. Obstacles • Abstraction • Competing forces: • Specs abstract internal details components, aspects directly manipulate them. • Composition • Which pegs go into which holes? • How to deal with dynamic and lexical pointcuts? • Complexity
  • 53. Obstacles • Abstraction • Competing forces: • Specs abstract internal details components, aspects directly manipulate them. • Composition • Which pegs go into which holes? • How to deal with dynamic and lexical pointcuts? • Complexity • What if no advice is applicable?
  • 55. Tackling Specification Complexity • May need to make assumptions about the behavior of evolving components.
  • 56. Tackling Specification Complexity • May need to make assumptions about the behavior of evolving components. • Specification pointcuts
  • 57. Tackling Specification Complexity • May need to make assumptions about the behavior of evolving components. • Specification pointcuts • Pointcut interfaces [Gudmundson01] annotated with behavioral specifications.
  • 58. Tackling Specification Complexity • May need to make assumptions about the behavior of evolving components. • Specification pointcuts • Pointcut interfaces [Gudmundson01] annotated with behavioral specifications. • “Exported” internal semantic events within the component.
  • 59. Tackling Specification Complexity • May need to make assumptions about the behavior of evolving components. • Specification pointcuts • Pointcut interfaces [Gudmundson01] annotated with behavioral specifications. • “Exported” internal semantic events within the component. • Adopt a rely-guarantee approach [Xu97] from concurrent programming to constrain the behavior of all possibly applicable advice using a rely clause.
  • 60. Tackling Specification Complexity • May need to make assumptions about the behavior of evolving components. • Specification pointcuts • Pointcut interfaces [Gudmundson01] annotated with behavioral specifications. • “Exported” internal semantic events within the component. • Adopt a rely-guarantee approach [Xu97] from concurrent programming to constrain the behavior of all possibly applicable advice using a rely clause. • A guar clause may be used to constrain components.
  • 61. Review of R/G for AOP [Khatchadourian07, Soundarajan07] the set of all variables of σ the program states in which each σi , σj , ... variable has a particular value
  • 62.
  • 64.
  • 65.
  • 66. !1 Aspect !2' !3
  • 67.
  • 68. !a Aspect !b
  • 69. The state at a point in the execution of a component is σa. !a Aspect !b
  • 70. The state at a point in the execution of a component is σa. !a Aspect !b The state when the class gets control back from an aspect is σb.
  • 71. The state at a point in the execution of a component is σa. !a Aspect rely(σa, σb) !b The state when the class gets control back from an aspect is σb.
  • 72. Rely() Example rely(σ, σ ) ≡ (σ = σ )
  • 73. Rely() Example The entire state of C rely(σ, σ ) ≡ (σ = σ )
  • 74. Rely() Example rely(σ, σ ) ≡ (σ = σ ) le y ab an lic g pp kin e! y a ma tat an s om he s id fr t rb e o ic in F v es a d ang ch
  • 75. Rely() Example This is “Harmless”[D&W POPL’06] rely(σ, σ ) ≡ (σ = σ )
  • 77. Deriving Effective Behavior • Constraining parameterized behavior reduces complexity, but ...
  • 78. Deriving Effective Behavior • Constraining parameterized behavior reduces complexity, but ... • How are formal parameters expressed?
  • 79. Deriving Effective Behavior • Constraining parameterized behavior reduces complexity, but ... • How are formal parameters expressed? • How are actual parameters deduced?
  • 80. Deriving Effective Behavior • Constraining parameterized behavior reduces complexity, but ... • How are formal parameters expressed? • How are actual parameters deduced? • How are the specifications composed?
  • 81. Deriving Effective Behavior • Constraining parameterized behavior reduces complexity, but ... • How are formal parameters expressed? • How are actual parameters deduced? • How are the specifications composed? • Aspects are typically used to enrich the behavior of the an underlying component.
  • 82. Deriving Effective Behavior • Constraining parameterized behavior reduces complexity, but ... • How are formal parameters expressed? • How are actual parameters deduced? • How are the specifications composed? • Aspects are typically used to enrich the behavior of the an underlying component. • Thus, we want to deriving the actual behavior of components with the aspects.
  • 84. Join Point Traces • A Join Point Trace (JPT) variable is introduced to track the flow-of-control through various join points within a component.
  • 85. Join Point Traces • A Join Point Trace (JPT) variable is introduced to track the flow-of-control through various join points within a component. • A JPT is used as a parameter over the actions of all possibly applicable aspects.
  • 86. Join Point Traces • A Join Point Trace (JPT) variable is introduced to track the flow-of-control through various join points within a component. • A JPT is used as a parameter over the actions of all possibly applicable aspects. • Method post-conditions will references to the JPT.
  • 87. Join Point Traces • A Join Point Trace (JPT) variable is introduced to track the flow-of-control through various join points within a component. • A JPT is used as a parameter over the actions of all possibly applicable aspects. • Method post-conditions will references to the JPT. • Informally, a JPT is used to refer to the actions and resulting values taken by advice at certain join point.
  • 89. Elements of the JPT • The JPT is composed of several components that are associated with each join point.
  • 90. Elements of the JPT • The JPT is composed of several components that are associated with each join point. • Just as there are different kinds of join points (e.g., call, execution), there different kinds of JPT entries.
  • 91. JPT Method Call Completion Element (oid , mid , aid , args, res, σ, σ )
  • 92. JPT Method Call Completion Element (oid , mid , aid , args, res, σ, σ ) Called Object
  • 93. JPT Method Call Completion Element Called Method (oid , mid , aid , args, res, σ, σ ) Called Object
  • 94. JPT Method Call Completion Element Called Method (oid , mid , aid , args, res, σ, σ ) Applicable Called Object Aspect
  • 95. JPT Method Call Completion Element Called Argument Method Values (oid , mid , aid , args, res, σ, σ ) Applicable Called Object Aspect
  • 96. JPT Method Call Completion Element Called Argument Method Values (oid , mid , aid , args, res, σ, σ ) Applicable Method Called Object Return Value Aspect
  • 97. JPT Method Call Completion Element σ, σ
  • 98. JPT Method Call Completion Element State Vectors σ, σ
  • 99. JPT Method Call Completion Element State Vectors σ, σ σ[oid] State of object oid after completion of method mid
  • 100. JPT Method Call Completion Element State Vectors σ, σ σ[oid] State of object oid after completion of method mid σ [oid] State of object oid after completion of aspect aid
  • 101. JPT Method Call Completion Element State Vectors σ, σ σ[oid] State of object oid after completion of method mid σ [oid] State of object oid after completion of aspect aid No applicable advice =⇒ σ = σ
  • 102. Rule for method specification
  • 103. Rule for method specification Normal pre-condition
  • 104. Rule for method specification Post-condition, may include references to portions of JPT
  • 105. Rule for method specification R/G Clauses
  • 106. Rule for method specification
  • 107. Rule for method specification
  • 108. Rule for method specification Invocation of C.m on the local JPT
  • 109. Rule for method specification
  • 110. Rule for method specification
  • 111. Rule for method specification Classic Hoare Triple
  • 112. Rule for method specification
  • 113. Rule for method specification
  • 114. Rule for method specification Don’t forget about the guarantee
  • 115. Rule for method specification
  • 116. Rule for method specification
  • 117. Rule for method specification If when q holds and applicable advice behaves properly implies that ...
  • 118. Rule for method specification
  • 119. Rule for method specification
  • 120. Rule for method specification ... our post- condition holds with a a new entry in the local JPT
  • 121. Rule for method specification Not sure which aspect is applicable yet, so we’ll leave this blank
  • 122. Rule for method specification Replace all occurrences of σ with σ’
  • 123. Rule for Method Calls
  • 124. Rule for Method Calls
  • 125. Rule for Method Calls Substitute actuals for formals
  • 126. Rule for Method Calls
  • 127. Rule for Method Calls
  • 128. Rule for Method Calls Local JPT for caller
  • 129. Rule for Method Calls Local JPT for callee
  • 130. Rule for Method Calls Substitute formals for actuals
  • 131. Rule for Aspect Application (Simple)
  • 132. Rule for Aspect Application (Simple) Base-code plus an aspect
  • 133. Rule for Aspect Application (Simple) Base-code pre-condition
  • 134. Rule for Aspect Application (Simple) Aspect pre- condition
  • 135. Rule for Aspect Application (Simple) Base-code post-condition
  • 136. Rule for Aspect Application (Simple) Aspect post- condition
  • 137. Rule for Aspect Application (Simple)
  • 138. Rule for Aspect Application (Simple) Base-code satisfies guar
  • 139. Rule for Aspect Application (Simple) Advice body
  • 140. Rule for Aspect Application (Simple) State vector immediately prior to the execution of the advice
  • 141. Rule for Aspect Application (Simple)
  • 143. Conclusion • On-going work (hopefully thesis worthy! ;) )
  • 144. Conclusion • On-going work (hopefully thesis worthy! ;) ) • Complete formal model (suggestions here?)
  • 145. Conclusion • On-going work (hopefully thesis worthy! ;) ) • Complete formal model (suggestions here?) • Sound axiomatic proof system
  • 146. Conclusion • On-going work (hopefully thesis worthy! ;) ) • Complete formal model (suggestions here?) • Sound axiomatic proof system • Curbing notational complexity via predicates.
  • 147. Conclusion • On-going work (hopefully thesis worthy! ;) ) • Complete formal model (suggestions here?) • Sound axiomatic proof system • Curbing notational complexity via predicates. • Integration with IDE/theorem provers.
  • 148. Conclusion • On-going work (hopefully thesis worthy! ;) ) • Complete formal model (suggestions here?) • Sound axiomatic proof system • Curbing notational complexity via predicates. • Integration with IDE/theorem provers. • Complement the Eclipse AJDT with a behavioral cross reference view?
  • 149. Conclusion • On-going work (hopefully thesis worthy! ;) ) • Complete formal model (suggestions here?) • Sound axiomatic proof system • Curbing notational complexity via predicates. • Integration with IDE/theorem provers. • Complement the Eclipse AJDT with a behavioral cross reference view? • Integration with languages (e.g., via annotated pointcuts, JML)

Editor's Notes