West Nattai Walls


Personal Software Process

While working as a C++ developer I took a course on the Personal Software Process by Watts Humphrey. I was particularly impressed by the experimental verification that was possible. Unlike most methodologies, PSP includes a way of testing if it really works. The key ideas of PSP are:

In other words PSP is nothing more than scientific observation. I used PSP for five months on a C++ project, and then another four months on some Java projects. After two iterations I carefully went over all my recorded defects and discovered some patterns in my defects. My major problem was caused by copy-and-pasting code, and then not changing all the variable names etc. Having discovered that I paid more attention to those activities, and on my next component it actually ran the first time on the test harness without errors, something I had never managed before (or since I might add). My estimation for small projects also improved dramatically, although it still does not solve the problem of estimating large projects. It was not only clear that the methodology worked "in the small," but I had hard evidence (rather than opinion) that did work.

I performed all the work using paper forms these days I use a small java application. It is faster to use, records cleaner data, and incorporates some clearer thinking (in my opinion) concerning nested errors - i.e. fixing defects that you introduce when fixing another. I intend to release the application after a few more improvements. Perhaps the best solution at present would be a plugin for eclipse or netbeans.

As an interesting side effect of my PSP usage I realised that I had performed a very interesting study in the effectiveness of Java and C++. I had PSP data for several months in both languages, and the two data sets had the same programmer, similar applications etc - the only difference was the programming language. Just looking at the raw numbers it appeared that when I was writing in Java I wrote twice as many lines of code per minute, and produced half as many defects per line of code. If anything these numbers were conservative because I at that time I had seven years C++ experience, but was only just learning Java. However, when the numbers are analysed using a proper statistical test (Student's t-test) then it is only possible to say that java is 50% better in either category, which is still a huge difference. I wrote the results up for Software Practise and Experience, a copy of the paper is here.

Text and Images Copyright Geoffrey Phipps 2007-2014. Unauthorised copying or reuse prohibited.