Principles of software engineering management
Principles of software engineering management
Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
The WyCash portfolio management system
OOPSLA '92 Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum)
Object-oriented metrics that predict maintainability
Journal of Systems and Software - Special issue on object-oriented software
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
A Validation of Object-Oriented Design Metrics as Quality Indicators
IEEE Transactions on Software Engineering
An investigation into coupling measures for C++
ICSE '97 Proceedings of the 19th international conference on Software engineering
ICSE '94 Proceedings of the 16th international conference on Software engineering
AntiPatterns: refactoring software, architectures, and projects in crisis
AntiPatterns: refactoring software, architectures, and projects in crisis
Testing object-oriented systems: models, patterns, and tools
Testing object-oriented systems: models, patterns, and tools
Towards a framework for empirical assessment of changeability decay
Journal of Systems and Software - Special issue on empirical studies of software development and evolution
Does Code Decay? Assessing the Evidence from Change Management Data
IEEE Transactions on Software Engineering
Agile Software Development: Principles, Patterns, and Practices
Agile Software Development: Principles, Patterns, and Practices
Software Metrics: A Rigorous and Practical Approach
Software Metrics: A Rigorous and Practical Approach
Design erosion: problems and causes
Journal of Systems and Software
Design Measurement: Some Lessons Learned
IEEE Software
Coupling of Design Patterns: Common Practices and Their Benefits
COMPSAC '01 Proceedings of the 25th International Computer Software and Applications Conference on Invigorating Software Development
An Investigation into the Effects of Code Coupling on Team Dynamics and Productivity
COMPSAC '02 Proceedings of the 26th International Computer Software and Applications Conference on Prolonging Software Life: Development and Redevelopment
Meta Patterns - A Means For Capturing the Essentials of Reusable Object-Oriented Design
ECOOP '94 Proceedings of the 8th European Conference on Object-Oriented Programming
Testability Analysis of a UML Class Diagram
METRICS '02 Proceedings of the 8th International Symposium on Software Metrics
Implications of Evolution Metrics on Software Maintenance
ICSM '98 Proceedings of the International Conference on Software Maintenance
Using Coupling Measurement for Impact Analysis in Object-Oriented Systems
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Evolution in Open Source Software: A Case Study
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Towards a 'Safe' Use of Design Patterns to Improve OO Software Testability
ISSRE '01 Proceedings of the 12th International Symposium on Software Reliability Engineering
TOOLS '01 Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems (TOOLS39)
Measuring and Improving Design Patterns Testability
METRICS '03 Proceedings of the 9th International Symposium on Software Metrics
Design Patterns and Change Proneness: An Examination of Five Evolving Systems
METRICS '03 Proceedings of the 9th International Symposium on Software Metrics
A UML-Based Pattern Specification Technique
IEEE Transactions on Software Engineering
Dynamic Coupling Measurement for Object-Oriented Software
IEEE Transactions on Software Engineering
A meta-modeling approach to specifying patterns
A meta-modeling approach to specifying patterns
Head First Design Patterns
Introduction to Statistical Methods and Data Analysis (with CD-ROM)
Introduction to Statistical Methods and Data Analysis (with CD-ROM)
How Software Designs Decay: A Pilot Study of Pattern Evolution
ESEM '07 Proceedings of the First International Symposium on Empirical Software Engineering and Measurement
Introduction to Software Testing
Introduction to Software Testing
Testing Consequences of Grime Buildup in Object Oriented Design Patterns
ICST '08 Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation
Facilitating software extension with design patterns and Aspect-Oriented Programming
Journal of Systems and Software
Evaluating pattern conformance of UML models: a divide-and-conquer approach and case studies
Software Quality Control
Domain-specific tailoring of code smells: an empirical study
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Building empirical support for automated code smell detection
Proceedings of the 2010 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement
Managing technical debt in software-reliant systems
Proceedings of the FSE/SDP workshop on Future of software engineering research
Software evolution visualization: A systematic mapping study
Information and Software Technology
What you like in design use to correct bad-smells
Software Quality Control
Hi-index | 0.00 |
Software designs decay as systems, uses, and operational environments evolve. Decay can involve the design patterns used to structure a system. Classes that participate in design pattern realizations accumulate grime--non-pattern-related code. Design pattern realizations can also rot, when changes break the structural or functional integrity of a design pattern. Design pattern rot can prevent a pattern realization from fulfilling its responsibilities, and thus represents a fault. Grime buildup does not break the structural integrity of a pattern but can reduce system testability and adaptability. This research examined the extent to which software designs actually decay, rot, and accumulate grime by studying the aging of design patterns in three successful object-oriented systems. We generated UML models from the three implementations and employed a multiple case study methodology to analyze the evolution of the designs. We found no evidence of design pattern rot in these systems. However, we found considerable evidence of pattern decay due to grime. Dependencies between design pattern components increased without regard for pattern intent, reducing pattern modularity, and decreasing testability and adaptability. The study of decay and grime showed that the grime that builds up around design patterns is mostly due to increases in coupling.