On the Design of Empirical Studies to Evaluate Software Patterns : A Survey

Software patterns are created with the goal of capturing expert knowledge so it can be efficiently and effectively shared with the software development community. However, patterns in practice may or may not achieve these goals. Empirical studies of the use of software patterns can help in providing deeper insight into whether these goals have been met. The objective of this paper is to aid researchers in designing empirical studies of software patterns by summarizing the study designs of software patterns available in the literature. The important components of these study designs include the evaluation criteria and how the patterns are presented to study participants. We select and analyze 19 distinct empirical studies and identify 17 independent variables in three different categories (participants demographics; pattern presentation; problem presentation). We also extract 10 evaluation criteria with 23 associated observable measures. Additionally, by synthesizing the reported observations, we identify challenges faced during study execution. Provision of multiple domainspecific examples of pattern application and tool support to assist in pattern selection are helpful for the study participants in understanding and completing the study task. Capturing data regarding the cognitive processes of participants can provide insights into the findings of the study.

[1]  Pekka Abrahamsson,et al.  The Use of Architectural Patterns in the Agile Software Development of Mobile Applications , 2005 .

[2]  James A. Landay,et al.  Development and evaluation of emerging design patterns for ubiquitous computing , 2004, DIS '04.

[3]  Gwendolyn L. Kolfschoten,et al.  Cognitive learning efficiency through the use of design patterns in teaching , 2010, Comput. Educ..

[4]  Marco Torchiano Documenting pattern use in Java programs , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[5]  Shing-Chi Cheung,et al.  Work experience versus refactoring to design patterns: a controlled experiment , 2006, SIGSOFT '06/FSE-14.

[6]  Martin Fowler,et al.  Analysis patterns - reusable object models , 1996, Addison-Wesley series in object-oriented software engineering.

[7]  Walter F. Tichy,et al.  A Controlled Experiment Comparing the Maintainability of Programs Designed with and without Design Patterns—A Replication in a Real Programming Environment , 2004, Empirical Software Engineering.

[8]  Murray Silverstein,et al.  A Pattern Language , 1977 .

[9]  H. Sahraoui,et al.  Impact of the visitor pattern on program comprehension and maintenance , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[10]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[11]  Douglas C. Schmidt,et al.  Software patterns , 1996, CACM.

[12]  Brian Ellis,et al.  The Factory Pattern in API Design: A Usability Evaluation , 2007, 29th International Conference on Software Engineering (ICSE'07).

[13]  Shahrul Azman Mohd. Noah,et al.  The Difficulties of Using Design Patterns among Novices: An Exploratory Study , 2007, 2007 International Conference on Computational Science and its Applications (ICCSA 2007).

[14]  Patrick Y. K. Chau,et al.  Does knowledge reuse make a creative person more creative? , 2008, Decis. Support Syst..

[15]  Cheng Zhang,et al.  What Do We Know about the Effectiveness of Software Design Patterns? , 2012, IEEE Transactions on Software Engineering.

[16]  Pearl Brereton,et al.  Using Mapping Studies in Software Engineering , 2008, PPIG.

[17]  Michael Philippsen,et al.  Two Controlled Experiments Assessing the Usefulness of Design Pattern Documentation in Program Maintenance , 2002, IEEE Trans. Software Eng..

[18]  Paul R. Calder,et al.  Patterns in Learning to Program - An Experiment? , 2004, ACE.

[19]  Walter F. Tichy,et al.  Do design patterns improve communication? An experiment with pair design , 2000 .

[20]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[21]  Walter F. Tichy,et al.  A Controlled Experiment in Maintenance Comparing Design Patterns to Simpler Solutions , 2001, IEEE Trans. Software Eng..

[22]  Jeffrey C. Carver,et al.  Design Patterns in Software Maintenance: An Experiment Replication at University of Alabama , 2011, 2011 Second International Workshop on Replication in Empirical Software Engineering Research.

[23]  Shing-Chi Cheung,et al.  Toward effective deployment of design patterns for software extension: a case study , 2006, WoSQ '06.

[24]  E. Golden,et al.  The value of a usability-supporting architectural pattern in software architecture design: a controlled experiment , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[25]  Alexander Chatzigeorgiou,et al.  An empirical study on students' ability to comprehend design patterns , 2008, Comput. Educ..

[26]  John Sweller,et al.  Cognitive Load During Problem Solving: Effects on Learning , 1988, Cogn. Sci..

[27]  Shing-Chi Cheung,et al.  Do Maintainers Utilize Deployed Design Patterns Effectively? , 2007, 29th International Conference on Software Engineering (ICSE'07).

[28]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[29]  Carl G. Davis,et al.  A Hierarchical Model for Object-Oriented Design Quality Assessment , 2002, IEEE Trans. Software Eng..