Nothing Special   »   [go: up one dir, main page]

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

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

Please enable JavaScript to view thecomments powered by Disqus.

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)8
  • Downloads (Last 6 weeks)1
Reflects downloads up to 14 Dec 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

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