115 research outputs found

    A Systematic Aspect-Oriented Refactoring and Testing Strategy, and its Application to JHotDraw

    Full text link
    Aspect oriented programming aims at achieving better modularization for a system's crosscutting concerns in order to improve its key quality attributes, such as evolvability and reusability. Consequently, the adoption of aspect-oriented techniques in existing (legacy) software systems is of interest to remediate software aging. The refactoring of existing systems to employ aspect-orientation will be considerably eased by a systematic approach that will ensure a safe and consistent migration. In this paper, we propose a refactoring and testing strategy that supports such an approach and consider issues of behavior conservation and (incremental) integration of the aspect-oriented solution with the original system. The strategy is applied to the JHotDraw open source project and illustrated on a group of selected concerns. Finally, we abstract from the case study and present a number of generic refactorings which contribute to an incremental aspect-oriented refactoring process and associate particular types of crosscutting concerns to the model and features of the employed aspect language. The contributions of this paper are both in the area of supporting migration towards aspect-oriented solutions and supporting the development of aspect languages that are better suited for such migrations.Comment: 25 page

    A qualitative assessment of modularity in CaesarJ components based on implementations of design patterns

    Get PDF
    Tese de Mestrado em Engenharia InformáticaThe advent of the Aspect-Oriented Programming (AOP) paradigm brought new features and mechanisms to support the separation of crosscutting concerns, in order to develop programs with higher modularity and consequently, higher reuse. As the paradigm matures, various aspectoriented programming languages appeared that propose varying ways to realize the paradigm’s concepts. CaesarJ is one of those aspect-oriented languages. While the majority of practical studies on AOP languages focused on the AspectJ language, the characteristics of other languages such as CaesarJ remain to be explored. The lack of research on the utilization of CaesarJ in concrete cases leads to the existence of few case studies from which to draw considerations about their strengths and shortcomings. In the past, implementations of design patterns have been used for the demonstration of the characteristics of the programming languages used to implement them. This dissertation follows a similar approach to assess CaesarJ’s support for modularity and reuse by producing CaesarJ design patterns implementations and subjecting those implementations to a qualitative analysis. This dissertation presents CaesarJ implementations of eleven Gang-of-Four pattern that serve as the basis for a qualitative analysis of the modularity degree CaesarJ enables for each pattern. A distinction is made between four levels of module reuse that the implementations support, in order to differentiate between the several levels of reuse achieved. A comparison is drawn to analogue design pattern implementations in AspectJ. Finally, general guidelines for the implementation of CaesarJ components are described

    FlashLight: A Dynamic Detector of Shared State, Race Conditions, and Locking Models in Concurrent Java Programs

    Get PDF
    Concurrent Java programs are difficult to understand and implement correctly. This difficultly leads to code faults that are the source of many real-world reliability and security problems. Many factors contribute to concurrency faults in Java code; for example, programmers may not understand Java language semantics or, when using a Java library or framework, may not understand that their resulting program is concurrent. This thesis describes a dynamic analysis tool, named FlashLight, that detects shared state and possible race conditions within a program. FlashLight illuminates the concurrency within a program for programmers who are wholly or partially in the dark about their software\u27s concurrency. FlashLight also works in concert with the Fluid assurance tool to propose Greenhouse-style lock policy models based on a program\u27s observed locking behavior. After review by a programmer to ensure reasonableness, these models can be verified by the Fluid assurance tool. The author\u27s combination of a dynamic tool with a program verification system focused on concurrency fault detection and repair is the primary contribution of this research. He applied FlashLight to several concurrent Java programs, including a large commercial web application server. His case study experiences induced him to improve FlashLight to do the following: (1) allow the programmer to specify interesting time quantums (e.g., this is the start-up phase of the program), and (2) support the common Java programming idiom of not locking shared state during object construction. Both improvements help to reduce false positives. FlashLight introduces an overhead of roughly 1.7 times the original execution time of the program. The most significant limitation of FlashLight is that it is not fully integrated into the Fluid assurance tool with respect to the user experience

    A comparison of Jiazzi and AspectJ for feature-wise decomposition

    Get PDF
    technical reportFeature-wise decomposition is an important approach to building configurable software systems. Although there has been research on the usefulness of particular tools for featurewise decomposition, there are not many informative comparisons on the relative effectiveness of different tools. In this paper, we compare AspectJ and Jiazzi, which are two different systems for decomposing Java programs. AspectJ is an aspect-oriented extension to Java, whereas Jiazzi is a component system for Java. To compare these systems, we reimplemented an AspectJ implementation of a highly configurable CORBA Event Service using Jiazzi. Our experience is that Jiazzi provides better support for structuring the system and manipulating features, while AspectJ is more suitable for manipulating existing Java code in non-invasive and unanticipated ways

    Early aspects: aspect-oriented requirements engineering and architecture design

    Get PDF
    This paper reports on the third Early Aspects: Aspect-Oriented Requirements Engineering and Architecture Design Workshop, which has been held in Lancaster, UK, on March 21, 2004. The workshop included a presentation session and working sessions in which the particular topics on early aspects were discussed. The primary goal of the workshop was to focus on challenges to defining methodical software development processes for aspects from early on in the software life cycle and explore the potential of proposed methods and techniques to scale up to industrial applications

    Aspect-oriented refactoring of Java programs

    Get PDF
    corecore