16.355 Software Engineering Concepts

Spring 2018 Class Syllabus for 16.355
You will read parts of Engineering a Safer World, which you can download for free from http://mitpress.mit.edu/books/engineering-safer-world


Feb. 9: Introducing The Problem

Class Notes

Reading only. Come to second class meeting prepared to discuss:

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

Feb. 16: System Engineering and Systems Theory

Class Notes

Read only
Engineering a Safer World: Chapter 3

Read and summarize only
Booten and Ramo, The Development of System Engineering
Papers on history of SE by Miles, Machol and Miles, Pickering
Leveson, System of Systems

Read, summarize, and critique
Excerpts from a Mike Griffin paper
Griffin, How Do We Fix System Engineering

Feb 23: Process and Life Cycle Models

Class Notes
Spiral Model

Read only
Wikipedia on Software Development Processes

Read, summarize, and critique
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
Pressman,Can Internet-Based Applications be Engineered?
email about Agile experiences
Learning from Failure in Systems Engineering

Question for Class Discussion: What project characteristics are most important when selecting an appropriate life cycle model?

Mar. 2: Requirements, Stakeholders, and Specification

Class Notes

Read, summarize, and answer the question: What types of requirements problems have you run into on projects?

Lawrence, Wiegers, Ebert: The Top Risks of Requirements Engineering
Leishman and Cook, Requirements Risks Can Drown Software Projects

Read and summarize.
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 discrete math)

Read and summarize only: Leveson, Intent Specifications

Mar. 9 and Mar. 16: Software Design

Class Notes 1
Class Notes 2

Read, summarize, and critique
Garland and Shaw, Software Architecture
Budgen, Software Design Methods ...
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

Mar. 23: Human Factors

Class Notes

Read and summarize:
Billings, Aviation Automation: The Search for a Human-Centered Approach
Engineering a Safer World, pp. 273-306

Mar. 30: Spring break (no class)

Apr. 6: Building Confidence (Testing, Analysis, QA, Reviews)

Class Notes

Read, summarize, and critique
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)
Hoare, An Axiomatic Basis for Computer Programming
Lipton, Perlis, DeMillo, Social Processes ...

Apr. 13: No class (I will be in the Netherlands)

Apr. 20: System Safety and Cyber Security

Class Notes

Read and summarize only.
Leveson, A New Accident Model for Engineering Safer Systems
Engineering a Safer World, Chapter 8 pp. 211-231.
Young and Leveson, An Integrated Approach to Safety and Security Based on System Theory
Titan/Centaur/Milstar Accident Report and read Appendix B, Engineering a Safer World, pp. 469-493 (Instead of doing the usual critique, answer the following question for this accident report: What were the process flaws that led to this accident? What changes would you recommend to eliminate such losses?)

Optional reading: Chapters 16 and 17 in Leveson, Safeware: System Safety and Computers.

Apr. 27: Metrics

Class Notes

Read and summarize
Kearney, Software Complexity Measurement
Armour, Ten Unmyths of Project Estimation

May 4 COTS and Reuse

Class Notes

Read, summarize, and critique
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)

May 11: Team Organization and People Management, Summary, Wrapup

Class Notes

Read only, no summary or critique
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

The writing assignment for 16.355 for the last week is equivalent to a "take home final exam" and includes the following three papers for the usual summary and citique except for the Leveson one:
Shapiro, Splitting the Difference ...
Bach, What Software Reality is Really About
Leveson, Software Engineering ... Do not critique my paper. Instead write a page or so on what you would have written if you were asked to do what I was