Do Maintainers Utilize Deployed Design Patterns Effectively

Author(s): T.H. Ng, S.C. Cheung, W.K. Chan, Y.T. Yu
Venue: 29th International Conference on Software Engineering
Date: 2007

Type of Experiement: Controlled Experiment
Sample Size: 215
Class/Experience Level: Undergraduate Student

Quality
3

Length of study: 1 month
Type of Projects: open source
Language: Java
Size of Projects: medium

Independent Variables: software type, maintenance task type
Dependent Variables: whether patterns were used or not, which of the 3 types of modification tasks used more frequently
Design Patterns Analyzed: Factory Method, Command, Composite, Observer, and State

Threats to validity
Internal: possibility of plagiarism, variety of experience in students
External: only 3 programs used, small amount of design patterns, not enough variety in changes
Software Domain: GUI, 2D Graphics, Clerical

Summary:
This paper breaks up maintenance performed on design patterns into specific tasks: Adding new concrete participants, modifying interface of abstract participant, or adding new client. Such break down helps the in analysis of performed maintanance. The main questions this paper asks are: whether maintainers take advantage of the existing patterns in the code, and if so what type of tasks are they most likely to perform on the patterns and are there less defects created when using specific tasks. Three programs in three different domains are used for maintanance. All of the assigned changes are aimed at using 3 different methods of modifying design patterns.

The results show that the participants are very likely to adopt existing design patterns for their solution and implement at least one of the three pattern maintenance tasks. About 80% of all the participants in all the different task groups utilized patterns. However some of the pattern task types were not utilized as intended. The task of modifying the interface of abstract participant seems to be least likely used. Also solutions where pattern tasks were not utilized exhibited more faults than the pattern solutions. In most cases at about half as many faults were present in pattern solutions.

0