Personal Software Process
Encyclopedia : P : PE : PER : Personal Software Process
Designed by Software Engineering Institute at Carnegie Mellon, PSP has its roots in Capability Maturity Model (CMM), the Personal Software Process is a set of guidelines and best practices to incorporate discipline in the software development process.
The PSP philosophy is largely based on reviews at every stage of development cycle.
Before code is written, an outline of the desired behaviour is written. That description is 'implemented' in pseudo code, and then each line of pseudo code is then implemented in the target language.
Only when the entire unit of code is completely written, analysed 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 in sufficient detail to exclude all detectable errors, a better design will be produced than would be produced by a code-compile-fix cycle.
The Personal Software Process consists of seven Competency Areas:
- Competency Area 1: Foundational Knowledge
- Competency Area 2: Basic PSP Concepts
- Competency Area 3: Size Measuring and Estimating
- Competency Area 4: Making and Tracking Project Plans
- Competency Area 5: Planning and Tracking Software Quality
- Competency Area 6: Software Design
- Competency Area 7: Process Extensions
External links and other resources
- [The Personal Software Process (PSP) Body of Knowledge] - an article that encapsulates the basic knowledge and principles behind the PSP and describes the basic PSP practices and methods.
- The article Using a defined and measured Personal Software Process. by Watts S. Humphrey, published in IEEE Software, May 1996, pages 77-88.
- [Process Dashboard].
This entry seems rather inaccurate in that the main emphasis of PSP is to use self-collected data and statistical methods to establish practical personal process limits for effort estimation. Reviews and quality control are important, but mainly to serve the goal of controlling the overall process of development. Control in this context means being able to identify the expected range of effort and quality with a reasonable level of certainty. The emphasis is on predictability, not perfection.
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
