Section 23.3. INSIGHTS FROM COMBINED ANALYSIS


23.3. INSIGHTS FROM COMBINED ANALYSIS

Combined analysis of the results of both the debugging and change experiments provides two key insights into characteristics of aspect-oriented programming that may significantly affect the usefulness and usability of the approach.

23.3.1. AspectCore Interface Matters

Separating concepts into different pieces of code does not imply independence of those code snippets. Interaction between the separate pieces is needed to create the behavior of the system. In this discussion, we refer to the boundary between code expressed as an aspect and the functionally-decomposed core code as an aspectcore interface.

Our participants noted the effect of the aspectcore interfaces on the tasks that they performed. For the most part, the AspectJ participants found that the effect of the Cool code on the JCore code had a welldefined scope: We refer to this as a narrow aspectcore interface. The narrow aspectcore interface allowed participants to understand the Cool code without inferring or analyzing extensive parts of the core code. Figure 23-4 illustrates the typical analysis necessary; only those methods explicitly mentioned within the coordinator are affected by its synchronization specifications.

Figure 23-4. Localized Semantic Analysis with Cool.


The AspectJ participants in the second experiment had more difficulties with the aspectcore interface between Ridl and JCore. This interface is wider, meaning it is necessary to look at both the aspect code and large chunks of the core code to understand the aspect code. Figure 23-5 illustrates this point. Because Ridl alters the nature of the data being transferred, the potential impact of the remote interface specification extends beyond the method explicitly mentioned therein to include the transitive closure of methods using that method. An extensive analysis is required to ensure that constraints in place within the core code are not violated by the remote interface. As one participant noted,

Figure 23-5. Non-localized Semantic Analysis with Ridl.


JCore and Ridl interact more than I would like . . . you can't ignore JCore code in your Ridl semantics. . . . I was very often looking at the JCore implementation so that I could decide what was wise to do in Ridl.

AspectJ Participant 3

The partial separation provided by Ridl may have actually hindered the performance of the change tasks by the AspectJ participants. Partial separation should thus not be considered to necessarily bring partial benefit.

By paying careful attention to the design of aspectcore interfaces, builders of aspect-oriented programming environments may be able to help a programmer focus more easily on code relating to a task, aiding the programmer's ability to complete some tasks. Tool support, such as an impact analyzer, might also help a programmer cope with different kinds of aspectcore interfaces. We have provided a high-level definition of the concept of an aspectcore interface; more work is required to refine and characterize this interface.

23.3.2. Aspects May Alter Task Strategies

All AspectJ participants tended to first consider the aspect files for solutions to perceived coordination or data transfer problems. In the debugging experiments, this strategy was successful, since all of the solutions were solely programmed in the Cool files. However, in the change experiment, it was necessary to understand, and sometimes change, files containing core functionality to complete an assigned task.

As we discussed earlier, the AspectJ participants in the change experiment typically commenced coding much earlier in a task, and spent more time coding overall, compared to the participants in the control group. We observed that the participants initially assumed they could solve the data-transfer problems by looking at and massaging the Ridl files. This presumption may have distracted the participants from analyzing the core functionality code to the extent that was necessary for the task.

The presence of aspect code, then, may alter the strategies programmers use to approach a task. Specifically, programmers may try to tackle problems first in the aspect code, which may be shorter and simpler, rather than gaining a suitable knowledge of both the core functional and aspect code. This behavior alteration could affect the initial usability, and acceptance, of an aspect-oriented programming approach. It also indicates that programmers may have difficulty in performing tasks perceived to be associated with aspect code when the aspect code does not suitably encapsulate a concern. Longer-running studies where programmers are able to gain more experience with aspect-oriented approaches are needed to further investigate this second point.



Aspect-Oriented Software Development
Aspect-Oriented Software Development with Use Cases
ISBN: 0321268881
EAN: 2147483647
Year: 2003
Pages: 307

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net