COMP2100/2500/6442 Software Construction in 2006

Lecture 2: The Personal Software Process I

Summary

An introduction to the Personal Software Process, with some background on the CMM and then instruction and examples of time management.

Aims

After attending or working through this lecture, students should:


The Personal Software Process


Benefits of the PSP


Background: The Capability Maturity Model


The CMM Maturity Levels

Level 1: Initial.

Ad hoc, even chaotic. Any success depends on individual effort and heroics.

Level 2: Repeatable.

Basic project management: track cost, schedule, and functionality. Able to repeat successes on similar projects.

Level 3: Defined.

Process is documented, standardized, and integrated. All projects use a standard software process for development and maintenance.

Level 4: Managed.

Detailed measures of process and product quality are collected. Both the software process and products are quantitatively understood and controlled.

Level 5: Optimizing.

Continuous process improvement via quantitative feedback and innovation.


An Example

Rifkin performed a study of over 1300 projects, and used the data to model the performance of software organisations at different levels. For development of a 200,000 line system he predicts the following.

CMM Level Duration (months) Effort (person months) Faults detected in development Faults delivered and installed Total cost of development
Level 1 30 594 1348 61 $5,440,000
Level 2 19 143 328 12 $1,311,000
Level 3 15 80 182 7 $728,000
Level 4 13 43 97 5 $392,000
Level 5 9 16 37 1 $146,000

Which organisation would you rather buy software from? Which organisation would you rather work for? Which organisation would you rather own shares in?


The Improvement Process

  1. Define the quality goal.

  2. Measure product quality.

  3. Understand the process.

  4. Adjust the process.

  5. Use the adjusted process.

  6. Measure the results.

  7. Compare the results with the goal.

  8. Return to Step 4. Recycle and continue improving.


The PSP in COMP2100

The PSP work we will be doing is:

  1. Learning the discipline of keeping an engineer's notebook, a permanent and organised record of your work, which you can use as a reference in future.

  2. Recording your time use and summarising it so that you can use this information as a basis for making plans and commitments.

  3. Following a structured and disciplined process for developing software, including reviewing new code before compiling it.

  4. Recording, categorising and analysing all defects you find in your code.


Time Management

This material is based on chapters 1–4 of Introduction to the Personal Software Process by Watts Humphreys, the creator of the PSP.


Keeping an Engineer's Notebook

Here are Watts Humphreys' recommendations, taken more or less unchanged from chapter 2 of Introduction to the Personal Software Process.

Comments and experience: [Ian Barnes] I followed this for a while, and it didn't work so well for me. In 2002 I went back to using ring binders. I'm not in a job where I need to be able to prove what I did and when, so that aspect isn't so important. On the other hand I do a lot of my work on a computer, and it's much easier to punch holes in a printout and insert it into a binder than to trim around the edges and glue it into a notebook. With ring binders you can use index tabs or dividers to separate different subjects and keep things organised that way. But I ran straight into the problem of having lots of bits of paper floating around everywhere, and losing track of them.

In 2003 I tried an A4 spiral notebook for all my handwritten notes, together with a ring binder for carrying printouts. That worked OK for me.

More recently I've gone back to having everything in a notebook, occasionally pasting in important printouts, but keeping most "non-notebook" material in a reasonably well-organised filing cabinet. If you really want to get serious about time management and getting organised, read Getting Things Done by David Allen, or look at the .

[Chris Johnson]
I keep a large series of handwritten notebooks - and an online Blog-like journal to organise my research.
That's why I encourage you to think of using a blog for this: you can access it from anywhere you are working on the Internet, you can search for words, you ca ncut and paste into reports or more organsied sections... and you can cheat and change things written in the past., Don't be tempted! (I like to add things, especially cross-references and external references, but that's a different matter. The blog becomes my record of my thinking and learning, and allows me to look back and refelect - and improve how I do things.

For a good introduction and resources linke to using blogs for education, see Meg Poore's website.

[Ian Barnes again] The important thing here is to develop a discipline of keeping an organised record of what you do. Otherwise even information that you remember to write down will be lost in piles of paper. Whatever you decide to do, stick to it and don't let your work descend into chaos.


What should I write/put in my notebook?

Everything! I recommend that you keep copies of all your COMP2100 work in your notebook (or folder or filing cabinet or whatever...).

Examples of things to write might include:


Recording your time use

Record your time on Time Recording Log forms. These are available as PDF in the PSP Directory.

blank time log

There are detailed instructions on how to fill in the Time Recording Log as PDF in the PSP Directory.

In order that I can summarise your results and display them in lectures, you will need to all use the same categories. That is, your entries in the “Activity” column should all be one of the following:

  1. Lectures

  2. Labs

  3. Homework

  4. Assignments

  5. Revision and exam preparation

  6. Other

A few tips:


Sample time log

sample time log

Weekly Time Use Summary

At the end of each week, summarise your data. There's little point in just keeping piles of Time Logs unless you do something useful with them. Here's one thing you can do which will help you to gain insight into how you work. This insight can then be used to help you plan better in future.

blank weekly summary

Filling in the weekly summary takes a bit of concentration, but it's a lot easier than programming. You can check your work by adding the daily totals down the right-hand-side and the category totals across the bottom. You should get the same answer both ways.

(If you have lots of free time, you could think about how an automated Time Log and Weekly Summary tool might work.)


Resources

Here are links to the forms and instructions you will need for the work covered in this lecture.


Preparation for PSP in week 2

Before your week 2 lab class, go to the notes for the next lab, and print out and read the relevant forms and instructions.

Get yourself a lab notebook.

____________________________________________________

Copyright © 2006, 2008, 2010, Ian Barnes, Chris Johnson, The Australian National University
$Revision: 1.3 $ $Date: 2010/02/23 04:03:33 $
Feedback & Queries to comp2100@cs.anu.edu.au