Evolving Robust Software – Literature Review
Table of Contents
Methodology
- Identify relevant disciplines and sub-disciplines
- Start with known papers, groups, authors and keywords
- Search each of the above to find a starting group of papers
- TODO Follow references to/from starting set until sufficient coverage is achieved – estimate of total available papers may be gained through tracking the number of previously seen papers in references
References
See a graph of these references.
Digital Evolution
- Outline for a logical theory of adaptive systems
- Evolution of digital organisms at high mutation rates leads to survival of the flattest
- On the gradual evolution of complexity and the sudden emergence of complex features
- Avida: A software platform for research in computational evolutionary biology
- Design of evolvable computer languages
- Effects of population size and mutation rate on the evolution of mutational robustness
- Evolution of Genetic Potential
- Dynamics of adaptation and diversification: a 10,000-generation experiment with bacterial populations
Evolutionary Computation
- Adaptation in natural and artificial systems: an introductory analysis with applications to biology, control, and artificial intelligence
- Genetic Programming: On the Programming of Computers by Means of Natural Selection, 1992
- A field guide to genetic programming
- Fitness landscapes and evolvability
- Cartesian genetic programming
- The advantages of landscape neutrality in digital circuit evolution
Automatically Defined Functions
dead code, introns, diploidy and memory
- Fitness causes bloat: Mutation
- Explicitly Defined Introns and Destructive Crossover in Genetic Programming
- The royal road for genetic algorithms: Fitness landscapes and GA performance
- Memory enhanced evolutionary algorithms for changing optimization problems
- Supporting polyploidy in genetic algorithms using dominance vectors
- Messy genetic algorithms: Motivation, analysis, and first results
Parallel Distributed EC
- Parallel genetic algorithms: theory and applications
- Parallel genetic programming on a network of transputers
- A parallel implementation of genetic programming that achieves super-linear performance
- Beowulf-class clustered computing: Harnessing the power of parallelism in a pile of PCs
- A Brute-Force Approach to Automatic Induction of Machine Code on CISC Architectures
- Smooth uniform crossover, sub-machine code GP and demes: A recipe for solving high-order boolean parity problems
- A massively parallel GP engine in VLSI
- Pfeiffer–A distributed open-ended evolutionary system
- Physical evolutionary computation
- 1/2 Parallel and Distributed Evolutionary Algorithms: A
- Coarse-grain parallel genetic algorithms: Categorization and new approach
- Evolution in time and space-the parallel genetic algorithm
- Parallelism and evolutionary algorithms
Alternative Computational Architectures
- The connection machine
- Pursue robust indefinite scalability
- Programming self developing blob machines for spatial computing
- Homeostatic architectures for robust spatial computing
- The liquidware.com shop
- The art of the propagator
- The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
Malware
Robustness in Biology
- Robustness and evolvability in living systems
- Robustness and evolvability: a paradox resolved
- Innovation and robustness in complex regulatory gene networks
- Balancing robustness and evolvability
- Degeneracy and complexity in biological systems
- Degeneracy: a design principle for achieving robustness and evolvability
- Redundancy, antiredundancy, and the robustness of genomes
- Robustness and evolution: concepts, insights and challenges from a developmental model system
- Robustness can evolve gradually in complex regulatory gene networks with varying topology
- Historical contingency and the evolution of a key innovation in an experimental population of Escherichia coli
- Neutral evolution of mutational robustness
- Mutational robustness can facilitate adaptation
- What is a quasispecies?
- Neutralism and selectionism: a network-based reconciliation
- The evolvability of programmable hardware
- From sequences to shapes and back: A case study in RNA secondary structures
- Smoothness Within ruggedness: The role of neutrality in adaptation
- Evolution of Evolvability in Gene Regulatory Networks
- Homologues, natural kinds and the evolution of modularity
- Selection, history and chemistry: the three faces of the genetic code
- Biological robustness
- Multiple knockout analysis of genetic robustness in the yeast metabolic network
Software Engineering
- Computer Software Engineers and Computer Programmers
- Graphite: A distributed parallel simulator for multicores
- How do fixes become bugs?
- Seven myths of formal methods ← used so rarely it is a publishable offense
- Search-based software test data generation: a survey
- Challenges in software evolution
- The Daikon system for dynamic detection of likely invariants
- Software Mutational Robustness: Bridging The Gap Between Mutation Testing and Evolutionary Biology
Automated Program Evolution and Repair
- Evolutionary Improvement of Programs
- Investigations into graceful degradation of evolutionary developmental software
- Automatically finding patches using genetic programming
- AEG: Automatic exploit generation
- Automated fixing of programs with contracts
- Applying Digital Evolution to the Development of Self-Adaptive ULS Systems
- Countering network worms through automatic patch generation
- Evolving patches for software repair
- Assure: automatic software self-healing using rescue points
- Automated Program Repair through the Evolution of Assembly Code
- A genetic programming approach to automated software repair
- Designing better fitness functions for automated program repair
- {GenProg}: A Generic Method for Automated Software Repair
- Object-level recombination of commodity applications
- A Systematic Study of Automated Program Repairs: Fixing 55 out of 105 bugs for $8 Each
- Genetic programming for shader simplification
Autonomic/Biological Computing
Compilers
Mutation Testing
- An analysis and survey of the development of mutation testing
- Milu: A customizable, runtime-optimized higher order mutation testing tool for the full C language
- A transformational language for mutant description
- Using compiler optimization techniques to detect equivalent mutants
- Automatically detecting equivalent mutants and infeasible paths
- How to overcome the equivalent mutant problem and achieve tailored selective mutation using co-evolution
- Mutation analysis using mutant schemata
- A fortran language system for mutation-based software testing
- The class-level mutants of MuJava
- An experimental determination of sufficient mutant operators
- Constraint-based automatic test data generation
- Two notions of correctness and their relation to testing
- Compiler-integrated program mutation
Diversity and N-version programming
- On achieving software diversity for improved network security using distributed coloring algorithms
- N-version programming: A fault-tolerance approach to reliability of software operation
- An Experimental Evaluation of the Assumption of Independence in Multiversion Programming
- Security through diversity: Leveraging virtual machine technology
- Understanding Attack Scalability using Vulnerability Sets
approximate/unsound computation
- Survival strategies for synthesized hardware systems
- Automatically patching errors in deployed software
- Enhancing server availability and security through failure-oblivious computing
- Probabilistically accurate program transformations
- PetaBricks: a language and compiler for algorithmic choice
- Power-aware computing with dynamic knobs
- Quality of service profiling
- Engineered Robustness by Controlled Hallucination