posted on 2016-01-08, 16:11authored byMohammad H. Alshira'H
Design pattern detection is useful for a range of software comprehension and maintenance
tasks. Tools that rely on static or dynamic analysis alone can produce
inaccurate results, especially for patterns that rely on the run-time information.
Some tools provide facilities for the developer to refine the results by adding their
own knowledge. Currently, however, the ability of tools to accommodate this knowledge
is very limited; it can only pertain to the detected patterns and cannot provide
additional knowledge about the source code, or about its behaviour. In this thesis,
we propose an approach to combine existing pattern detection techniques with
a structured feedback mechanism. This enables the developer to refine the detection
results by feeding-in additional knowledge about pattern implementations and
software behaviour. The motivation is that a limited amount of user input can complement
the automated detection process, to produce results that are more accurate.
To evaluate the approach we applied it to a selection of openly available software
systems. The evaluation was carried in two parts. First, an evaluation case study
was carried out to detect pattern instances in the selected systems with the help
of the user knowledge. Second, a user study of a broader range of expert users of
design patterns was conducted in order to investigate the impact of their knowledge
on the detection process, and to see whether it is realistic that the user can identify
useful knowledge for the detection process. The evaluation results indicate that
the proposed approach can yield a significant improvement in the accuracy whilst
requiring a relatively small degree of user input from the developer. Moreover, the
results show that expert users can supplement the design pattern detection process
with a useful feedback that can enhance the detection of design pattern instances in
the source code.