16.355 - System Engineering of Software-Intensive Systems: Spring 2017

Instructor: Prof. Nancy Leveson
Office: 33-334
Office Hours: Friday 12-1 or by appointment Telephone: (617) 258-0505
Email: leveson@mit.edu

Objective: Most complex systems today contain a great deal of software and digital components and will contain even more in the future. At the same time, software is becoming the Achilles heel of complex system development: At least half of all large software-intensive system projects are cancelled or suffer major delays and problems. System engineers and managers are often unprepared to cope with this new technology. The goal of this class is to learn why building these systems is so difficult and to provide system engineers, managers, and software engineers with the tools and knowledge to avoid these problems. At the end of the class, you will be able to exercise professional judgment in selecting approaches for a particular project based on an understanding of how the present state of software engineering practice came about, what was tried in the past, what worked and what did not work, and why. Note that the class is a system engineering of software class, not a standard software engineering class and as such will not provide basic training in programming or in specific approaches or tools for developing software.

Required Background: There are no prerequisites and no required background although it will help if you have some mininal knowledge of programming. Having some system engineering project experience will also be helpful. What you get out of the class will be a function of what you bring to it along with your personal goals and objectives. Each student may find they get different things out of the experience.

Reading: Instead of a textbook, required reading will consist of a carefully selected set of historically important and foundational papers as well as some more current ones. Some papers will be technical while others will be opinions or essays. The literature is vast, and papers have been selected for their historical relevance in the development of the field or for their ability to help you critique the assumptions underlying current software/system engineering dogma.

Assignments: There will be no programming assignments. Because my goal is to enhance your ability to make successful professional judgments rather than use a specific set of tools or a particular approach to engineering software, most assignments will involve evaluation and interpretation rather than practice in applying particular techniques or tools.

There will be two types of assignments: Except for the first week, you will be required to submit a short (one half to one page) summary of each paper assigned for that week along with a critique of the paper (see instructions below) and occasionally answers to a few specific questions on that topic or paper. Because class sessions will involve a lot of discussion of the readings, late summaries will not be accepted. You will not be required to provide a critique of the papers I wrote.

There will be no exams. The summaries assigned for the last week will involve synthesizing what you have learned in the class. The "final exam" will simply the usual summaries and critiques of some papers noted in the schedule.

Class Sessions: Class meetings will include a mixture of lecture and discussion. You will find that most concepts are easily learned from the readings and do not require my explaining them to you. A few topics are difficult to learn on your own or I could not find any good tutorial papers on them so they will be described in class. You will get the most out of the class if you participate in the class discussions.

Grading: Grades will be based on the weekly assignments and on class participation.

Schedule: The topic is vast and cannot be completely covered in one semester. The specific topics to be covered have been chosen somewhat arbitrarily and may change in future offerings of the class. A schedule and list of assigned readings are available on the class web page. Copies of the class lecture notes are also available for download there.

Instructions for Reading Assigments: Before each class session, you will submit a short (one half to one page) summary of each paper assigned for the week along with the answers to the following general questions:

Because it obviously will not be possible to read the papers for the first class by the first class meeting (as they were not available), you will not be required to submit anything on the first week's readings.

In addition, there may be some short assignments during the semester that will be posted and described in class.