The Personal Software Process (PSP) is a software development “exercise” intended to help software engineers understand their own personal strengths and weaknesses in the software development process. At its heart, it consists of doing some estimates before you start work (how long will design take, how many bugs do you think you’ll write, etc.), keeping detailed records while you work, and then comparing reality to your estimates. Doing so helps you understand where your weaknesses (if you estimate 10 bugs but end up writing 100) and strengths are.

You can read more about the PSP in the original report. I’ve modified some of the forms to make them (hopefully) simpler to fill out.

To complete the PSP, you will need the PSP spreadsheet as well as these instructions.

The PSP spreadsheet consists of several sheets, each with some information for you to fill in as you go through the development process (fields that you should fill in are highlighted in light blue).

Getting started

To begin with the PSP, you should fill in the following fields on the PSP summary page:

Software development phases

The PSP follows a traditional software development structure (“waterfall”). The phases of development are as follows:

Plan Summary sheet

The Plan Summary sheet summarizes all of the estimated and recorded values (time, and lines-of-code) over the entire project. Some details on particular fields:

(See page 30 in the PSP report for more details.)

On the server, there’s a utility called cloc which can count the number of lines in a source file, being smart about skipping blank lines and comments.

Time in phase

This section is used to summarize the total amount of time (in minutes) you spend in each of the development phases. You only have to fill in the initial estimates; the spreadsheet will copy the actual measured time from the time log. (The exception is the “postmortem” phase, as that is not tracked on the time log.)

Defects injected

A “defect” is something that is wrong with your program. It could be a spelling error in a comment, a bug in your code, an incorrect design that led you to use the wrong algorithm, etc. In this section you keep track of how many defects you “injected” in each phase. Note that this means that when you find a defect you need to “track it back to the source” to figure out which phase it originated in!

As with the time summary, the actual values will be filled in for you, from the defect log. You only have to fill in the estimates, before you start.

Defects removed

Similarly, this section tracks how many defects you fixed during each phase. Ideally the total number of defects fixed should be equal to the total number injected, but if there are any problems left that you couldn’t figure out before submitting, then the two numbers won’t balance out.

As with the time summary, the actual values will be filled in for you, from the defect log. You only have to fill in the estimates, before you start.

“After development” refers to defects fixed after development has technically completed.

Time log

The time log sheet is intended to help you keep detailed records of how much time (to the minute) you spend in each of the phases. Most of the columns should be self-explanatory. The “Int. mins.” column is for “interruption minutes”, time spent during a given development session when you were interrupted for whatever reason. (For long interruptions it’s probably better to count the beginning and end as two separate sessions.)

The “total by phase” box will automatically calculate the total time spent in each phase (provided you are careful to use the phase names exactly as shown).

Defect log

The defect log sheet is intended to help you keep detailed records of every “defect” you added and removed from your project. When you find a defect, you should fill in

Submission

If you can, upload the completed spreadsheet into your assignment’s directory on the server; otherwise, you can just email it to me (please mention “PSP” somewhere in your message, so I can search for it easily).