These are the course materials for PSP for the 21st Century, a modular, flexible introduction to using Watts Humphrey’s Personal Software Process℠ (PSP℠). The PSP was first introduced publicly in Humphrey’s 1994 book, A Discipline for Software Engineering, and as the title suggests, the intent was to demonstrate the power and value of disciplined software engineering methods at the individual developer level. The current materials represent a fresh take on the PSP for the modern software developer working a quarter-century later in a more agile world—short modules, updated terminology, and some flexibility in learning the methods.
This current version of PSP training breaks the discipline into the following skills:
- following a defined, measured process
- estimating work consistently
- reviewing work products effectively
- documenting detailed design
Each skill is imparted through a “block” of lessons that introduce the components of the skill. Each block contains several modules, which include lecture slide decks covering each component topic, often a supporting Word document containing notes for the instructor, and a recommended programming exercise intended to provide hands-on practice in using the component skill.
Block 1 Abstract
These are the course materials for Block 1 of PSP for the 21st Century, a modular, flexible introduction to using Watts Humphrey’s Personal Software Process (PSP).
Block 1: Modules 0-3
- Module 0: Course Overview
- Module 1: Follow the Script
- Module 2: Measure Program Size
- Module 3: Account for Size Categories
Block 1 is the foundational block that the other blocks assume is in place; it includes four modules. Module 0 briefly summarizes the goals of the course. Module 1 explains how to capture time and defects step by step as work is being done. Module 2 describes how to capture gross size after development. Module 3 introduces the various size categories for actual size after development.
Block 2 Abstract
These are the course materials for Block 2 of PSP for the 21st Century, a modular, flexible introduction to using Watts Humphrey’s Personal Software Process (PSP).
Block 2: Modules 4-8
- Module 4: Planning with a Model
- Module 5: Estimating with Standard Sizes
- Module 6: Building Standard Size Tables
- Module 7: Reducing Estimation Bias
- Module 8: Automating Estimation with Regression
Block 2 elaborates the component skills of PROBE, or PROxy-Based Estimating, without ever calling it that. Module 4, “Planning with a Model,” introduces the idea of using a conceptual design (the traditional PSP term) to relate all known requirements to various “parts” that one would need in order to implement those requirements and to record and classify those parts for planning purposes. Module 5, “Estimating with Standard Sizes,” introduces the use of a preexisting set of part types with a historical range of sizes as an aid to planning. Module 6, “Building Standard Size Tables,” shows a method for turning historical data into just such a set of standard part types. Module 7, “Reducing Estimation Bias,” introduces the idea of using one’s personal estimating performance to correct for estimation bias. Module 8, “Automating Estimation with Regression,” replaces historical averaging from the previous lesson with regression calculations that may improve estimating precision and accuracy, especially as more data becomes available.
Block 3 Abstract
These are the course materials for Block 3 of PSP for the 21st Century, a modular, flexible introduction to using Watts Humphrey’s Personal Software Process (PSP).
Block 3: Modules 9-11
- Module 9: Controlling Quality, Review Your Code
- Module 10: Reviewing with a Checklist
- Module 11: Improving Your Review
Block 3 elaborates the essentials of reviewing code with a personalized checklist. Module 9, “Controlling Quality: Review Your Code,” introduces the review as a response to the problem “I’m still finding a lot of defects in test.” Module 10, “Reviewing with a Checklist,” and the optional-but-highly-recommended 10a, “Why Checklists Work,” provide the basics of what reviews are and how to do them. Module 11, “Improving Your Reviews,” takes this information and uses it to drive a retrospective analysis intended to make personalized modifications to the review process and the checklist to make them more effective.
Block 4 Abstract
These are the course materials for Block 4 of PSP for the 21st Century, a modular, flexible introduction to using Watts Humphrey’s Personal Software Process (PSP).
Block 4: Modules 12-16
- Module 12: Quality by Design
- Module 13: Describe the Problem
- Module 14: State the Problem
- Module 15: Structure the Solution
- Module 16: Implement the Logic
Module 12, “Quality by Design,” begins by talking about common design problems that are difficult to find in code mainly because they reflect issues of incorrect or incomplete design. Module 13, “Describe the Problem,” focuses on the external-dynamic design view with the UML use case (external to software system) or sequence diagram (external to individual software modules). Module 14, “State the Problem,” looks at the internal-dynamic views captured by state charts (sometimes called state diagrams) or state transition tables. Module 15, “Structure the Problem,” introduces the external-static view of design. Module 16, “Implement the Logic,” speaks to the internal-static design view.
Block 5 Abstract
These are the course materials for Block 5 of PSP for the 21st Century, a modular, flexible introduction to using Watts Humphrey’s Personal Software Process (PSP).
Block 5: Module 17
- Module 17: Scaling Up
Module 17, “Scaling Up,” talks about scaling up the individual development process from single-day projects like the programming assignments in this class, to real-world work that spans multiple days or weeks.
Copyright and License
The materials available for download on this page are copyright 2018 Carnegie Mellon University. All rights reserved. The Software Excellence Alliance is not affiliated with nor endorsed by Carnegie Mellon University.
This material is based upon work funded and supported by the Department of Defense under Contract No. FA8721-05-C-0003 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center.
Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the United States Department of Defense.
NO WARRANTY. THIS MATERIAL IS FURNISHED ON AN "AS-IS" BASIS WITH NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, ANY WARRANTY WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT, OR THIRD PARTY INTELLECTUAL PROPERTY RIGHTS.
[Distribution Statement A] This material has been approved for public release and unlimited distribution. The United States Government has Unlimited Rights in this material as defined by DFARS 252.227-7013.
The text and illustrations in this material are licensed by Carnegie Mellon University under a Creative Commons Attribution 4.0 International License.
℠ Personal Software Process, PSP, Team Software Process, and TSP are service marks of Carnegie Mellon University. The Creative Commons license does not extend to logos, trade marks, or service marks of Carnegie Mellon University.