Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Object-oriented analysis and design with applications (2nd ed.)
Object-oriented analysis and design with applications (2nd ed.)
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
The mythical man-month (anniversary ed.)
The mythical man-month (anniversary ed.)
An investigation into coupling measures for C++
ICSE '97 Proceedings of the 19th international conference on Software engineering
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
An Empirical Approach to Studying Software Evolution
IEEE Transactions on Software Engineering
Journal of Systems and Software - Special issue on Evaluation and assessment in software engineering
Empirical analysis in software process simulation modeling
Journal of Systems and Software - Special issue on empirical studies of software development and evolution
Types of software evolution and software maintenance
Journal of Software Maintenance: Research and Practice
Elements of Software Science (Operating and programming systems series)
Elements of Software Science (Operating and programming systems series)
Patterns of Enterprise Application Architecture
Patterns of Enterprise Application Architecture
Software Metrics: A Rigorous and Practical Approach
Software Metrics: A Rigorous and Practical Approach
Computer
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Modeling software processes quantitatively and assessing the impact of potential process changes on process performance
ISESE '03 Proceedings of the 2003 International Symposium on Empirical Software Engineering
Design Patterns and Change Proneness: An Examination of Five Evolving Systems
METRICS '03 Proceedings of the 9th International Symposium on Software Metrics
Trends in Java code changes: the key to identification of refactorings?
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
A Simple Static Model for Understanding the Dynamic Behavior of Programs
IWPC '04 Proceedings of the 12th IEEE International Workshop on Program Comprehension
Extracting Facts from Open Source Software
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
A Cost Model for Software Maintenance & Evolution
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Open Source Software Development: A Case Study of FreeBSD
METRICS '04 Proceedings of the Software Metrics, 10th International Symposium
Analyzing the Evolution of Large-Scale Software: Issue Overviews
Journal of Software Maintenance and Evolution: Research and Practice - Analyzing the Evolution of Large-Scale Software
Modeling history to analyze software evolution: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice
Planning and improving global software development process using simulation
Proceedings of the 2006 international workshop on Global software development for the practitioner
Common refactorings, a dependency graph and some code smells: an empirical study of Java OSS
Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering
Beyond source code: the importance of other artifacts in software development (a case study)
Journal of Systems and Software - Special issue: Selected papers from the 4th source code analysis and manipulation (SCAM 2004) workshop
An Empirical Study of Evolution of Inheritance in Java OSS
ASWEC '08 Proceedings of the 19th Australian Conference on Software Engineering
Simulating the structural evolution of software
SPW/ProSim'06 Proceedings of the 2006 international conference on Software Process Simulation and Modeling
Towards a model to support in silico studies of software evolution
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
Towards understanding the behavior of classes using probabilistic models of program inputs
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Understanding and simulating software evolution
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
As functionality is added to an aging piece of software, its original design and structure will tend to erode. This can lead to high coupling, low cohesion and other undesirable effects associated with spaghetti architectures. The underlying forces that cause such degradation have been the subject of much research. However, progress in this field is slow, as its complexity makes it difficult to isolate the causal flows leading to these effects. This is further complicated by the difficulty of generating enough empirical data, in sufficient quantity, and attributing such data to specific points in the causal chain. This article describes a framework for simulating the structural evolution of software. A complete simulation model is built by incrementally adding modules to the framework, each of which contributes an individual evolutionary effect. These effects are then combined to form a multifaceted simulation that evolves a fictitious code base in a manner approximating real-world behavior. We describe the underlying principles and structures of our framework from a theoretical and user perspective; a validation of a simple set of evolutionary parameters is then provided and three empirical software studies generated from open-source software (OSS) are used to support claims and generated results. The research illustrates how simulation can be used to investigate a complex and under-researched area of the development cycle. It also shows the value of incorporating certain human traits into a simulation—factors that, in real-world system development, can significantly influence evolutionary structures.