Software is Not Fragile

  • William B. LangdonEmail author
  • Justyna Petke
Conference paper
Part of the Springer Proceedings in Complexity book series (SPCOM)


Trying all simple changes (first order mutations) to executed C, C++ and CUDA source code shows software engineering artefacts are more robust than is often assumed. Of those that compile, up to 89 % run without error. Indeed a few mutants are improvements. Program fitness landscapes are smoother. Analysis of these programs, a parallel nVidia GPGPU kernel, all CUDA samples and the GNU C library shows many lines of code and integer values are repeated and may follow Zipf’s law.


Source Code Program Code Fitness Landscape CUDA Code Random Test Case 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Langdon WB (forthcoming) Genetically improved software. In: Gandomi AH, Alavi AH, Ryan C (eds) Handbook of genetic programming applications. Springer, ChamGoogle Scholar
  2. 2.
    Langdon WB (2015) Genetic improvement of software for multiple objectives. In: Labiche Y, Barros M (eds) SSBSE, Bergamo, Italy. LNCS, vol 9275. Springer, Cham, pp 12–28; Invited keynoteGoogle Scholar
  3. 3.
    Langdon WB, Petke J, White DR (2015) Genetic improvement 2015 chairs’ welcome. In: Langdon WB, Petke J, White DR (eds) Genetic improvement 2015 workshop, Madrid. ACM, New York, pp 791–792Google Scholar
  4. 4.
    Harman M, Jones BF (2001) Search based software engineering. Inf Softw Technol 43(14):833–839CrossRefGoogle Scholar
  5. 5.
    Holland JH (1992) Adaptation in natural and artificial systems: an introductory analysis with applications to biology, control and artificial intelligence. MIT Press, Cambridge; First Published by University of Michigan Press (1975)Google Scholar
  6. 6.
    Poli R, Langdon WB, McPhee NF (2008) A field guide to genetic programming. Published via and freely available at (With contributions by J.R. Koza)
  7. 7.
    Beyer HG, Langdon W (eds) (2011) Foundations of genetic algorithms, Schwarzenberg, Austria. ACM, New YorkGoogle Scholar
  8. 8.
    Langdon WB, Poli R (2002) Foundations of genetic programming. Springer, BerlinCrossRefzbMATHGoogle Scholar
  9. 9.
    Louridas P, Spinellis D, Vlachos V (2008) Power laws in software. ACM Trans Softw Eng Methodol 18(1):2:1–2:26
  10. 10.
    Zipf GK (1949) Human behavior and the principle of least effort: an introduction to human ecology. Addison-Wesley Press Inc., CambridgeGoogle Scholar
  11. 11.
    Langdon WB, Harman M, Jia Y (2010) Efficient multi-objective higher order mutation testing with genetic programming. J Syst Softw 83(12):2416–2430CrossRefGoogle Scholar
  12. 12.
    Yao X, Harman M, Jia Y (2014) A study of equivalent and stubborn mutation operators using human analysis of equivalence. In: Proceedings of the 36th international conference on software engineering, ICSE 2014, Hyderabad. ACM, New York, pp 919–930Google Scholar
  13. 13.
    Li H, Durbin R (2010) Fast and accurate long-read alignment with Burrows-Wheeler transform. Bioinformatics 26(5):589–595CrossRefGoogle Scholar
  14. 14.
    Langdon WB, Harman M (2015) Optimising existing software with genetic programming. IEEE Trans Evol Comput 19(1):118–135CrossRefGoogle Scholar
  15. 15.
    Stam J (2008) Stereo imaging with CUDA. Technical Report, nVidiaGoogle Scholar
  16. 16.
    Langdon WB, Harman M (2014) Genetically improved CUDA C++ software. In: Nicolau M, Krawiec K, Heywood MI, Castelli M, Garcia-Sanchez P, Merelo JJ, Rivas Santos VM, Sim K (eds) 17th European conference on genetic programming, Granada, Spain. LNCS, vol 8599. Springer, Berlin, pp 87–99Google Scholar
  17. 17.
    Owens JD, Houston M, Luebke D, Green S, Stone JE, Phillips JC (2008) GPU computing. Proc IEEE 96(5):879–899; Invited paper
  18. 18.
    Langmead B, Salzberg SL (2012) Fast gapped-read alignment with Bowtie 2. Nat Methods 9(4):357–359CrossRefGoogle Scholar
  19. 19.
    Langdon WB (2014) Genetic improvement of programs. In: Winkler F, Negru V, Ida T, Jebelean T, Petcu D, Watt S, Zaharie D (eds) 16th international symposium on symbolic and numeric algorithms for scientific computing (SYNASC 2014), Timisoara. IEEE, New York, pp 14–19; KeynoteGoogle Scholar
  20. 20.
    Koza JR (1992) Genetic programming: on the programming of computers by natural selection. MIT Press, CambridgezbMATHGoogle Scholar
  21. 21.
    Daida JM, Bertram RR, Stanhope SA, Khoo JC, Chaudhary SA, Chaudhri OA, Polito II JA (2001) What makes a problem GP-hard? Analysis of a tunably difficult problem in genetic programming. Genet Program Evolvable Mach 2(2):165–191CrossRefzbMATHGoogle Scholar
  22. 22.
    Langdon WB (1998) Genetic programming and data structures: genetic programming + data structures = automatic programming!. Genetic programming, vol 1. Kluwer, BostonGoogle Scholar
  23. 23.
    Langdon WB, Harman M (2010) Evolving a CUDA Kernel from an nVidia template. In: Sobrevilla P (ed) 2010 IEEE world congress on computational intelligence, Barcelona. IEEE, New York, pp 2376–2383Google Scholar
  24. 24.
    Langdon WB, Modat M, Petke J, Harman M (2014) Improving 3D medical image registration CUDA software with genetic programming. In: Igel C, Arnold DV, Gagne C, Popovici E, Auger A, Bacardit J, Brockhoff D, Cagnoni S, Deb K, Doerr B, Foster J, Glasmachers T, Hart E, Heywood MI, Iba H, Jacob C. Jansen T, Jin Y, Kessentini M, Knowles JD, Langdon WB, Larranaga P, Luke S, Luque G, McCall JAW, Montes de Oca MA, Motsinger-Reif A, Ong YS, Palmer M, Parsopoulos KE, Raidl G, Risi S, Ruhe G, Schaul T, Schmickl T, Sendhoff B, Stanley KO, Stuetzle T, Thierens D, Togelius J, Witt C, Zarges C (eds) GECCO ’14: proceeding of the sixteenth annual conference on genetic and evolutionary computation conference, Vancouver, BC. ACM, New York, pp 951–958Google Scholar
  25. 25.
    Langdon WB, Lam BYH, Petke J, Harman M (2015) Improving CUDA DNA analysis software with genetic programming. In: Silva S, Esparcia-Alcazar AI, Lopez-Ibanez M, Mostaghim S, Timmis J, Zarges C, Correia L, Soule T, Giacobini M, Urbanowicz R, Akimoto Y, Glasmachers T, Fernandez de Vega F, Hoover A, Larranaga P, Soto M, Cotta C, Pereira FB, Handl J, Koutnik J, Gaspar-Cunha A, Trautmann H, Mouret JB, Risi S, Costa E, Schuetze O, Krawiec K, Moraglio A, Miller JF, Widera P, Cagnoni S, Merelo J, Hart E, Trujillo L, Kessentini M, Ochoa G, Chicano F, Doerr C (eds) GECCO ’15: proceedings of the 2015 on genetic and evolutionary computation conference, Madrid. ACM, New York, pp 1063–1070Google Scholar
  26. 26.
    Langdon WB, Harman M (2015) Grow and graft a better CUDA pknotsRG for RNA pseudoknot free energy calculation. In: Langdon WB, Petke J, White DR (eds) Genetic improvement 2015 workshop, Madrid. ACM, New York, pp 805–810Google Scholar
  27. 27.
    Fraser G, Arcuri A (2011) Evosuite: automatic test suite generation for object-oriented software. In: 8th European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering (ESEC/FSE ’11). ACM, New York, pp 416–419Google Scholar

Copyright information

© Springer International Publishing Switzerland 2017

Authors and Affiliations

  1. 1.CREST, Department of Computer ScienceUniversity College LondonLondonUK

Personalised recommendations