| CSPP 51092: Industrial Software
Processes |
|
|
Instructor: Peter Vassilatos Office Hours: by appointment email at cs.uchicago.edu: pete |
Class Meetings: Tuesday, 5:30pm - 8:30pm Location: Eckhart 202 |
The active website for students currently enrolled in this course is located here. [link will be available during summer quarter]
Please note that this course is adjusted every time it is taught to accommodate changes in the professional landscape and also the backgrounds and interests of enrolled students. Focus and emphasis may shift between topics. The fundamental vision of the course is described here.
Writing first-class software requires top-notch architecture, design and coding skills, but successful software project execution--from identifying the need to providing support--depends on many factors besides technical prowess. Industry analysts frequently report that 50-80% of software projects fail to deliver full functionality on time and on budget, and attribute the majority of the failures not to technical issues but to shortcomings in process, planning, and project management.
This course looks beyond narrow definitions of project management to survey the key practices and processes that help ensure successful projects. It familiarizes students with the major risks that software project teams encounter and the best practices for mitigating these risks.
Structurally, the course includes an overview of the software development lifecycle and an introduction to models of competence in software development, especially the Software Engineering Institute’s integrated Capability Maturity Model for software. It explores different approaches for achieving the benefits discussed in those models. The course does not explicitly advocate specific formal methodologies, but rather it examines the underlying principles of major development models (waterfall, Unified Process, agile, ad hoc) and then shows how those principles address the various problems encountered by project teams, detailing three key areas: project planning, requirements management, and quality assurance. Some emphasis is placed on the argument for leaner, adaptive processes.
The project planning topic of the course begins with project inception and interpretation of the business case and proceeds through project deployment and support. The chief emphasis is on understanding that project planning needs to account for many dimensions of a project, and that these dimensions are interrelated. It addresses the bread-and-butter planning topics, such as estimation and scheduling, and surveys the dominant models for these tasks. It explains the key metrics necessarily for successful project control and the means of collecting and interpreting them. Significant time is spent on the topic of risk and risk management.
The requirements topic introduces a structured framework for thinking about software requirements. It teaches not only how to elicit and capture requirements (an art in itself), but also how to assign appropriate attributes to requirements to enable effective prioritization, management, and validation. Use cases, an increasingly dominant industry practice for detailing functional requirements, are treated in detail. Finally, the course shows how similar techniques can be applied not only to specific software problems but also to business domains to discover areas where creative software solutions can aid business operations.
The quality topic discusses practices that have been shown to reduce software defects. It examines requirements validation and the traceability of project decisions from user needs, through requirements, to design decisions, implementation, and testing. It shows how key architectural decisions affect product quality, and offers guidelines to determine which decisions must be made up front and which are better deferred. Formal quality verification processes, such as reviews and inspections are explained, as are best practices for designing and administering tests. Finally, change control and configuration management practices are reviewed.
The course provides brief coverage of several other important areas to augment the three in-depth topics.
During the quarter, students will be expected to investigate and analyze specific methodologies, prepare software project artifacts (many for an ongoing case study), and read broadly. There is the possibility of a group project and/or a research paper.
There will be extensive required reading from the following texts:
The course also incorporates required readings from material available on the Internet, including the SEI CMMI.
Recommended/Supplementary Texts
Recommendations for additional texts will be provided as we cover specific topics.
Lectures