Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1882362.1882406acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

The case for software evolution

Published: 07 November 2010 Publication History
  • Get Citation Alerts
  • Abstract

    Many software systems exceed our human ability to comprehend and manage, and they continue to contain unacceptable errors. This is an unintended consequence of Moore's Law, which has led to increases in system size, complexity, and interconnectedness. Yet, software is still primarily created, modified, and maintained by humans. The interactions among heterogeneous programs, machines and human operators has reached a level of complexity rivaling that of some biological ecosystems. By viewing software as an evolving complex system, researchers could incorporate biologically inspired mechanisms and employ the quantitative analysis methods of evolutionary biology. This approach could improve our understanding and analysis of software; it could lead to robust methods for automatically writing, debugging and improving code; and it could improve predictions about functional and structural transitions as scale increases. In the short term, an evolutionary perspective challenges several research assumptions, enabling advances in error detection, correction, and prevention.

    References

    [1]
    G. Ammons, R. Bodik, and J. R. Larus. Mining specifications. In Principles of Programming Languages, pages 4--16, 2002.
    [2]
    J. Anvik, L. Hiew, and G. C. Murphy. Who should fix this bug? In International Conference on Software Engineering, pages 361--370, 2006.
    [3]
    W. B. Arthur. The Nature of Technology: What it is and How it Evolves. Simon and Schuster, 2009.
    [4]
    N. Ayewah, D. Hovemeyer, J. D. Morgenthaler, J. Penix, and W. Pugh. Using static analysis to find bugs. IEEE Software, 25(5):22--29, 2008.
    [5]
    T. Ball and S. K. Rajamani. The SLAM project: debugging system software via static analysis. In Principles of Programming Languages, pages 1--3, 2002.
    [6]
    G. Barrantes, D. Ackley, S. Forrest, T. Palmer, D. Stefanovic, and D. Zovi. Randomized instruction set emulation to disrupt binary code injection attacks. In Computer and Communications Security, 2003.
    [7]
    T. V. Belle. Modularity and the Evolution of Software Evolvability. PhD thesis, University of New Mexico, Albuquerque, NM, 2004.
    [8]
    A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. Henri-Gros, A. Kamsky, S. McPeak, and D. R. Engler. A few billion lines of code later: using static analysis to find bugs in the real world. Commun. ACM, 53(2):66--75, 2010.
    [9]
    R. V. Binder. Testing object-oriented systems: models, patterns, and tools. Addison-Wesley, 1999.
    [10]
    W. R. Bush, J. D. Pincus, and D. J. Sielaff. A static analyzer for finding dynamic programming errors. Softw., Pract. Exper., 30(7):775--802, 2000.
    [11]
    B. Cox, D. Evans, A. Filipi, J. Rowanhill, W. Hu, J. Davidson, J. Knight, A. Nguyen-Tuong, and J. Hiser. N-variant systems: a secretless framework for security through diversity. In USENIX Security Symposium, 2006.
    [12]
    S. Forrest, J. Balthrop, M. Glickman, and D. Ackley. Computation in the wild. In E. Jen, editor, Robust Design: A Repertoire of Biological, Ecological, and Engineering Case Studies, pages 207--230. Oxford University Press, 2004. Reprinted in K. Park and W. Willinger Eds. The Internet as a Large-Scale Complex System, pp. 227--250. Oxford University Press (2005).
    [13]
    S. Forrest, A. Somayaji, and D. H. Ackley. Building diverse computer systems. In Sixth Workshop on Hot Topics in Operating Systems, 1998.
    [14]
    S. Forrest, W. Weimer, T. Nguyen, and C. Le Goues. A genetic programming approach to automated software repair. In Genetic and Evolutionary Computing Conference, pages 947--954, 2009.
    [15]
    P. Godefroid, N. Klarlund, and K. Sen. Dart: directed automated random testing. In Programming Language Design and Implementation, pages 213--223, 2005.
    [16]
    J. Ha, M. Arnold, S. M. Blackburn, and K. S. McKinley. A concurrent dynamic analysis framework for multicore hardware. In Object oriented programming systems languages and applications, pages 155--174, 2009.
    [17]
    D. Hovemeyer, J. Spacco, and W. Pugh. Evaluating and tuning a static analysis to find null pointer bugs. SIGSOFT Softw. Eng. Notes, 31(1):13--19, 2006.
    [18]
    W. Hu, J. Hiser, D. Williams, A. Filipi, J. W. Davidson, D. Evans, J. C. Knight, A. Nguyen-Tuong, and J. C. Rowanhill. Secure and practical defense against code-injection attacks using software dynamic translation. In Virtual Execution Environments, pages 2--12, 2006.
    [19]
    D. Jackson. Alloy: a lightweight object modelling notation. ACM Trans. Softw. Eng. Methodol., 11(2):256--290, 2002.
    [20]
    J. A. Jones and M. J. Harrold. Empirical evaluation of the tarantula automatic fault-localization technique. In Automated software engineering, pages 273--282, 2005.
    [21]
    M. Jorgensen and M. Shepperd. A systematic review of software development cost estimation studies. IEEE Transactions on Software Engineering, 33(1):33--53, 2007.
    [22]
    X. Leroy. Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In Principles of Programming Languages, pages 42--54, 2006.
    [23]
    B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. In Programming language design and implementation, pages 141--154, 2003.
    [24]
    B. Nagy, J. D. Farmer, J. E. Trancik, and Q. M. Bui. Testing for laws of technological progress. Santa Fe Institute Technical Report, (2010).
    [25]
    NIST. The economic impacts of inadequate infrastructure for software testing. Technical Report NIST Planning Report 02-3, NIST, May 2002.
    [26]
    J. H. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan, W.-F. Wong, Y. Zibin, M. D. Ernst, and M. Rinard. Automatically patching errors in deployed software. In Symposium on Operating Systems Principles, pages 87--102, October 2009.
    [27]
    C. V. Ramamoothy and W.-T. Tsai. Advances in software engineering. IEEE Computer, 29(10):47--58, 1996.
    [28]
    M. Rinard, C. Cadar, D. Dumitran, D. M. Roy, T. Leu, and W. S. Beebee. Enhancing server availability and security through failure-oblivious computing. In Operating Systems Design and Implementation, pages 303--316, 2004.
    [29]
    E. M. Rogers. Diffusion of Innovations. Glencoe: Free Press, 1962.
    [30]
    R. C. Seacord, D. Plakosh, and G. A. Lewis. Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices. Addison-Wesley, 2003.
    [31]
    K. Sen. Concolic testing. In Automated Software Engineering, pages 571--572, 2007.
    [32]
    S. Srivastava, S. Gulwani, and J. S. Foster. From program verification to program synthesis. In Principles of Programming Languages, pages 313--326, 2010.
    [33]
    J. Sutherland. Business objects in corporate information systems. ACM Comput. Surv., 27(2):274--276, 1995.
    [34]
    D. Wagner, J. S. Foster, E. A. Brewer, and A. Aiken. A first step towards automated detection of buffer overrun vulnerabilities. In Networking and Distributed System Security Symposium, Feb. 2000.
    [35]
    G. Wassermann and Z. Su. Sound and precise analysis of web applications for injection vulnerabilities. In Programming Languages Design and Implementation, pages 32--41, 2007.
    [36]
    W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In International Conference on Software Engineering, pages 364--367, 2009.
    [37]
    X. Yin, J. C. Knight, E. A. Nguyen, and W. Weimer. Formal verification by reverse synthesis. In Computer Safety, Reliability, and Security, pages 305--319, 2008.
    [38]
    T. Zimmermann, N. Nagappan, H. Gall, E. Giger, and B. Murphy. Cross-project defect prediction: a large scale experiment on data vs. domain vs. process. In Foundations of Software Engineering, pages 91--100, 2009.

    Cited By

    View all
    • (2020)Evolving sqrt into 1/x via software data maintenanceProceedings of the 2020 Genetic and Evolutionary Computation Conference Companion10.1145/3377929.3398110(1928-1936)Online publication date: 8-Jul-2020
    • (2020)Incentivizing Deep Fixes in Software EconomiesIEEE Transactions on Software Engineering10.1109/TSE.2018.284218846:1(51-70)Online publication date: 1-Jan-2020
    • (2013)Current challenges in automatic software repairSoftware Quality Journal10.1007/s11219-013-9208-021:3(421-443)Online publication date: 1-Sep-2013
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    FoSER '10: Proceedings of the FSE/SDP workshop on Future of software engineering research
    November 2010
    460 pages
    ISBN:9781450304276
    DOI:10.1145/1882362
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 07 November 2010

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. evolutionary computation
    2. genetic programming
    3. program repair
    4. software engineering

    Qualifiers

    • Research-article

    Conference

    SIGSOFT/FSE'10
    Sponsor:

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)7
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 27 Jul 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2020)Evolving sqrt into 1/x via software data maintenanceProceedings of the 2020 Genetic and Evolutionary Computation Conference Companion10.1145/3377929.3398110(1928-1936)Online publication date: 8-Jul-2020
    • (2020)Incentivizing Deep Fixes in Software EconomiesIEEE Transactions on Software Engineering10.1109/TSE.2018.284218846:1(51-70)Online publication date: 1-Jan-2020
    • (2013)Current challenges in automatic software repairSoftware Quality Journal10.1007/s11219-013-9208-021:3(421-443)Online publication date: 1-Sep-2013
    • (2011)A cognitively meaningful digital ecosystem approach: Implications for mobile digital ecosystem5th IEEE International Conference on Digital Ecosystems and Technologies (IEEE DEST 2011)10.1109/DEST.2011.5936626(203-207)Online publication date: May-2011

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media