Software Engineering Reading List


  1. Writing Good Software Engineering Research Papers by Mary Shaw (ICSE 2003)
  2. A rational design process: How and why to fake it by D. Parnas and P. Clements, IEEE Transactions on Software Engineering, 12(2), Feb. 1986,
  3. A Survey of Software Refactoring by Tom Mens, Tom Tourwe (IEEE Trans. Software Eng. 30(2): 126-139, 2004) (through library
  4. Toward a Theory of Test Data Selection by John B. Goodenough and Susan L. Gerhart (IEEE TSE 1(2)), 1972
  5. An overview of JML tools and applications by Lilian Burdy, Yoonsik Cheon, David R. Cok, Michael D. Ernst, Joseph R. Kiniry, Gary T. Leavens, K. Rustan M. Leino, and Erik Poll (STTT 7(3)), pp. 212-232 (through library DOI 10.1007/s10009-004-0167-4)


  1. Design Patterns: Abstraction and Reuse of Object-Oriented Design by Erich Gamma, Richard Helm, Ralph E. Johnson, and John Vlissides ECOOP 1993 (LNCS 707), pp. 406-431
  2. An Introduction to Software Architecture by David Garlan and Mary Shaw Carnegie Mellon University Technical Report CMU-CS-94-166, January 1994
  3. Reflecting on Aspect-Oriented Programming, Metaprogramming, and Adaptive Distributed Monitoring by Bill Donkervoet and Gul Agha (FMCO 2007)


  1. JunGL: a Scripting Language for Refactoring by Mathieu Verbaere, Ran Ettinger and Oege de Moor (ICSE 2006)


  1. Combining Unit-level Symbolic Execution and System-level Concrete Execution for Testing NASA Software by Corina S. Pasareanu, Peter C. Mehlitz, David H. Bushnell, Karen Gundy-Burlet, Michael R. Lowry, Suzette Person, Mark Pape (ISSTA 2008)


  1. LCLint: A Tool for Using Specifications to Check Code by David Evans, John V. Guttag, James J. Horning, Yang Meng Tan (FSE 1994), pp. 87-96
  2. Predicting accurate and actionable static analysis warnings: an experimental approach by Joseph R. Ruthruff, John Penix, J. David Morgenthaler, Sebastian Elbaum, and Gregg Rothermel (ICSE 2008)


  1. Dynamically Discovering Likely Program Invariants to Support Program Evolution by Michael D. Ernst, Jake Cockrell, William G. Griswold, David Notkin (ICSE 1999), pp. 213-224
  2. Isolating Cause-Effect Chains from Computer Programs by Andreas Zeller (FSE 2002)
  3. Finding and Reproducing Heisenbugs in Concurrent Programs by Madanlal Musuvathi, Shaz Qadeer, Thomas Ball, Gerard Basler, Piramanayagam Arumuga Nainar, Iulian Neamtiu (OSDI 2008), pp. 267-280


  1. Selecting Empirical Methods for Software Engineering Research by Steve Easterbrook, Janice Singer, Margaret-Anne Storey, Daniela Damian (GAESE 2007), pp. 285-311


  1. Reverse engineering and design recovery: A taxonomy by E. J. Chikofsky and J. H. Cross II (IEEE Software, 7(1):13-17, 1990)
  2. Palantir: Raising Awareness among Configuration Management Workspaces by Anita Sarma, Zahra Noroozi, Andre van der Hoek (ICSE 2003)
  3. Barry W. Boehm, Richard Turner: Management Challenges to Implementing Agile Processes in Traditional Development Organizations. IEEE Software 22(5): 30-39 (2005)
  4. Software Metrics and Reliability by Linda Rosenberg, Ted Hammer, and Jack Shaw (ISSRE 1998)

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer