Personal Software Process

From Wikipedia, the free encyclopedia

Jump to: navigation, search

The Personal Software Process is a subset of the Capability Maturity Model (CMM) processes, readily applicable to individual software engineers. It was first defined in 1994 by Watts Humphrey in his book A Discipline for Software Engineering (Addison Wesley Professional, Massachusetts, 1994) as part of the Software Process Program of the Software Engineering Institute (SEI) at Carnegie Mellon University. The PSP is a quantified method aimed toward the improvement of the quality and productivity of the personal work of individual software engineers. "Personal Software Process" and "PSP" are registered service marks of the Carnegie Mellon University.[1]

The PSP philosophy is largely based on reviews at every stage of the development cycle.

The PSP is a development methodology of plan-driven software development approach; other methodologies of plan-driven are TSP (Team Software Process), RUP (Rational Unified Process).


Before code is written, an outline of the desired behavior is written. That description is ‘implemented’ in pseudocode, and then each line of pseudo code is implemented in the target language.

Only when the entire unit of code is completely written, analyzed and reviewed, is it compiled and run. It is expected to compile and run first time. If it does not, every error, including syntax errors, needs a root cause analysis. The philosophy is that by manually examining the code in such detail to exclude all detectable errors, a better design will be produced than would be produced by a code-compile-fix cycle.

PSP has been likened to applying Six Sigma toward Software Development. Mukesh Jain led large scale deployment of PSP/TSP in Microsoft India. Within 6 months, more than 2/3 of the projects shipped were without any defects and 94% of the projects were delivered on time.[citation needed]

Contents

[edit] Objectives

The Personal Software Process tries to show engineers how to:

  • manage the quality of their projects
  • make commitments they can meet
  • improve estimating and planning
  • reduce defects in their products

[edit] Principles

1. The quality of a software system is determined by the quality of its worst components.
2. The quality of a software component is governed by the individual who developed it.
3. The quality of a software component is governed by the quality of the process used to develop it.
4. The key to quality is the individual developer's skill, commitment and personal process discipline.
5. Some professionals are responsible for their personal process:

  • measure, track and analyze work
  • learn from performance variations
  • incorporate lessons learned into personal practices.

[edit] PSP Structure or PSP framework

PSP training follows an evolutionary improvement approach. An engineer learning to integrate the PSP into his or her process begins at Level 0 and progresses in process maturity to Level 3. Each Level incorporates new skills and techniques into the engineer's process. Each Level has detailed scripts, checklists and templates to guide the engineer through required steps. The scripts, checklists and templates are only a starting point, however PSP provides measurement based feedback that helps each engineer improve their own personal software process. Thus Humphrey encourages the customization of these scripts and templates as the engineer receives this feedback and gains an understanding of his or her own strengths and weaknesses.
Process
The input to PSP is the requirements; requirements document is completed and delivered to the engineer.
Level 0 (Personal Measurement)
The PSP0 has 3 waterfall-like phases: planning, development (design, coding, test) and a post mortem. A baseline is established of current process measuring: time spent on programming, faults injected/removed, size of a program. In a post mortem, the engineer ensures all data for the projects has been properly recorded and analysed. This level is then improved by adding a coding standard, a size measurement and the development of a personal process improvement plan (PIP). In the PIP, the engineer records ideas for improving his own process. The improvements constitute PSP0.1
Level 1 (Personal Planning)
Based upon the baseline data collected in PSP Level 0, the engineer estimates how large a new program will be and prepares a test report (PSP1). Accumulated data from previous projects is used to estimate the total time. Each new project will record the actual time spent. This information is used for task and schedule planning and estimation (PSP1.1).
Level 2 (Personal Quality)
Defect prevention and removal are the focus at the PSP Level 2. Engineers learn to evaluate and improve their process by measuring how long tasks take and the number of defects they inject and remove in each phase of development. Engineers construct and use checklists for design and code reviews. PSP2.1 introduces design specification and analysis techniques
Level 3 (Scaling Up)
The programmer employs an incremental model of development for larger projects by dividing the problem into smaller sections and then iteratively applies the PSP principles as each section is implemented.

[edit] PSP supporting documentation

1.Scripts
Show the sequence of activities for a task, references related documentation.
Six types of scripts
Process: inputs to and steps in a task
Planning: instructions for planning size and time estimates
High Level Design: only for PSP3
High Level Design review: only for PSP3
Development
Post-mortem
2.Forms
Forms are used to guide thorough, complete data collection. 3 fundamental forms are used in the PSP:
Defect recording log-
Time recording log- log of time spent on activities, interruptions etc.
Project plan- summary of timings for whole project
3.Templates
Customizable templates are provided for e.g. task planning, schedule planning, issue tracking log and for creating operational scenarios and functional state and logic specifications. 4.Checklists
Ensures everything that is recommended in a procedure is done, e.g. code review checklists.

[edit] Certification

There is a certification covering PSP offered by the SEI at Carnegie Mellon University called PSP Developer. The PSP Developer examination is based on PSP concepts found in the PSP Body of Knowledge. From the PSP FAQ at the SEI website, some common questions are answered regarding the certification:[1]

Why should I become an SEI-Certified PSP Developer?
This certification offers a chance for you to be recognized as an elite professional in a crowded job market. PSP training prepares you to participate on a TSP team, and PSP Developer certification assures current and potential employers that you are a professional who is capable of producing high-quality software for predictable costs and on committed schedules.

How much time is allowed to complete the exam?
Two hours are allotted for an individual to complete the PSP Developer examination.

How many questions are on the examination?
The PSP Developer examination is 80 questions in length

In what format is the examination available?
The multiple-choice examination is available through our examination delivery provider in a secure online format, and as announced at selected SEI conferences.

[edit] Publications

[edit] References

  • "Using a defined and measured Personal Software Process" by Watts S. Humphrey, published in IEEE Software, May 1996, pages 77-88.
  1. ^ http://www.sei.cmu.edu/certification/pspfaq.html

[edit] See also

[edit] External links

Personal tools