{'fraction_non_alphanumeric': 0.015591397849462365, 'fraction_numerical': 0.0, 'mean_word_length': 4.797507788161994, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
An Aspect-Aware Outline Viewer

An aspect-oriented programming (AOP) is for modularising a crosscutting concern so that it can be easily attached and detached to/from software. Because of this functionality, AOP is one of key technologies for enabling evolvable software. However, critics have been mentioning that AOP makes modular reasoning difficult since join points where an aspect and an object are connected to each other tend to spread over a whole program. Developers often have a problem finding join points specified by pointcut definitions in an aspect. To help developers, a tool such as AJDT has been developed. For better modular reasoning in AOP, this paper presents a new interpretation of AOP, in which an aspect is an extension to an existing module but the extension may be effective only when the module is accessed from specific accessor modules. This interpretation should let developers consider an aspect is just an extension in the same sense that a subclass extends a super class and override some methods. Thus developers would be able to think that each module has an external interface and the internal implementation of the module is never directly accessed by other modules including an aspect. To support AOP according to this interpretation, we have developed an Eclipse plugin. It is a programming tool for AspectJ and it shows an outline view of a class woven with an aspect. It presents how each method is extended by showing javadoc comments taken from the definitions of the class and the aspect. This tool gives developers a totally different illustration of AOP programs from AJDT, which is a standard programming tool for AspectJ. AJDT mainly shows the locations of join points (or join point shadows) selected by pointcuts. In other words, it only illustrates where an aspect and an object is connected to each other.