Aspect-oriented software design (AOSD) enables better and more complete separation of
concerns in software-intensive systems. By extracting aspect code and relegating
crosscutting functionality to aspects, software engineers can improve the maintainability
of their code by reducing code tangling and coupling of code concerns. Further, the
number of software defects has been shown to correlate with the number of non-
encapsulated nonfunctional crosscutting concerns in a system.
Aspect-mining is a technique that uses data mining techniques to identify existing aspects
in legacy code. Unfortunately, there is a lack of suitably-documented test data for aspect-
mining research and none that is fully representative of large-scale legacy systems.
Using a new technique called concern seeding--based on the decades-old concept of
error seeding--a tool called AspectAssay (akin to the radioimmunoassay test in medicine)
was developed. The concern seeding technique allows researchers to seed existing legacy
code with nonfunctional crosscutting concerns of known type, location, and quantity, thus
greatly increasing the pool of available test data for aspect mining research.
Nine seeding test cases were run on a medium-sized codebase using the AspectAssay tool.
Each test case seeded a different concern type (data validation, tracing, and observer) and
attempted to achieve target values for each of three metrics: 0.95 degree of scattering
across methods (DOSM), 0.95 degree of scattering across classes (DOSC), and 10
concern instances. The results were manually verified for their accuracy in producing
concerns with known properties (i.e., type, location, quantity, and scattering). The
resulting code compiled without errors and was functionally identical to the original. The
achieved metrics averaged better than 99.9% of their target values.
Following the small tests, each of the three previously mentioned concern types was
seeded with a wide range of target metric values on each of two codebases--one
medium-sized and one large codebase. The tool targeted DOSM and DOSC values in the
range 0.01 to 1.00. The tool also attempted to reach target number of concern instances
from 1 to 100. Each of these 1,800 test cases was attempted ten times (18,000 total
trials). Where mathematically feasible (as permitted by scattering formulas), the tests
tended to produce code that closely matched target metric values.
Each trial's result was expressed as a percentage of its target value. There were 903 test
cases that averaged at least 0.90 of their targets. For each test case's ten trials, the
standard deviation of those trials' percentages of their targets was calculated. There was
an average standard deviation in all the trials of 0.0169. For the 808 seed attempts that
averaged at least 0.95 of their targets, the average standard deviation across the ten trials
for a particular target was only 0.0022. The tight grouping of trials for their test cases
suggests a high repeatability for the AspectAssay technique and tool.
The concern seeding technique opens the door for expansion of aspect mining research.
Until now, such research has focused on small, well-documented legacy programs.
Concern seeding has proved viable for producing code that is functionally identical to the
original and contains concerns with known properties. The process is repeatable and
precise across multiple seeding attempts and also accurate for many ranges of target
metric values.
Just like error seeding is useful in identifying indigenous errors in programs, concern
seeding could also prove useful in estimating indigenous nonfunctional crosscutting
concerns, thus introducing a new method for evaluating the performance of aspect
mining algorithms.
Identifer | oai:union.ndltd.org:nova.edu/oai:nsuworks.nova.edu:gscis_etd-1253 |
Date | 01 January 2013 |
Creators | Moore, David Gerald |
Publisher | NSUWorks |
Source Sets | Nova Southeastern University |
Detected Language | English |
Type | text |
Format | application/pdf |
Source | CEC Theses and Dissertations |
Page generated in 0.0023 seconds