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
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
- translate good examples from IIIA, closure jp paper, PPPJ explicit jp paper, open modules paper(s), XPI paper
- 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