PhD CS – Software Methodology and Engineering Body of Knowledge

1. General knowledge of the field

Students should have knowledge of the fundamentals contained in a general SE text such as Pressman: (Software Engineering: A Practitioner's Approach by Roger S. Pressman, McGraw-Hill, 2001)

2. Software engineering and information systems

  1. F. B. Brooks, Jr. The Mythical Man-Month, 20th Anniversary edition. Addison Wesley, 1995.
  2. M. Shaw. "Prospects for an Engineering Discipline of Software". IEEE Software, 7(6):15-24, November 1990.
  3. Nancy G. Leveson. SafeWare / System Safety and Computers. Addison-Wesley, 1995, Chapters 14-15, Appendix A.

3. Requirements Engineering

  1. M. A. Jackson. Software Requirements and Specifications: A lexicon of practice, principles and prejudices. Addison-Wesley, 1995. - Introduction and "tours" on: "An Overview", "The System and the World", "Structures of Descriptions", and "Problem Frames."
  2. Axel van Lamsweerde. "Goal-Oriented Requirements Engineering: From System Objectives to UML Models to Precise Software Specifications." Proceedings of the 25th International Conference on Software Engineering, Portland, Oregon, 744 - 745, 2003.
  3. Carl A. Gunter, Elsa L. Gunter, Michael Jackson and Pamela Zave. "A Reference Model for Requirements and Specifications." IEEE Software, 17(3):37-43, May/June 2000.

4. Software Design

  1. David L. Parnas. "On the Criteria to be Used in Decomposing Systems into Modules". Communications of the ACM, 15(12):1053-1058, December 1972.
  2. Martin Fowler and Kendall Scott. UML Distilled: A Brief Guide to the Standard Object Modeling Language (2nd Edition). Addison-Wesley, 1999.
  3. Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Design Patterns / Elements of Reusable Object-Oriented Software. Addison Wesley, 1995, Chapters 1 and 2.
  4. R. N. Taylor, N. Medvidovic and E. M. Dashofy. Software Architecture: Foundations, Theory, and Practice. Wiley, January 9, 2009, Chapters 1 and 3.
  5. P. B. Kruchten. "The 4+1 View Model of architecture." IEEE Software, 12(6):42-50, November-December, 1995.

5. Program analysis

  1. Frank Tip. "A Survey of Program Slicing Techniques." Journal of Programming Languages, 3:121-189, 1995.
  2. Jeanne Ferrante, Karl J. Ottenstein and Joe D. Warren. "The Program Dependence Graph and its Use in Optimization." ACM Transactions on Programming Languages and Systems, July 1987, 9(3):319-349.
  3. Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools, Second Edition, Addison Wesley, 2007, Chapters 9 and 12.
  4. Lori A. Clarke and Debra Richardson. "Symbolic Evaluation Methods for Program Analysis." In Flow Analysis: Theory and Application, S. Muchnick and N. Jones, editors, Prentice Hall, 1981, 264-300.

6. Software testing

  1. John B. Goodenough and Susan L. Gerhart, "Toward a Theory of Test Data Selection". IEEE Transactions on Software Engineering, June 1975, pp. 156-173
  2. Elaine J. Weyuker. "The Evaluation of Program-Based Software Test Data Adequacy Criteria". Communications of the ACM", 31(6):668-675, June 1988.
  3. Mauro Pezze and Michal Young. Software Testing and Analysis: Process, Principles and Techniques, Wiley, April 13, 2007, Chapters 1-4.
  4. J. Jones and M. J. Harrold. "Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique." Proceedings of the International Conference on Automated Software Engineering, 273-282, November 2005.
  5. Koushik Sen, Darko Marinov and Gul Agha. "CUTE: A Concolic Unit Testing Engine for C." Proceedings of the 10th European Software Engineering Conference, September 05-09, 2005, Lisbon, Portugal.

7. Program comprehension and empirical methods

  1. Elliot J. Chikofsky and James H. Cross, "Reverse Engineering and Design Recovery: A Taxonomy". IEEE Software, 7(1):13-17, January 1990.
  2. Ted J. Biggerstaff, Bharat G. Mitbander, and Dallas Webster. "Program Understanding and the Concept Assignment Problem." Communications of the ACM, 37(5):72-83, May 1994.
  3. V. R. Basili and H. D. Mills. "Understanding and documenting programs." IEEE Transactions on Software Engineering, SE-8, pp. 270-283, 1982.
  4. Dag I. K. Sjoberg, Bente Anda, Erik Arisholm, Tore Dyba, Magne Jorgense, Amela Karahasanovic, Espen F. Koren and Marek Vokac. "Conducting Realistic Experiments in Software Engineering." Proceedings of the 2002 International Symposium on Empirical Software Engineeeing (ISESE'02).
  5. Walter F. Tichy. "Should Computer Scientists Experiment More? 16 Reasons to Avoid Experimentation." IEEE Computer, 31(5):32-40, May 1998.

8. Software generation

  1. Martin Fowler. Refactoring. Chapters 1 and 2, Addison Wesley, 1999.
  2. Charles W. Krueger. "Software Reuse." ACM Computing Surveys, 24(2):131-183, June 1992.
  3. Krzysztof Czarnecki and Ulrich Eisenecker. Generative Programming: Methods, Tools, and Applications. Chapters 1 and 6, Addison-Wesley, 2000.

9. Formal methods

  1. Woodcock and Loomes, Chapter 12 in Software Engineering Mathematics, Addison Wesley, 1988.
  2. A. Hall. "Seven Myths of Formal Methods". IEEE Software, 7(5):11-20, September, 1990.
  3. J. Wing. "A Specifier's Introduction to Formal Methods". Computer 23(9):8-26, September, 1990.
  4. Richard A. DeMillo, Richard J. Lipton and Alan J. Perlis, "Social Processes and Proofs of Theorems and Programs". Communications of the ACM, 22(5):271-280, May 1979.
  5. Jos Warmer and Anneke Kleppe. The Object Constraint Language. Addison-Wesley, 1999.

10. Software project management and development processes

  1. R. G. Dromey. "A Model for Software Quality", IEEE Transactions on Software Engineering, 21(2):146-162.
  2. Barry W. Boehm and Richard Turner. "Observations on Balancing Discipline and Agility". Proceedings of the Agile Development Conference ADC'03, IEEE Computer Society, 2003.
  3. Steve McConnell. Rapid Development. Chapters 3-5, 7-9, 13, Microsoft Press, 1996.
  4. CMMI Product Team. "CMMI for Development, Version 1.2 / Capability Maturity Model Integration." Technical Report CMU/SEI-2006-TR-008.


Last updated: July 2009