Distributed AOP

Last updated

Aspect-Oriented Programming (AOP) presents the principle of the separation of concerns, allowing less interdependence, and more transparency. Thereby, an aspect is a module that encapsulates a crosscutting concern, and it is composed of pointcuts and advice bodies. The interception of an aspect is performed in a join point (a point in the execution flow), and defined inside a pointcut (a set of join points). Whenever the application execution reaches one pointcut, an advice (namely a callback) associated with it is executed. However, this implementation does not take into account separation of concerns in distributed settings. [1]

In contrast, distributed AOP is a paradigm that allows distributed interception. It defines many new concepts like remote pointcuts, which are similar to traditional remote method calls, since execution is performed on a remote host. Thus, distributed AOP establishes a context where aspects can be deployed in a set of hosts. In this sense, the remote pointcut abstraction [2] is considered the starting point for distributed AOP. After that, some works [3] [4] [5] [6] have extended this idea in some way, but all of them share the concept of remote pointcut.

A distributed aspect is defined [7] as a crosscutting software module that may operate in multiple remote hosts to intercept and alter the whole behaviour of a distributed application. This distributed entity is able to modify or adapt the distributed system by applying additional functionalities (remote advices) at various hooks located in different hosts (join points) and triggered via distributed connections (remote pointcuts).

Related Research Articles

In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding additional behavior to existing code without modifying the code itself, instead separately specifying which code is modified via a "pointcut" specification, such as "log all function calls when the function's name begins with 'set'". This allows behaviors that are not central to the business logic to be added to a program without cluttering the code core to the functionality.

In computer science, separation of concerns (SoC) is a design principle for separating a computer program into distinct sections. Each section addresses a separate concern, a set of information that affects the code of a computer program. A concern can be as general as "the details of the hardware for an application", or as specific as "the name of which class to instantiate". A program that embodies SoC well is called a modular program. Modularity, and hence separation of concerns, is achieved by encapsulating information inside a section of code that has a well-defined interface. Encapsulation is a means of information hiding. Layered designs in information systems are another embodiment of separation of concerns.

In aspect-oriented programming, a pointcut is a set of join points. Pointcut specifies where exactly to apply advice, which allows separation of concerns and helps in modularizing business logic. Pointcuts are often specified using class names or method names, in some cases using regular expressions that match class or method name. Different frameworks support different Pointcut expressions; AspectJ syntax is considered as de facto standard. Frameworks are available for various programming languages like Java, Perl, Ruby, and many more which support pointcut.

AspectJ is an aspect-oriented programming (AOP) extension created at PARC for the Java programming language. It is available in Eclipse Foundation open-source projects, both stand-alone and integrated into Eclipse. AspectJ has become a widely used de facto standard for AOP by emphasizing simplicity and usability for end users. It uses Java-like syntax, and included IDE integrations for displaying crosscutting structure since its initial public release in 2001.

Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.

An aspect of a program is a feature linked to many other parts of the program, but which is not related to the program's primary function. An aspect crosscuts the program's core concerns, therefore violating its separation of concerns that tries to encapsulate unrelated functions. For example, logging code can crosscut many modules, yet the aspect of logging should be separate from the functional concerns of the module it cross-cuts. Isolating such aspects as logging and persistence from business logic is at the core of the aspect-oriented programming (AOP) paradigm.

In aspect-oriented software development, cross-cutting concerns are aspects of a program that affect other concerns. These concerns often cannot be cleanly decomposed from the rest of the system in both the design and implementation, and can result in either scattering, tangling, or both.

Peri Tarr received her BS in Zoology from the University of Massachusetts Amherst in 1986, and her MS and PhD in Computer Science from the University of Massachusetts Amherst. Between her BS and MS/PhD, she worked full-time at the University of Massachusetts Physical Plant, attempting to introduce an automated system to help with the Plant's operations. After receiving her PhD, she joined the IBM Thomas J. Watson Research Center as a Research Staff Member in 1996, where she worked on and led various projects relating to issues of software composition, morphogenic software, and aspect-oriented software development.

The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. Although the framework does not impose any specific programming model, it has become popular in the Java community as an addition to the Enterprise JavaBeans (EJB) model. The Spring Framework is open source.

