|
ABSTRACT
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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
|
 |
3
|
Lionel Briand , Prem Devanbu , Walcelio Melo, An investigation into coupling measures for C++, Proceedings of the 19th international conference on Software engineering, p.412-421, May 17-23, 1997, Boston, Massachusetts, United States
[doi> 10.1145/253228.253367]
|
| |
4
|
|
| |
5
|
|
| |
6
|
Capiluppi, A., Morisio, M., and Ramil, J. 2004. Studying the evolution of open source systems at different levels of granularity. In Proceedings of the 12th International Workshop on Program Comprehension. Bari, Italy, 172--182.
|
| |
7
|
|
| |
8
|
|
| |
9
|
Steve Counsell , Youssef Hassoun , Roger Johnson , Keith Mannock , Emilia Mendes, Trends in Java code changes: the key to identification of refactorings?, Proceedings of the 2nd international conference on Principles and practice of programming in Java, June 16-18, 2003, Kilkenny City, Ireland
|
 |
10
|
S. Counsell , Y. Hassoun , G. Loizou , R. Najjar, 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, September 21-22, 2006, Rio de Janeiro, Brazil
[doi> 10.1145/1159733.1159777]
|
| |
11
|
|
| |
12
|
|
| |
13
|
|
| |
14
|
FINDBUGS. 2007. http://findbugs.sourceforge.net/.
|
| |
15
|
Forrester, J. 1969. Urban Dynamics. Productivity Press, Cambridge, MA.
|
| |
16
|
Forrester, J. 1971. Counter-intuitive behaviour of social systems. Tech. Rev. 73(3), 52--68.
|
| |
17
|
|
| |
18
|
|
| |
19
|
|
| |
20
|
Gilbert, N. and Terna, P. 2000. How to build and use agent-based models in social science. Mind Soc. 1, 1, 57--72.
|
| |
21
|
|
| |
22
|
GNU. 2008. http://www.gnu.org/software/classpath/.
|
 |
23
|
|
| |
24
|
|
| |
25
|
|
| |
26
|
Kellner, M., Madachy, R., and Raffo, D. 1999. Software process modeling and simulation: why, what, how, J. Syst. Softw. 46, 2/3, 91--105.
|
| |
27
|
|
| |
28
|
Kemerer, C. F. and Slaughter, S. 1996. Need for more longitudinal studies of software maintenance. In Proceedings of the International Workshop on Empirical Studies of Software Maintenance.
|
| |
29
|
|
| |
30
|
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J-M., and Irwin, J. 1997. Aspect-oriented programming. In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP'97). Jyvaskyla, Finland, 220--242.
|
| |
31
|
Lehman, M. 1980. On understanding laws, evolution, and conservation in the large-program life cycle, J. Syst. Softw. 1, 213--221.
|
| |
32
|
|
| |
33
|
|
| |
34
|
Miiller, G. A. 1956. The magical number seven, plus or minus two: some limits on our capacity for processing information. Psych. Rev. 63, 81--97.
|
| |
35
|
Mubarak, A., Counsell, S., Hierons, R., and Hassoun, Y. 2007. Package evolvability and its relationship with refactoring. In Proceedings of 3rd International ERCIM Symposium on Software Evolution. Paris, France.
|
| |
36
|
|
| |
37
|
|
| |
38
|
|
| |
39
|
Parnas, D. 1971. Information distribution aspects of design methodology, In Proceedings of the IFIP Congress (1). Ljubljana, Yugoslavia, 339--344.
|
| |
40
|
|
| |
41
|
|
| |
42
|
|
 |
43
|
|
| |
44
|
Smith, N., Capiluppi, A., and Fernandez-Ramil, J. 2006. Agent-based simulation of open source evolution. J. Softw. Proc.-Improv. Pract. 11, 4, 423--434.
|
| |
45
|
Smith, N., Capiuppi, A., and Fernadez-Ramil, J. 2005. A study of open source evolution data using qualitative simulation. J. Softw. Proc.-Improv. Pract. 10, 3, 287--300.
|
| |
46
|
|
| |
47
|
SOURCEFORGE. net. 2007. www.sourceforge.net.
|
| |
48
|
Stopford, B. and Counsell, S. 2006. Simulating the structural evolution of software. In Proceedings of the International Software Process Workshop (PROSIM'06). Shanghai, China. Lecture Notes in Computer Science, vol. 3966, 294--301.
|
| |
49
|
Wernick, P., and Lehman, M. 1999. Software process white box modeling for FEAST/1. J. Syst. Softw. 46, 2/3, 193--201.
|
INDEX TERMS
Primary Classification:
I.
Computing Methodologies
I.6
SIMULATION AND MODELING
I.6.0
General
Additional Classification:
I.
Computing Methodologies
I.6
SIMULATION AND MODELING
I.6.4
Model Validation and Analysis
I.6.6
Simulation Output Analysis
I.6.7
Simulation Support Systems
Subjects:
Environments
General Terms:
Algorithms,
Measurement,
Theory,
Verification
Keywords:
Simulation,
agent,
evolution,
feedback,
framework software,
metrics,
object-oriented,
plug-in,
tool,
user
|