User Tools

Site Tools


what_do_we_know_about_the_effectiveness_of_software_design_patterns

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
what_do_we_know_about_the_effectiveness_of_software_design_patterns [2013/09/12 05:07]
yann
what_do_we_know_about_the_effectiveness_of_software_design_patterns [2013/09/16 06:35]
yann
Line 5: Line 5:
 //​Yann-Gaël Guéhéneuc,​ 2013/​09/​13//​ //​Yann-Gaël Guéhéneuc,​ 2013/​09/​13//​
  
 +The paper starts by justifying the need of a systematic literature survey on design patterns and on design methods in general. It rightly states that lots of results are "​strongly advocated in the absence of evidence"​. It also interestingly highlights the difference between studies in clinical medicine and in empirical software engineering:​ "the interventions used in primary studies in clinical medicine are performed **upon** the participants,​ whereas for software engineering,​ they are performed **by** the participants"​ (emphases mine) and "that the skill levels of the participants [is] a significant confounding factors"​. These statements are interesting and highlight the importance of understanding and categorising developers. The paper also states that teaching design patterns, i.e., teaching design practices, is difficult and that multiple examples of patterns are needed to assist with the learning process. ​
  
 +The results are based on papers published between 1994 and 2009. It would be interesting to reproduce this study with more recent papers and with more authors. They suffer from the limits of the raters (the two authors). A third author would have been needed to counterbalance votes and avoid discussions,​ which may have been biased through raters learning effect.
 +
 +The results report that most studies involve modifications,​ i.e., maintenance tasks, and elements of coding, which is not surprising as the phases of design and implementation are often mixed even though they should not. It would be interesting to understand how much developers do actually distinguish architecture from design from implementation and whether (if ever) distinct developers perform design and implementation.
 +
 +The results include interesting discussions and three recommendations. In the discussions,​ the paper states that several studies involve more than one design pattern. This observation is not surprising because (1) design patterns are supposed to work together, they form a "​language",​ and (2) some studies use automatically occurrences of design patterns that are not instances, i.e., they are false positive occurrences. As recommendations,​ the paper states that:
 +    * "The use of experiments,​ particularly using student participants and short-term tasks, should be used with care for studies of design. Case studies may be more appropriate for exploring the complex cognitive issues involved"​ — That is all the difficulties in teaching and studying design patterns!
 +    * "​Studies of design patterns should use research questions that are related to specific patterns and their roles" — That is what we have been doing although it is often difficult to distinguish roles in implementation,​ which calls for design studies.
 +    * "​Observational studies need to be reported rigorously and ensure that the links between any conclusions and the reported experiences are explicit"​ — That is something sometimes limiting because reviewers always want more!
what_do_we_know_about_the_effectiveness_of_software_design_patterns.txt · Last modified: 2019/10/06 20:37 (external edit)