DRAFT
Yanyan's Wiki 操作系统 (2023)

软件工程研究入门:阅读列表

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. Konstantin Serebryany, Derek Bruening, Alexander Potapenko, and Dmitry Vyukov. AddressSanitizer: A fast address sanity checker. USENIX ATC'12.

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.

Note

如果你对更多的论文/资料有兴趣,欢迎查看我们小组的阅读列表

Creative Commons License    苏 ICP 备 2020049101 号