共查询到20条相似文献,搜索用时 0 毫秒
1.
Aspect-oriented programming (AOP) seeks to improve software modularity via the separation of cross-cutting concerns. AOP proponents often advocate a development strategy where programmers write the main application (base code), ignoring cross-cutting concerns, and then aspect programmers, domain experts in their specific concerns, weave in the logic for these more specialized cross-cutting concerns. This purely oblivious strategy, however, has empirically been shown to tightly couple aspects to base code in many cases, hindering aspect modularity and reuse. In essence, the more intricate the weaving between the cross-cutting concern and the base code (lexically and/or semantically), the harder it becomes to: (a) robustly specify how to weave the aspects in at the required points, (b) capture interactions between aspects and base code, and (c) preserve the correct weaving as the base code evolves.We propose an alternate methodology, termed cooperative aspect-oriented programming (Co-AOP), where complete lexical separation of concerns is not taken as an absolute requirement. Instead, cross-cutting concerns are explicitly modeled as abstract interfaces through explicit join points (EJPs). Programmers specify where these interfaces interact with base code either through explicit lexical references or via traditional oblivious aspects. This explicit awareness allows base code and aspects to cooperate in ways that were previously not possible: arbitrary blocks of code can be advised, advice can be explicitly parameterized, base code can guide aspects in where to apply advice, and aspects can statically enforce new constraints upon the base code that they advise. These new techniques allow aspect modularity and program safety to increase, and bring us towards a cooperative AOP paradigm.We illustrate our methodology via an example on transactions, and also give an initial evaluation of cooperative AOP through an empirical study on program extensibility comparing both the traditional and cooperative AOP methodologies. Initial results show that cooperative AOP techniques result in code that is less complex with lower overall coupling, facilitating extensibility. 相似文献
2.
3.
The production of maintainable and reusable agents depends largely on how well the agent architecture is modularized. Most commercial agent toolkits provide an Object-Oriented (OO) framework, whose agent architecture does not facilitate separate (re)use of the domain-specific functionality of an agent from other concerns. This paper presents Malaca, an agent architecture that combines the use of Component-based Software Engineering and Aspect-Oriented Software Development, both of which promote better modularization of the agent architecture while increase at the architectural level. Malaca supports the separate (re)use of the domain-specific functionality of an agent from other communication concerns, providing explicit support for the design and configuration of agent architectures and allows the development of agent-based software so that it is easy to understand, maintain and reuse. 相似文献
4.
5.
《Science of Computer Programming》2013,78(1):117-144
Metrics for aspect-oriented software have been proposed and used to investigate the benefits and the disadvantages of crosscutting concerns modularisation. Some of these metrics have not been rigorously defined nor analytically evaluated. Also, there are few empirical data showing typical values of these metrics in aspect-oriented software. In this paper, we provide rigorous definitions, usage guidelines, analytical evaluation, and empirical data from ten open source projects, determining the value of six metrics for aspect-oriented software (lines of code, weighted operations in module, depth of inheritance tree, number of children, crosscutting degree of an aspect, and coupling on advice execution). We discuss how each of these metrics can be used to identify shortcomings in existing aspect-oriented software. 相似文献
6.
面向方面编程的分析与研究 总被引:2,自引:1,他引:2
吴桂兰 《计算机工程与设计》2008,29(20)
深入地分析了传统面向对象编程方式在项目开发中出现的问题,明确指出了面向对象建模技术的内在局限性,提出了一种新型的,实用的、面向方面的编程方式.在介绍面向方面编程(AOP)原理和思想的基础上深入分析了AOP的实质.详细讨论了采用AOP进行具体开发的步骤和实现过程.通过几个静态指标详细分析和评测了由AOP开发的一个项目实例,体现了采用AOP进行软件开发的强大优势. 相似文献
7.
As a software developer, one of my principal objectives is to deliver the highest quality software possible. Unfortunately, as a human being, my abilities are also my limitations, and I always make mistakes of one kind or another. To remedy this, I use tools to help ameliorate as many of my limitations as possible. One of rny concerns is to understand how using a particular tool affects my ability to meet objectives. How does it help with the various software development tasks? What does it Cost me to use a particular tool? Do the benefits outweigh the costs? If so, what degree is the benefit? If not, then the tool is of little use. There must be a significant benefit gain to justify using a tool. The essence of aspect-oriented programming is that crosscutting concerns are factored into distinct abstractions (that is, aspects) that are solely responsible for a particular crosscutting concern. This raises the system's modularity and increases cohesion of the abstractions that are primary concerns. Researchers and software developers must understand and address the various significant weaknesses before AOP's benefits can be realized. 相似文献
8.
Aspect-Oriented Modeling (AOM) techniques allow software designers to isolate and address separately solutions for crosscutting
concerns (such as security, reliability, new functional features, etc.). Current AOM research is concerned not only with the
separate expression of concerns and their composition into a complete system model, but also with the analysis of different
properties of such models. This paper proposes an approach for analyzing the performance effects of a given aspect on the
overall system performance, after the composition of the aspect model with the system’s primary model. Performance analysis
of UML models is enabled by the “UML Performance Profile for Schedulability, Performance and Time” (SPT) standardized by OMG,
which defines a set of quantitative performance annotations to be added to a UML model. The first step of the proposed approach
is to add performance annotations to both the primary and the aspect models. An aspect model is generic at first, and therefore
its performance annotations must be parameterized. A generic model is converted into a context-specific aspect model with
concrete values assigned to its performance annotations. The latter is composed with the primary model, generating a complete
annotated UML model. The composition is performed in both structural and behavioural views. A novel approach for composing
activity diagrams based on graph-rewriting concepts is proposed in the paper. The next step is to transform automatically
the composed model into a Layered Queueing Network (LQN) performance model, by using techniques developed in previous work.
The proposed approach is illustrated with a case study system, whose primary model is enhanced with some security features
by using AOM. The performance effects of the security aspect under consideration are analyzed in two design alternatives,
by solving and analyzing the LQN model of the composed system. 相似文献
9.
Ambra Molesini Author Vitae Alessandro Garcia Author Vitae 《Journal of Systems and Software》2010,83(5):711-722
Design of stable software architectures has increasingly been a deep challenge to software developers due to the high volatility of their concerns and respective design decisions. Architecture stability is the ability of the high-level design units to sustain their modularity properties and not succumb to modifications. Architectural aspects are new modularity units aimed at improving design stability through the modularization of otherwise crosscutting concerns. However, there is no empirical knowledge about the positive and negative influences of aspectual decompositions on architecture stability. This paper presents an exploratory analysis of the influence exerted by aspect-oriented composition mechanisms in the stability of architectural modules addressing typical crosscutting concerns, such as error handling and security. Our investigation encompassed a comparative analysis of aspectual and non-aspectual decompositions based on different architectural styles applied to an evolving multi-agent software architecture. In particular, we assessed various facets of components’ and compositions’ stability through such alternative designs of the same multi-agent system using conventional quantitative indicators. We have also investigated the key characteristics of aspectual decompositions that led to (in)stabilities being observed in the target architectural options. The evaluation focused upon a number of architecturally-relevant changes that are typically performed through real-life maintenance tasks. 相似文献
10.
Geri Georg Indrakshi Ray Kyriakos Anastasakis Behzad Bordbar Manachai Toahchoodee Siv Hilde Houmb 《Information and Software Technology》2009,51(5):846-864
We propose a methodology, based on aspect-oriented modeling (AOM), for incorporating security mechanisms in an application. The functionality of the application is described using the primary model and the attacks are specified using aspects. The attack aspect is composed with the primary model to obtain the misuse model. The misuse model describes how much the application can be compromised. If the results are unacceptable, then some security mechanism must be incorporated into the application. The security mechanism, modeled as security aspect, is composed with the primary model to obtain the security-treated model. The security-treated model is analyzed to give assurance that it is resilient to the attack. 相似文献
11.
In this paper, we present new pointcuts and primitives to Aspect-Oriented Programming (AOP) languages that are needed for systematic hardening of security concerns. The two proposed pointcuts allow to identify particular join points in a program's control-flow graph (CFG). The first one is the GAFlow, Closest Guaranteed Ancestor, which returns the closest ancestor join point to the pointcuts of interest that is on all their runtime paths. The second one is the GDFlow, Closest Guaranteed Descendant, which returns the closest child join point that can be reached by all paths starting from the pointcut of interest. The two proposed primitives are called ExportParameter and ImportParameter and are used to pass parameters between two pointcuts. They allow to analyze a program's call graph in order to determine how to change function signatures for passing the parameters associated with a given security hardening. We find these pointcuts and primitives to be necessary because they are needed to perform many security hardening practices and, to the best of our knowledge, none of the existing ones can provide their functionalities. Moreover, we show the viability and correctness of the proposed pointcuts and primitives by elaborating and implementing their algorithms and presenting the result of explanatory case studies. 相似文献
12.
《Information and Software Technology》2008,50(12):1248-1265
Aspect-Oriented Software Development promotes the separation of those concerns that cut across several components and/or are tangled with the base functionality of a component, through all phases of the software lifecycle. The benefit of identifying these crosscutting concerns (aspects) at the architectural level in particular is to improve the architecture design and its subsequent evolution, before moving onto detailed design and implementation. However, software architects are not usually experts on using specific AO architecture notations. Therefore, the aim of this paper is to provide support to define and specify aspect-oriented (AO) architectures using non-AO ones as the source. We will use the Model-Driven Development approach to transform a component-based architecture model into an AO architecture model. The CAM (component and aspect model) model and the DAOP–ADL language are the proposals used for modelling and specifying AO architectures. We will show how we automated part of the process and the tool support. 相似文献
13.
The goal of Aspect-Oriented Requirements Engineering is to identify possible crosscutting concerns, and to develop composition specifications, which can be used to reason about potential conflicts in the requirements. Recent work in AORE has moved from a syntactic approach to composition, which leads to fragile compositions and increased coupling between aspect and base concerns, to a semantic composition approach, based on semantics of the natural language itself. However, such compositions are at present only informally specified, and as such precise conflict detection between the requirements compositions is difficult. We present an approach for the formalisation of these semantic-based compositions which means that logical conflicts between compositions can be precisely identified and understood semantically. We show that the approach can be supported by off-the-shelf tools, meaning it is scalable and feasible for even large requirements specifications. 相似文献
14.
Grigori Fursin Yuriy Kashnikov Abdul Wahid Memon Zbigniew Chamski Olivier Temam Mircea Namolaru Elad Yom-Tov Bilha Mendelson Ayal Zaks Eric Courtois Francois Bodin Phil Barnard Elton Ashton Edwin Bonilla John Thomson Christopher K. I. Williams Michael O��Boyle 《International journal of parallel programming》2011,39(3):296-327
Tuning compiler optimizations for rapidly evolving hardware makes porting and extending an optimizing compiler for each new platform extremely challenging. Iterative optimization is a popular approach to adapting programs to a new architecture automatically using feedback-directed compilation. However, the large number of evaluations required for each program has prevented iterative compilation from widespread take-up in production compilers. Machine learning has been proposed to tune optimizations across programs systematically but is currently limited to a few transformations, long training phases and critically lacks publicly released, stable tools. Our approach is to develop a modular, extensible, self-tuning optimization infrastructure to automatically learn the best optimizations across multiple programs and architectures based on the correlation between program features, run-time behavior and optimizations. In this paper we describe Milepost GCC, the first publicly-available open-source machine learning-based compiler. It consists of an Interactive Compilation Interface (ICI) and plugins to extract program features and exchange optimization data with the cTuning.org open public repository. It automatically adapts the internal optimization heuristic at function-level granularity to improve execution time, code size and compilation time of a new program on a given architecture. Part of the MILEPOST technology together with low-level ICI-inspired plugin framework is now included in the mainline GCC. We developed machine learning plugins based on probabilistic and transductive approaches to predict good combinations of optimizations. Our preliminary experimental results show that it is possible to automatically reduce the execution time of individual MiBench programs, some by more than a factor of 2, while also improving compilation time and code size. On average we are able to reduce the execution time of the MiBench benchmark suite by 11% for the ARC reconfigurable processor. We also present a realistic multi-objective optimization scenario for Berkeley DB library using Milepost GCC and improve execution time by approximately 17%, while reducing compilation time and code size by 12% and 7% respectively on Intel Xeon processor. 相似文献
15.
Murphy G.C. Walker R.J. Banlassad E.L.A. 《IEEE transactions on pattern analysis and machine intelligence》1999,25(4):438-455
Determining whether a new software development technique is useful and usable is a challenging taste. Various flavors of empirical study may be used to help with this task, including surveys, case studies, and experiments. Little guidance is available within the software engineering community to help choose among these alternatives when assessing a new and evolving software development technique within some cost bounds. We faced this challenge when assessing a new programming technique called aspect-oriented programming. To assess the technique, we chose to apply both a case study approach and a series of four experiments because we wanted to understand and characterize the kinds of information that each approach might provide. We describe and critique the evaluation methods we employed, and discuss the lessons we have learned. These lessons are applicable to other researchers attempting to assess new programming techniques that are in an early stage of development 相似文献
16.
《Science of Computer Programming》2007,64(3):203-206
This SCP special collects articles that make contributions to the foundations of aspect-oriented programming (AOP). Aspects have been developed over the last 10 years to facilitate the modularization of crosscutting concerns, i.e., concerns that crosscut with the primary modularization of a program. This special issue further continues the efforts of the annual FOAL workshop (Foundations of Aspect-Oriented Languages) in so far that it supports and integrates research on firm foundations of AOP. There are 5 contributions addressing the following issues: (i) a fundamental core language for aspects; (ii) subtleties of so-called around advice; (iii) aspects in higher-order languages; (iv) the interaction between aspects and generics; (v) a notion of aspects for reactive systems based on synchronous languages. 相似文献
17.
18.
《Science of Computer Programming》2007,64(3):321-374
This paper describes MiniMAO1, a core aspect-oriented language. Unlike previous aspect-oriented calculi and core languages, MiniMAO1allows around advice to change the target object of an advised operation before proceeding. MiniMAO1accurately models the ways AspectJ allows changing the target object, e.g., at call join points. Practical uses for changing the target object using advice include proxies and other wrapper objects.MiniMAO1was designed to serve as a core language for studying modular specification and verification in the aspect-oriented paradigm. To this end MiniMAO1
- •has an imperative, reference-based semantics,
- •models the control-flow effects of changing target object bindings with advice, and
- •has a safe static type system.
19.
重点分析介绍了GCC编译器源代码的结构和程序的主要函数功能.并据此提出了移植GCC编译器到多媒体处理器Trimedia的一个方案及介绍了其实现的重点. 相似文献
20.
给出了Spring框架中基于注解形式实现AOP编程的具体方法.讨论了AOP的相关概念、切点表达式的定义形式、各类通知的执行特点等.结合实例探讨了AOP的配置与编程要点. 相似文献