Differences

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

Link to this comparison view

Next revision
Previous revision
research:software:effectiveaspects [2013/06/14 13:28] – created ifigueroresearch:software:effectiveaspects [2014/03/03 12:08] (current) ifiguero
Line 1: Line 1:
-a+====== Effective Aspects: A Typed Monadic Embedding of Pointcuts and Advice ======  
 +This is the main page for our research on pointcut/advice model of aspect-oriented programming (AOP) in monadic setting. We have developed Haskell AOP library that provides the full pointcut/advice model of AOP into a monadic setting. Read below for further details. 
 + 
 +** See our follow-up work: [[http://pleiad.cl/research/cri|Compositional Reasoning About Aspect Interference]] ** 
 + 
 +====== Code for our Transactions on Aspect-Oriented Software Development Submission ====== 
 + 
 +**Thesis Reviewers: this source code also corresponds to the manuscript** 
 + 
 +The code for our TAOSD submission can be downloaded {{research:software:effectiveaspects-taosd.zip|here}} 
 + 
 +====== A Typed Monadic Embedding of Aspects (AOSD 2013) ====== 
 + 
 +We developed a novel approach to embed pointcut/advice aspects in a typed functional programming language like Haskell. Aspects are first-class, can be deployed dynamically, and the pointcut language is extensible. Type soundness is guaranteed by exploiting the underlying type system, in particular phantom types and a new anti-unification type class. The use of monads brings type-based reasoning about effects for the first time in the pointcut/advice setting, and makes it possible to modularly extend or modify the aspect language. 
 + 
 +====== Source Code ====== 
 + 
 +===== Original code from AOSD 2013 ===== 
 +The original source of the AOSD 2013 paper can be downloaded {{:research:software:aop2.zip | here}}. See the included README file for details. 
 + 
 +===== Taming Aspects with Monads and Membranes (FOAL 2013) ===== 
 +The source of our FOAL 2013 submission can be downloaded {{:research:software:aomonad-foal13.zip | here}}. This is an updated revision of the previous code with programmable membranes semantics for aspect-oriented programming. See the included README and README-FOAL file for details. 
 + 
 +====== About the Code ====== 
 + 
 +We tested the software in the [[http://hackage.haskell.org/platform/|Haskell Platform]] version 2012.2.0.0. Consequently, we used the Glasgow Haskell Compiler, GHC, with the following [[http://pleiad.dcc.uchile.cl/research/software/haskellaop/ghc-extensions|extensions]]. 
 + 
 +The code depends on the following packages: 
 +  * random 
 +  * mtl 
 +  * HUnit 
 +  * QuickCheck 
 +  * containers 
 +  * haskell-src-meta 
 +  * template-haskell 
 +  * polytypeable 
 +  * ghc-prim 
 +  * fgl (functional graph library, for the membrane semantics) 
 + 
 +Which can be installed using the [[http://www.haskell.org/haskellwiki/Cabal-Install | cabal package manager]] included with the Haskell Platform. 
 + 
 +We include the paper examples, and tests used during development. The main difference between the code in the paper and the source code are: 
 + 
 +  * deployment/undeployment: we define the AOPMonad class with the deploy/undeploy top-level operations. These functions use the underlying deployInEnv / undeployInEnv functions defined by type class MonadDeploy. 
 + 
 +  * In file Function.hs we define tagged functions to provide a more robust notion of function equality. Join points, open function application, and weaving are modified to accept this new kind of functions.