Tuesday, July 01, 2008

The return of the prodigal son, Day 7

 

Favor asked, favor refused, more questions, then favor (kind of) understood, if not totally granted.

So Thank you.

But as I fear... even I try to avoid as much distraction as possible, there's a big possibility that the resistance is futile.

To conclude my day, it ended up that the biggest distracter is still myself.  I started to think - even if I skip whatever activities that I wanted to go because I want to finish this thing, it just probably won't work out as well as I thought.  I have countless ways of wasting my time in many things, some of which are of no importance, some just bad, that may be I just better of partying.

Alright that's just one silly thought...

Thesis Progress

I wrote today:

-- Thesis content begins ---

  • If the target code snipplet is located at the beginning or the end of a method body, refactoring it into aspect using simple call or execution  pointcut is straight forward.
  • If the target snipplet is located in the middle of a method body, refactoring  into aspects using only a  simple call or execution pointcut is not possible, unless you move the the snipplet to the beginning or the end of the method which is unsafe in most cases.  Refactoring this type of snipplet typically requires a composite  pointcut expression that involves using control flow-based pointcuts.
  • If the target snipplet is located inside a loop, an if block, or a try block, then refactoring the snipplet into an aspect requires a composite pointcut expression that involves using control flow-based pointcuts.

    -- Thesis content ends ---

    The next goal tomorrow is to describe how the distribution of clusters affect the applicability of ConcernExtractor: if we find that all of our refactoring targets that belong to the same group are located at the beginning/end of a method body, CE is really not much use.  If some are located in the middle of the body, then CE can be useful.  If most refactoring target are located in a block, or middle of the method body, then CE is useful because I don't need to create complex pointcut that describes each location of target join point.

    Initially I was stucked at pondering if a try block would catch an exception that is thrown by advice of a join point that the try block wraps around.  Since I know my computer will just blow up if I install AJDT, and I don't have the Java SDK for now, I cannot test it and need to find some documents that talk about that.

    Finally I found the online Aspect J book which explains it.   But then my paragraph (point) starts to balloon as I try to explain how complicated the pointcut will be, if I try to create a pointcut expression that describes code inside a loop; or that how I cannot create a common advices if some of the refactoring target that belongs to the same group are located in a try block: I may need to declare that I'm throwing an exception for in some scenario, but not in others if the containing block re-throws it.  Since I don't have AspectJ installed (yet) it is hard to really visualize what might happen.

    Until I realize that I only need to prove that the Concern Extraction technique will be useful - I don't really need to talk about how complicated the pointcut expression will look for edge cases (at least not for now) and I need to move on first.  So it ended up that I cut around 100 words instead of producing it...

  • No comments: