Modular software design with crosscutting interfaces

Size: px
Start display at page:

Download "Modular software design with crosscutting interfaces"

Transcription

1 Computer Science Publications Computer Science Modular software design with crosscutting interfaces W. G. Griswold University of California, San Diego M. Shonle University of California, San Diego K. Sullivan University of Virginia Y. Song University of Virginia N. Tewari University of Virginia See next page for additional authors Follow this and additional works at: Part of the Software Engineering Commons The complete bibliographic information for this item can be found at cs_pubs/12. For information on how to cite this item, please visit howtocite.html. This Article is brought to you for free and open access by the Computer Science at Iowa State University Digital Repository. It has been accepted for inclusion in Computer Science Publications by an authorized administrator of Iowa State University Digital Repository. For more information, please contact

2 Modular software design with crosscutting interfaces Abstract Aspect-oriented programming (AOP) languages such as AspectJ offer new mechanisms and possibilities for decomposing systems into modules and composing modules into systems. The key mechanism in AspectJ is the advising of crosscutting sets of join points. An aspect module uses a pointcut descriptor (PCD) to declaratively specify sets of points in program executions. Our approach employs crosscut programming interfaces, or XPIs. XPIs are explicit, abstract interfaces that decouple aspects from details of advised code Keywords Software design, Protocols, Abstracts, Pattern matching, Testing, Contracts, Concrete, Displays, Buildings Disciplines Computer Sciences Software Engineering Comments This article is published as Griswold, William G., Macneil Shonle, Kevin Sullivan, Yuanyuan Song, Nishit Tewari, Yuanfang Cai, and Hridesh Rajan. "Modular software design with crosscutting interfaces." IEEE software 23, no. 1 (2006): doi: /MS Posted with permission. Rights 2006 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for all other uses, in any current or future media, including reprinting/republishing this material for advertising or promotional purposes, creating new collective works, for resale or redistribution to servers or lists, or reuse of any copyrighted component of this work in other works. Authors W. G. Griswold, M. Shonle, K. Sullivan, Y. Song, N. Tewari, Y. Cai, and Hridesh Rajan This article is available at Iowa State University Digital Repository:

3 Modular Software Design with Crosscutting Interfaces William G. Griswold λ Kevin Sullivan φ Yuanyuan Song φ Macneil Shonle λ Nishit Tewari φ Yuanfang Cai φ Hridesh Rajan φ φ Computer Science University of Virginia Charlottesville, VA λ Computer Science & Engineering UC San Diego La Jolla, CA Abstract Aspect-oriented programming languages such as AspectJ offer new mechanisms for decomposing systems into modules and composing modules into systems. This paper introduces crosscut programming interfaces (XPIs) as a practical approach to improving the modular designs of programs written using AspectJ-style AOP. It does not limit existing aspect-oriented mechanisms or require new ones. Categories and subject descriptors: D.2.2 [Software Engineering]: Design Tools and Techniques modules and interfaces; D.3.3 [Programming Languages]: Language Constructs and Features; D.2.11 [Software Engineering]: Software Architectures information hiding; D.2.7 [Software Engineering]; Distribution, Maintenance, and Enhancement. General terms: Design, Languages. aspect-oriented, preconditions, postcondi- Keywords: tions. 1 Introduction Aspect-oriented programming languages such as AspectJ [1] offer new mechanisms and possibilities for decomposing systems into modules and composing modules into systems. AspectJ-style design is based on the use of aspect modules that support quantified advising of dynamic points in program execution: namely the invocation of aspect-defined advice methods at join points matched by pointcut descriptors, or PCDs. In practice, PCDs are written directly in terms of lexical properties of advised code. This research supported in part by NSF CISE grants FCA and FCA The contribution of this paper is the presentation of a practical approach to improve the modular designs of programs written using AspectJ-style AOP. Our approach is based on the use of what we call crosscut programming interfaces, or XPIs, to decouple aspects from the complex and changeable details of the code that they advise [2]. Without limiting the possibilities for AO advising or requiring new programming languages or mechanisms, our approach appears to better modularize aspects and advised code, allowing for their separate and parallel evolution, and producing a better alignment between programs and designs. 1.1 Problem Our approach emerged from an experiment using AOP to improve the design of HyperCast, a 300-class, 50 KLOC Java system for multicast and other communications in self-organizing overlay networks [3]. HyperCast s logging concern and client-facing event notification behaviors were implemented by scattered code fragments, making enhancement of their limited behaviors difficult. Using AspectJ aspects to improve the design seemed a natural idea. The oblivious design was obtained by assuming that had the developers been able to ignore crosscutting concerns, they would have written the same code, just leaving out the code for the crosscutting concerns. Aspects then advise the code in precisely the places where scattered fragments appear in the original design. We started by using aspects to modularize a logging concern and a few concerns implemented with an implicit invocation mechanism. We changed HyperCast as little as possible, just encapsulating scattered code in aspects, resulting in a design of the base functionality that was essentially the same as before, absent the crosscutting concerns. The AOP notion of obliviousness presents such a 1

4 design as an ideal: designers should not have to consider crosscutting concerns or aspects that implement them [4]. In comparison to the original object-oriented design, our economic analysis showed an increased net options value of modularity in this straightforward AO design [2]. However, we encountered costly problems that largely offset the net value improvement. First, aspect design and evolution were complicated. The designers had to inspect all the code to identify relevant join points. Since join points were not exposed in a consistent way, complex PCD expressions and advice were needed. Innocuous changes to code could change the matched join points, violating assumptions made by the advising aspects. Second, the resulting class and aspect abstractions did not reflect the conceptual design. In the designers minds, HyperCast s protocols are implemented by abstract state machines. Event notifications expose key state machine transitions so that aspect-like clients can react to them. Our traditionally derived AO design had no separate, explicit representation of the state machines as interfaces. The PCDs of the aspects were candidates, but they fell short; each aspect defined its own PCDs for its own purpose. One way to make the state machine abstraction clearer in the design would have been to rename the pointcut descriptors used in the aspects after the state machine concepts they were implicitly using. However, as reconceptualized, renamed, and used, these pointcuts would have no longer belonged to their respective aspects, per se. Yet there was no appropriate place for these pointcuts in a HyperCast class, either, as the advised join points were not centralized in a class or meaningful subclass hierarchy. The pointcuts identified true crosscutting behaviors. 1.2 Approach The above line of reasoning exposed important crosscutting concerns distinct from those modularized in aspects. The new concerns were HyperCast s core protocols and other crosscutting abstract behaviors. These behaviors needed to be exposed through interfaces, against which aspects could be implemented. Benefits would be obtained in abstraction (e.g., the program structure reflecting the key abstraction in the designers minds and conversations), and modularity (e.g., parallel development and modular evolution). We thus repeated our experiment with HyperCast, using Design Rules as [5] conceptual interface constructs, which stabilized and syntactically regularized the relevant join points in the code, and also constrained the aspects to not corrupt the state machine [2]. The resulting design better mirrors the conceptual design and provides far better separation of aspect code from the details of the advised code. Our net option value analysis showed greater value of modularity over the first design, while the complexity of the aspects and overall coupling was significantly reduced. The primary contribution of this paper is to realize these conceptual crosscutting interfaces as syntactic crosscutting interfaces in AspectJ, with semantics defined by weakest precondition invariants. A crosscut programming interface, or XPI, has several elements: a name; a static scope over which it abstracts join points; one or more abstracted sets of join points, each expressed as: a concrete, named PCD; preconditions that must be satisfied at each join point where advice can run, called a provides clause; and postconditions that must be satisfied after advice may have run, called a requires clause. a set of constraints, or design rules, prescribing how code must be written to expose all and only the specified points in program execution through the given PCDs. In AspectJ these elements are declared in an aspect. Checkable invariants can be checked with a separate pluggable aspect. An XPI, like an API, abstracts changeable and complex design decisions and operates as a decoupling contract between providers and users. Unlike an API, an XPI abstracts a crosscutting concern rather than a localized concern. In the case of AspectJ-style design, an XPI abstracts advised join points. To paraphrase Parnas [6, p. 1058], XPIs should modularize crosscutting design decisions that are complex or likely to change. In turn, the implementor implements an XPI, not by providing code to simulate a specified behavior, but by shaping code to expose specified behaviors through join points matching designated PCDs. With respect to obliviousness, a designer does not necessarily anticipate particular aspects, such as logging, but does anticipate the need for domain-relevant abstractions that facilitate development and evolution of aspects expressible in terms of provided XPIs. The design method that we have found to work is to identify domain abstractions that are not adequately captured in the class design, 2

5 and to express them as XPIs. Thus, no explicit reference is made to future aspects in their design, although the usefulness of the XPIs can be checked against anticipated aspects. In the following, we use a detailed comparative example to show how to apply the XPI method and what benefits can accrue from it. 2 Two Designs for a Figure Editor In this section we present two designs for the classic figure editor example [1]. The first is a traditional AOP modularization; the second, a design with XPIs. We evaluate the designs in terms of how well they manifest fundamental design concerns, abstract irrelevant details, and accommodate change. public aspect DisplayUpdate { pointcut FigureElementStateTransition(): call (* FigureElement+.set*(..)) call (* FigureElement+.moveBy(..)); after(figureelement f): FigureElementStateTransition(f) && target(f) { Display.update(f); '' ()*+,, -./0123!"#$%& < ; 67829: 2.1 A Traditional AO Design 67829:B8C9 45* Consider a simple figure editing tool for editing drawings comprising points and lines (figure elements), where each figure element is depicted on a display, and where the display always reflects the current states of figure elements. The FigureElement class provides an interface for the concrete subclasses, Point and Line. The Display class manages the display and provides a method, update(), to display the current states of all figure elements. The specification requires a call to update() whenever the abstract state of a figure element changes. The figure editing example has been used to introduce the ideas of crosscutting concerns, scattering and tangling, and how AOP addresses these issues. The crosscutting concern in this case is the policy that states when the abstract state of a FigureElement changes, the Display must be updated. Implementing this policy in an OO style leads to scattered update() calls throughout FigureElement subclass implementations, and the tangling of these calls into code concerned with FigureElement updating. The Observer pattern could be used to remove the explicit calls, but it still requires that event-related code be scattered and tangled in the FigureElement code and elsewhere. The approach has been criticized on the grounds that it requires that the author of the FigureElement code anticipate extensions. AOP provides an alternative that avoids the need for such preparation in support of display updating. The DisplayUpdate aspect, shown in Figure 1, satisfies the update specification. We implemented this aspect in the manner popularized in the research and practitioner literature on AOP. We studied the FigureElement code to find points where *) ( = 4( * A(*? Figure 1: A traditional display updating aspect and the resulting aspect-oriented design of figure editor. changes in FigureElement abstract state occur. We generalized and described this set of points in the form of a PCD, FigureElementStateTransition(), which captures calls to mutator methods of Line and Point and calls to moveby(), which moves a figure element by a certain offset. Figure 1 presents a UML model of this design. As is typical in straightforward AOP, the DisplayUpdate aspect depends on implementation details of the Point and Line classes. A more sophisticated AO design could remove these dependences. There are several reasons to be concerned about such a design. First, the Point and Line implementations had to be written before the aspect could be written, limiting the available parallelism in development. Second, the aspect implementor had to study the Point and Line implementations in order to be able to write the aspect (pointcut descriptors) correctly. The lack of an abstraction layer between the aspect and the advised code adds to the cognitive load on the aspect implementor. The aspect lets the FigureElement writer ignore display updating, but the aspect writer cannot ignore low-level details of FigureElement. Third, the correctness of the aspect depends on unstable details of the Point and Line implementations. The design is thus subject to be compromised by apparently innocuous changes in them. 3

6 2.2 An AO Design with XPIs By employing XPIs, the designer seeks to insulate aspects from the details of the code they advise, while constraining that code to expose certain behaviors in specified ways. In the process, important but previously submerged crosscutting concerns become manifest as XPIs in the program. In the figure editing case, an XPI will separate the DisplayUpdate aspect from FigureElement details. Our XPI reifies the concept a transition has occurred in the abstract state of a FigureElement. It provides simple PCDs by which aspects can advise all such actions without having to depend on the underlying source code, while constraining the system implementor to ensure that all abstract state changes (and only such state changes) are implemented in a way that matches the PCDs. The syntactic part of the XPI exposes two named PCDs, point() and toplevelpoint(). The PCD signature (name and parameters) constitute the abstract interface; the part of the PCD that matches points in the code is part of the hidden implementation of the XPI (see Figure 2). It is only here that dependences on details of the underlying code arise. We document the semantics informally in the following prose. The point() PCD exposes all FigureElement state transitions. 1 This abstraction is implemented, in a sense, by the pattern that matches calls to FigureElement mutators. The system designer is constrained to ensure that the PCD pattern matches all and only such FigureElement mutator calls and that state transitions occur only as a result of such calls. The toplevelpoint() PCD exposes all and only changes to the states of compound FigureElement objects (such as Line) but not changes to their component elements (namely Point). The semantics of XPIs can include behavioral constraints on aspects. In our example, we require that no advisor of this XPI cause a side-effect on a FigureElement object. This constraint in effect prohibits advice from calling FigureElement mutators either directly or indirectly. Like APIs, XPIs enable a degree of contract checking [7]. When included in the program s build, the aspect shown below the XPI in Figure 2 constrains developers to modify the internal state of a FigureElement from only within the FigureElement mutators. To a degree, it also ensures that the aspects using the XFigureElementChange XPI are not able to modify the abstract state of any FigureElement. The aspect cannot, however, verify the programmer s adherence to the naming requirements. Figure 3 presents a DisplayUpdate aspect using this public aspect XFigureElementChange { /* The purpose of the point() PCD is to expose all and only FigureElement abstract state transitions. We require that all such transitions be implemented by calls to FigureElement mutators with names that match the PCDs of this XPI, and we assume that any such call causes such a state transition. Advisors of this XPI may not change the state of any FigureElement directly or indirectly. The toplevelpoint() PCD exposes all and only "top level" transitions in the abstract states of compound FigureElement objects. public pointcut point(figureelement fe): target(fe) && (call(void FigureElement+.set*(..)) call(void FigureElement+.moveBy(..)) call(figureelement+.new(..))); public pointcut toplevelpoint(figureelement fe): point(fe) &&!cflowbelow(point(figureelement)); protected pointcut staticscope(): within(figureelement+); protected pointcut staticmethodscope(): withincode (void FigureElement+.set*(..)) withincode(void FigureElement+.moveBy(..)) withincode (FigureElement+.new(..)); /* Checks the contracts for the XFigureElementChange XPI. public aspect FigureElementChangeContract { /* PROVIDES: XPI matches all calls and only calls to FigureElement mutators declare error: (!XFigureElementChange.staticmethodscope() && set(int FigureElement+.*)): "Contract violation: must set FigureElement" + " field inside setter method!"; /* REQUIRES: advisers of this XPI must not change the abstract state of any FigureElement object private pointcut advisingxpi(): within(xfigureelementchange+) && adviceexecution(); before(): cflow(advisingxpi()) && XFigureElementChange.point(FigureElement) { ErrorHandling.signalFatal("Contract violation:" + " advisor of XFigureElementChange cannot" + " change FigureElement instances"); Figure 2: The XFigureElementChange XPI and separate contract-checking aspect. 1 We use the generic PCD name, point(), not to be confused with the Point class, as an analog of a generic run method name; the semantics are already suggested by the name of the containing XPI. 4

7 public aspect DisplayUpdate { after(): XFigureElementChange.topLevelPoint(FigureElement) { updatedisplay(); public void updatedisplay() { Display.update(); ( )*+, -./01234!"#$%&' = < +* ) K L 7893:;M9N: ( )*+, - H./01234IJ:/ >?@AB!CDE&' >?@AE!BF#"#G>!CDE&' 7893:; 56+ Figure 3: Display updating aspect using an XPI, and the resulting aspect-oriented design. XPI and the resulting UML model. The aspect now depends only on the abstract, public PCD signatures of XFigureElementChange, not on implementation details of the Point and Line classes. Classes Point and Line contribute to implementing the XFigureElementChange XPI by ensuring that method names match the given PCDs if and only if they have the specified change semantics. 3 Analysis of the Designs We now compare the designs in terms of abstraction and evolvability. As Kiczales and Mezini did [8], we first change public data members to private, forcing updates to occur through advisable method calls. We then extend FigureElement to include Color. The next section shows how adding a classic non-functional aspect, property enforcement, is facilitated by XPIs. 3.1 Data Member Access In our original design, the coordinates in the Point class were public, permitting this implementation of Line.moveBy(): public void moveby(int dx, int dy) { p1.x += dx; p1.y += dy; p2.x += dx; p2.y += dy; Making the fields private drives the Line.moveBy() designer to change to the implementation: public void moveby(int dx, int dy) { p1.moveby(dx, dy); p2.moveby(dx, dy); Now consider the DisplayUpdate aspect implemented without the XPI. When Line.moveBy() is invoked, the advice is invoked three times: once for the call to Line.moveBy() and once for each call to Point.moveBy() in the body of Line.moveBy(). The assumption by the aspect about Line s otherwise-hidden implementation was broken by the apparently innocuous change [9]. The XPI approach avoids such problems by establishing an interface in the form of design rules, where aspects can assume that the rules are followed, and code within the scope of the XPI is required to conform to its terms, and vice versa. It is important that XPIs have both syntax, in the form of convenient abstract PCDs, and semantics. Our XPI specifies that the PCD must match a join point if and only if it indicates a change in the abstract state of a FigureElement. Under this XPI, DisplayUpdate uses the provided convenient PCD (and promises not to inject changes into FigureElement), and the implementor of Line would implement Line.moveBy() so that it s join point is captured by the PCD. 3.2 Adding Color to Figure Elements The second change is behavioral, adding Color as a Line attribute with getter and setter methods, with the requirement that all observers of figure element update when a Line s color changes. In the non-xpi approach, one of two undesirable scenarios are required to ensure that the display updates properly. One, the Color implementer must be aware of the DisplayUpdating aspect and its PCD implementation to figure out how to name the Color setter method so the PCD will match it. Two, the aspect implementor must change the DisplayUpdating PCD to match whatever choice the Color implementor makes. With more aspects involved, these scenarios become less appealing. In the XPI case, the Color implementor need only be aware of the figure element state-change XPI and its constraint that a state can be changed only by a method named moveby or a name starting with set. The presence of an XPI thus guides the implementor in choosing names for methods and in making other decisions that can influence 5

8 PCD matching. In this case, the implementor must name the method something like setcolor, rather than change- Color; and merely doing so exposes color changes as abstract state changes through the XPI. To our knowledge, no prior work clearly guides programmers to design code for ease of advising. 4 Extending the New Design Adding a property and its implementation to a system is an important issue. We explore it in the context of XPIs by adding a feature that maintains a geometric invariant in the figure editor: Lines may not be degenerate. That is, the two points that define a line cannot have identical coordinates. Enforcing this invariant requires that no Line be degenerate when first created and that no change to a Point in a Line makes it degenerate. This is an instance of the more general problem of maintaining invariants for compound structures under changes to their respective parts. Note that invariant enforcement essentially changes the originally specified behavior of Points by conditioning the effects of a Point mutator on a Point s participation in a Line. Such a change could require broad changes in the software s implementation; the advantage of using an aspect is that the code changes can be localized to the aspect, even if their effects are not. With this observation in mind, we now argue that the use of XPIs, while not a panacea, can improve a designer s ability to express and use abstractions that both manage these complex effects and are central to designers thinking. We assume that the designer has decided to use an aspect module to implement the invariant enforcement. Since an appropriate XPI to write the aspect against does not already exist, we need to determine the domain abstraction for decoupling development of the aspect from development of the normal case, and then write that XPI. The behavioral abstraction we need is change to a Point that is part of a Line. Given this, the aspect can then implement the policy prevent changes to Points in Lines that would create any degeneracies. The precise invariant we seek for the given design is that a Line cannot have two end Points at the same coordinate. Modifying a Line by calling method Line.setP1(Point) or Line.setP2(Point) can violate this invariant. So can directly modifying the coordinates of a Point that belongs to a Line, without direct reference to the Line. However, a key concept absent from the original system is the relation between Points and Lines. For instance, there is no field in Point that stores a containing Line. A subtlety is that some Points are part of a Line, and public aspect PointLineRelation { private Line Point.parent; public boolean Point.partOfLine() { return parent!= null; public Line Point.getParent() { return parent; /* When a Line s Point is possibly set, reestablish the parent of the Line s Points. private pointcut changepoint(line l): target(l) && XFigureElementChange.point(FigureElement); before(line l): changepoint(l) { l.getp1().parent = null; l.getp2().parent = null; after(line l): changepoint(l) { l.getp1().parent = l; l.getp2().parent = l; Figure 4: The PointLineRelation aspect. some are not. 2 Thus, the first part of our solution creates a representation of a new Point-Line relation. We use an aspect to introduce a parent field into the Point, to record the Line to which a point belongs, if any (see Figure 4). The aspect uses the XFigureElementChange XPI, updating the parent field as appropriate when a Line is created or one of its Points replaced. Note that although this aspect updates the parents of Points, it does not violate the XFigureElementChange Requires contract because the parent is part of the hidden state of FigureElements. In keeping with this XPI, no setparent method is introduced, calls to which would inappropriately result in updating the Display. Figure 5 presents the XPI and resulting design. The XPointInLineChange XPI exposes three events on the end-points of a line: change in X coordinate, change in Y coordinate, and change in both coordinates. Having written this XPI, it is now straightforward to write an aspect for invariant enforcement (not shown): using around advice, it advises changes in Points that are in Lines and allows them to occur only if they preserve the invariant. The XPI abstracts changes to Points in Lines. The aspect separately abstracts the invariant and enforcement policy. This kind of separation is at the heart of our interface-oriented approach to AO design for improved modularity and abstraction. It permits reuse of the XPI 2 And in a real system, a point may be a part of many lines. 6

9 /* The X() PCD exposes changes to the x coordinate of any point that belongs to a line (similarly for Y() and XY(). public aspect XPointInLineChange { public pointcut X(Point p, int x): call(void Point+.setX(int)) && target(p) && args(x) && if(p.partofline()); public pointcut Y(Point p, int y): call(void Point+.setY(int)) && target(p) && args(y) && if(p.partofline()); public pointcut XY(Point p, int dx, int dy): call(void Point+.moveBy(int,int)) && target(p) && args(dx, dy) && if(p.partofline()); (( )*+, --./01234!"#$%&' = )*+, >?@ABC/ 789:;&' 789:<&' +)DE F +)DE F +)DE F E F E 6 5 Figure 5: The XPointInLineChange XPI and the resulting design. for implementing other aspects, and decouples those aspects from possible changes to the ways that Points and Lines may be modified. 5 Related Work Most work that aims to improve program modularity under the use of AO mechanisms focuses on language models and expressiveness, rather than on software design methodology. Two recent developments that address design more directly are relevant here. Join point scoping. Larochelle et al. proposed a PCD-based mechanism for hiding a crosscutting set of join points, thus preventing their being advised by aspects [10]. Dantas and Walker s AspectML provides advice access controls to the parameters of a function definition, hence modifying the join point signature of calls on the function [11]. The XPI approach does not provide a hiding mechanism, rather it specifies the exposure of given abstract execution phenomena. Combining these approaches might produce an interesting point in the space of design methods and supporting mechanisms. Aldrich, among others, has proposed language constructs and by implication a design method for module-based join point interfaces. Open Modules expose only PCD-selected join points on private state [9]. The Open Modules system provides for the exposure of join points such that a module state that is intended to be hidden cannot be advised. Simply, a module has to declare a pointcut in order to export join points on its private state. Thus, it permits the evolution of a module implementation without requiring rework of aspects. Because the resulting interface is limited to crosscutting the module s implementation, it would be at best awkward to capture the crosscutting concepts found in our HyperCast case study [2]. Aspect-aware interfaces. Kiczales and Mezini recognized the need to program against crosscutting interfaces. They defined a notion of aspect-aware interfaces (AAIs), in which aspects extend the interfaces of modules they advise [8]. Specifically, dependences of aspects on join points are computed for a system and are shown as annotations on the explicit interfaces of advised code. Revealing such dependences is an enabler of modular reasoning and change. A programmer can see how join points are being advised and avoid making changes that invalidate those uses. Prior to the emergence of stable modular interfaces (for example in XP-style development [12]), AAIs can serve as a valuable substitute they inform, even if they do not decouple and abstract. Likewise, the cross-references provided by AAIs could prove useful in guiding refactoring activities, perhaps resulting in XPIs. Yet, AAIs do not clearly manifest conceptual design concerns. There is no textually distinct interface construct, but instead a set of annotations. There is no construct for attaching contracts or programming against. Also, support for modularity is limited. The display of existing dependences between existing code and PCDs cannot tell developers how to shape new code to correctly expose behaviors to existing PCDs, nor how to write new PCDs to capture the desired behaviors of existing code. 7

10 6 Conclusion The XPI approach decouples aspect code from the unstable details of advised code without compromising the expressiveness of existing AO languages or requiring new ones. By extending well-understood notions of module interfaces to crosscutting interfaces, it provides a principled alternative to the concept of oblivious design. In our discussions with best-practice AO programmers, we have found that some indeed design and develop in stylized ways that are consistent with the XPI approach. It thus has the potential to ground, regularize, and disseminate best software engineering practices using the new mechanisms provided by AO programming languages. Our experience to date with XPIs is limited to two systems, HyperCast [2] and figure element. We expect that IDE support could aid programmers by showing the scope of an XPI s applicability. Being non-hierarchical, XPIs could overlap, but we have not seen this possibly complex interaction. We have yet to investigate the promise of XPIs for AO languages with different mechanisms than AspectJ s. References [1] G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of AspectJ. In 15th European Conference on Object- Oriented Programming (ECOOP 2001), pages , June [6] D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12): , [7] Bertrand Meyer. Applying design by contract. Computer, 25(10):40 51, [8] Gregor Kiczales and Mira Mezini. Aspect-oriented programming and modular reasoning. In ICSE 05: Proceedings of the 27th international conference on software engineering, [9] Jonathan Aldrich. Open modules: Modular reasoning about advice. In 2005 European Conference on Object-Oriented Programming (ECOOP 05), page To Appear, July [10] David Larochelle, Karl Scheidt, Kevin Sullivan, Yuan Wei, Joel Winstead, and Anthony Wood. Join point encapsulation. In In Workshop on Softwareengineering Properties of Languages for Aspect Technologies (SPLAT) at AOSD 2003, March [11] Daniel S. Dantas and David Walker. Aspects, information hiding and modularity. Technical Report TR , Princeton University, November [12] K. Beck. Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading, MA, [2] Kevin J. Sullivan, William G. Griswold, Yuanyuan Song, Yuanfang Cai, Macneil Shonle, Nishit Tewari, and Hridesh Rajan. Information hiding interfaces for aspect-oriented design. In ESEC/FSE 2005, page To Appear, [3] Jorg Liebeherr and Tyler K. Beam. Hypercast: A protocol for maintaining multicast group members in a logical hypercube topology. In Networked Group Communication, pages 72 89, [4] Robert E. Filman and Daniel P. Friedman. Aspectoriented programming is quantification and obliviousness. In Aspect-Oriented Software Development, pages Addison-Wesley, [5] C. Y. Baldwin and K. B. Clark. Design Rules: The Power of Modularity. MIT Press, Cambridge, MA,

aspect-oriented programming Modular Software Design with Crosscutting Interfaces

aspect-oriented programming Modular Software Design with Crosscutting Interfaces focus aspect-oriented programming Modular Software Design with Crosscutting Interfaces William G. Griswold and Macneil Shonle, University of California, San Diego Kevin Sullivan, Yuanyuan Song, Nishit

More information

aspect-oriented programming Modular Software Design with Crosscutting Interfaces

aspect-oriented programming Modular Software Design with Crosscutting Interfaces focus aspect-oriented programming Modular Software Design with Crosscutting Interfaces William G. Griswold and Macneil Shonle, University of California, San Diego Kevin Sullivan, Yuanyuan Song, Nishit

More information

Modular Aspect-Oriented Design with XPIs

Modular Aspect-Oriented Design with XPIs Modular Aspect-Oriented Design with XPIs KEVIN SULLIVAN University of Virginia, Charlottesville WILLIAM G. GRISWOLD University of California, San Diego HRIDESH RAJAN Iowa State University, Ames YUANYUAN

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

Open Modules: Reconciling Extensibility and Information Hiding

Open Modules: Reconciling Extensibility and Information Hiding Open Modules: Reconciling Extensibility and Information Hiding Jonathan Aldrich School of Computer Science Carnegie Mellon University 5000 Forbes Avenue Pittsburgh, PA 15213, USA jonathan.aldrich@cs.cmu.edu

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

Language Features for Software Evolution and Aspect-Oriented Interfaces: An Exploratory Study

Language Features for Software Evolution and Aspect-Oriented Interfaces: An Exploratory Study Computer Science Publications Computer Science 2013 Language Features for Software Evolution and Aspect-Oriented Interfaces: An Exploratory Study Robert Dyer Iowa State University Hridesh Rajan Iowa State

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

A Brief Introduction to Aspect-Oriented Programming. Historical View Of Languages. Procedural language Functional language Object-Oriented language

A Brief Introduction to Aspect-Oriented Programming. Historical View Of Languages. Procedural language Functional language Object-Oriented language A Brief Introduction to Aspect-Oriented Programming Historical View Of Languages Procedural language Functional language Object-Oriented language 1 Acknowledgements Zhenxiao Yang Gregor Kiczales Procedural

More information

A Brief Introduction to Aspect-Oriented Programming" Historical View Of Languages"

A Brief Introduction to Aspect-Oriented Programming Historical View Of Languages A Brief Introduction to Aspect-Oriented Programming" Historical View Of Languages" Procedural language" Functional language" Object-Oriented language" 1 Acknowledgements" Zhenxiao Yang" Gregor Kiczales"

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

Information Hiding and Aspect-Oriented Modeling

Information Hiding and Aspect-Oriented Modeling Information Hiding and Aspect-Oriented Modeling Wisam Al Abed and Jörg Kienzle School of Computer Science, McGill University Montreal, QC H3A2A7, Canada Wisam.Alabed@mail.mcgill.ca, Joerg.Kienzle@mcgill.ca

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

AspectScope: An Outline Viewer for AspectJ Programs

AspectScope: An Outline Viewer for AspectJ Programs Vol. 6, No. 9, 2007 AspectScope: An Outline Viewer for AspectJ Programs Michihiro Horie, Tokyo Institute of Technology, Japan Shigeru Chiba, Tokyo Institute of Technology, Japan This paper presents the

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

Enhancing Base-code Protection in Aspect-Oriented Programs

Enhancing Base-code Protection in Aspect-Oriented Programs Enhancing Base-code Protection in Aspect-Oriented Programs Mohamed ElBendary University of Wisconsin-Milwaukee Milwaukee, WI 53211 mbendary@cs.uwm.edu John Boyland University of Wisconsin-Milwaukee Milwaukee,

More information

Evolving mutation from objects to the cloud

Evolving mutation from objects to the cloud Evolving mutation from objects to the cloud MUTATION workshop, Berlin, March 2011 Benoit Baudry 1 Outline A perspective on testing in evolving software construction paradigms A methodological pattern:

More information

Information Hiding Interfaces for Aspect-Oriented Design

Information Hiding Interfaces for Aspect-Oriented Design Information Hiding Interfaces for Aspect-Oriented Design Kevin Sullivan φ William G Griswold λ Yuanyuan Song φ Yuanfang Cai φ Macneil Shonle λ Nishit Tewari φ Hridesh Rajan φ φ Computer Science University

More information

An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces

An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces An Exploratory Study of the Design Impact of Language Features for Aspect-oriented Interfaces Robert Dyer Hridesh Rajan Iowa State University {rdyer,hridesh}@iastate.edu Yuanfang Cai Drexel 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

Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming

Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming Jonathan Aldrich Institute for Software Research, International Carnegie Mellon University 5000 Forbes Avenue Pittsburgh, PA

More information

A Preliminary Study of Quantified, Typed Events

A Preliminary Study of Quantified, Typed Events A Preliminary Study of Quantified, Typed Events Robert Dyer 1 Mehdi Bagherzadeh 1 Hridesh Rajan 1 Yuanfang Cai 2 1 Computer Science - Iowa State University 2 Computer Science - Drexel University {rdyer,mbagherz,hridesh}@csiastateedu

More information

Introduction to Aspect-Oriented Programming

Introduction to Aspect-Oriented Programming Introduction to Aspect-Oriented Programming LÁSZLÓ LENGYEL, TIHAMÉR LEVENDOVSZKY {lengyel, tihamer}@aut.bme.hu Reviewed Key words: aspect-oriented programming (AOP), crosscutting concerns Aspect-oriented

More information

Modularizing Web Services Management with AOP

Modularizing Web Services Management with AOP Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, Bart.Verheecke@vub.ac.be System and Software Engineering Lab Vrije Universiteit Brussel 1. Introduction

More information

Open Modules: Modular Reasoning in Aspect-Oriented Programming

Open Modules: Modular Reasoning in Aspect-Oriented Programming Open Modules: Modular Reasoning in Aspect-Oriented Programming Jonathan Aldrich School of Computer Science Carnegie Mellon University 5000 Forbes Avenue Pittsburgh, PA 15213, USA jonathan.aldrich@cs.cmu.edu

More information

Between Source Code Structure and Design Structure

Between Source Code Structure and Design Structure Between Source Code Structure and Design Structure Yuanfang Cai and Yuanyuan Song and Kevin Sullivan University of Virginia, Charlottesville, VA, 22904-4740, USA Abstract. The design structure matrix (DSM)

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

Lecture 16 & 17. Crosscutting Concerns N-dimensional separation of concerns, AspectJ, Mixin, Concern Graph, etc.

Lecture 16 & 17. Crosscutting Concerns N-dimensional separation of concerns, AspectJ, Mixin, Concern Graph, etc. Lecture 16 & 17 Crosscutting Concerns N-dimensional separation of concerns, AspectJ, Mixin, Concern Graph, etc. Spring 2009 EE 382V Software Evolution, Instructor Miryung Kim This week s Agenda Presentations:

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

Meta-Program and Meta-Programming

Meta-Program and Meta-Programming Meta-Program and Meta-Programming What is a Meta-Programming? The creation of procedures and programs that automatically construct the definitions of other procedures and programs. First example the Turing

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

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

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

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

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

Open Modules: Modular Reasoning about Advice

Open Modules: Modular Reasoning about Advice Open Modules: Modular Reasoning about Advice Jonathan Aldrich December 2004 CMU-ISRI-04-141 Institute for Software Research International School of Computer Science Carnegie Mellon University 5000 Forbes

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

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

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

HOW AND WHEN TO FLATTEN JAVA CLASSES?

HOW AND WHEN TO FLATTEN JAVA CLASSES? HOW AND WHEN TO FLATTEN JAVA CLASSES? Jehad Al Dallal Department of Information Science, P.O. Box 5969, Safat 13060, Kuwait ABSTRACT Improving modularity and reusability are two key objectives in object-oriented

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

Refactoring Aspect Oriented Software

Refactoring Aspect Oriented Software Refactoring Aspect Oriented Software Jochem Rutgers rutgers@ewi.utwente.nl ABSTRACT Existing refactoring methods are able to rewrite object-oriented code to better object-oriented code or to aspect-oriented

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

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

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

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development INTRODUCING API DESIGN PRINCIPLES IN CS2 Jaime Niño Computer Science, University of New Orleans New Orleans, LA 70148 504-280-7362 jaime@cs.uno.edu ABSTRACT CS2 provides a great opportunity to teach an

More information

Designing Loop Condition Constraint Model for Join Point Designation Diagrams (JPDDs)

Designing Loop Condition Constraint Model for Join Point Designation Diagrams (JPDDs) Designing Loop Condition Constraint Model for Join Point Designation Diagrams (JPDDs) Bahram Zarrin Master Student Bahram.zarrin@gmail.com Rodziah Atan Doctor rodziah@fsktm.upm.edu.my Muhammad Taufik Abdullah

More information

Model Composition Directives

Model Composition Directives Model Composition Directives Greg Straw, Geri Georg, Eunjee Song, Sudipto Ghosh, Robert France, and James M. Bieman Department of Computer Science Colorado State University, Fort Collins, CO, 80523 {straw,

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

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

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

Supporting Documentation and Evolution of Crosscutting Concerns in Business Processes

Supporting Documentation and Evolution of Crosscutting Concerns in Business Processes Supporting Documentation and Evolution of Crosscutting Concerns in Business Processes Chiara Di Francescomarino supervised by Paolo Tonella dfmchiara@fbk.eu - Fondazione Bruno Kessler, Trento, Italy Abstract.

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

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

DISCUSSING ASPECTS OF AOP

DISCUSSING ASPECTS OF AOP a DISCUSSING ASPECTS OF AOP How would you define AOP? Gregor Kiczales: Aspect-oriented programming is a new evolution in the line of technology for separation of concerns technology that allows design

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

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

Modeling Aspect-Oriented Change Realizations

Modeling Aspect-Oriented Change Realizations Modeling Aspect-Oriented Change Realizations Erasmus Mobility at Lancaster University Lecture 1 Valentino Vranić Institute of Informatics and Software Engineering Faculty of Informatics and Information

More information

Aspect Design Pattern for Non Functional Requirements

Aspect Design Pattern for Non Functional Requirements Aspect Design Pattern for Non Functional Requirements FAZAL-E-AMIN¹, ANSAR SIDDIQ², HAFIZ FAROOQ AHMAD³ ¹ ²International Islamic University Islamabad, Pakistan ³NUST Institute of Information Technology,

More information

Obliviousness, Modular Reasoning, and the Behavioral Subtyping Analogy

Obliviousness, Modular Reasoning, and the Behavioral Subtyping Analogy Obliviousness, Modular Reasoning, and the Behavioral Subtyping Analogy Curtis Clifton and Gary T. Leavens TR #03-01a January 2003, Revised March 2003 Keywords: Spectators, assistants, aspect-oriented programming,

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2005 Vol. 4, No. 3 Special issue: 6th GPCE Young Researchers Workshop 2004 Feature

More information

Aspect-Oriented Programming and AspectJ

Aspect-Oriented Programming and AspectJ What is Aspect-Oriented Programming? Many possible answers: a fad Aspect-Oriented Programming and AspectJ Aspect-oriented programming is a common buzzword lately Papers from ECOOP 1997 (early overview

More information

Style-specific techniques to design product-line architectures

Style-specific techniques to design product-line architectures Style-specific techniques to design product-line architectures Philippe Lalanda Thomson-CSF Corporate Research Laboratory Phone: 33 1 69 33 92 90 Email: lalanda@thomson-lcr.fr Domaine de Corbeville 91404

More information

Aspect-Oriented Programming and Modular Reasoning

Aspect-Oriented Programming and Modular Reasoning Copyright 2004 Gregor Kiczales, Mira Mezini. All rights reserved. 1 Aspect-Oriented Programming and Modular Reasoning Gregor Kiczales University of British Columbia gregork@acm.org Mira Mezini Technische

More information

Pattern Transformation for Two-Dimensional Separation of Concerns

Pattern Transformation for Two-Dimensional Separation of Concerns Transformation for Two-Dimensional Separation of Concerns Xiaoqing Wu, Barrett R. Bryant and Jeff Gray Department of Computer and Information Sciences The University of Alabama at Birmingham Birmingham,

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

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 College of Computer & Information Science Northeastern University, 360 Huntington Avenue Boston, Massachusetts 02115 USA chadwick@ccs.neu.edu

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

Aspect-Oriented Programming and Modular Reasoning

Aspect-Oriented Programming and Modular Reasoning Aspect-Oriented Programming and Modular Reasoning Gregor Kiczales University of British Columbia 2366 Main Mall Vancouver, BC, Canada gregork@acm.org Mira Mezini Technische Universität Darmstadt Hochschulstrasse

More information

Container Services for High Confidence Software

Container Services for High Confidence Software Container Services for High Confidence Software Gary J. Vecellio, William M. Thomas, and Robert M. Sanders The MITRE Corporation 7515 Colshire Drive McLean, VA 22102-7508 {vecellio,bthomas,rsanders}@mitre.org

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

c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco

c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco do Prado, Luiz Carlos Zancanella. Permission is granted

More information

Statement Annotations for Fine-Grained Advising

Statement Annotations for Fine-Grained Advising Statement Annotations for Fine-Grained Advising Marc Eaddy Alfred Aho Department of Computer Science Columbia University New York, NY 10027 {eaddy,aho@cs.columbia.edu ABSTRACT AspectJ-like languages are

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

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

Preserving Separation of Concerns through Compilation

Preserving Separation of Concerns through Compilation Preserving Separation of Concerns through Compilation A Position Paper Hridesh Rajan Robert Dyer Youssef Hanna Dept. of Computer Science Harish Narayanappa Iowa State University Ames, IA 50010 {hridesh,

More information

Chapter 5 Object-Oriented Programming

Chapter 5 Object-Oriented Programming Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares

More information

Object-Oriented Programming

Object-Oriented Programming Object-Oriented Programming 3/18/14 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Object-Oriented

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

Analyzing effect of Aspect Oriented concepts in design and implementation of design patterns with case study of Observer Pattern

Analyzing effect of Aspect Oriented concepts in design and implementation of design patterns with case study of Observer Pattern Analyzing effect of Aspect Oriented concepts in design and implementation of design patterns with case study of Observer Pattern Deepali A. Bhanage 1, Sachin D. Babar 2 Sinhgad Institute of Technology,

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

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

Refactoring of Aspect-Oriented Software

Refactoring of Aspect-Oriented Software Refactoring of Aspect-Oriented Software Stefan Hanenberg, Christian Oberschulte, Rainer Unland University of Duisburg-Essen, Institute for Computer Science and Business Information Systems (ICB) 45127

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

Introduction to Aspect-Oriented Programming

Introduction to Aspect-Oriented Programming Introduction to Aspect-Oriented Programming Martin Giese Chalmers University of Technology Göteborg, Sweden AOP Course 2003 p.1/44 AspectJ Quick Tour AOP Course 2003 p.2/44 Reminder: Join Points A join

More information

Definition and Documentation of Software Architectures David M. Weiss, David Lorge Parnas. Abstract

Definition and Documentation of Software Architectures David M. Weiss, David Lorge Parnas. Abstract Definition and Documentation of Software Architectures David M. Weiss, David Lorge Parnas Abstract This paper discusses the work of the software architect by describing a software architect s concerns

More information

Self-checking software insert specifications about the intent of a system

Self-checking software insert specifications about the intent of a system Assertions Reading assignment A. J. Offutt, A Practical System for Mutation Testing: Help for the Common Programmer, Proceedings of the 12th International Conference on Testing Computer Software, Washington,

More information

Behavioral Design Patterns Used in Data Structures Implementation

Behavioral Design Patterns Used in Data Structures Implementation Behavioral Design Patterns Used in Data Structures Implementation Niculescu Virginia Department of Computer Science Babeş-Bolyai University, Cluj-Napoca email address: vniculescu@cs.ubbcluj.ro November,

More information

AOSD Explained: ASPECT-ORIENTED SYSTEM DEVELOPMENT

AOSD Explained: ASPECT-ORIENTED SYSTEM DEVELOPMENT Explained: ASPECT-ORIENTED SYSTEM DEVELOPMENT Background & Implications Professor Emeritus Birkbeck College 1 AOSD - Background AOSD - Aspect-Oriented Software Development, AOSD - Aspect-Oriented System

More information

Using Aspect-Oriented Programming to extend Protégé. Henrik Eriksson Linköping University

Using Aspect-Oriented Programming to extend Protégé. Henrik Eriksson Linköping University Using Aspect-Oriented Programming to extend Protégé Henrik Eriksson Linköping University Questions about MOP and Protégé Original goal: Extending the JessTab plug-in What is the class precedence in Protégé?

More information

Teaching Encapsulation and Modularity in Object-Oriented Languages with Access Graphs

Teaching Encapsulation and Modularity in Object-Oriented Languages with Access Graphs Teaching Encapsulation and Modularity in Object-Oriented Languages with Access Graphs Gilles Ardourel, Marianne Huchard To cite this version: Gilles Ardourel, Marianne Huchard. Teaching Encapsulation and

More information

Modularity: what, why and how

Modularity: what, why and how Modularity: what, why and how Stephen Kell Stephen.Kell@cl.cam.ac.uk Computer Laboratory University of Cambridge Modularity... p.1/33 Some problematic code Imagine implementing a syntax tree evaluator.

More information

Evolution Support by Homogeneously Documenting Patterns, Aspects and Traces

Evolution Support by Homogeneously Documenting Patterns, Aspects and Traces Evolution Support by Homogeneously Documenting Patterns, Aspects and Traces Johannes Sametinger Johannes Kepler University Linz, Austria sametinger@acm.org Matthias Riebisch Technical University of Ilmenau,

More information

1 Executive Overview The Benefits and Objectives of BPDM

1 Executive Overview The Benefits and Objectives of BPDM 1 Executive Overview The Benefits and Objectives of BPDM This is an excerpt from the Final Submission BPDM document posted to OMG members on November 13 th 2006. The full version of the specification will

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

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

Component-Based Software Engineering TIP

Component-Based Software Engineering TIP Component-Based Software Engineering TIP X LIU, School of Computing, Napier University This chapter will present a complete picture of how to develop software systems with components and system integration.

More information

Motivation. Ability is what you're capable of doing. Motivation determines what you do. Attitude determines how well you do it.

Motivation. Ability is what you're capable of doing. Motivation determines what you do. Attitude determines how well you do it. Aspects in AspectJ Motivation Aspect Oriented Programming: a brief introduction to terminology Installation Experimentation AspectJ some details AspectJ things you should know about but we dont have time

More information

Modeling Aspects using Software Stability and UML

Modeling Aspects using Software Stability and UML Modeling Aspects using Software Stability and UML M.E. Fayad Computer Engineering Department San Jose State University One Washington Square San Jose, CA 9592-080 Ph: 408-924-7364 Fax: 408-924-453 Email:

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