Personal Software Process


Overview

To frame our discussion, consider:

What are the pros and cons over a top-down versus bottom-up process improvement strategy?

What are the perceived benefits of the personal software process as it relates to an organizations improvement program?

What are the claimed advantages/disadvantages to adopting the personal software process over CMM?


OUTLINE


Perspective

In Search of the Silver Bullet!

"We believe that organization is most important and that methodology is more important than technology in determining overall process maturity (a fool with a tool is still a fool)." Ref

"software community pays too much attention to the technological aspects of software development at the expense of these other contexts." (organization and social) Ref

Improvement Strategy

Top-Down

The top-down view claims the existence of "universal" good practices that may apply across development characteristics.

Bottom-Up

"bottom-up approach assumes that every development organization must first completely understand its process, products, software characteristics, and goals before it can select a set of changes meant to improve its process." The bottom-up approach assumes the most critical element of the change is the detailed understanding of the local process, products, characteristics and goal."

Organization Cultures

  1. CEO culture

    People are a cost to be minimized and must be managed, impersonally, through the imposition of systems and routines.

  2. The engineering community culture

    People are a source of noise. Reduce the noise by regimenting people making them behave similarly.

  3. Operator Culture

    Activity is at this level therefore the people understand their world intimately and are in a better position to institute change.

Personal Software Process

Personal Software Process Strategy

Enabling

Personal software process is about providing the user, software developer, with the an understanding of how she works. It should put the individual in control of understanding her performance critically and at the right level of detail to modify her software process. To do so implies an ability to define, measure, and analyze individual processes.

Is not intended to support any single task in a life-cycle. Is language and methodology independent.

Individual in that it promotes the individual as being capable of changing her process, thus the aim is to provide the individual with the necessary understandings through a framework.

The PSP foundation correlates with the CMM framework.

Software Process

Software Process is a sequence of steps required to develop or maintain software. A software process definition is a description of this process.

The software process sets out the technical and management framework for applying methods, tools, and people to the software task, while the process definition identifies roles and specifies tasks. The definition further establishes measures and provides exit and entry criteria for every major step.

Focus

Design defect prevention

Humphrey proposes a process improvement cycle::
  1. Understand the current status of your development process or processes.
  2. Develop a vision of the desired process.
  3. Establish a list of required process improvement actions, in order of priority.
  4. Produce a plan to accomplish the required actions.
  5. Commit the resources to execute the plan.
  6. Start over at step 1.


Expected Outcomes

In Using a Defined and Measured Personal Software Process, Humphrey describes his perspective in developing PSP and experiences in teaching PSP to a variety of audiences. He reports in this article data to support the claims made for process improvement from engaging in the activities described. In particular he claims "When properly taught, the PSP

These outcomes are achieved by first making the participants collect specific data related to process and product forming the baseline that providing the individual with a context to think about process and hence process improvement. This is the "making the process visible step."

PSP Steps

Personal Measurement (PSP0)

The individuals are supplied with forms and process scripts (guides to direct activity) that lets them gather real data regarding the time and defects in the artifact produced. The initial data provides the baseline that allows them to compare results during future activity. The phases of PSP0 include planning, development (design, code, test) and postmortem. During PSP0, referred to as PSP0.1, coding standards, size measurement, and improvement proposals are introduced.

Personal Planning (PSP1)

Using the data collected from previous programs, individuals use the PROBE method to estimate size and time for programs. Schedule and task planning are added in PSP1.1. The goal is to provide ample experience in estimating, hence it is introduced early.

Personal Quality (PSP2)

The individuals are introduced to and practice personal design and code reviews. These reviews are guided by checklists provided.

Scaling Up (PSP3)

PSP Methods


Go To Lecture [Outline] [Overview]

Go To [Course Outline]


References

Ferguson, P., W. S. Humphrey, S. Khajenoori, S. Macke, A. Matvya (May 1997) Results of Apply the Personal Software Process. IEEE Computer, p. 24-31.

Humphrey, W. S. (1997) Introduction to the Personal Software Process. Addison-Wesley: Reading, MA.

Humphrey, W. S. (May 1996) Using a Defined and Measured Personal Software Process. IEEE Software. p. 77-88.

Humphrey, W. S. (1995) A Discipline of Software Engineering. Reading, MA: Addison-Wesley.

Humphrey, W. S. (July 1995) Why Should You Use A Personal Software Process? Software Engineering Notes 20(3), p 33-36.

Haase, V., R. Messnarz, G. Koch, H. Kugler, & P. Decrinis (July 1994) Bootstrap: Fine-Tuning Process Assessment. IEEE Software. p. 25-35

Thomas, M. & F. McGarry (July 1994) Top-Down vs. Bottom-up Process Improvement. IEEE Software. p. 12-13

Perry, D. E, N. A. Staudenmayer, & L. G. Votta (July 1994) People, Organizations, and Process Improvement. IEEE Software. p. 36-45