An introduction to the Personal Software Process, with some background on the CMM and then instruction and examples of time management.
After attending or working through this lecture, students should:
understand the main ideas and motivation behind process improvement and quality management; and
know how to record and summarise their time use.
Part of the drive towards professionalism in software engineering.
One response to the “software crisis”.
Will lead you away from random hacking and towards professional software engineering.
Key words are:
|
|
This has the potential to increase your effectiveness as a programmer dramatically.
The data you collect and the conclusions you infer from them can empower you in negotiations with your boss.
Deeper benefits are possible too. Any self-knowledge has the potential to lead to personal growth.
The Capability Maturity Model (CMM) is an initiative of the Software Engineering Institute at Carnegie-Mellon University.
There is also the Team Software Process for small groups of engineers to follow. You may encounter this next year in your group project unit.
The full CMM provides a way of evaluating the process followed by a software engineering organisation.
Some major software purchasers are demanding that software companies follow the CMM or other equivalent quality-driven process improvement program and demonstrate their level of maturity.
Most organisations are still at Level 1.
Ad hoc, even chaotic. Any success depends on individual effort and heroics.
Basic project management: track cost, schedule, and functionality. Able to repeat successes on similar projects.
Process is documented, standardized, and integrated. All projects use a standard software process for development and maintenance.
Detailed measures of process and product quality are collected. Both the software process and products are quantitatively understood and controlled.
Continuous process improvement via quantitative feedback and innovation.
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?
Define the quality goal.
Measure product quality.
Understand the process.
Adjust the process.
Use the adjusted process.
Measure the results.
Compare the results with the goal.
Return to Step 4. Recycle and continue improving.
The PSP work we will be doing is:
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.
Recording your time use and summarising it so that you can use this information as a basis for making plans and commitments.
Following a structured and disciplined process for developing software, including reviewing new code before compiling it.
Recording, categorising and analysing all defects you find in your code.
This material is based on chapters 1–4 of Introduction to the Personal Software Process by Watts Humphreys, the creator of the PSP.
To make realistic plans, you have to know how you spend your time, and how long it takes you to do things.
To improve the accuracy of your time estimates and plans, you must document them and later compare them with what you actually do. The first step in learning to make good plans is to make plans and follow them.
To make better plans, you need to know where your previous plans went wrong. To do this, you must record the time you spend.
Here are Watts Humphreys' recommendations, taken more or less unchanged from chapter 2 of Introduction to the Personal Software Process.
Buy an A4 notebook. Don't use a loose-leaf binder.
Number the pages. This makes your notebook a legally useful record of your work. It also makes it easier to find stuff in there.
On the cover, write your name and the date on which you started working in this notebook. Leave a space for the date on which you make the last entry and start the next book. Number the notebook - you'll use lots of them in your career.
Leave the first two or three pages for a table of contents. When you do some work you'll need to refer to later, make an entry in the table of contents.
When you continue a previous subject and there have been other entries in between, make a note at the bottom of the previous entry saying “Continued on page...”.
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.
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:
The notes you take during lectures. (Not just these notes I've prepared, but your thoughts, questions, comments, clarifications and so on.)
Notes about useful things you discover during the labs.
Ideas for how to do the project.
Plans for time management.
Reflections on what you have learned, how you learned it, what you might do better next time, how you feel about it...
All the PSP forms you fill in: time logs, weekly summaries, defect logs, project plan summaries.
Course handouts like assignment sheets, PSP scripts and instructions.
Record your time on Time Recording Log forms. These are available as PDF in the PSP Directory.
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:
Lectures
Labs
Homework
Assignments
Revision and exam preparation
Other
A few tips:
Recording your time takes discipline. At first you will often forget. If you do, make an estimate as soon as you remember, then move on.
Remember that this isn't about being perfect, but about learning about yourself. No time log data is “better” than any other. Everyone has their own way of working.
Keep your time log in a convenient place. I suggest your notebook or ring binder.
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.
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.)
Here are links to the forms and instructions you will need for the work covered in this lecture.
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