16.355 Software Engineering Concepts

Fall 2009 Class Syllabus

Sept. 11: Introducing The Problem

Reading writeups due Sept. 25

Class Notes (pdf)
Leveson, The Therac-25 Accident (pdf)
Flying in Place: The FAA's Air Control Fiasco (pdf)
Augustine, Yes But Will it Work in Theory?
Brooks, No Silver Bullet
Davis, Software Lemmingineering
Leveson, The Role of Software in Spacecraft Accidents
Jolly, Is Software Broken

Sept. 18: Process and Life Cycle Models

Class Notes (pdf)
Spiral Model [just for lecture, not for a writeup]
Paulk, et.al, The Capability Maturity Model for Software
Bach, The Immaturity of CMM
Bach, Enough About Process: What we Need are Heroes
Gray, No Cowboy Programmers!
Mackey, Mars versus Venus
McConnell, Cargo Cult Software Engineering
Martin, eXtreme Programming
Highsmith and Cockburn, Agile Software Development: The Business of Innovation
Bollinger, The Interplay of Art and Science ...
Question for Class Discussion: What project characteristics are most important when selecting an appropriate life cycle model?

Sept. 25: Requirements and Specification

Class Notes (pdf)
Lawrence, Wiegers, Ebert: The Top Risks of Requirements Engineering
Leishman and Cook, Requirements Risks Can Drown Software Projects
Wing, A Specifier's Introduction to Formal Methods (This one may be tough reading for some of you -- you can skim it if you are feeling overwhelmed by the math)
Leveson, Intent Specifications

Oct. 2: Design

Class Notes (pdf)
Parnas, On the Criteria to be used ... (html)
Parnas, Designing Software for Ease of Extension and Contraction
Wirth, Program Development by Successive Refinement
Bergland, A Guided Tour of Program Design Methodologies

Oct. 9: Design (2)

Class Notes (pdf)
Garland and Shaw, Software Architecture
Hatton, Does OO Sync with How We Think?
Meyer, A Really Good Idea
Vessey, Requirements Specification: Learning Object, Process, and Data Methodologies
Ledgard, The Emperor with No Clothes
Carpenter, Avionics Integration for CNS/ATM
Budgen, Software Design Methods ...

Oct. 16: COTS and Reuse

Class Notes
Ariane 5 Accident Report (html)
Kruger, Software Reuse [This is an excellent survey of reuse, but it is also very long so you can just skim it if you are not interested in becoming an expert on the topic. You need not write a summary of the Kruger paper.]
Weyuker, Testing Components
Glass, Reuse: What's Wrong with This Picture?
Leveson and Weiss, Making Embedded Software Reuse Practical and Safe
Gomez, Lessons Learned from Two Years of On-Orbit GPS Experience on International Space Station
OPTIONAL: Goodman, Lessons Learned from Flights of "Off the Shelf" Aviation Navigation Units on the Space Shuttle (Not required but may be of interest to those working with COTS products)

Oct. 23: Metrics and Reliability Assessment

Class Notes
Kearney, Software Complexity Measurement
Extra reading: Armour, Ten Unmyths of Project Estimation

Oct. 30: Building Confidence (Testing, Analysis, QA, Reviews)

Class Notes (pdf)
Dawn Schaible and Keith Britton, Testing in NASA Human-Rated Spacecraft Programs: How Much is Just Enough?, SDM Master's thesis, MIT, Feb. 2003 (only chapters 2, 4, and 5 are required reading)
Yamaura, How to Design Practical Test Cases
Yamaura, Why Johnny Can't Test
Hoare, An Axiomatic Basis for Computer Programming
Lipton, Perlis, DeMillo, Social Processes ...
Of Crazy Numbers and Release Criteria

Nov. 6: No class (in Amsterdam)

Nov. 13 Software and System Safety

The following papers are for discussion on Dec. 8. You need not critique them, only a short summary is required.
Leveson, A New Accident Model for Engineering Safer Systems
Leveson, A Systems-Theoretic Approach to Safety in Software-Intensive Systems (read only the case study, not the intro)

Nov. 20:

System Safety

Class Notes

Nov. 27: Holiday

Dec. 4: People Management

For reading only, you need not submit anything written about them.
Class Notes
Personality Types (additional class notes)
Ferdinandi, Facilitating Communication
McConnell, Problem Programmers
Rettig, Software Teams

The writing assignment for the last week is equivalent to a "take home final exam" and includes the following three papers for the usual critique:
Leveson, Software Engineering ...
Shapiro, Splitting the Difference ...
Bach, What Software Reality is Really About