Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
research:mao [2011/06/17 09:42] eboddenresearch:mao [2012/06/03 09:32] (current) ebodden
Line 1: Line 1:
 +name suggestions:
 +
 +  * x modules: actually, what about **X-Modules**? (ie. "crosscutting modules", nice mix between XPI and Open Modules)
 +  * aspectual modules:  already (rarely) used
 +  * aspect(ual) shells
 +  * aspect(ual) capsules
 +
 +----
 +
 +  * [[research:mao:iiia-examples|IIIA Examples / problems]]
 +  * [[research:mao:advice-dispatch|Advice dispatch]]
 +  * [[research:mao:subtyping|Subtyping considerations]]
 +  * [[research:mao:two-signatures|Extended JPI signatures as in StrongAspectJ]]
 +  * [[research:mao:invariant-pcd|Invariant Pointcut Designators]]
 +  * [[research:mao:overloading|JPI overloading]]
 +  * [[research:mao:parametric-polymorphism|Extending JPI with parametric polymorphism]]
 +  * [[research:mao:extended-signatures|Extending JPI Signatures]]
 +
 +----
 +
 +====== General Design Principles/Decisions ======
 +
 +Following Ungar's grid of Values - Principles - Practices
 +
 +  * values (what you care about, what you want, what you like)
 +      * teamwork
 +      * reuse
 +      * change
 +      * simplicity
 +
 +  * design principles (general rules for achieving values)
 +      * uniformity/symmetry (S)
 +      * separate development, separate compilation (TC)
 +      * loose coupling (RC)
 +      * modular reasoning (TRC)
 +      * make it hard to shoot yourself in the foot / avoid surprises (S) [loops, double jps]
 +      * support for shared libraries (R)
 +      * coarse-grained quantification (S)
 +      * abstraction (TRCS)
 +
 +  * specific practices (specific things to do)
 +      * modules encompassing classes/packages (cgq, sdsc, mr, lc, ssl)
 +      * modules can both advise and exhibit (us)
 +      * join point types (as, mr, lc, sdsc)
 +      * functional join point types (no structs) (as)
 +      * explicit declaration of exhibited jpts (as)
 +      * join point subtypes (a)
 +      * explicit join points / block jps (a, as)
 +      * "potentially-exhibit" declarations (shl)
 +      * compile-time checks for potential loops (as)
 +      * execution levels / or notion of cflow based on use-relation (as)
 +
 +
 +
 +----
 +
 +====== Examples ======
 +
 +  * [[research:mao:iiia-examples-fixed|fixed versions of IIIA buggy examples]]
 +  * translate good examples from IIIA, closure jp paper, PPPJ explicit jp paper, open modules paper(s), XPI paper
 +  * [[research:mao:new-things|new things we can do]] that they can't (dynamic analysis aspects -- wide scope, etc.)
 +  * case study:
 +      * Racer / Profiler
 +      * AJHotDraw
 +      * Berkeley DB
 +      * AspectOptima
 +      * HealthWatcher
 +      * iBatis
 +      * MobileMedia
 +
 +====== Pending ======
 +
 +  * TODO: each class contained in only one module? Java8: different namespaces/loaders, incompatible
 +  * Study the Java8 proposal (link?)
 +  * explicit declaration of used modules (sdsc, lc)  [removed?!]
 +  * references: XPIs, Open Modules, ECeasarJ/EScala
 +
 +====== Paper outline ======
 +modular reasoning / implicit invocation / AOP
 +  * motivation from IIIA
 +  * overview of IIIA and limitations/problems
 +  * overview of X-Modules (model, boxes and arrows)
 +  * X-Modules in practice: addressing IIIA issues
 +  * implementation: AspectJ extended / abc, implementation details, separate compilation, checks, etc. 
 +  * case study
 +  * related work