16.355J | Fall 2005 | Graduate

Software Engineering Concepts




Introducing The Problem

Leveson, Nancy G. “The Therac-25 Accident.” (PDF - 1.9 MB)

Lewyn, Mark. “Flying in Place: The FAA’s Air Control Fiasco.” Business Week (April 26, 1998): 87-88.

Augustine, Norman R. “Yes, But Will It Work in Theory?” Norman Lockheed Martin Corporation.

Brooks, Frederick, Jr. “No Silver Bullet.” In Information Processing. Edited by H. J. Kugler. North-holland, BV: Elsevia Science Publishers, 1986. ISBN: 0444700773.

Davis, Alan. “Software Lemmingineering.” IEEE Magazine (September 1993): 79-82.

Leveson, Nancy G. “The Role of Software in Spacecraft Accidents.” AIAA Journal of Spacecraft and Rockets. (PDF)

Ewusi-Mensah, Kweku. “Critical Issues in Abandoned Information Systems Development Projects.” Communications of the ACM 50, no. 9 (September 1997).


Process and Life Cycle Models

Spiral Model (GIF)

Paulk, Mark C., Bill Curtis, Mary Beth Chrissis, and Charles V. Weber. “The Capability Maturity Model for Software.” Pittsburgh, PA: Carnegie Mellon University, Software Engineering Institute. (Unpublished.)

Bach, James. “The Immaturity of CMM.” American Programmer (September 1994). (PDF) (Courtesy of James Bach. Used with permission.)

———. “Enough About Process: What we Need are Heroes.” IEEE Software (March 1995): 96-98.

Gray, Lewis. “No Cowboy Programmers!” Abelia Corporation; Computer (April 1998).

Mackey, Karen. “Mars versus Venus.” IEEE Software (May/June 2000): 14-15.

McConnell, Steve. “Cargo Cult Software Engineering.” IEEE Software (March/April 2000): 11-13.

Martin, Robert C. “eXtreme Programming.” IEEE Software (July/August 2000): 12-13.

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

———. “Agile Software Development: The People Factor.” Computer (November 2001): 131-133.

Pressman. “Can Internet-Based Applications be Engineered?” IEEE Software (September/October 1998): 104-110.

Bollinger, Terry. “The Interplay of Art and Science in Software.” Computer (October 1997): 128-131.


Requirements and Specification

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

Leishman and Cook. “Requirements Risks Can Drown Software Projects.” Computer (November 2001).

Wing, Jeannette M. “A Specifier’s Introduction to Formal Methods.” Computer (September 1990): 9-23.

Leveson, Nancy G. “Intent Specifications: An Approach to Building Human-Centered Specifications.” (PDF - 1.3 MB)



Parnas, D. L. “On the Criteria To Be Used in Decomposing Systems into Modules.” Communications of the ACM 15, no. 12 (December 1972): 1053-1058.

———. “Designing Software for Ease of Extension and Contraction.”

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

Bergland, G. D. “A Guided Tour of Program Design Methodologies.” Computer (October 1981): 13-37.


Design (cont.)

Garlan, David, and Mary Shaw. “An Introduction to Software Architecture.”

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

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

Vessey, Iris, and Sue A. Conger. “Requirements Specification: Learning Object, Process, and Data Methodologies.” Communications of the ACM 37, no. 5 (May 1994).

Ledgard, Henry F. “The Emperor with No Clothes.” Communications of the ACM 44, no. 10 (October 2001).

Carpenter, Todd. “Avionics Integration for CNS/ATM.” Computer (December 1998): 124-126.

Budgen, David. “Software Design Methods: Life Belt or Leg Iron?” IEEE Software (September/October 1999): 136-139.


COTS and Reuse

Lions, J. L. “Ariane 5 Accident Report.” July 19, 1996.

Kruger, Charles W. “Software Reuse.” ACM Computing Surveys 24, no. 2 (June 1992).

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

Glass, Robert L. “Reuse: What’s Wrong with This Picture?” IEEE Software (March/April 1998): 57-59.

Leveson, Nancy G., and Kathryn Anne Weiss. “Making Embedded Software Reuse Practical and Safe.”


Metrics and Reliability Assessment

Joseph K. Kearney, 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).

Armour, Phillip. “Ten Unmyths of Project Estimation.” Communications of the ACM 45, no. 11 (November 2002).


Building Confidence (Testing, Analysis, QA, Reviews)

Schaible, Dawn M., and Keith J. Britton. “Testing in NASA Human-Rated Spacecraft Programs: How Much is Just Enough?” SDM Master’s Thesis. MIT, February 2003. (Only chapters 2, 4, and 5 are required reading.) (PDF)

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.

Hoare, C. A. R. “An Axiomatic Basis for Computer Programming.” Communications of the ACM 12, no. 10 (October 1969).

Lipton, Richard J., Richard A. De Millo, and Alan J. Perlis. “Special Process and Proofs of Theorems and Programs.” Communications of the ACM 22, no. 5 (March 1979).

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


Selecting a Programming Language

Naiditch, David. “Selecting a Programming Language for Your Project.” IEEE AES Systems Magazine (September 1999): 11-14.

Ziegler, Stephen F. “Comparing Development Costs of C and Ada.” March 30, 1995. (Unpublished.)

Glass, Robert L. “One Giant Step Backward.” Communications of the ACM 46, no. 5 (May 2003): 21-23.


Team Organization and People Management

Kruper, K., Dr. Personality Types. (Additional class notes.) (PDF)

Ferdinandi, Patricia L. “Facilitating Communication.” IEEE Software (September/October 1998): 92-96.

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

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

Rettig, Marc. “Software Teams.” Communications of the ACM 33, no. 10 (October 1990): 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.

Howard, Alan. “Software Project Management.” Communications of the ACM 44, no. 5 (May 2001).


Software and System Safety

Leveson, Nancy. “A New Accident Model for Engineering Safer Systems.” (PDF)

———. “A Systems Theoretic Approach to Safety Engineering.” (Read only the case study, not the introduction.) (PDF)

———. “A Systems-Theoretic Approach to Safety in Software-Intensive Systems.” (Read only the case study, not the introduction.) (PDF)


Putting It All Together

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

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.

Bach, James. “What Software Reality is Really About.” Computer (December 1999): 148-149.