AspectJ does not provide a mechanism to hide implementation details from advice. As a result, aspects are tightly coupled to the implementation of the code they advise, while the behaviour of the base code is impossib...
详细信息
ISBN:
(纸本)159593300X
AspectJ does not provide a mechanism to hide implementation details from advice. As a result, aspects are tightly coupled to the implementation of the code they advise, while the behaviour of the base code is impossible to determine without analysing all advice that could modify its behaviour. the concept of open modules is proposed by Aldrich to solve the problems that arise from unrestricted advice. Defined for a, small functional language, it provides an encapsulation construct that allows an implementation to limit the set of points to which external advice may apply. We present an adaptation of open modules for AspectJ. We expand open modules to encompass the full set of point-cut primitives for AspectJ, extend its method of module composition to include the ability to open up a module, and describe the implementation of the design as an extension of the AspectBench compiler. We also provide an example of the use of open modules on a substantial AspectJ program to show how it would fit into existing AspectJ projects. Copyright 2006 ACM.
Design by contract is a practical methodology for evolving code together with its specification. the contract has important methodological implications on. the design of the program. In addition, tools that instrument...
详细信息
ISBN:
(纸本)0769526780
Design by contract is a practical methodology for evolving code together with its specification. the contract has important methodological implications on. the design of the program. In addition, tools that instrument the code to check for contract violations help the development process by catching errors close to their sources. this is complicated by several factors, such as the need to collect preconditions from supertypes. there are two issues involved in the implementation of such a tool: the correct enforcement of the theoretical principles, and the instrumentation of the code. Most previous tools tackle both issues, but have subtle failures in one or the other. this paper describes Jose, a tool for design. by contract in Java, which uses Aspect), an aspect-oriented extension of Java, to instrument the program. this allows us to leverage the expertise of the Aspect) developers in instrumenting Java programs, and concentrate on the correct implementation of the design-by-contract principles. this approach has the added benefit that it can be generalized to other object-oriented Languages that have aspect-oriented extensions. We describe the design decisions made in the implementation of Jose, and the features of Aspect) that helped or hindered this implementation.
In this paper, we present a collection of well-known high-level concurrency patterns and mechanisms, coded in AspectJ. We discuss benefits of these implementations relative to plain Java implementations of the same co...
详细信息
ISBN:
(纸本)159593300X
In this paper, we present a collection of well-known high-level concurrency patterns and mechanisms, coded in AspectJ. We discuss benefits of these implementations relative to plain Java implementations of the same concerns. We detect benefits from using AspectJ in all the cases presented, in the form of higher modularity, reuse, understandability and unpluggability. For most of the implementations, two alternatives can be used: one based on traditional pointcut interfaces and one based on annotations. Copyright 2006 ACM.
OOP style requires programmers to organize their code according to objects (or nouns, using natural language as a metaphor), causing a program's actions (verbs) to become scattered during implementation. We define...
详细信息
ISBN:
(纸本)159593300X
OOP style requires programmers to organize their code according to objects (or nouns, using natural language as a metaphor), causing a program's actions (verbs) to become scattered during implementation. We define an Action-oriented Identifier Graph (AOIG) to reconnect the scattered actions in an OOP system. An OOP system with an AOIG will essentially support the dynamic virtual remodularization of OOP code into an Action-oriented View. We have developed an algorithm to automatically construct an AOIG, and an implementation of the construction process. To automatically construct an AOIG, we use Natural Language Processing (NLP) techniques to process the natural language clues left by programmers in source code and comments, and we connect code segments through the actions that they perform. Using a reasonably sized program, we present several applications of an AOIG (feature location, working set recovery, and aspect mining), which demonstrate how the AOIG can be used by software engineering tools to combat the tyranny of the dominant decomposition. Copyright 2006 ACM.
Distribution-related concerns, such as data, replication, often crosscut the business code of a distributed application. Currently such crosscutting concerns are frequently realized on top of distributed frameworks, s...
详细信息
ISBN:
(纸本)159593300X
Distribution-related concerns, such as data, replication, often crosscut the business code of a distributed application. Currently such crosscutting concerns are frequently realized on top of distributed frameworks, such as EJBs, and initial AO support for the modularization of such crosscutting concerns, e.g., JBoss AOP and Spring AOP, has been proposed. Based on an investigation of the implementation of replicated caches using JBoss Cache, we motivate that crosscutting concerns of distributed applications benefit from an aspect language for explicit distributed programming. We propose AWED, a new aspect language with explicit distributed programming mechanisms, which provides three contributions. First, remote pointcut constructors which are more general than those of previous related approaches, in particular, supporting remote sequences. Second, a notion of distributed advice with support for asynchronous and synchronous execution. third, a notion of distributed aspects including models for the deployment, instantiation and state sharing of aspects. We show several concrete examples how AWED can be used to modularly implement and extend replicated cache implementations. Finally, we present a prototype implementation of AWED, which we have realized by extending JAsCo, a system providing dynamic aspects for Java. Copyright 2006 ACM.
AOP languages are continuously evolving, for example (1) pointcut languages are becoming increasingly powerful with respect to the expressiveness of the pointcut language itself, (2) new program properties can be used...
详细信息
ISBN:
(纸本)159593300X
AOP languages are continuously evolving, for example (1) pointcut languages are becoming increasingly powerful with respect to the expressiveness of the pointcut language itself, (2) new program properties can be used as a selection criterion in pointcut designators, or (3) new types of program elements can be introduced by means of a crosscut specification. In this paper we investigate the consequences of these trends. To this end, we focus particularly on the u-sage of meta-data annotations: several recent (versions of) AOP languages support the use of annotations as a selection criterion in pointcut designators or the introduction of annotations, or both. We investigate the introduction of annotations through the use of expressive pointcut languages;explain why introduction of annotations is useful, and in particular, why and how annotations can be derived from other annotations. We explore the issues that arise due to the inter-dependencies between annotation introductions. We investigate when such dependencies may cause ambiguities, and we present an algorithm that resolves the dependencies when possible, and detects ambiguous cases that cannot be resolved. the solution we propose is implemented within the Compose* tool, which supports the introduction of meta-data annotations.
the proceedings contain 24 papers. the special focus in this conference is on Logic programming. the topics include: Tableaux calculi for answer set programming;algorithmic aspects of model representations;object-orie...
the proceedings contain 24 papers. the special focus in this conference is on Logic programming. the topics include: Tableaux calculi for answer set programming;algorithmic aspects of model representations;object-oriented constraint programming in java using the library firstcs;causal theories as logic programs;voting theory in answer set programming;evaluating ASP and commercial solvers on the CSPLib (preliminary work);dynamic logic programming and world state evaluation in computer games;executable denotations for concurrent languages using concurrent transaction logic;adding constraint handling rules to curry;INCLP(R) - interval-based nonlinear constraint logic programming over the reals;non-monotonic integrity constraints;complete first-order axiomatization of finite or infinite m-extended trees;many-valued logic programming and fixpoint semantics for higher-order herbrand models;logic programs with contextually scoped negation;declarative web data extraction and annotation;replacements in non-ground answer-set programming;weak order equivalence for logic programs with preferences;decomposition of nonmonotone aggregates in answer set programming;fine-grained parallel implementation of the preflow-push algorithm in CHR;Dijkstra's algorithm with fibonacci heaps;towards a CHR-based model-driven framework of reusable reasoning components;a tool for advanced correspondence checking in answer-set programming and a system for integrating multiple semantics in an answer-set programming framework.
the current AspectJ join points represent locations in the code that are at the interface of the Java, objects. However, not all the "things that happen"1 happen at the interfaces. In particular, loops are a...
详细信息
ISBN:
(纸本)159593300X
the current AspectJ join points represent locations in the code that are at the interface of the Java, objects. However, not all the "things that happen"1 happen at the interfaces. In particular, loops are a key place that could be advised for parallelisation. this article presents a loop join point model, which allows AspectJ to intervene directly in loops. More generally, this demonstrates the need for, and provides, a more complex join point in AspectJ. the approach used for recognising loops is based on a control-flow analysis at the bytecode level;this avoids ambiguities due to alternative forms of source-code that would effectively produce identical loops. this model is also enhanced with a mechanism for context exposure, which is pivotal for giving a meaning to the use of this join point, and with additional information through join point reflection. the context exposure is particularly useful for writing pointcuts that select specific loops only, and the problem of loop selection is also presented in the paper. Finally, LoopsAJ, an extension for the abc compiler that provides AspectJ with a loop join point, is presented. It is shown how to use this extension for writing aspects that parallelise loops. Copyright 2006 ACM.
the proceedings contain 24 papers. the special focus in this conference is on Logic programming. the topics include: Tableaux calculi for answer set programming;algorithmic aspects of model representations;object-orie...
the proceedings contain 24 papers. the special focus in this conference is on Logic programming. the topics include: Tableaux calculi for answer set programming;algorithmic aspects of model representations;object-oriented constraint programming in java using the library firstcs;causal theories as logic programs;voting theory in answer set programming;evaluating ASP and commercial solvers on the CSPLib (preliminary work);dynamic logic programming and world state evaluation in computer games;executable denotations for concurrent languages using concurrent transaction logic;adding constraint handling rules to curry;INCLP(R) - interval-based nonlinear constraint logic programming over the reals;non-monotonic integrity constraints;complete first-order axiomatization of finite or infinite m-extended trees;many-valued logic programming and fixpoint semantics for higher-order herbrand models;logic programs with contextually scoped negation;declarative web data extraction and annotation;replacements in non-ground answer-set programming;weak order equivalence for logic programs with preferences;decomposition of nonmonotone aggregates in answer set programming;fine-grained parallel implementation of the preflow-push algorithm in CHR;Dijkstra's algorithm with fibonacci heaps;towards a CHR-based model-driven framework of reusable reasoning components;a tool for advanced correspondence checking in answer-set programming and a system for integrating multiple semantics in an answer-set programming framework.
Taking aspects as incremental modifications to their base classes, this paper presents an incremental approach to testing whether or not aspect-oriented programs and their base classes conform to their respective beha...
详细信息
ISBN:
(纸本)159593300X
Taking aspects as incremental modifications to their base classes, this paper presents an incremental approach to testing whether or not aspect-oriented programs and their base classes conform to their respective behavior models. We exploit a rigorous aspect-oriented extension to state models for capturing the impact of aspects on the state transitions of base class objects as well as an explicit weaving mechanism for composing aspects into their base models. We generate abstract tests for base classes and aspectoriented programs from their state models. As base class tests are not necessarily valid for aspect-oriented programs, we identify several rules for maximizing reuse of concrete base class tests for aspects according to the state-based impact of aspects on their base classes. To illustrate our approach, we use two examples that indicate distinctive types of aspect-oriented applications and exhibit fundamental features in complex applications: aspects removing state transitions from base classes and aspects adding and modifying state transitions in base classes. Our results show that majority of base class tests can be reused for aspects, but subtle modifications to some of them are necessary. In particular, positive (or negative) base class tests can become negative (or positive) aspect tests. We also discuss how several types of aspect-specific faults can be revealed by the state-based testing. Copyright 2006 ACM.
暂无评论