{"title":"Closure joinpoints: block joinpoints without surprises","authors":"E. Bodden","doi":"10.1145/1960275.1960291","DOIUrl":"https://doi.org/10.1145/1960275.1960291","url":null,"abstract":"Block joinpoints allow programmers to explicitly mark regions of base code as \"to be advised\", thus avoiding the need to extract the block into a method just for the sake of creating a joinpoint. Block joinpoints appear simple to define and implement. After all, regular block statements in Java-like languages are constructs well-known to the programmer and have simple control-flow and data-flow semantics.\u0000 Our major insight is, however, that by exposing a block of code as a joinpoint, the code is no longer only called in its declaring static context but also from within aspect code. The block effectively becomes a closure, i.e., an anonymous function that may capture values from the enclosing lexical scope. We discuss research on closures that reveals several important design questions that any semantic definition of closures or block joinpoints must answer. In this paper we show that all existing proposals for block joinpoints answer these questions insufficiently, and hence exhibit a semantics either undefined or likely surprising to Java programmers.\u0000 As a solution, we propose a syntax, semantics, and implementation of Closure Joinpoints, block joinpoints based on closures. As we show, our design decisions yield a semantics that follows the principle of least surprise.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122876469","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Applying dependability aspects on top of \"aspectized\" software layers","authors":"Kiev Gama, D. Donsez","doi":"10.1145/1960275.1960297","DOIUrl":"https://doi.org/10.1145/1960275.1960297","url":null,"abstract":"Dynamic platforms where components can be loaded at runtime can introduce risks to applications stability if components are not previously known before deployment. It may be needed anyway to execute such untrustworthy code, even if it is not malicious. The OSGi platform presents such a scenario where components can be installed, started, stopped, updated or uninstalled during application execution. In this paper we describe how we introduced dependability and monitoring as crosscutting concerns in the OSGi platform for improving applications resistance to such risks. These concerns crosscut different software layers which are well defined in the OSGi specification but scattered over different places in the OSGi API. We also created a level of indirection by representing software layers as aspects, enhancing the API's modularity as well as reuse by avoiding redundant pointcut definitions. The dependability aspects helped us validating the layer aspect abstraction reuse. Since the aspects targeted the OSGi API, it was possible to weave our solution into distinct versions of three different OSGi implementations, namely Apache Felix, Equinox and Knopflerfish. We validate our approach on all of the woven platforms in a simulation of an RFID and sensor-based application that uses untrustworthy components.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121965302","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
M. Bagherzadeh, Hridesh Rajan, Gary T. Leavens, Sean L. Mooney
{"title":"Translucid contracts: expressive specification and modular verification for aspect-oriented interfaces","authors":"M. Bagherzadeh, Hridesh Rajan, Gary T. Leavens, Sean L. Mooney","doi":"10.1145/1960275.1960293","DOIUrl":"https://doi.org/10.1145/1960275.1960293","url":null,"abstract":"As aspect-oriented (AO) programming techniques become more widely used, their use in critical systems such as aircraft and telephone networks, will become more widespread. However, careful reasoning about AO code seems difficult because: (1) advice may apply in too many places, and (2) standard specification techniques do not limit the control effects of advice. Commonly used black box specification techniques cannot easily specify control effects, such as advice that does not proceed to the advised code. In this work we avoid the first problem by using Ptolemy, a language with explicit event announcement. To solve the second problem we give a simple and understandable specification technique, translucid contracts, that not only allows programmers to write modular specifications for advice and advised code, but also allows them to reason about the code's control effects. We show that translucid contracts support sound modular verification of typical interaction patterns used in AO code. We also show that translucid contracts allow interesting control effects to be specified and enforced.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115243932","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"EffectiveAdvice: disciplined advice with explicit effects","authors":"B. C. D. S. Oliveira, T. Schrijvers, W. Cook","doi":"10.1145/1739230.1739244","DOIUrl":"https://doi.org/10.1145/1739230.1739244","url":null,"abstract":"Advice is a mechanism, widely used in aspect-oriented languages, that allows one program component to augment or modify the behavior of other components. When advice and other components are composed together they become tightly coupled, sharing both control and data flows. However this creates important problems: modular reasoning about a component becomes very difficult; and two tightly coupled components may interfere with each other's control and data flows.\u0000 This paper presents EffectiveAdvice, a disciplined model of advice, inspired by Aldrich's Open Modules, that has full support for effects. With EffectiveAdvice, equivalence of advice, as well as base components, can be checked by equational reasoning. The paper describes EffectiveAdvice as a Haskell library in which advice is modeled by mixin inheritance and effects are modeled by monads. Interference patterns previously identified in the literature are expressed as combinators. Parametricity, together with the combinators, is used to prove two harmless advice theorems. The result is an effective semantic model of advice that supports effects, and allows these effects to be separated with strong non-interference guarantees, or merged as needed.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"177 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-03-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116008599","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Type relaxed weaving","authors":"H. Masuhara, Atsushi Igarashi, Manabu Toyama","doi":"10.1145/1739230.1739245","DOIUrl":"https://doi.org/10.1145/1739230.1739245","url":null,"abstract":"Statically typed aspect-oriented programming languages restrict application of around advice only to the join points that have conforming types. Though the restriction guarantees type safety, it can prohibit application of advice that is useful, yet does not cause runtime type errors. To this problem, we present a novel weaving mechanism, called the type relaxed weaving, that allows such advice applications while preserving type safety. We formalized the mechanism, and implemented as an AspectJ compatible compiler, called RelaxAJ.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-03-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122788946","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Toheed Aslam, Jesse Doherty, Anton Dubrau, L. Hendren
{"title":"AspectMatlab: an aspect-oriented scientific programming language","authors":"Toheed Aslam, Jesse Doherty, Anton Dubrau, L. Hendren","doi":"10.1145/1739230.1739252","DOIUrl":"https://doi.org/10.1145/1739230.1739252","url":null,"abstract":"This paper introduces a new aspect-oriented programming language, AspectMatlab. Matlab® is a dynamic scientific programming language that is commonly used by scientists because of its convenient and high-level syntax for arrays, the fact that type declarations are not required, and the availability of a rich set of application libraries.\u0000 AspectMatlab introduces key aspect-oriented features in a way that is both accessible to scientists and where the aspect-oriented features concentrate on array accesses and loops, the core computation elements in scientific programs.\u0000 Introducing aspects into a dynamic language such as Matlab also provides some new challenges. In particular, it is difficult to statically determine precisely where patterns match, resulting in many dynamic checks in the woven code. Our compiler includes flow analyses which are used to eliminate many of those dynamic checks.\u0000 This paper reports on the language design of AspectMatlab, the amc compiler implementation and related optimizations, and also provides an overview of use cases that are specific to scientific programming.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-03-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116799675","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Execution levels for aspect-oriented programming","authors":"É. Tanter","doi":"10.1145/1739230.1739236","DOIUrl":"https://doi.org/10.1145/1739230.1739236","url":null,"abstract":"In aspect-oriented programming languages, advice evaluation is usually considered as part of the base program evaluation. This is also the case for certain pointcuts, such as if pointcuts in AspectJ, or simply all pointcuts in higher-order aspect languages like AspectScheme. While viewing aspects as part of base level computation clearly distinguishes AOP from reflection, it also comes at a price: because aspects observe base level computation, evaluating pointcuts and advice at the base level can trigger infinite regression. To avoid these pitfalls, aspect languages propose ad-hoc mechanisms, which increase the complexity for programmers while being insufficient in many cases. After shedding light on the many facets of the issue, this paper proposes to clarify the situation by introducing levels of execution in the programming language, thereby allowing aspects to observe and run at specific, possibly different, levels. We adopt a defensive default that avoids infinite regression in all cases, and give advanced programmers the means to override this default using level shifting operators. We formalize the semantics of our proposal, and provide an implementation. This work recognizes that different aspects differ in their intended nature, and shows that structuring execution contexts helps tame the power of aspects and metaprogramming.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-03-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130627574","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A. Hovsepyan, R. Scandariato, S. Baelen, Y. Berbers, W. Joosen
{"title":"From aspect-oriented models to aspect-oriented code?: the maintenance perspective","authors":"A. Hovsepyan, R. Scandariato, S. Baelen, Y. Berbers, W. Joosen","doi":"10.1145/1739230.1739241","DOIUrl":"https://doi.org/10.1145/1739230.1739241","url":null,"abstract":"Aspect-Oriented Modeling (AOM) provides support for separating concerns at the design level. Even though most AOM approaches provide means to execute the composition of the modularized concerns to obtain a composed model, it is also possible to keep the concerns modularized at the implementation level by targeting an aspect-oriented platform. Model-driven approaches have emerged to support both alternatives via tools. Clearly, these choices are not equivalent. Rather, they have a direct impact on several dimensions, including maintainability. Hence, the main research problem addressed by this work is to figure out which alternative provides for shorter maintenance time. To answer this question, we have conducted a series of quantitative studies and experiments.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-03-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130235544","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"The aspect-oriented design of the PUMA C/C++ parser framework","authors":"M. Urban, D. Lohmann, O. Spinczyk","doi":"10.1145/1739230.1739256","DOIUrl":"https://doi.org/10.1145/1739230.1739256","url":null,"abstract":"Puma is a framework for the development of applications that analyze and, optionally, transform C or C++ source code. It supports ISO C and C++ as well as many language extensions of the GNU Compiler Collection and Microsoft Visual C++. Aspects played an important role during the design and implementation of the framework. It is written in the AspectC++ language. By employing AOSD concepts, we gained a clean separation of concerns and, thereby, very good configurability and extensibility. All these - ilities are of vital importance for our project, because the available manpower for maintenance tasks is limited. This paper briefly describes the design principles behind Puma.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"118 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-03-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132105423","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"An architecture for composing embedded domain-specific languages","authors":"T. Dinkelaker, Michael Eichberg, M. Mezini","doi":"10.1145/1739230.1739237","DOIUrl":"https://doi.org/10.1145/1739230.1739237","url":null,"abstract":"Embedded domain-specific languages (EDSLs) are said to be easier to compose than DSLs that are implemented by preprocessors. However, existing approaches focus on composition scenarios where the use of abstractions from one domain does not affect the interpretation of abstractions from another domain. This leads to programs that exhibit scattering and tangling symptoms if multiple EDSLs with crosscutting domain semantics are used. To address this issue, we propose an architecture for embedding DSLs that makes use of meta-object protocols and aspect-oriented concepts to support crosscutting composition of EDSLs. This enables to write modularized EDSL programs where each program addresses one concern.","PeriodicalId":353153,"journal":{"name":"Aspect-Oriented Software Development","volume":"97 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-03-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122884811","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}