Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Industrial experience with design patterns
Proceedings of the 18th international conference on Software engineering
The pros and cons of adopting and applying design patterns in the real world
Communications of the ACM
Pattern-oriented software architecture: a system of patterns
Pattern-oriented software architecture: a system of patterns
Software architecture in practice
Software architecture in practice
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Characteristics of application software maintenance
Communications of the ACM
IEEE Transactions on Software Engineering
A Controlled Experiment in Maintenance Comparing Design Patterns to Simpler Solutions
IEEE Transactions on Software Engineering
Preliminary guidelines for empirical research in software engineering
IEEE Transactions on Software Engineering
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)
Design Patterns and Change Proneness: An Examination of Five Evolving Systems
METRICS '03 Proceedings of the 9th International Symposium on Software Metrics
Proactive Views on Concrete Aspects: A Pattern Documentation Approach for Software Evolution
COMPSAC '03 Proceedings of the 27th Annual International Conference on Computer Software and Applications
Refactoring to Patterns
JIAD: a tool to infer design patterns in refactoring
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
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
Automatic generation of suggestions for program investigation
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Enhancing class commutability in the deployment of design patterns
Information and Software Technology
Do Maintainers Utilize Deployed Design Patterns Effectively?
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Do rules and patterns affect design maintainability?
Journal of Computer Science and Technology
MAPO: Mining and Recommending API Usage Patterns
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Impact of the visitor pattern on program comprehension and maintenance
ESEM '09 Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement
Identification of refactoring opportunities introducing polymorphism
Journal of Systems and Software
Adaptability performance trade-off: a controlled experiment
Proceedings of the 2010 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement
An empirical study on the influence of pattern roles on change-proneness
Empirical Software Engineering
Human and program factors affecting the maintenance of programs with deployed design patterns
Information and Software Technology
Managing data dependencies in service compositions
Journal of Systems and Software
Hi-index | 0.00 |
Program refactoring using design patterns is an attractive approach for facilitating anticipated changes. Its benefit depends on at least two factors, namely the effort involved in the refactoring and how effective it is. For example, the benefit would be small if too much effort is required to translate a program correctly into a refactorized form, and whether such a form could effectively guide maintainers to complete anticipated changes is unknown. A metric of effectiveness is the maintainers' performance, which can be affected by their work experience, in realizing the changes. Hence, an interesting question arises. Is program refactoring to introduce additional patterns beneficial regardless of the work experience of the maintainers? In this paper, we report a controlled experiment on maintaining JHotDraw, an open source system deployed with multiple patterns. We compared maintainers with and without work experience. Our empirical results show that, to complete a maintenance task of perfective nature, the time spent even by the inexperienced maintainers on a refactorized version is much shorter than that of the experienced subjects on the original version. Moreover, the quality of their delivered programs, in terms of correctness, is found to be comparable.