Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Software architecture in practice
Software architecture in practice
Experimentation in software engineering: an introduction
Experimentation in software engineering: an introduction
The Basic Practice of Statistics with Cdrom
The Basic Practice of Statistics with Cdrom
The effects of design pattern application on metric scores
Journal of Systems and Software
IEEE Transactions on Software Engineering
A Controlled Experiment in Maintenance Comparing Design Patterns to Simpler Solutions
IEEE Transactions on Software Engineering
Design Patterns: Abstraction and Reuse of Object-Oriented Design
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Design Pattern Rationale Graphs: linking design to source
Proceedings of the 25th International Conference on Software Engineering
OO Design Patterns, Design Structure, and Program Changes: An Industrial Case Study
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Journal of Systems and Software
Mining Design Patterns from C++ Source Code
ICSM '03 Proceedings of the International Conference on Software Maintenance
Design Patterns and Change Proneness: An Examination of Five Evolving Systems
METRICS '03 Proceedings of the 9th International Symposium on Software Metrics
Refactoring to Patterns
How Effective Developers Investigate Source Code: An Exploratory Study
IEEE Transactions on Software Engineering
Defect Frequency and Design Patterns: An Empirical Study of Industrial Code
IEEE Transactions on Software Engineering
Toward effective deployment of design patterns for software extension: a case study
Proceedings of the 2006 international workshop on Software quality
Work experience versus refactoring to design patterns: a controlled experiment
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Model-based user interface engineering with design patterns
Journal of Systems and Software
Design Pattern Detection Using Similarity Scoring
IEEE Transactions on Software Engineering
Do Maintainers Utilize Deployed Design Patterns Effectively?
ICSE '07 Proceedings of the 29th international conference on Software Engineering
An empirical study on the evolution of design patterns
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Teaching Design Patterns Through Computer Game Development
Journal on Educational Resources in Computing (JERIC)
A quantitative approach for evaluating the quality of design patterns
Journal of Systems and Software
Facilitating software extension with design patterns and Aspect-Oriented Programming
Journal of Systems and Software
Pattern Languages as Tool for Discount Usability Engineering
Interactive Systems. Design, Specification, and Verification
DeMIMA: A Multilayered Approach for Design Pattern Identification
IEEE Transactions on Software Engineering
Do Design Patterns Impact Software Quality Positively?
CSMR '08 Proceedings of the 2008 12th European Conference on Software Maintenance and Reengineering
Behavioral Pattern Identification through Visual Language Parsing and Code Instrumentation
CSMR '09 Proceedings of the 2009 European Conference on Software Maintenance and Reengineering
Design pattern recovery through visual language parsing and source code analysis
Journal of Systems and Software
Enhancing class commutability in the deployment of design patterns
Information and Software Technology
Empirical Software Engineering
Factors for Effective Use of Deployed Design Patterns
QSIC '10 Proceedings of the 2010 10th International Conference on Quality Software
Hi-index | 0.00 |
Context: Practitioners may use design patterns to organize program code. Various empirical studies have investigated the effects of pattern deployment and work experience on the effectiveness and efficiency of program maintenance. However, results from these studies are not all consistent. Moreover, these studies have not considered some interesting factors, such as a maintainer's prior exposure to the program under maintenance. Objective: This paper aims at identifying what factors may contribute to the productivity of maintainers in the context of making correct software changes when they work on programs with deployed design patterns. Method: We performed an empirical study involving 118 human subjects with three change tasks on a medium-sized program to explore the possible effects of a suite of six human and program factors on the productivity of maintainers, measured by the time taken to produce a correctly revised program in a course-based setting. The factors we studied include the deployment of design patterns and the presence of pattern-unaware solutions, as well as the maintainer's prior exposure to design patterns, the subject program and the programming language, and prior work experience. Results: Among the factors under examination, we find that the deployment of design patterns, prior exposure to the program and the presence of pattern-unaware solutions are strongly correlated with the time taken to correctly complete maintenance tasks. We also report some interesting observations from the experiment. Conclusion: A new factor, namely, the presence of pattern-unaware solutions, contributes to the efficient completion of maintenance tasks of programs with deployed design patterns. Moreover, we conclude from the study that neither prior exposure to design patterns nor prior exposure to the programming language is supported by sufficient evidences to be significant factors, whereas the subjects' exposure to the program under maintenance is notably more important.