Aspect-Oriented Programming (AOP) promises separation of concerns at the implementation level. However, aspects are not always orthogonal and aspect interaction is an important problem. Currently there is almost no support for the detection and resolution of such interactions. The programmer is responsible for identifying interactions between conflicting aspects and implementing conflict resolution code. In this paper, we propose a solution to this problem based on a generic framework for AOP. The contributions are threefold: we present a formal and expressive crosscut language, two static conflict analyses and some linguistic support for conflict resolution. 1. Programming. The aspects which are part of an application are written independently, possibly by different programmers. 2. Conflict analysis. An automatic tool detects interactions among aspects and returns informative results to the programmer.
Aspect-Oriented Programming promises separation of concerns at the implementation level. However, aspects are not always orthogonal and aspect interaction is a fundamental problem. In this paper, we extend previous work on a generic framework for the formal definition and interaction analysis of stateful aspects. We propose three important extensions which enhance expressivity while preserving static analyzability of interactions. First, we provide support for variables in aspects in order to share information between different execution points. This allows the definition of more precise aspects and to avoid detection of spurious conflicts. Second, we introduce generic composition operators for aspects. This enables us to provide expressive support for the resolution of conflicts among interacting aspects. Finally, we offer a means to define applicability conditions for aspects. This makes interaction analysis more precise and paves the way for reuse of aspects by making explicit requirements on contexts in which aspects must be used.
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. Key-words: Aspect-Oriented Programming, distributed programming, AWED, DJAsCoThis work has been supported by AOSD-Europe, the European Network of Excellence in AOSD (www.aosd-europe.net).This work has been done in collaboration from members by OBASCO project team (4 rue Alfred Kastler, 44307 Nantes cedex 3, France) and SSEL group at Vrije Universiteit Brussel (Pleinlaan 2, 1050 Brussels, Belgium). Programmation par aspects à distribution expliciteRésumé : Les préoccupations liée à la distribution, comme la réplication de données, sont souvent entrelacées avec le code métier d'une application distribuée. Actuellement ces préoccupations transversales sont fréquemment implémentées à l'aide de canevas distribués, tels que les EJB. Un support initial à l'aide de la programmation par aspects pour la modularisation de telles préoccupations transversales a été proposé, par ex., JBoss AOP et Spring AOP.Basé sur une analyse de l'implémentation du cache répliqué JBoss Cache, nous motivons que ces préoccupations transversales d'applications distribuées profitent d'un langage d'aspects pour la programmation distribuée explicite. Nous proposons AWED, un nouveau langage d'aspects apportant des mécanismes de programmation distribuée explicites. Concrètement, ce langage réalise trois contributions. D'abord, les constructeurs de coupes distantes sont plus généraux que ceux déjà proposés et nous introduisons, en particulier, un notion de séquences distantes. Ensuite, nous proposons une notion d'actions distribuées qui peuvent être coordonnées d'une manière synchrone ou asynchrone avec l'application de base. Finalement, AWED réalise une notion d'aspects distribués comprénant des moyens pour le déploiement, l'inst...
C applications, in particular those using operating system level services, frequently comprise multiple crosscutting concerns: network protocols and security are typical examples of such concerns. While these concerns can partially be addressed during design and implementation of an application, they frequently become an issue at runtime, e.g., to avoid server downtime. A deployed network protocol might not be sufficiently efficient and may thus need to be replaced. Buffer overflows might be discovered that imply critical breaches in the security model of an application. A prefetching strategy may be required to enhance performance.While aspect-oriented programming seems attractive in this context, none of the current aspect systems is expressive and efficient enough to address such concerns. This paper presents a new aspect system solving these problems. While efficiency considerations have played an important part in the design of the aspect language, the language allows aspects to be expressed more concisely than previous approaches. In particular, it allows aspect programmers to quantify over sequences of execution points as well as over alias accesses. We show how the former can be used to modularize the replacement of network protocols and the latter to prevent buffer overflows. We also present an implementation of the language as an extension of Arachne, a dynamic weaver for C applications. Finally, we show evaluations proving that Arachne is fast enough to extend high performance applications, such as the Squid web cache.
SUMMARYOne of the principal goals of Cloud Computing is the outsourcing of the hosting of data and applications, thus enabling a per-usage model of computation. Data and applications may be packaged in virtual machines (VM), which are themselves hosted by nodes, i.e., physical machines (PM). Several frameworks have been designed to manage VMs on pools of PMs; most of them, however, do not efficiently address a major objective of cloud providers: maximizing system utilization while ensuring the quality of service (QoS). Several approaches promote virtualization capabilities to improve this trade-off. However, the dynamic scheduling of a large number of VMs as part of a large distributed infrastructure is subject to important and hard scalability problems that become even worse when VM image transfers have to be managed. Consequently, most current frameworks schedule VMs statically using a centralized control strategy. In this article, we present DVMS (Distributed VM Scheduler), a framework that enables VMs to be scheduled cooperatively and dynamically in large-scale distributed systems. We describe, in particular, how several VM reconfigurations can be dynamically calculated in parallel and applied simultaneously. Reconfigurations are enabled by partitioning the system (i.e. nodes and VMs) on the fly. Partitions are created with a minimum of resources necessary to find a solution to the reconfiguration problem. Moreover, we propose an algorithm to handle deadlocks that may appear because of the partitioning policy. We have evaluated our prototype through simulations and compared our approach to a centralized one. The results show that our scheduler permits VMs to be reconfigured more efficiently: the time needed to manage thousands of VMs on hundreds of machines is typically reduced to a tenth or less.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
hi@scite.ai
334 Leonard St
Brooklyn, NY 11211
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.