Modularity and the evolution of software evolvability

Drawing on models of the evolution of living systems, this dissertation explores the principle of modularity, both biological and in software, and its role in creating structures that are easy to change. These ideas are captured in the Software Evolvability Change Optimization (SECO) model, a framework for investigating how modularity can enhance evolvability in software. SEGO abstracts software history by dividing the code into non-overlapping elements that are linked together by a series of changes. These changes are either gathered from the recorded histories of real software, or modeled using evolutionary computation, change propagation among elements, or correlations in changes between elements. The dissertation uses SECO in both an analytic and synthetic role, investigating aspects of modularity such as encapsulation and code factoring, and using automatic techniques to optimize the modular structure of real code. The dissertation contributes to the further understanding of modularity as a means of improving software evolvability by adding the dimension of time to the analysis. In this way, it can discover dependency links between software elements that are not evident from a static analysis of the program.

[1]  Michele Lanza,et al.  The evolution matrix: recovering software evolution using software visualization techniques , 2001, IWPSE '01.

[2]  Katia Sycara,et al.  Evolvability and Static vs � Dynamic Fitness , 2004 .

[3]  Lee Spector,et al.  Multi-type, Self-adaptive Genetic Programming as an Agent Creation Tool , 2002 .

[4]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[5]  David S. Rosenblum,et al.  The evolution of software evolvability , 2001, IWPSE '01.

[6]  David E. Goldberg,et al.  Genetic Algorithms with Sharing for Multimodalfunction Optimization , 1987, ICGA.

[7]  Christopher G. Langton,et al.  Computation at the edge of chaos: Phase transitions and emergent computation , 1990 .

[8]  M. Conrad The geometry of evolution. , 1990, Bio Systems.

[9]  Rachel Harrison,et al.  Dynamic and static views of software evolution , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[10]  J M Carlson,et al.  Highly optimized tolerance: a mechanism for power laws in designed systems. , 1999, Physical review. E, Statistical physics, plasmas, fluids, and related interdisciplinary topics.

[11]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[12]  Michael W. Godfrey,et al.  Evolution in open source software: a case study , 2000, Proceedings 2000 International Conference on Software Maintenance.

[13]  John W. Pepper,et al.  The evolution of modularity in genome architecture , 2000 .

[14]  Wladyslaw M. Turski Reference Model for Smooth Growth of Software Systems(003)5402022 , 1996, IEEE Transactions on Software Engineering.

[15]  Julian Francis Miller,et al.  Neutrality and the Evolvability of Boolean Function Landscape , 2001, EuroGP.

[16]  Audris Mockus,et al.  On Measurement and Analysis of Software Changes , 1999 .

[17]  Annie S. Wu,et al.  Putting More Genetics into Genetic Algorithms , 1998, Evolutionary Computation.

[18]  R. Dawkins Climbing Mount Improbable , 1996 .

[19]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[20]  Stephanie Forrest,et al.  Operating system stability and security through process homeostasis , 2002 .

[21]  D. Turcotte,et al.  Forest fires: An example of self-organized critical behavior , 1998, Science.

[22]  W. Daniel Hillis,et al.  Co-evolving parasites improve simulated evolution as an optimization procedure , 1990 .

[23]  Richard Johnson,et al.  Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization , 2003 .

[24]  David H. Ackley,et al.  Adaptation in Constant Utility Non-Stationary Environments , 1991, ICGA.

[25]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[26]  Richard C. Holt,et al.  GASE: visualizing software evolution-in-the-large , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[27]  Meir M. Lehman,et al.  Rules and Tools for Software Evolution Planning and Management , 2001, Ann. Softw. Eng..

[28]  M. West-Eberhard,et al.  Evolution in the light of developmental and cell biology, and vice versa. , 1998, Proceedings of the National Academy of Sciences of the United States of America.

[29]  X. Gabaix Zipf's Law for Cities: An Explanation , 1999 .

[30]  Dorit S. Hochba,et al.  Approximation Algorithms for NP-Hard Problems , 1997, SIGA.

[31]  Christopher G. Langton,et al.  Artificial life V : proceedings of the Fifth International Workshop on the Synthesis and Simulation of Living Systems , 1996 .

[32]  Howard Hunt Pattee,et al.  Hierarchy Theory: The Challenge of Complex Systems , 1973 .

[33]  John R. Koza,et al.  Routine Duplication of Post-2000 Patented Inventions by Means of Genetic Programming , 2002, EuroGP.

[34]  John J. Grefenstette,et al.  Genetic Algorithms for Changing Environments , 1992, PPSN.

[35]  Spiros Mancoridis,et al.  CRAFT: a framework for evaluating software clustering results in the absence of benchmark decompositions [Clustering Results Analysis Framework and Tools] , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[36]  David H. Ackley,et al.  Interactions between learning and evolution , 1991 .

[37]  George R. Price,et al.  Selection and Covariance , 1970, Nature.

[38]  W. Langdon,et al.  Autoconstructive Evolution : Push , PushGP , and Pushpop , 2001 .

[39]  Chandana Paul,et al.  Making Evolution an Offer It Can't Refuse: Morphology and the Extradimensional Bypass , 2001, ECAL.

[40]  下平 丕作士,et al.  The Genetic and Evolutionary Computation Conference , 2002 .

[41]  Soraya B. Rana,et al.  Representation Issues in Neighborhood Search and Evolutionary Algorithms , 1998 .

[42]  Thomas Bäck,et al.  Evolutionary algorithms in theory and practice - evolution strategies, evolutionary programming, genetic algorithms , 1996 .

[43]  Malcolm Munro,et al.  An initial approach towards measuring and characterising software evolution , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[44]  Stephen J. Fink,et al.  Design, implementation and evaluation of adaptive recompilation with on-stack replacement , 2003, International Symposium on Code Generation and Optimization, 2003. CGO 2003..

[45]  Geoffrey E. Hinton,et al.  How Learning Can Guide Evolution , 1996, Complex Syst..

[46]  Günter P. Wagner,et al.  Complex Adaptations and the Evolution of Evolvability , 2005 .

[47]  Linda Partridge The Masterpiece of Nature: The Evolution and Genetics of Sexuality, Graham Bell. Croom Helm, London and Canberra (1982), 635, Price £25.00 , 1983 .

[48]  L. Altenberg The evolution of evolvability in genetic programming , 1994 .

[49]  John Doyle,et al.  Complexity and robustness , 2001, Proceedings of the National Academy of Sciences of the United States of America.

[50]  David H. Ackley,et al.  Ccr: A network of worlds for research , 1996 .

[51]  Rachel Harrison,et al.  Software evolution and software evolvability , 2003 .

[52]  David B. Fogel,et al.  Meta-evolutionary programming , 1991, [1991] Conference Record of the Twenty-Fifth Asilomar Conference on Signals, Systems & Computers.

[53]  Beum-Seuk Lee,et al.  Two-level grammar as an object-oriented requirements specification language , 2002, Proceedings of the 35th Annual Hawaii International Conference on System Sciences.

[54]  Dorit S. Hochbaum,et al.  Approximation Algorithms for NP-Hard Problems , 1996 .

[55]  Byungjeong Lee,et al.  Genetic Algorithm Based Restructuring of object-Oriented Designs Using Metrics , 2002 .

[56]  Ross J. Anderson,et al.  Murphy’s law, the fitness of evolving species, and the limits of software reliability , 1999 .

[57]  Jonathan Helfman,et al.  Dotplot Patterns: A Literal Look at Pattern Languages , 1996, Theory Pract. Object Syst..

[58]  Peter J. Angeline,et al.  Genetic programming and emergent intelligence , 1994 .

[59]  P. Callaerts,et al.  Induction of ectopic eyes by targeted expression of the eyeless gene in Drosophila. , 1995, Science.

[60]  Peter D. Turney Increasing Evolvability Considered as a Large-Scale Trend in Evolution , 2002, ArXiv.

[61]  J. Stewart,et al.  The evolution of genetic cognition , 1997 .

[62]  Lada A. Adamic,et al.  Power-Law Distribution of the World Wide Web , 2000, Science.

[63]  T. H. Tse,et al.  An Examination of Requirements Specification Languages , 1991, Comput. J..

[64]  S. Bullock Will selection for mutational robustness significantly retard evolutionary innovation on neutral networks , 2002 .

[65]  Rajiv Gupta,et al.  Partial dead code elimination using slicing transformations , 1997, PLDI '97.

[66]  John R. Koza,et al.  Genetic programming 2 - automatic discovery of reusable programs , 1994, Complex Adaptive Systems.

[67]  S. Krantz Fractal geometry , 1989 .

[68]  R. Ferrer i Cancho,et al.  Scale-free networks from optimal design , 2002, cond-mat/0204344.

[69]  Michael W. Godfrey,et al.  An integrated approach for studying architectural evolution , 2002, Proceedings 10th International Workshop on Program Comprehension.

[70]  Robert W. Schwanke,et al.  Using Neural Networks to Modularize Software , 1994, Machine Learning.

[71]  John H. Holland,et al.  Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence , 1992 .

[72]  Brian W. Kernighan,et al.  An efficient heuristic procedure for partitioning graphs , 1970, Bell Syst. Tech. J..

[73]  G. Wagner HOMOLOGUES, NATURAL KINDS AND THE EVOLUTION OF MODULARITY , 1996 .

[74]  John J. Grefenstette,et al.  Genetic Algorithms for Tracking Changing Environments , 1993, ICGA.

[75]  Robin Garner,et al.  JMTk: A portable memory management toolkit , 2003 .

[76]  Leon J. Osterweil,et al.  Proceedings of the 16th international conference on Software engineering , 1994, ICSE 1994.

[77]  Riccardo Poli,et al.  Genetic Programming Bloat with Dynamic Fitness , 1998, EuroGP.

[78]  M E J Newman,et al.  Finding and evaluating community structure in networks. , 2003, Physical review. E, Statistical, nonlinear, and soft matter physics.

[79]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[80]  Tang,et al.  Self-Organized Criticality: An Explanation of 1/f Noise , 2011 .

[81]  Robert C. Martin Agile Software Development, Principles, Patterns, and Practices , 2002 .

[82]  Andreas Zeller,et al.  How history justifies system architecture (or not) , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[83]  Stuart A. Kauffman,et al.  The origins of order , 1993 .

[84]  Terry Van Belle,et al.  Code Factoring And The Evolution Of Evolvability , 2002, GECCO.

[85]  Steve Maguire Writing solid code: Microsoft's techniques for developing bug-free programs , 1993 .

[86]  Ricard V. Sole,et al.  Modularity "for free" in genome architecture? , 2003, q-bio/0312032.

[87]  Benoit B. Mandelbrot,et al.  Fractal Geometry of Nature , 1984 .

[88]  Michael O'Neill,et al.  Grammatical Evolution: Evolving Programs for an Arbitrary Language , 1998, EuroGP.

[89]  Derek Rayside,et al.  Change and adaptive maintenance detection in Java software systems , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[90]  Christopher R. Myers,et al.  Software systems as complex networks: structure, function, and evolvability of software collaboration graphs , 2003, Physical review. E, Statistical, nonlinear, and soft matter physics.

[91]  Spiros Mancoridis,et al.  Using Heuristic Search Techniques To Extract Design Abstractions From Source Code , 2002, GECCO.