Yanyan's Wiki 软件工程研究入门 (2022)

Reading List

Empirical Software Engineering (EMSE)

  1. Shan Lu, Soyeon Park, Eunsoo Seo, and Yuanyuan Zhou. Learning from mistakes — A comprehensive study on real world concurrency bug characteristics. ASPLOS'08.
  2. Will Dietz, Peng Li, John Regehr, and Vikram Adve. Understanding integer overflow in C/C++. ICSE'12.
  3. Abram Hindle, Earl Barr, Mark Gabel, Zhendong Su, and Prem Devanbu. On the naturalness of software. ICSE'12.
  4. Danilo Silva, Nikolaos Tsantalis, and Marco Tulio Valente. Why we refactor? Confessions of GitHub contributors. FSE'16.

Software Engineering Process (SEP)

  1. Thomas D. LaToza, Gina Venolia, and Robert DeLine. Maintaining mental models: A study of developer work habits. ICSE'06.
  2. Sumit Gulwani. Automating string processing in spreadsheets using input-output examples. POPL'11.
  3. Andrew J. Ko. A three-year participant observation of software startup software evolution. ICSE'17 (SEIP).
  4. Uri Alon, Meital Zilberstein, Omer Levy, and Eran Yahav. code2vec: Learning distributed representations of code. POPL'19.

Formal Methods (FM)

  1. James C. King. Symbolic execution and program testing, 1976.
  2. Patrice Godefroid. Model checking for programming languages using VeriSoft. POPL'97.
  3. Cristian Cadar, Daniel Dunbar, and Dawson Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. OSDI'08.
  4. Sergey Mechtaev, Jooyong Yi, and Abhik Roychoudhury. Angelix: Scalable multiline program patch synthesis via symbolic analysis. ICSE'16.

Software Testing and Analysis (STA)

  1. Michael D. Ernst, Jake Cockrell, William G. Griswold, and David Notkin. Dynamically discovering likely program invariants to support program evolution. IEEE Transactions on Software Engineering (TSE), 27(2), 2001.
  2. Dawson Engler, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf. Bugs as deviant behavior: A general approach to inferring errors in systems code. SOSP'01.
  3. Junfeng Yang, Can Sar, and Dawson Engler. eXplode: A lightweight, general system for finding serious storage system errors. OSDI'06.
  4. Nicholas Nethercote and Julian Seward. Valgrind: A framework for heavyweight dynamic binary instrumentation. PLDI'07.

Software Maintenance and Evolution (SME)

  1. James A. Jones, Mary Jean Harrold, and John Stasko. Visualization of test information to assist fault localization. ICSE'02.
  2. Andreas Zeller and Ralf Hildebrandt. Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering (TSE), 28(2), 2002.
  3. George Candea, Shinichi Kawamoto, Yuichi Fujiki, Greg Friedman, and Armando Fox. Microreboot – A technique for cheap recovery. OSDI'04.
  4. Kirk Glerum, Kinshuman Kinshumann, Steve Greenberg, Gabriel Aul, Vince Orgovan, Greg Nichols, David Grant, Gretchen Loihle, and Galen Hunt. Debugging in the (very) large: Ten years of implementation and experience. SOSP'09.
Creative Commons License    苏 ICP 备 2020049101 号