|
Table of Contents
IntroductionThe implicit invocation mechanism of AOP introduces an additional layer of complexity in the construction of a system. This can make it harder to understand how base system and aspects interact and thus how the system will behave. For example, when writing pointcut definitions, it is not always clear for a developer where the aspect will intervene in the base code. This can then lead to situations where the pointcut either captures too many join points (false positives), or where certain join points that were intended to be captured, are not (false negatives). One variant of this problem is the so-called fragile pointcut problem. AspectMaps is a software visualization tool built to aid the understanding of aspect-oriented software systems. It provides a scalable visualization of implicit invocation. AspectMaps visualizes selected join point shadows (a.k.a. shadow points): locations in the source code that at run-time produce a join point. AspectMaps visualizes the shadow points where an aspect will execute, and if multiple aspects will execute, the order in which they are specified to run. This results in a visualization that clearly shows how aspects cross-cut the base code, as well as how they interact at each join point. AspectMaps is a scalable visualization mainly due to its use of selective structural zooming. The structure of source code is shown at different levels of granularity, as specified by the user. ScreencastsThe AspectMaps structural zoom Remaining major features of the AspectMaps UI Visualizing Join Point Shadows with AspectMaps Note: as AspectMaps is in continuous development, some of the features shown in the above screencasts may have undergone changes. ScreenshotBelow we show the SpaceWar example (that is part of AJDT), fully zoomed in on all join point shadows except for the dark blue Debug aspect.
For a quick comparison between visualizations, below we show both the AspectMaps as well as the AJDT visualization of the same example. Code and MoreThe aspect-related data that is displayed in AspectMaps is generated by an Eclipse plugin called XCut Report, the base-code related data is extracted from the Eclipse model of the code. We implemented XCut Report, a recent version of the entire Eclipse project for XCut Report is found here: xcutreport.1.1.zip. AspectMaps is implemented in Pharo Smalltalk, using the MOOSE platform for software and data analysis. The code is open source and available at SqueakSource under the MIT license (see below). We are planning to make a one-click executable available RSN. The AspectMaps technical report TR/DCC-2010-2 discusses a preliminary version of AspectMaps, a newer version has been submitted to AOSD 2011. As part of the AOSD 2011 paper submission, we include here the complete results of the user study. Results were originally processed in the Numbers application of iWork, exported here as excel file for compatibility, which caused some formulas to be replaced with their values. userstudy.xls Feel free to contact Johan for more information and/or an up-to-date version of the code of XCut report. LicenseAspectMaps is available under the MIT License Copyright © 2010 Johan Fabry, Simon Denier, Andy Kellens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |