AspectJTamer: The Controlled Weaving of Independently Developed Aspects

Size: px
Start display at page:

Download "AspectJTamer: The Controlled Weaving of Independently Developed Aspects"

Transcription

1 AspectJTamer: The Controlled Weaving of Independently Developed Aspects Constantin Serban Applied Research Telcordia Technologies One Telcordia Drive Piscataway, NJ USA Shmuel Tyszberowicz School of Computer Science The Academic College of Tel-Aviv Yaffo and Tel-Aviv University Tel-Aviv Israel Abstract 1. Introduction In recent years, Aspect Oriented Programming (AOP) has emerged as a promising model for modularizing large and complex programs, advancing towards wider acceptance for mainstream commercial development. The use of AOP techniques for developing commercial applications poses, however, a number of challenges especially when such applications are composed of large numbers of binary components containing independently developed aspects. The interaction of such independently developed aspects with each other and with the rest of the system can lead to unexpected problems. First, aspects in binary distributions can be mistakenly treated as ordinary classes, thus ignoring their complex interaction with the rest of the system. Second, independently developed aspects might inadvertently make inappropriate assumptions about their application environment, thus creating unintended effects. This paper presents AspectJTamer, a tool for addressing these issues. First, AspectJTamer provides support for identifying aspects that are present in binary distributions and for documenting their specific interaction points, thus making explicit both their assumptions about, and their weaving scope within, an application. Second, AspectJTamer provides a mechanism to control the weaving scope of binary aspects in a flexible manner, thus offering supplemental constraints overriding the assumptions made by independently developed aspects. This research was supported in part by a grant from the Israel Science Foundation (grant No. 1011/04). In recent years, Aspect Oriented Programming (AOP) has become an increasingly important software development method, whose goal is to improve the development and the maintenance of large applications through separation of concerns [6],[5], [3]. In AOP, a program is developed as a set of distinct, non-overlapping concerns, called aspects, Aspects are composed into a coherent application through a process called weaving, that takes place at various points of interest in the program called join points. Contributing to the success of AOP towards wide-spread commercial adoption is the popularity of the AspectJ language [2], an aspect-oriented extension of Java. Among the notable characteristics of AspectJ are its ability to produce Java-compatible classes, thus catering to a large base of Java users, and the ability of its AspectJ compiler (ajc) to weave into standard Java bytecode, thus integrating well with purely Java developed code. The ability of such aspects to be represented as Java bytecode called binary aspects, and the possibility to weave them directly into bytecode classes, represents, however, a double-edged sword in the context of large commercial applications. Commercial applications have long development lifecycles; they are composed of large number of components 1, developed over extended periods of time. These components are often developed by different teams: either within the same organization, or by different organizations as commercial-off-the-shelf (COTS) components. The system is often assembled at a later development stage, based on previously agreed (provide or use) interfaces, without explicit knowledge of the actual code or development process 1 A component, in our view, is a reusable software element, typically a collection of classes that are developed together in order to fulfill an identifiable function

2 adopted by each individual component. Components are often delivered in binary format (or bytecode), without the source code and rarely with documentation that supports little more than a description of the interfaces of interest. When AOP techniques are employed in the development of such applications, aspects can appear at multiple levels. Aspects can be used for programming individual components, reflecting component-wide concerns, or they can be used during the integration phase, in order to support application-wide concerns. The default model for constructing an application using AOP in general and AspectJ in particular is to weave all the components and their aspects together, assuming each aspect reflects an application-wide concern. Accordingly, aspects present in one component will be woven into different components throughout the system, producing new interactions at the weaving join points. The existence, the scope, and the effects of such interactions are not described by the functional API of a component; even more, they are obscured by the fact that binary aspects within a component appear to be ordinary Java classes from the point of view of the builder, or the integrator, of the application. The problem is not only the lack of information regarding the aspects that are present in an application. The presence of binary aspects in independently developed components poses additional challenges. In AOP models, and particularly in AspectJ, aspects are treated democratically and are assumed to apply equally to an entire application, regardless of the originating component. The actual classes affected by an aspect are specified at the time of writing the aspect, using a pointcut expression, describing the set of join points where the aspect should be woven into. This description, however, might reflect only partial knowledge related to the enclosing component, and might not contain information related to the rest of the system. Consequently, component-wide aspects are promoted incidentally to application-wide scope, without necessary reflecting the actual intent of the builder of the component or the intent of the application integrator. However, altering the scope of an aspect by changing its pointcut is not possible in the case of binary aspects. Alternatively, this scope can be restricted at compile, or weave-time. Nevertheless, aspect compilers or weavers offer little or no support for limiting what component, or class is woven into by a certain binary aspect. This paper addresses the above issues. For this purpose, we have developed AspectJTamer, a tool intended to aid the builders and integrators of applications based on AspectJ. First, AspectJTamer provides support for identifying aspects that are present in binary components and for documenting their specific interaction points, thus making explicit both their assumptions about, and their weaving scope within, an application. Second, AspectJTamer provides a mechanism to control the weaving scope of binary aspects on a per-class granularity, constraining what components can be woven into by an aspect especially when the pointcut of that aspect is not available for modification. The rest of the paper is structured as follows. First, in Section 2 we will present in more detail a number of specific problems that emerge when integrating components containing binary aspects. In Section 3 we will present AspectJTamer, and we will show how it can handle these situations. Section 4 will present related work, and we will conclude in Section Fault Scenarios Faults can occur whenever independently developed components containing binary aspects are integrated in a certain application. The main reasons leading to these faults are as follows: Lack of information about aspects: The presence of a binary aspect, or information about its intended pointcut is not known at integration time. This can lead to an aspect not interacting with other components as planned. Incidental expansion of scope: During the integration phase, the pointcut of a binary aspect might match unintended join points in other components. This can lead to unintentional interaction taking place. In the next section, we will introduce an example application that will serve as a basis of discussion for identifying these faults An Example: Growable Resource Repository Consider an application that contains two components: A and B. Component A is responsible for maintaining a number of resources in a growable repository that can be viewed as a resource pool. Component B requests these resources using the method getresource(description d) provided by Component A, where d represents the description of a resource. Once A provides a resource to B, the resource is no longer available in the repository. After B finishes using a resource, it returns it to the repository using the method dispose(resource r). In order to offer high availability, the method getresource(description d) is expected to always return a valid resource. Thus Component A is responsible for creating new resources when all the existing resources are in use. Figure 1 presents the implementation of this repository using Java and AspectJ. Class ResourceRepository in

3 Component A implements these methods as follows. A resources object of type HashMap is pre-populated with resources and their descriptions. Method getresource removes a resource from the HashMap and returns it to the requester. When the resource is no longer needed, it is replaced through method dispose: the resource is saved in the HashMap resources object to be served in subsequent requests. The ResourceRepository implementation does not satisfy the requirements of a growable repository: after ResourceRepository object runs out of its pre-populated resources, the method getresource returns null. The contract of the component, however, specifies that getresource always returns a valid resource. In order to overcome this situation, the aspect GrowableRepository augments the basic functionality by supplying additional resources when necessary. GrowableRepository defines a pointcut, resourceget, matching all the calls to the method getresource(description). An around advice proceeds as follows. When ResourceRepository runs out of resources and getresource returns null, the advice creates a new resource based on the given description. This resource is subsequently handed down to the requester. Figure 2 shows how Component B uses the resource repository. First, a ResourceRepository object is acquired, and a Description object is prepared. Then B calls getresource method, supplying the target description. After the resource is used, it is recycled through dispose method. Note that this implementation has been suggested by [7] and it also appears in a host of other materials. The reader is referred to the afore mentioned work for a detailed description of the reasons and the advantages of an aspect solution to the resource pooling problem; we will not discuss this further The lack of information regarding binary aspects For the application above to function properly, the GrowableRepository aspect has to be woven into Component B, such that the advice resourceget executes whenever method getresource is invoked. The weaving is performed by ajc (AspectJ compiler), provided that both components are present in the inpath argument 2. In order to have a proper integration, however, the builder of the application has to be aware that: a) Component A is developed using AspectJ technology, and b) GrowableRepository has to be woven into all the classes using the growable resource repository feature. 2 The inpath specifies the directories where both the aspects to be applied, and the classes that are to be woven into, reside. This is not self-explanatory. The binary distribution of Component A contains classes that, when examined, appear to be ordinary Java classes, i.e ResourceRepository.class and GrowableRepository.class. Moreover, if the application is integrated simply using a standard Java compiler, the application would appear to work properly, at least until the resources held in ResourceRepository are exhausted. One conclusion we draw is that, as a minimal requirement, the user of a component should be able to discern that aspects are present in binary form in that component. Knowing that GrowableRepository is an aspect is a necessary, but not a sufficient condition for correctly integrating the two components. Consider the following example. Assume that EnhancedResourceRepository is a new class in Component B. Also assume that EnhancedResourceRepository extends class ResourceRepository in order to provide additional functionality to the basic repository. The code of this class is shown in Figure 3. Method getresources is intended to obtain two different resources, atomically. It is implemented by calling twice the method getresource in its superclass (i.e. ResourceRepository). The rest of the code in Figure 3 shows how the enhanced repository is used. After weaving the GrowableRepository aspect into Component B, it is expected that the enhanced repository would return valid resources for every invocation of getresources method. But this is not the case. The pointcut resourceget defined in GrowableRepository does not capture the calls to the superclass, thus the advice is never executed (see [2] for more details). Consequently, the method getresources will return invalid resources (i.e. null) after exhausting the pre-populated set. The pitfall presented here is not limited to subclassing. The same fault would have occurred if the caller in Component B used the reflective capabilities of Java to invoke the getresource method on a ResourceRepository object. The underlying cause of this pitfall is that pointcuts in AspectJ are syntactically determined, thus, knowing informally that GrowableRepository captures calls to getresource is not sufficient. We conclude that the precise expression of the pointcut is necessary in order to determine the exact interaction between the two components. This is analogous to the practice in object-oriented programming, where it is necessary to know the exact syntax of the API provided, or required, by an ordinary Java component Incidental expansion of scope Explicitly declaring the pointcuts of an aspect helps eliminate some of the problems that appear when using a

4 public class ResourceRepository { HashMap<Description><Resource> resources =...//populate with resources public Resource getresource(description d){ return resources.remove(d); //if no resource in resources matches d then it returns null public void dispose(resource r){ resources.put(r.getdescription(), r); public aspect GrowableRepository { pointcut resourceget(description d): call(* *.getresource(description)) && args(d); Object around (Description d) : resourceget(d) { Resource r = proceed(d); if(r == null) return new Resource(d); return r; Figure 1. Component A: The Implementation of a Growable ResourceRepository ResourceRepository rep =...//obtain a reference to a ResourceRepository Description mydescription =...//provide a resource description Resource r = rep.getresource(mydescription);...//use resource rep.dispose(r); Figure 2. Component B: Typical Usage of a Growable ResourceRepository public class EnhancedResourceRepository extends ResourceRepository { public Resource[] getresources(description d1, Description d2){ Resource[] rs = {super.getresource(d1), super.getresource(d2); resources.remove(d1); resources.remove(d2); return rs; EnhancedResourceRepository rep =...//reference an EnhancedResourceRepository Description d1, d2 =...//provide resource descriptions Resource[] rs = rep.getresources(d1, d2); Figure 3. Component B: Alternate Usage of a Growable ResourceRepository

5 binary component. When integrating two binary components which are developed independently, however, additional problems might appear. Let us further assume that Component B contains a class, ResourceVerifier, that tracks all the resources that are in use at a certain moment of time. This class is used only by Component B internally, and it is not intended to interact with Component A. The code corresponding to this class is shown in Figure 4. The class saves resources that are known to be available in a HashMap object, and they are later accessed through a getresource method with the same signature as the method in the class ResourceRepository. Finally, the class provides another method, resourceinuse, that calls the local method getresource; if the resource is in the available list, then it returns true. Recall that in order for the application to work properly, it is necessary that the classes in Component B are woven into by GrowableRepository. However, due to the fact that the pointcut resourceget in GrowableRepository is unbound, i.e it has wildcard characters, it will match any method with the signature getresource(description d). Thus, the corresponding method in ResourceVerifier will be advised as well. Accordingly, this will render the method resourceinuse unusable, since it will always return true, whether the resource is present in the available list or not. The above example documents how the GrowableRepository aspect can affect other classes unintentionally, but in a harmful way. Since the pointcut of the GrowableRepository might be known in advance as part of the interaction API between the two components, one might argue that this situation could be avoided through a defensive programming style. But the problem can be shown to be even more general. Assuming that Component A contains an undocumented aspect A B, that is intendedly used for strictly internal functionality; and assuming that Component B provides joint points that incidentally match unbound pointcuts in A B ; then any integration between Component A and B using the AspectJ compiler will produce the same undesirable effects. Eliminating all the name clashes with respect to aspects present in other components, regardless of the intended public or private character of the aspect, or the methods, is not practical, especially when the two components are developed independently. Alternatively, one might propose the complete elimination of unbound pointcuts in the aspects as the source of this evil. But this again might not be possible, since such aspects rely on unbound pointcuts in order to deal with the internal complexities of components. Since modifying the pointcut of the aspect is not possible, nor practical for binary aspects, a desirable solution would be to restrict the weaving of aspects only to necessary classes. In our example, it would suffice to weave the GrowableRepository aspect into all the classes using ResourceRepository.getResource but not in ResourceVerifier class. Unfortunately, ajc, the AspectJ compiler, does not provide support for such functionality. Ajc assumes that all the aspects apply equally to an entire application, regardless of the originating component. Note that the existence of such conflicts when distributing components with woven concerns is a previously known problem. In particular, some of the above situations have been discussed in [4], and were also addressed in our own work on aspect enforcement [13]. 3. The AspectJTamer AspectJTamer is a command-line tool we have developed in order to aid the builders and integrators of applications based on AspectJ. AspectJTamer offers support for detecting aspects in binary components and documenting their specific interaction points, as well as for providing a mechanism to control the weaving scope of binary aspects on a per-class granularity. We will present below these features Detecting Aspects in Binary Components This function of AspectJTamer is nonintrusive. When starting AspectJTamer, all the components and their binary classes that are part of an application are supplied to the tool. We call this the codebase of the application. AspectJTamer inspects the codebase and presents a report to the user. The information thus presented can be subsequently used in order to avoid the pitfalls of building, and integrating the components with binary aspects. AspectJTamer provides the following specific operations. Detecting binary aspects: AspectJTamer parses all the class files in the system and uses the AspectJ introspective capabilities to determine which class encodes a binary aspect. The report is presented in the following form. Aspect GrowableRepository in file /res/users/.../compa/growablerepository.class Aspect CompBAsp in file /res/users/.../compa/compbasp.class Determining aspect details: Upon request, for every binary aspect in the system AspectJTamer analyzes its code

6 public class ResourceVerifier { HashMap<Description><Resource> available =...//hold available resources public Resource getresource(description d){ return available.get(d); public boolean resourceinuse(description d){ if(getresource(d) == null); return false; return true; Figure 4. Component B: Class using getresource method reflectively and determines the information of interest with respect to the interaction between that aspect and the rest of the system. The tool lists the pointcuts declared in the aspect; the type of advice associated with them; declared errors and warnings; intertype declarations; and declared precedence relationships. Note that the actual content or semantics of the aspect advices are not covered by this command. The report is presented as follows. Aspect GrowableRepository in file /res/users/.../compa/growablerepository.class pointcut resourceget(description d): call(* *.getresource(description)) && args(d); Object around (Description d) : resourceget(d) {; Detecting woven classes: This command detects what aspects are woven on a per-class basis, effectively determining what is the de facto scope of an aspect. This is possible because, in AspectJ, when an aspect is woven into a class, the bytecode of the class retains information related to the identity of that aspect, as a non-standard Java attribute. AspectJTamer uses the programatic interface of ajc, the AspectJ compiler, to determine what are the previously woven aspects present into the bytecode of a class. This information is necessary in order to prevent the expansion of scope within a component. Whenever a new aspect is woven into a component, the aspects already present in a limited scope in that component, might expand their scope to the entire component, similar to the case described in Section 2.3. AspectJTamer presents the following report. Class User in file /res/users/.../compb/user.class Woven with: Aspect GrowableRepository in file /res/users/.../compa/growablerepository.class Aspect CompBLogger in file /res/users/.../compb/compblogger.class Detecting Shared Join Points: Shared join points are join points in a program where multiple aspects are woven. Although not specifically addressed in this paper, shared join points can potentially cause an application to have unpredictable behavior, as pointed out in a host of recent research (see Section 4). For every class, AspectJTamer determines whether any two aspects in the codebase apply to the same join point, thus assessing the relative independence of the two aspects with respect to that class. AspectJTamer presents a report as follows. Class User in file /res/users/.../compb/user.class Shared Join Point detected: Aspect GrowableRepository in file /res/users/.../compa/growablerepository.class Aspect CompBLogger in file /res/users/.../compb/compblogger.class

7 3.2. Controlling the Weaving Scope of Aspects Given the dangers of accidental scope expansion posed by aspects with unbound pointcuts, and given that the pointcuts of binary aspects cannot be modified, a solution is to restrict the weaving of such aspects only to certain selected classes. Such weaving is designed to override the pointcut of an aspect by preventing it from expanding to unintended classes. AspectJTamer provides a mechanism to control the weaving scope of binary aspects on a per-class granularity Weaving with AspectJTamer Consider a set S of binary components with woven aspects, and consider an aspect A S. Let us assume that the desired scope of A is a subset SS of S. The function of AspectJTamer is to weave aspect A into SS without any expansion of scope. The weaving takes place according to the pointcut defined in A and it is guaranteed to satisfy the following properties: Classes in (S\SS) remain unchanged and A remains unchanged. Classes in SS are transformed as follows. Consider a class C SS, where C is either a Java class or an aspect class. Assume further that C has been previously woven into by a set of aspects W. After weaving with AspectJTamer, C will be woven into by 1) the same W, if the pointcut defined in A does not match a join point in C; or 2) by (W A), if the pointcut defined in A matches a join point in C. These properties ensure that only classes in SS are affected by the weaving, and the only transformation that takes place in SS is the weaving of A. Other aspects in S are not otherwise affected, and their scope is left unchanged. Ajc does not provide such functionality. AspectJTamer requires a configuration file, called directions file, that contains the definition of the desired scope for each aspect that is to be woven into the application. AspectJTamer requires two additional arguments: an inpath argument, representing a sequence of directories to the codebase of the application; and a destination directory where the woven classes are deposited at the end of the weaving process. AspectJTamer is launched as follows: > ajtamer -inpath <directories:> -directions <direction-file> -destination <dest-directory> We assume that this configuration file is created by the system architect, the builder, or the integrator of the application, based on the used components and based on their intended use. It is also assumed that the builder uses AspectJTamer to detect the potential conflicting aspects and their details, as described in Section 3.1. An example of configuration file containing the weaving directions is shown in Figure 5 (a). The first line specifies that aspect GrowableRepository from package compa is to be woven into the entire package compa, and into classes RepUser and ExtraAspect from package compb. The second line specifies that aspect ExtraAspect from package compb is to be woven into the entire package compb. Every entry in the directions file contains a weave declaration, followed by an aspect class and a list of target classes; wildcard characters can be used for specifying sets of target classes. The grammar used for a weave declaration is similar to the pointcut syntax of AspectJ. AspectJTamer interprets the entries in the directions file sequentially, starting with the first entry. A weave entry in the directions file will not automatically produce an actual weaving in a target class, because weaving is also subject to the AspectJ rules of the aspect pointcut. The weaving of aspect A into target C takes place if there is a corresponding entry for A and C in the directions file, and, if the entry exists, only if a pointcut defined in A matches a join point in C. Thus, it can be said that AspectJTamer overrides the scope defined by the pointcut of an aspect. Implementation-wise, AspectJTamer uses the programatic interface of ajc, the AspectJ compiler, in order to produce the woven code. Consequently, classes produced with AspectJTamer are entirely compatible with any AspectJ application. The weaving takes place iteratively: every iteration is responsible for weaving a particular aspect into a particular class. The following steps are performed during an iteration: Copy the aspect A and the target class C into a separate directory D. Identify other aspects W already woven in C and copy them into D. Using ajc, the AspectJ compiler, weave all the classes in D together. Select the modified target class and discard all other classes since they might be contaminated by aspect expansion.

8 (a) Weaving Instructions weave compa.growablerepository : compa.* & compb.repuser & compb.extraaspect; weave compb.extraaspect : compb.*; (b) Extraction Instructions unweave compa.growablerepository : compb.resourceverifier; unweave compa.compalogger : compa.*; Figure 5. AspectJTamer Directions File Extracting Aspects with AspectJTamer The inverse operation of weaving an aspect into a class is called extracting an aspect. The extraction of an aspect might be useful in certain situations. Consider the following example. Recall that Component A provides a growable resource repository functionality. In order to trace and debug its execution, Component A also contains a logging aspect, CompALogger, already woven in every class in Component A, and distributed along with the component. When the component is integrated in the application, however, a new logging scheme is decided for the entire application. Accordingly, CompALogger is not only unnecessary, but it can interfere with the new logging process by obscuring the logging output. If the source files for CompALogger are not available, as in the case of binary distributions, rebuilding the component without CompALogger aspect is not an option. In AspectJTamer, an aspect extraction is defined as follows. Consider a class C, and a set of aspects W already woven in C. After extracting aspect A W, C is left affected by W \A. That is, the extraction of an aspect from a class does not influence the scope of other aspects in the application, and only leaves class C free of A. Extractions are specified as entries in the AspectJ- Tamer directions file. Figure 5 (b) presents an example of such directions. The first line specifies that aspect GrowableRepository from package compa should be extracted from class ResourceVerifier in package compb. The second line directs AspectJTamer to extract CompALogger aspect from the entire package compa. Extraction directives use the same syntax as presented before in the case of weaving. Note that the directions file can contain any combination of weaving and extraction directives. Implementation-wise, AspectJTamer uses the standard AspectJ Compiler in order to extract the aspect. The extraction process is similar to the weaving, with the difference that an empty aspect, with no advice and accordingly no effect replaces the extracted aspect. 4. Related Work The problems caused by the integration of components with woven concerns have been previously discussed in a number of research papers. Our previous work on aspectbased enforcement [13] raises the issue of aspect interference, and points out its negative effects on security. Among the proposed solutions, we have presented a manual, separate-weaving procedure for building aspect-based applications, as well as an automated method for step-wise compilation representing the seed of our current work. This work differs from our previous work in many respects. The application domain considered in our current work is significantly different, as well as the technical solution. Novelties introduced by AspectJTamer are the generous support for identifying aspect information in a binary distribution, and support for precisely defining the scope of an aspect as well as for the extracting an aspect from a binary class. In a different work, the authors of [10] discuss in detail the problems generated by the introduction of programming aspects (also called foreign aspects ) into a system. They recognize that such introduction can change the behavior of the system in an unexpected and undesirable way, mostly by unanticipated composition. The authors, however, stop short of providing a solution. A similar problem is also addressed in [1], where the author recognizes that the separate development of code and the aspects controlling that code can lead to fragile systems, especially in the case of evolving systems. A different type of aspect interference is discussed in [11, 12], and separately in [14] and [4], respectively. The authors discuss the effects of multiple aspects weaving at shared join points. In [11, 12], the authors propose a declarative model for insuring a predictable ordering and for specifying controlling constraints. The authors in [4] propose an automatic tool for detecting interactions at shared join points and provide a conflict resolution mechanism based on a dedicated composition language. With respect to this issue, our work detects strong independence between aspects, but it does not address the actual issue of interference at shared join points.

9 Finally, in [8, 9] the authors propose an approach to AOP where aspects are viewed as program transformations. This view eliminates the composition problem allowing an incremental development using a component-based software engineering approach. Their solution, however, does not offer an implementation for AspectJ and Java. 5. Conclusions This paper addresses the pitfalls of integrating binary components with woven concerns a growing danger hindering the advance of AOP towards a wider commercial adoption. We have identified two main reasons that lead to such problems: i) a lack of information about aspects present in a component, which can take the form of either unknown aspects or unknown pointcuts in aspects; and ii) accidental expansion of scope for aspects with unbound pointcuts. Both situations can lead to unexpected and sometimes subtle errors, with possibly serious effects on the correctness of an application. In order to address these issues, we have developed a tool called AspectJTamer, intended to aid the builders and integrators of applications based on AspectJ. First, AspectJTamer provides support for identifying aspects that are present in binary components as well as for determining their declared pointcuts and the actual weaving scope. Second, AspectJTamer provides a mechanism to control the scope of binary aspects on a per-class granularity, using controlled weaving and extraction directives. Even though AspectJTamer has been developed specifically to handle binary distributions, the detection and controlled weaving method described in this paper might also prove necessary when dealing with non-binary aspects, i.e. aspect present in source form. This is the case in the context of large projects that contain multiple undocumented aspects, developed by heterogeneous teams, and where the interaction points for such aspects are not captured in a formal API description. 02: Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering, pages , London, UK, Springer- Verlag. [5] G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. Griswold. Getting started with AspectJ. Commun. ACM, 44(10):59 65, [6] G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. Loingtier, and J. Irwin. Aspect-Oriented Programming. In European Conference on Object-Oriented Programming vol.1241, pp , [7] R. Laddad. AspectJ in action: Practical Aspect-Oriented Programming. In ISBN , [8] R. Lopez-Herrejon and D. Batory. Improving incremental development in AspectJ by bounding quantification. In Software Engineering Properties of Languages and Aspect Technologies (SPLAT) Workshop at AOSD, Chicago, USA, March [9] R. Lopez-Herrejon, D. Batory, and C. Lengauer. A disciplined approach to aspect composition. In ACM SIGPLAN 2006 Workshop on Partial Evaluation and Program Manipulation, PEPM 06, Charleston, South Carolina, January [10] N. McEachen and R. T. Alexander. Distributing classes with woven concerns: an exploration of potential fault scenarios. In AOSD 05: Proceedings of the 4th international conference on Aspect-oriented software development, pages , New York, NY, USA, ACM Press. [11] I. Nagy, L. Bergmans, and M. Aksit. Declarative aspect composition. In Software-engineering Properties of Languages for Aspect Technologies, SPLAT 04, [12] I. Nagy, L. Bergmans, and M. Aksit. Composing aspects at shared join points. In Hirschfeld, Kowalczyk, Polze and Weske Editors, Proceedings of International Conference NetObjectDays, NODe2005, pages P 69, Erfurt, Germany, September [13] C. Serban and S. Tyszberowicz. Enforcing interaction properties in AOSD-enabled systems. ICSEA 06: Proceedings of International Conference of Software Engineering Advances, 0:8, [14] D. Stauch, K. Altisen, and F. Maraninchi. Interference of Larissa aspects. In Foundations of Aspect-Oriented Languages Workshop, FOAL 2006, References [1] J. Aldrich. Open Modules: A proposal for modular reasoning in Aspect-Oriented Programming, [2] AspectJ Team. AspectJ 1.5 Programming Guide. In index.html, [3] A. Colyer, A. Clement, R. Bodkin, and J. Hugunin. Using AspectJ for component integration in middleware. In OOP- SLA 03: Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages , New York, NY, USA, ACM Press. [4] R. Douence, P. Fradet, and M. Sudholt. A framework for the detection and resolution of aspect interactions. In GPCE

Enforcing Interaction Properties in AOSD-Enabled Systems

Enforcing Interaction Properties in AOSD-Enabled Systems Enforcing Interaction Properties in AOSD-Enabled Systems Constantin Serban Department of Computer Science Rutgers University 110 Frelinghuysen Rd. Piscataway, NJ 08854 USA serban@cs.rutgers.edu Shmuel

More information

An Analysis of Aspect Composition Problems

An Analysis of Aspect Composition Problems An Analysis of Aspect Composition Problems Wilke Havinga havingaw@cs.utwente.nl Istvan Nagy nagyist@cs.utwente.nl TRESE/Software Engineering group University of Twente, The Netherlands Lodewijk Bergmans

More information

Using Aspects to Make Adaptive Object-Models Adaptable

Using Aspects to Make Adaptive Object-Models Adaptable Using Aspects to Make Adaptive Object-Models Adaptable Ayla Dantas 1, Joseph Yoder 2, Paulo Borba 1, Ralph Johnson 2 1 Software Productivity Group Informatics Center Federal University of Pernambuco Recife,

More information

Using Aspects to Make Adaptive Object-Models Adaptable

Using Aspects to Make Adaptive Object-Models Adaptable Using Aspects to Make Adaptive Object-Models Adaptable Ayla Dantas 1, Joseph Yoder 2, Paulo Borba, and Ralph Johnson 1 Software Productivity Group Informatics Center Federal University of Pernambuco Recife,

More information

A Unit Testing Framework for Aspects without Weaving

A Unit Testing Framework for Aspects without Weaving A Unit Testing Framework for Aspects without Weaving Yudai Yamazaki l01104@sic.shibaura-it.ac.jp Kouhei Sakurai sakurai@komiya.ise.shibaura-it.ac.jp Saeko Matsuura matsuura@se.shibaura-it.ac.jp Hidehiko

More information

Bugdel: An Aspect-Oriented Debugging System

Bugdel: An Aspect-Oriented Debugging System Bugdel: An Aspect-Oriented Debugging System Yoshiyuki Usui and Shigeru Chiba Dept. of Mathematical and Computing Sciences Tokyo Institute of Technology 2-12-1-W8-50 Ohkayama, Meguro-ku Tokyo 152-8552,

More information

An Aspect-to-Class Advising Architecture Based on XML in Aspect Oriented Programming

An Aspect-to-Class Advising Architecture Based on XML in Aspect Oriented Programming An Aspect-to-Class Advising Architecture Based on XML in Aspect Oriented Programming T. Hussain, M. M. Awais, S. Shamail, M. A. Adnan Department of Computer Science Lahore University of Management Sciences,

More information

AJDT: Getting started with Aspect-Oriented Programming in Eclipse

AJDT: Getting started with Aspect-Oriented Programming in Eclipse AJDT: Getting started with Aspect-Oriented Programming in Eclipse Matt Chapman IBM Java Technology Hursley, UK AJDT Committer Andy Clement IBM Java Technology Hursley, UK AJDT & AspectJ Committer Mik Kersten

More information

Implementing Software Connectors through First-Class Methods

Implementing Software Connectors through First-Class Methods Implementing Software Connectors through First-Class Methods Cheoljoo Jeong and Sangduck Lee Computer & Software Technology Laboratory Electronics and Telecommunications Research Institute Taejon, 305-350,

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999 Migrating a Static Analysis Tool to AspectJ TM Martin P. Robillard and Gail C. Murphy Department of Computer Science University of British Columbia 201-2366 Main Mall Vancouver BC Canada V6T 1Z4 fmrobilla,murphyg@cs.ubc.ca

More information

Assertion with Aspect

Assertion with Aspect Assertion with Aspect Takashi Ishio, Toshihiro Kamiya, Shinji Kusumoto, Katsuro Inoue Graduate School of Engineering Science, PRESTO, Japan Science and Technology Agency Osaka University 1-3 Machikaneyama-cho,

More information

Aspect-Oriented Generation of the API Documentation for AspectJ

Aspect-Oriented Generation of the API Documentation for AspectJ Aspect-Oriented Generation of the API Documentation for AspectJ Michihiro Horie Tokyo Institute of Technology 2-12-1 Ohkayama, Meguro-ku, Tokyo 152-8552, Japan www.csg.is.titech.ac.jp/ horie Shigeru Chiba

More information

An Aspect-Based Approach to Modeling Security Concerns

An Aspect-Based Approach to Modeling Security Concerns An Aspect-Based Approach to Modeling Security Concerns Geri Georg Agilent Laboratories, Agilent Technologies, Fort Collins, USA geri_georg@agilent.com Robert France, Indrakshi Ray Department of Computer

More information

Model-checking with the TimeLine formalism

Model-checking with the TimeLine formalism Model-checking with the TimeLine formalism Andrea Zaccara University of Antwerp Andrea.Zaccara@student.uantwerpen.be Abstract A logical model checker can be an effective tool for verification of software

More information

Implementing Producers/Consumers Problem Using Aspect-Oriented Framework

Implementing Producers/Consumers Problem Using Aspect-Oriented Framework Implementing Producers/Consumers Problem Using Aspect-Oriented Framework 1 Computer Science Department School of Science Bangkok University Bangkok, Thailand netipan@iit.edu Paniti Netinant 1, 2 and Tzilla

More information

UniAspect: A Language-Independent Aspect-Oriented Programming Framework

UniAspect: A Language-Independent Aspect-Oriented Programming Framework UniAspect: A Language-Independent Aspect-Oriented Programming Framework Akira Ohashi Kazunori Sakamoto Tomoyuki Kamiya Reisha Humaira Satoshi Arai Hironori Washizaki Yoshiaki Fukazawa Waseda University

More information

Applying Aspect Oriented Programming on Security

Applying Aspect Oriented Programming on Security Original Article Applying Aspect Oriented Programming on Security Mohammad Khalid Pandit* 1, Azra Nazir 1 and Arutselvan M 2 1 Department of computer Science and engineering, National institute of technology

More information

Idioms for Building Software Frameworks in AspectJ

Idioms for Building Software Frameworks in AspectJ Idioms for Building Software Frameworks in AspectJ Stefan Hanenberg 1 and Arno Schmidmeier 2 1 Institute for Computer Science University of Essen, 45117 Essen, Germany shanenbe@cs.uni-essen.de 2 AspectSoft,

More information

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics Jean-Yves Guyomarc h and Yann-Gaël Guéhéneuc GEODES - Group of Open and Distributed Systems, Experimental Software Engineering Department

More information

ASPECTBOXES CONTROLLING THE VISIBILITY OF ASPECTS

ASPECTBOXES CONTROLLING THE VISIBILITY OF ASPECTS ASPECTBOXES CONTROLLING THE VISIBILITY OF ASPECTS Alexandre Bergel 1 Robert Hirschfeld 2 Siobhán Clarke 1 Pascal Costanza 3 1 Distributed Systems Group Trinity College Dublin, Ireland Alexandre.Bergel@cs.tcd.ie

More information

Improving Software Modularity using AOP

Improving Software Modularity using AOP B Vasundhara 1 & KV Chalapati Rao 2 1 Dept. of Computer Science, AMS School of Informatics, Hyderabad, India 2 CVR College of Engineering, Ibrahimpatnam, India E-mail : vasu_venki@yahoo.com 1, chalapatiraokv@gmail.com

More information

Aspect-Oriented Programming On Lisp

Aspect-Oriented Programming On Lisp 6 th International Conference on Applied Informatics Eger, Hungary, January 27 31, 2004. Aspect-Oriented Programming On Lisp Miklós Espák Department of Information Technology, University of Debrecen e-mail:

More information

APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION *

APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION * APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION * Xiaoqing Wu, Barrett Bryant and Jeff Gray Department of Computer and Information Sciences The University

More information

Employing Query Technologies for Crosscutting Concern Comprehension

Employing Query Technologies for Crosscutting Concern Comprehension Employing Query Technologies for Crosscutting Concern Comprehension Marius Marin Accenture The Netherlands Marius.Marin@accenture.com Abstract Common techniques for improving comprehensibility of software

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems FAISAL AKKAWI Akkawi@cs.iit.edu Computer Science Dept. Illinois Institute of Technology Chicago, IL 60616 ATEF BADER abader@lucent.com Lucent

More information

UML Aspect Specification Using Role Models

UML Aspect Specification Using Role Models UML Aspect Specification Using Role Models Geri Georg Agilent Laboratories, Agilent Technologies, Fort Collins, USA geri_georg@agilent.com Robert France Department of Computer Science, Colorado State University

More information

On Aspect-Orientation in Distributed Real-time Dependable Systems

On Aspect-Orientation in Distributed Real-time Dependable Systems On Aspect-Orientation in Distributed Real-time Dependable Systems Andreas Gal, Wolfgang Schröder-Preikschat, and Olaf Spinczyk University of Magdeburg Universitätsplatz 2 39106 Magdeburg, Germany gal,wosch,olaf

More information

Inheritance (Chapter 7)