In computing, subject-oriented programming is an object-oriented software paradigm in which the state (fields) and behavior (methods) of objects are not seen as intrinsic to the objects themselves, but are provided by various subjective perceptions ("subjects") of the objects. The term and concepts were first published in September 1993 in a conference paper which was later recognized as being one of the three most influential papers to be presented at the conference between 1986 and 1996. As illustrated in that paper, an analogy is made with the contrast between the philosophical views of Plato and Kant with respect to the characteristics of "real" objects, but applied to software ones. For example, while we may all perceive a tree as having a measurable height, weight, leaf-mass, etc., from the point of view of a bird, a tree may also have measures of relative value for food or nesting purposes, or from the point of view of a tax-assessor, it may have a certain taxable value in a given year. Neither the bird's nor the tax-assessor's additional state information need be seen as intrinsic to the tree, but are added by the perceptions of the bird and tax-assessor, and from Kant's analysis, the same may be true even of characteristics we think of as intrinsic.

Live distributed object

Live distributed object refers to a running instance of a distributed multi-party protocol, viewed from the object-oriented perspective, as an entity that has a distinct identity, may encapsulate internal state and threads of execution, and that exhibits a well-defined externally visible behavior.

In the field of software development, an interceptor pattern is a software design pattern that is used when software systems or frameworks want to offer a way to change, or augment, their usual processing cycle. For example, a (simplified) typical processing sequence for a web-server is to receive a URI from the browser, map it to a file on disk, open the file and send its contents to the browser. Any of these steps could be replaced or changed, e.g. by replacing the way URIs are mapped to filenames, or by inserting a new step which processes the files contents.

In computing, algorithmic skeletons, or parallelism patterns, are a high-level parallel programming model for parallel and distributed computing.

Aspect weaver Software programming utility

An aspect weaver is a metaprogramming utility for aspect-oriented languages designed to take instructions specified by aspects and generate the final implementation code. The weaver integrates aspects into the locations specified by the software as a pre-compilation step. By merging aspects and classes, the weaver generates a woven class.

A distributed operating system is system software over a collection of independent, networked, communicating, and physically separate computational nodes. They handle jobs which are serviced by multiple CPUs. Each individual node holds a specific software subset of the global aggregate operating system. Each subset is a composite of two distinct service provisioners. The first is a ubiquitous minimal kernel, or microkernel, that directly controls that node's hardware. Second is a higher-level collection of system management components that coordinate the node's individual and collaborative activities. These components abstract microkernel functions and support user applications.

Agent-oriented programming (AOP) is a programming paradigm where the construction of the software is centered on the concept of software agents. In contrast to object-oriented programming which has objects at its core, AOP has externally specified agents at its core. They can be thought of as abstractions of objects. Exchanged messages are interpreted by receiving "agents", in a way specific to its class of agents.

Damon Middleware

Damon is a fully distributed AOP middleware built on top of a structured P2P network and dynamic AOP substrates. Its main aim is to provide the necessary abstractions and services to develop distributed aspects in large-scale scenarios.

Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".

Component-oriented database (CODB) is a way of data administration and programming DBMS's using the paradigm of the component-orientation.

Software architecture description is the set of practices for expressing, communicating and analysing software architectures, and the result of applying such practices through a work product expressing a software architecture.

References

  1. A.S. Tanenbaum and M. van Steen. Distributed Systems: Principles and Paradigms (2nd Edition). Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 2006.
  2. M. Nishizawa, S. Chiba, and M. Tatsubori. Remote pointcut: a language construct for distributed aop. In AOSD ’04. New York, NY, USA, 2004.
  3. Pawlak, R., Seinturier, L., Duchien, L., Florin, G., Legond-Aubry, F., and Martelli, L. 2004. JAC: an aspect-based distributed dynamic framework. Softw. Pract. Exper. 34, 12 (Oct. 2004), 1119-1148.
  4. Benavides Navarro, L. D., Südholt, M., Vanderperren, W., De Fraine, B., Suvée, D.: Ex-plicitly distributed AOP using AWED. In Proceedings of the 5th Int. ACM Conf. on Aspect-Oriented Software Development (AOSD'06), March 2006. ACM Press.
  5. Eric Tanter and Rodolfo Toledo, A Versatile Kernel for Distributed AOP, Lecture Notes in Computer Science 4025, pp. 316-331, 2006.
  6. B. Lagaisse and W. Joosen. True and Transparent Distributed Com-position of Aspect-Components. In Proceedings Middleware'06, vo-lume 4290 of Lecture Notes in Computer Science, 2006.
  7. R. Mondéjar, P. García-Lopez, C. Pairot, and L. Pamies-Juarez. Damon: a Distributed AOP Middleware for Large-Scale Scenarios. Information and Software Technology (2011).