Section 23.5. RELATED WORK


23.5. RELATED WORK

Our work in evaluating how the structuring of aspects impacts programming tasks continues a line of inquiry that began with the introduction of structured programming and data abstraction techniques. Curtis and colleagues [5] synthesized two themes from this body of work that considered the effect of control structures and data structures on programming tasks: "structuring the control flow assists programmers in understanding a program" [p. 1095], and "data structuring capability and data structure documentation may be strong determinants of programming performance" [p. 1096].

Aspect-oriented programming builds on this earlier structuring work providing increased support for modularizing the code. Fewer studies have been conducted on the impact of modularity choices on programming tasks.

Rombach reports on controlled experiments that compared the ease of maintaining systems developed in the LADY distributed system language with similar systems implemented in an extended version of Pascal [19]. These experiments showed that the additional structuring information available in the LADY implementations aided the isolation of program faults, and that less rework was required in requirements, design, and coding when adding a new feature. Although the kind of additional structuring provided in AspectJ is different in LADYLADY provides support for hierarchical structuring of distributed system solutionsthe faster times for solving seeded problems in the AspectJ implementation compared to the Java implementation may also be a result of additional structuring information helping fault isolation. We did not see a similar increase in performance for adding new features into an AspectJ program.

Korson and Vaishnavi conducted an experiment to investigate the effect of modularity on program modifiability [12]. They found evidence to suggest that a modular Pascal program was faster to modify than a non-modular version when one or more of three conditions held: modularity was used to localize change required by a modification, existing modules provided some generic operation that could be used in implementing a modification, or a broad understanding of the existing code was required to perform a modification. In our debugging experiment, the localization of concurrency information in an aspect module may have eased the task of adding synchronization information into the system compared to the Java programmers. When the aspect code does not cleanly modularize a concern, as was the case in the change experiment, we did not see a benefit.

Boehm-Davis, Holt, and Schultz investigated four questions relating to the effect of program structure on maintenance activities ranging from the role of structure when modifying a system to whether structure affected the subjective reactions of programmers to a system [4]. The study involved both student and professional programmers making either simple or complex modifications to programs written in either an unstructured style, a functional style, or an object-oriented style. The study showed that the ability of a programmer to abstract information from code was important in the modification process, and that this ability was affected by the structure of the system and the programmer's background. We have discussed how the nature of the separation provided by aspect code can affect a programmer's ability to understand source code during the performance of a task. Our experimental format did not support an investigation of how system structure and programmer's background might impact aspect-oriented programming.

In providing a means of localizing cross-cutting information, aspect-oriented programming shares some features of program slicing [21]. An empirical study by Law of the effect of slicing on debugging tasks found that "the experimental group who [had] obtained the knowledge of program slicing only took fifty-eight percent of the control group's time to debug a one-page C program [13]" [14, p. 43]. Slices differ from aspects in several ways: for instance, slices are typically computed on-demand rather than appearing explicitly as part of the program text, and slices generally describe the inter-dependencies of program statements rather than localizing programming concerns. Further studies are needed to understand how each of these different crosscutting mechanisms impacts the program development cycle.



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