Inheritance (Chapter 7) Inheritance (Chapter 7) Prof. Dr. Wolfgang Pree Department of Computer Science University of Salzburg cs.uni-salzburg.at Inheritance the soup of the day?! Inheritance combines three aspects: inheritance

More information

A Theory of Aspects for Aspect-Oriented Software Development

A Theory of Aspects for Aspect-Oriented Software Development A Theory of Aspects for Aspect-Oriented Software Development Christina von Flach G. Chavez 1,2 Carlos J. P. de Lucena 2 1 UFBA, Computer Science Department Av. Adhemar de Barros, s/n 40170-110, Salvador,

More information

An Advice for Advice Composition in AspectJ

An Advice for Advice Composition in AspectJ An Advice for Advice Composition in AspectJ Fuminobu Takeyama Shigeru Chiba Tokyo Institute of Technology, Japan 2010/07/01 Fuminobu Takeyama, Shigeru Chiba, An Advice for Advice Composition in AspectJ,

More information

SERG. Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT

SERG. Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Delft University of Technology Software Engineering Research Group Technical Report Series Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Karl Trygve

More information

Aspect-Orientation from Design to Code

Aspect-Orientation from Design to Code Aspect-Orientation from Design to Code Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany groher@informatik.tu-darmstadt.de Thomas Baumgarth Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739

More information

Improving Incremental Development in AspectJ by Bounding Quantification

Improving Incremental Development in AspectJ by Bounding Quantification Improving Incremental Development in AspectJ by Bounding Quantification Roberto E. Lopez-Herrejon and Don Batory Department of Computer Sciences University of Texas at Austin Austin, Texas, 78712 U.S.A.

More information

Dynamic Instantiation-Checking Components

Dynamic Instantiation-Checking Components Dynamic Instantiation-Checking Components Nigamanth Sridhar Electrical and Computer Engineering Cleveland State University 318 Stilwell Hall, 2121 Euclid Ave Cleveland OH 44113 n.sridhar1@csuohio.edu ABSTRACT

More information

Analysis of AspectJ Programs

Analysis of AspectJ Programs Analysis of AspectJ Programs Maximilian Störzer December 11, 2003 Abstract Program Analysis is increasingly used to enhance program understanding and find flaws in programs. In contrast to testing, it

More information

Separation of Concerns

Separation of Concerns Separation of Concerns Erik Ernst Dept. of Computer Science, University of Aarhus, Denmark eernst@daimi.au.dk Abstract. Separation of concerns is a crucial concept in discussions about software engineering

More information

UML4COP: UML-based DSML for Context-Aware Systems

UML4COP: UML-based DSML for Context-Aware Systems UML4COP: UML-based DSML for Context-Aware Systems Naoyasu Ubayashi Kyushu University ubayashi@acm.org Yasutaka Kamei Kyushu University kamei@ait.kyushu-u.ac.jp Abstract Context-awareness plays an important

More information

Modeling the Evolution of Aspect Configurations using Model Transformations

Modeling the Evolution of Aspect Configurations using Model Transformations Modeling the Evolution of Aspect Configurations using Model Transformations Uwe Zdun, Mark Strembeck Institute of Information Systems, New Media Lab Vienna University of Economics, Austria {uwe.zdun mark.strembeck}@wu-wien.ac.at

More information

Typestate Checking for Actionscript 3

Typestate Checking for Actionscript 3 Typestate Checking for Actionscript 3 Yun-En Liu and Qi Shan December 10, 2010 1 Introduction This project proposes a compile-time check for function calls in a game system written in Actionscript 3, based

More information

PL Punta Arenas

PL Punta Arenas PL 2008 - Punta Arenas Aspects, Processes, and Components Jacques Noyé OBASCO - Ecole des Mines de Nantes/INRIA, LINA Jacques.Noye@emn.fr 12 November 2008 Introduction The basic idea There is usually no

More information

Designing Aspect-Oriented Crosscutting in UML

Designing Aspect-Oriented Crosscutting in UML Designing Aspect-Oriented Crosscutting in UML Dominik Stein, Stefan Hanenberg, and Rainer Unland Institute for Computer Science University of Essen, Germany {dstein shanenbe unlandr}@cs.uni-essen.de ABSTRACT

More information

Improving the Development of Context-dependent Java Applications with ContextJ

Improving the Development of Context-dependent Java Applications with ContextJ Improving the Development of Context-dependent Java Applications with ContextJ Malte Appeltauer Robert Hirschfeld Hasso-Plattner-Institute University of Potsdam, Germany {first.last}@hpi.uni-potsdam.de

More information

Multi-Dimensional Separation of Concerns and IBM Hyper/J

Multi-Dimensional Separation of Concerns and IBM Hyper/J Multi-Dimensional Separation of Concerns and IBM Hyper/J Technical Research Report Barry R. Pekilis Bell Canada Software Reliability Laboratory Electrical and Computer Engineering University of Waterloo

More information

Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT

Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Spoofax: An Extensible, Interactive Development Environment for Program Transformation with Stratego/XT Karl Trygve Kalleberg 1 Department of Informatics, University of Bergen, P.O. Box 7800, N-5020 BERGEN,

More information

SERG. Sort-based Refactoring of Crosscutting Concerns to Aspects

SERG. Sort-based Refactoring of Crosscutting Concerns to Aspects Delft University of Technology Software Engineering Research Group Technical Report Series Sort-based Refactoring of Crosscutting Concerns to Aspects Robin van der Rijst, Marius Marin, and Arie van Deursen

More information

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003 Programming AspectJ with Eclipse and AJDT, By Example Chien-Tsun Chen Sep. 21, 2003 ctchen@ctchen.idv.tw References R. Laddad, I want my AOP!, Part 1-Part3, JavaWorld, 2002. R. Laddad, AspectJ in Action,

More information

Aspect-Oriented Programming

Aspect-Oriented Programming Aspect-Oriented Programming Based on the Example of AspectJ Prof. Harald Gall University of Zurich, Switzerland software evolution & architecture lab AOP is kind of a complicated one for me ( ) the idea

More information

Roles From an Aspect-Oriented Perspective

Roles From an Aspect-Oriented Perspective Roles From an Aspect-Oriented Perspective Stefan Hanenberg Dominik Stein Rainer Unland University of Duisburg-Essen Essen, Germany {shanenbe, dstein, unlandr}@cs.uni-essen.de Abstract. Roles and aspects

More information

Mapping Features to Aspects

Mapping Features to Aspects Mapping Features to Aspects The Road from Crosscutting to Product Lines (Work in Progress) Roberto E. Lopez-Herrejon Computing Laboratory Oxford University 1 Motivation Features Feature Informally: A characteristic

More information

Course 6 7 November Adrian Iftene

Course 6 7 November Adrian Iftene Course 6 7 November 2016 Adrian Iftene adiftene@info.uaic.ro 1 Recapitulation course 5 BPMN AOP AOP Cross cutting concerns pointcuts advice AspectJ Examples In C#: NKalore 2 BPMN Elements Examples AOP

More information

JML and Aspects: The Benefits of

JML and Aspects: The Benefits of JML and Aspects: The Benefits of Instrumenting JML Features with AspectJ Henrique Rebêlo Sérgio Soares Ricardo Lima Paulo Borba Márcio Cornélio Java Modeling Language Formal specification language for

More information

Learning from Components: Fitting AOP for System Software

Learning from Components: Fitting AOP for System Software Learning from Components: Fitting AOP for System Software Andreas Gal, Michael Franz Department of Computer Science University of California, Irvine Irvine, CA 92697-3425, USA {gal,franz@uci.edu Danilo

More information

Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

Weiss Chapter 1 terminology (parenthesized numbers are page numbers) Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement

More information

Comparative Evaluation of Programming Paradigms: Separation of Concerns with Object-, Aspect-, and Context-Oriented Programming

Comparative Evaluation of Programming Paradigms: Separation of Concerns with Object-, Aspect-, and Context-Oriented Programming Comparative Evaluation of Programming Paradigms: Separation of Concerns with Object-, Aspect-, and Context-Oriented Programming Fumiya Kato, Kazunori Sakamoto, Hironori Washizaki, and Yoshiaki Fukazawa

More information

A Novel Approach to Unit Testing: The Aspect-Oriented Way

A Novel Approach to Unit Testing: The Aspect-Oriented Way A Novel Approach to Unit Testing: The Aspect-Oriented Way Guoqing Xu and Zongyuan Yang Software Engineering Lab, Department of Computer Science East China Normal University 3663, North Zhongshan Rd., Shanghai

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems JAGDISH LAKHANI lakhjag@iitedu Computer Science Dept Illinois Institute of Technology Chicago, IL 60616 FAISAL AKKAWI akkawif@iitedu Computer

More information

Characteristics of Runtime Program Evolution

Characteristics of Runtime Program Evolution Characteristics of Runtime Program Evolution Mario Pukall and Martin Kuhlemann School of Computer Science, University of Magdeburg, Germany {pukall, kuhlemann}@iti.cs.uni-magdeburg.de Abstract. Applying

More information

An Approach to Software Component Specification

An Approach to Software Component Specification Page 1 of 5 An Approach to Software Component Specification Jun Han Peninsula School of Computing and Information Technology Monash University, Melbourne, Australia Abstract. Current models for software

More information

Cover Page. The handle holds various files of this Leiden University dissertation

Cover Page. The handle   holds various files of this Leiden University dissertation Cover Page The handle http://hdl.handle.net/1887/22891 holds various files of this Leiden University dissertation Author: Gouw, Stijn de Title: Combining monitoring with run-time assertion checking Issue

More information

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Pavol PIDANIČ Slovak University of Technology in Bratislava Faculty of Informatics and Information Technologies

More information

On Aspect-Orientation in Distributed Real-time Dependable Systems

On Aspect-Orientation in Distributed Real-time Dependable Systems On Aspect-Orientation in Distributed Real-time Dependable Systems Andreas Gal, Olaf Spinczyk, and Wolfgang Schröder-Preikschat University of California, 552 Engineering Tower, Irvine, CA 92697, USA University

More information

XAJ: An Extensible Aspect Oriented Language

XAJ: An Extensible Aspect Oriented Language XAJ: An Extensible Aspect Oriented Language Leonardo V. S. Reis, Roberto S. Bigonha, Mariza A. S. Bigonha Departamento de Ciência da Computação Universidade Federal de Minas Gerais Belo Horizonte, Brazil

More information

An Aspect-Oriented Approach. Henrique Rebêlo Informatics Center

An Aspect-Oriented Approach. Henrique Rebêlo Informatics Center An Aspect-Oriented Approach to implement JML Features Henrique Rebêlo Informatics Center Federal University of Pernambuco Summary jmlc problems bigger code, slower code, no suppport for Java ME, and bad

More information

extrinsic members RoleB RoleA

extrinsic members RoleB RoleA ASPECT- ORIENTED PROGRAMMING FOR ROLE MODELS Elizabeth A. Kendall Department of Computer Science, Royal Melbourne Institute of Technology GPO Box 2476V, Melbourne, VIC 3001, AUSTRALIA email: kendall@rmit.edu.au

More information

A Basis for AspectJ Refactoring

A Basis for AspectJ Refactoring A Basis for AspectJ Refactoring Shimon Rura and Barbara Lerner Williams College, Computer Science Department Williamstown, MA 01267 USA srura@wso.williams.edu, lerner@cs.williams.edu Abstract. Refactorings

More information

Interface evolution via public defender methods

Interface evolution via public defender methods Interface evolution via public defender methods Brian Goetz Second draft, May 2010 1. Problem statement Once published, it is impossible to add methods to an interface without breaking existing implementations.

More information

Profiler Instrumentation Using Metaprogramming Techniques

Profiler Instrumentation Using Metaprogramming Techniques Profiler Instrumentation Using Metaprogramming Techniques Ritu Arora, Yu Sun, Zekai Demirezen, Jeff Gray University of Alabama at Birmingham Department of Computer and Information Sciences Birmingham,

More information

CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards

CompuScholar, Inc. Alignment to Nevada Computer Science Course Standards CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards Nevada Course Details: Course Name: Computer Science Primary Cluster: Information and Media Technologies Standards Course Code(s):

More information

Joint Entity Resolution

Joint Entity Resolution Joint Entity Resolution Steven Euijong Whang, Hector Garcia-Molina Computer Science Department, Stanford University 353 Serra Mall, Stanford, CA 94305, USA {swhang, hector}@cs.stanford.edu No Institute

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

Inductively Generated Pointcuts to Support Refactoring to Aspects

Inductively Generated Pointcuts to Support Refactoring to Aspects Inductively Generated Pointcuts to Support Refactoring to Aspects Tom Tourwé Centrum voor Wiskunde en Informatica P.O. Box 94079, NL-1090 GB Amsterdam The Netherlands Email: tom.tourwe@cwi.nl Andy Kellens

More information

DesignMinders: A Design Knowledge Collaboration Approach

DesignMinders: A Design Knowledge Collaboration Approach DesignMinders: A Design Knowledge Collaboration Approach Gerald Bortis and André van der Hoek University of California, Irvine Department of Informatics Irvine, CA 92697-3440 {gbortis, andre}@ics.uci.edu

More information

Types and Static Type Checking (Introducing Micro-Haskell)

Types and Static Type Checking (Introducing Micro-Haskell) Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 13 Alex Simpson School of Informatics University of Edinburgh als@inf.ed.ac.uk 16 October, 2012 1 / 21 1 Types 2 3 4 2 / 21 Thus far

More information

Aspect Refactoring Verifier

Aspect Refactoring Verifier Aspect Refactoring Verifier Charles Zhang and Julie Waterhouse Hans-Arno Jacobsen Centers for Advanced Studies Department of Electrical and IBM Toronto Lab Computer Engineering juliew@ca.ibm.com and Department

More information

Josh. Java. AspectJ weave. 2 AspectJ. Josh Javassist[1] Javassist Java. AspectJ[3, 4] Java. AspectJ. weave. weave. weave. weave. weaver 1.

Josh. Java. AspectJ weave. 2 AspectJ. Josh Javassist[1] Javassist Java. AspectJ[3, 4] Java. AspectJ. weave. weave. weave. weave. weaver 1. Josh Java Aspect Weaver weaver 1 AspectJ Java AspectJ Java weave AspectJ weave Josh weave Javassist weave 1 weaver 1 AspectJ[3, 4] 1 Java AspectJ Java weave Java AspectJ weave Josh Josh Java weave weave

More information

Design-Based Pointcuts Robustness Against Software Evolution

Design-Based Pointcuts Robustness Against Software Evolution Design-Based Pointcuts Robustness Against Software Evolution Walter Cazzola 1, Sonia Pini 2, and Ancona Massimo 2 1 Department of Informatics and Communication, Università degli Studi di Milano, Italy

More information

APTE: Automated Pointcut Testing for AspectJ Programs

APTE: Automated Pointcut Testing for AspectJ Programs APTE: Automated Pointcut Testing for AspectJ Programs Prasanth Anbalagan Department of Computer Science North Carolina State University Raleigh, NC 27695 panbala@ncsu.edu Tao Xie Department of Computer

More information

A Type System for Functional Traversal-Based Aspects

A Type System for Functional Traversal-Based Aspects A Type System for Functional Traversal-Based Aspects Bryan Chadwick and Karl Lieberherr March 2 nd 2009 1 / 30 Outline Introduction Example (Pure) Semantics Example (Full Dispatch) Type System Soundness

More information

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring Chapter 7 Modular Refactoring I n this chapter, the role of Unified Modeling Language (UML) diagrams and Object Constraint Language (OCL) expressions in modular refactoring have been explained. It has

More information

Integration of Application Business Logic and Business Rules with DSL and AOP

Integration of Application Business Logic and Business Rules with DSL and AOP Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland Bogumila.Hnatkowska@pwr.wroc.pl

More information

Unweaving the Impact of Aspect Changes in AspectJ

Unweaving the Impact of Aspect Changes in AspectJ Unweaving the Impact of Aspect Changes in AspectJ Luca Cavallaro Politecnico di Milano Piazza L. da Vinci, 32 20133 Milano, Italy cavallaro@elet.polimi.it Mattia Monga Università degli Studi di Milano

More information

Sort-based Refactoring of Crosscutting Concerns to Aspects

Sort-based Refactoring of Crosscutting Concerns to Aspects Sort-based Refactoring of Crosscutting Concerns to Aspects Robin van der Rijst Delft University of Technology rvdrijst@gmail.com Marius Marin Accenture Marius.Marin@accenture.com Arie van Deursen Delft

More information

GETTING STARTED WITH ASPECTJ

GETTING STARTED WITH ASPECTJ a GETTING STARTED WITH ASPECTJ An aspect-oriented extension to Java enables plug-and-play implementations of crosscutting. Many software developers are attracted to the idea of AOP they recognize the concept

More information

Using AOP to build complex data centric component frameworks

Using AOP to build complex data centric component frameworks Using AOP to build complex data centric component frameworks Tom Mahieu, Bart Vanhaute, Karel De Vlaminck, Gerda Janssens, Wouter Joosen Katholieke Universiteit Leuven Computer Science Dept. - Distrinet

More information

An Aspect-Oriented Approach to Modular Behavioral Specification

An Aspect-Oriented Approach to Modular Behavioral Specification Electronic Notes in Theoretical Computer Science 163 (2006) 45 56 www.elsevier.com/locate/entcs An Aspect-Oriented Approach to Modular Behavioral Specification Kiyoshi Yamada 1 Research Center for Information

More information

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 5 Diploma in IT OBJECT ORIENTED PROGRAMMING

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 5 Diploma in IT OBJECT ORIENTED PROGRAMMING BCS THE CHARTERED INSTITUTE FOR IT BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 5 Diploma in IT OBJECT ORIENTED PROGRAMMING Wednesady 23 rd March 2016 Afternoon Answer any FOUR questions out of SIX. All

More information

AOP Tutorial. Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan

AOP Tutorial. Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan AOP Tutorial Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan Table of Contents 1.0 INTRODUCTION... 3 2.0 SCOPE AND OBJECTIVE... 4 3.0 MOTIVATION... 5 4.0 HISTORY...

More information

ACONCURRENT system may be viewed as a collection of

ACONCURRENT system may be viewed as a collection of 252 IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, VOL. 10, NO. 3, MARCH 1999 Constructing a Reliable Test&Set Bit Frank Stomp and Gadi Taubenfeld AbstractÐThe problem of computing with faulty

More information

{b.surajbali, p.grace

{b.surajbali, p.grace ReCycle: Resolving Cyclic Dependencies in Dynamically Reconfigurable Aspect Oriented Middleware Bholanathsingh Surajbali, Paul Grace and Geoff Coulson Computing Department, Lancaster University Lancaster,

More information

Control-Flow-Graph-Based Aspect Mining

Control-Flow-Graph-Based Aspect Mining Control-Flow-Graph-Based Aspect Mining Jens Krinke FernUniversität in Hagen, Germany krinke@acm.org Silvia Breu NASA Ames Research Center, USA silvia.breu@gmail.com Abstract Aspect mining tries to identify

More information

ASPECTIX: A QUALITY-AWARE, OBJECT-BASED MIDDLEWARE ARCHITECTURE

ASPECTIX: A QUALITY-AWARE, OBJECT-BASED MIDDLEWARE ARCHITECTURE ASPECTIX: A QUALITY-AWARE, OBJECT-BASED MIDDLEWARE ARCHITECTURE Franz J. Hauck, Ulrich Becker, Martin Geier, Erich Meier, Uwe Rastofer, Martin Steckermeier Informatik 4, University of Erlangen-Nürnberg,

More information

Introduction to. Bruno Harbulot. ESNW, the University of Manchester.

Introduction to. Bruno Harbulot. ESNW, the University of Manchester. Introduction to Aspect-Oriented Software Development Bruno Harbulot ESNW, the University of Manchester http://www.cs.man.ac.uk/~harbulob/ ELF Developers' Forum Manchester - October 2005 1/24 Presentation

More information

Aspect-Based Workflow Evolution

Aspect-Based Workflow Evolution Aspect-Based Workflow Evolution Boris Bachmendo and Rainer Unland Department of Mathematics and Computer Science University of Essen, D - 45117 Essen {bachmendo, unlandr}@cs.uni-essen.de Abstract. In this

More information

New Programming Paradigms

New Programming Paradigms New Programming Paradigms Lecturer: Pánovics János (google the name for further details) Requirements: For signature: classroom work and a 15-minute presentation Exam: written exam (mainly concepts and

More information

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements Programming Languages Third Edition Chapter 9 Control I Expressions and Statements Objectives Understand expressions Understand conditional statements and guards Understand loops and variation on WHILE

More information

Concurrent Objects and Linearizability

Concurrent Objects and Linearizability Chapter 3 Concurrent Objects and Linearizability 3.1 Specifying Objects An object in languages such as Java and C++ is a container for data. Each object provides a set of methods that are the only way

More information

Program Correctness and Efficiency. Chapter 2

Program Correctness and Efficiency. Chapter 2 Program Correctness and Efficiency Chapter 2 Chapter Objectives To understand the differences between the three categories of program errors To understand the effect of an uncaught exception and why you

More information

Specifying Pointcuts in AspectJ

Specifying Pointcuts in AspectJ Specifying Pointcuts in AspectJ Yi Wang Department of Computer Science Shanghai Jiao Tong University 800 Dongchuan Rd, Shanghai, 200240, China yi_wang@sjtu.edu.cn Jianjun Zhao Department of Computer Science

More information

Weaving Rewrite-Based Access Control Policies

Weaving Rewrite-Based Access Control Policies Weaving Rewrite-Based Access Control Policies Anderson Santana de Oliveira a, Eric Ke Wang ab, Claude Kirchner a, Hélène Kirchner a INRIA & LORIA The University of Hong Kong FMSE, 2007 Oliveira, Wang,

More information