16.355 Software Engineering Concepts

Fall 2008 Class Syllabus

Sept. 5: Introducing The Problem

Reading writeups due Sept. 19

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

Sept. 12: Process and Life Cycle Models

Class Notes (pdf)
Spiral Model
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
Cockburn and Highsmith, Agile Software Development: The People Factor
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. 19: 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

Sept. 26: 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. 3: 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. 10: 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. 17: Metrics and Reliability Assessment

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

Oct. 24: 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

Oct. 31: Selecting a Programming Language

Class Notes
Extra page for class notes
Naiditch, Selecting a Programming Language for Your Project
Ziegler, Comparing Development Costs of C and Ada
Glass, One Giant Step Backward

Nov. 7 Software and System Safety

Class Notes Part 1
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 Engineering (read only the case study, not the intro)
Leveson, A Systems-Theoretic Approach to Safety in Software-Intensive Systems (read only the case study, not the intro)

Nov. 14: System Safety

Class Notes Part 2

Nov. 21: Team Organization and People Management

Class Notes
Personality Types (additional class notes)
Ferdinandi, Facilitating Communication
McConnell, Problem Programmers
Rettig, Software Teams
Williams, Strengthening the Case for Pair Programming
Howard, Software Project Management

Nov. 28: Holiday

Dec. 5: Putting It All Together

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