Steve's PSP Page

My journey with the PSP

The Personal Software Process (PSP) is a method of improving your software engineering skills. During the course, there are 10 programs that you write. You record metrics during the development of these programs, and base your size, time, and defect estimates on your past history.

I started to work on the PSP during lunchtime at work in 1996. The company, located in Pittsburgh, later adopted PSP/CMM and went on to send lots of folks to classes, but I had already left the company to move to the south.

I had a keen interest in software process improvement after completing a masters degree in computer information systems, and studying about the Capability Maturity Model in one of the courses on the Software Lifecycle. Since the company was located in Pittsburgh, I attended SEPG meetings that were held monthly at the SEI. Watts came to one of the meetings and did a presentation on PSP shortly after writing the book, and so a work buddy (Jim) bought 2 PSP books (one for him and one for me) at the CMU bookstore. We started doing the excercises together during lunch, and started applying the stuff to my work. Jim got busy with several projects and with having a baby and didn't keep up, but I finished all the excercises. However, Jim later went on to take the course, become a PSP trainer, and went to work for the SEI. In fact, he just presented with Watts at an SEPG conference. He said it was "Sort of like presenting the Bible with God introducing you." Jim also wrote a technical report.

These are the programs I wrote. They are written in ANSI C for an iRMX environment, and should be quite portable, except for the filename/directory convention.

I use Program 3A (function line of code counter) and Program 6A (linear regression estimate) quite a bit for programming that I do on a day to day basis. This also means that they may contain updates to the original code written for the PSP course. I also wrote a small program that counts the number of times a piece of text is found in a file. Count is is useful for taking Visual Source Safe reports created from ShowHistory-Reports-IncludeDifferences-ToFile and looking for lines added "Ins:", deleted "Del:", or modified "To:".

PSP Programs - ANSI C Source Code

  1. Program 1A (LOC & Functions) - Reads in a list of numbers from a file, and calculates the mean and standard deviation for those numbers.
  2. Program 2A (LOC & Functions) - Reads in a C program file and counts the number of logical lines of code.
  3. Program 3A (LOC & Functions) - Reads in a C program file and counts the number of logical lines of code. Also displays each function and displays the number of logical lines of code for that function.
  4. Program 4A (LOC & Functions) - Reads in a list of numbers from a file, and performs the the linear regression calculation for those numbers.
  5. Program 5A (LOC & Functions) - Calculates a normal distribution number using simpson rule integration.
  6. Program 6A (LOC & Functions) - Reads in a list of number pairs from a file, and performs the the linear regression calculation for those numbers. Then it determines the 90% and 70% prediction intervals and produces an estimate for a number that has been passed in. The output is the range for the estimate using the UPI and LPI found earlier. Sample files the program reads contain pairs of data about estimate vs. actual lines of code, estimated vs. actual time, and actual time vs actual lines of code. Table D14 is often used in the text for verification.
  7. Program 7A (LOC & Functions) - Reads in a list of number pairs from a file, and performs the correlation calculation for those numbers (See program 6A above for sample files).
  8. Program 8A (LOC & Functions) - Reads in a list of number pairs from a file, places them into a linked list, and sorts the linked list in ascending order according to the column selected by the user (See program 6A above for sample files).
  9. Program 9A (LOC & Functions) - Reads in a list of number pairs from a file, and performs a chi squared test on them (See program 6A above for sample files).
  10. Program 10A (LOC & Functions) - Reads in a list of numbers from a file, and performs the the multiple regression calculation for those numbers. Then it determines the 90% an 70% prediction intervals and produces an estimate for the estimates that have been passed in. The output is the range for the estimates using the UPI and LPI found earlier. Sample files the program reads contain data from Table A32 and Table D16.
Here is a summary of program information in an Microsoft Excel spreadsheet.

PSP Resources

PSP Resources brought to you by www.processimprovement.com.

The Software Process Dashboard Project - an open-source initiative to create a PSP(SM) / TSP(SM) support tool.

An interesting code reuse policy for Arthur Alexander Reyes classes at The University of Texas at Arlington.


Page created by Steve Karg using Intel's aedit, Notepad, or Vim.

Steve's Software Trek

Steve's Home Page