16.355 System Engineering of Software-Intensive Systems

The class syllabus will be sent to you before the first class meeting. You will read parts of Engineering a Safer World, which you can download for free from http://mitpress.mit.edu/books/engineering-safer-world

PLEASE SUBMIT ALL WRITTEN ASSIGNMENTS IN WORD, NOT PDF SO I CAN COMMENT ON THEM. ALSO, PUT YOUR LAST NAME IN YOUR ASSIGNMENT NAME.
Put all your writeups for each week in ONE file. Do not submit a bunch of small files for each week.

The readings listed below must be completed before the session in which they are listed so we can discuss them and your written assignment. They are thus due at 9am on the day of class.

Feb. 10: Introducing The Class and Problem

Feb. 17: Why do we have so much trouble with software?

Read, summarize, and critique
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?
Leveson, Why is Software Engineering Difficult?

Feb. 24: System Engineering and Systems Theory

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

Mar 3: Process and Life Cycle Models

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
Software Defects and Agile

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

Mar. 10: Requirements, Stakeholders, and Specification

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. 17 and Mar. 24: Design Principles

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

Mar31: Spring Break

Apr. 7: Human-Centered Design

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

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

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. 21: Metrics

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

Apr. 28: COTS and Reuse

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 5: No class

May 12: Team Building, Managing People, Wrapup

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, i.e., what do you think the future of software/system engineering should be in the next 25 years