MIT OpenCourseWare
  • OCW home
  • Course List
  • about OCW
  • Help
  • Feedback
  • Support MIT OCW

Readings

Readings consist of a carefully selected set of historically important and foundational papers as well as more current ones reflecting the latest thoughts. A standard software engineering textbook will also be helpful as a reference.
1. The Problem
Augustine. "Yes But Will it Work in Theory?" - Courtesy of The George W. Woodruff School of Mechanical Engineering; Georgia Institute of Technology; Used with Permission (PDF)

Brooks. "No Silver Bullet: Essence and Accidents of Software Engineering." 
Computer (April 1987).
This article was first published in Information Processing 1986, H. J. Kugler, ed., Elsevia Science Publishers B. V. (North-Holland).

Davis. "Software Lemingineering."

FAA ATC Fiasco.

Leveson. "High Pressure Steam Engines and Computer Software." (PDF)

------. "Systemic Factors in Software-Related Spacecraft Accidents." (PDF)

------. "The Therac-25 Accident." (PDF)

Parnas, David Lorge. "Software Aspects of Strategic Defense Systems." Communications of the ACM 28, 12 (December 1985): 1326-1335.

2. Process and Life Cycle Models
Bach, James. "Enough About Process: What We Need Are Heroes." IEEE Software (March 1995): 96-98. (Orig. Courtesy of James Bach; Used with Permission) (PDF)

------. "The Immaturity of CMM." American Programmer (September 1994). (Orig. Courtesy of James Bach; Used with Permission) (PDF)

Bollinger, Terry. "The Interplay of Art and Science in Software." Computer (October 1997): 125-127 and 128.

Cockburn, Alistair, and Jim Highsmith. "Agile Software Development: The People Factor." Computer (November 2001): 131-133.

Gray, Lewis. "Gray Rebuts Bach: No Cowboy Programmers!" Computer (April 1998): 102, 103 and 105.

Highsmith, Jim, and Alistair Cockburn. "Agile Software Development: The Business of Innovation." Computer (September 2001): 120-122.

Mackeyn, Karen. "Mars versus Venus." IEEE Software (May/June 2000): 14-15.

Martin, Robert C. "eXtreme Programming Development through Dialog." IEEE Software (July/August 2000): 12 and 13.

McConnell, Steve. "Cargo Cult Software Engineering." From The Editor column, IEEE Software (March/April 2000): 11-13.

Paulk, Mark C., Bill Curtis, Mary Beth Chrissis, and Charles V. Weber. "The Capability Maturity Model for Software." IEEE Software.
 
Pressman, Roger S. "Can Internet-Based Applications Be Engineered?" IEEE Software (September/October 1998): 104-109.

Titan/Centaur/Milstar Accident Report. (PDF)

3. Requirements and Specifications
Lawrence, Brian, Karl Wiegers, and Christof Ebert. "The Top Risks of Requirements Engineering." IEEE Software (November/December 2001): 62 and 63.

Leishman, and Cook. "Requirements Risks Can Drown Software Projects."

Leveson. "Intent Specifications." (PDF)

Wing, Jeannette M. "A Specifier's Introduction to Formal Methods." Computer (September 1990): 8-24.

4. Requirements and Specifications
Watkins, Robert, and Mark Neal. "Why and How of Requirements Tracing." IEEE Software (July 1994): 104-106.
5. Design
Bergland. "A Guided Tour of Program Design Methodologies."

Parnas, David L. "Designing Software for Ease of Extension and Contraction." Pp. 264-277. (PDF) Courtesy of David Parnas; Used with Permission

------. "On the Criteria to be Used in Decomposing Systems into Modules."

Wirth, Niklaus. "Program Development by Stepwise Refinement." Communications of the ACM 14, no. 4 (April 1971): 221-227.

6. Design
Budgen, David. "The Loyal Opposition: Software Design Methods: Life Belt or Leg Iron?" IEEE Software (September/October 1999): 133-136.

Garlan, David, and Mary Shaw. "An Introduction to Software Architecture." (January 1994). Courtesy of Prof. Mary Shaw and Prof. David Garlan.
Also published as “An Introduction to Software Architecture.” In Advances in Software Engineering and Knowledge Engineering. Vol. 1. Edited by V. Ambriola, and G. Tortora. New Jersey: World Scientific Publishing Company, 1993. Also appears as CMU Software Engineering Institute Technical Report CMU/SEI-94-TR-21, ESC-TR-94-21.

Hatton, Les. "Does OO Sync with How We Think?" IEEE Software (May/June 1998): 46-54.

Ledgard, Henry F. "The Emperor with No Clothes." Communications of the ACM 44, no. 10 (October 2001): 126-128.

Meyer, Bertrand. "A Really Good Idea." Computer (December 1999): 144-147.

7. Building Confidence (Testing, Analysis, QA, Reviews)
Schaible, Dawn, and Keith Britton. "Testing in NASA Human-Rated Spacecraft Programs: How Much is Just Enough?" SDM Master's thesis. MIT (Feb. 2003), Chaps. 2, 4, and 5. (PDF)

Rothman, Johanna. "Of Crazy Numbers and Release Criteria." Computer (December 1998): 127-128.

Yamaura, Tsuneo. "How to Design Practical Test Cases." IEEE Software (November/December 1998): 30-36.

------. "Why Johnny Can't Test." IEEE Software (March/April 1998): 113-115.

8. Metrics and Reliability Assessment
Armour. Ten Unmyths of Project Estimation. (PDF)

Kearney, Joseph K., Robert L. Sedlmeyer, William B. Thompson, Michael A. Gray, and Michael A. Adler. "Software Complexity Measurement." Communications of the ACM 29, No. 11 (November 1986): 1044-1050.

9. COTS and Reuse
Ariane 5 Accident Report

Glass, Robert L. "The Loyal Opposition: Reuse: What's Wrong With This Picture?" IEEE Software (March/April 1998): 57-59.

Krueger, Charles W. "Software Reuse." ACM Computing Surveys 24, No. 2 (June 1992): 132-183.

Weyuker, Elaine J. "Testing Component-Based Software: A Cautionary Tale." IEEE Software (September/ October 1998): 54-59.

10. Formal Verification
Saiedian, Hossein. "An Invitation to Formal Methods." Computer  (April 1996): 16-30, New York.

Hoare, C. A. R. "An Axiomatic Basis For Computer Programming." Communications of the ACM 12, no. 10 (October 1969): 576-583.

DeMillo, Richard A., Richard J. Lipton, and Alan J. Perlis. "Social Processes and Proofs of Theorems and Programs." Communications of the ACM 22, no. 5 (May 1979).

Tannenbaum. "In Defense of Program Testing..."

11. Team Organization and People Management
Ferdinandi, Patricia L. "Facilitating Communication." Culture At Work column, IEEE Software (September/October 1998): 92-96.

Howard, Alan. "Software Engineering Project Management." Communications Of The ACM 44, No. 5 (May 2001): 23 and 24.

Kruper, K. "Types of Difficult Person/Characteristics/Tactics." Chart. Kay Williams, Boeing.

Mantei, Marilyn. "The Effect of Programming Team Structures on Programming Tasks." Communications of the ACM 24, no. 3 (March 1981): 106-113. 

McConnell, Steve. "Problem Programmers." IEEE Software (March/April 1998): 126-128.

Rettig, Mark. "Software Teams." Communications of the ACM 33, no. 10 (October 199O): 23-27.

Williams, Laurie, Robert R. Kessler, Ward Cunningham, and Ron Jeffries. "Strengthening the Case for Pair Programming." IEEE Software (July/August 2000): 19-25.

12. Software Engineering Aspects of Programming Languages
Naiditch. "Selecting a Programming Language for Your Project."

Zeigler, Stephen F. "Comparing Development Costs of C and Ada." (March 30, 1995).

Glass, Robert L. "One Giant Step Backward." Communications Of the ACM 46, no. 5 (May 2003).
13. Software Safety and Wrap-up
Bach, James. "What Software Reality is Really About." (December 1999): 148-149.

Leveson, Nancy G. "Software Engineering: A Look Back and A Path to the Future." (December 14, 1996).

Shapiro, Stuart. "Splitting the Difference: The Historical Necessity of Synthesis in Software Engineering." IEEE Annals of the History of Computing 19, no. 1 (1997): 20-54.

Wirth, Niklaus. "A Plea for Lean Software." Computer (February 1995): 64-68.