**Personal Software Process** (**PSP**, suom. *henkilökohtainen ohjelmistoprosessi*) on keskeisessä osassa Watts Humphreyn kehittämässä koulutusohjelmassa, joka tähtää ohjelmistokehittäjien ammattitaidon parantamiseen. PSP voi viitata yleisterminä työtapoihin, joita kukin ohjelmistokehittäjä käyttää omassa työssään, vaikka ne eivät olisikaan millään lailla suunniteltuja tai dokumentoituja. Usein PSP kuitenkin viittaa tiettyyn Humphreyn kehittämään työtapojen kokonaisuuteen, jonka opettelun ja harjoituksiin soveltamisen on tarkoitus auttaa ohjelmistokehittäjää ymmärtämään, miksi hänen tulisi järjestelmällisesti seurata ja kehittää omia työtapojaan.

Tausta
------

PSP syntyi Humphreyn ideasta soveltaa ohjelmistotalojen käyttöön suunnitellun CMM-kypsyysmallin periaatteita myös yksilötasolla. Hän lähtee oletuksesta, jonka mukaan ohjelmistojen laadun parantaminen edellyttää yrityksen tasolla toimivien prosessien kehittämisen lisäksi, että ohjelmistokehittäjät päämäärätietoisesti kehittävät kukin omaa ammattitaitoaan myös heidän itsekseen tekemiensä työtehtävien tasolla. CMM-mallia mukaillen hän myös olettaa, että tämä ei onnistu, elleivät ohjelmistokehittäjät jotenkin pysty seuraamaan omaa kehittymistään.

PSP-koulutusohjelmassa ohjelmistokehittäjät aluksi mittaavat suoriutumisensa suunnittelu- ja ohjelmointitehtävässä nykyisillä työtavoillaan. Tämän jälkeen he ottavat asteittain käyttöönsä Humphreyn kehittämät järjestelmälliset työtavat ja mittarit ja harjoittelevat niitä pienimuotoisissa ohjelmistokehitysharjoituksissa. Lopuksi he vertaavat suoriutumistaan alkuperäisillä työtavoillaan ja uusilla järjestelmällisillä työtavoilla. Opetellut järjestelmälliset työtavat toimivat pohjana, kun ohjelmistokehittäjät tämän jälkeen lähtevät kehittämään heille itselleen parhaiten sopivia työtapoja. Koulutusohjelma on mahdollista suorittaa itseopiskeluna, yliopistokurssina tai, mikäli henkilö haluaa sertifikaatin, kaupallisella kurssilla.

Hyödyt
------

Humphreyn mukaan järjestelmällisiä työtapoja käyttävä ohjelmistokehittäjä tai ohjelmistokehitystiimi:

* Pystyy laatimaan tarkempia suunnitelmia ja sitoutumaan niihin
* Tuottaa virheettömämpiä ohjelmistoja
* Suoriutuu tehtävistään nopeammin

Microsoft on soveltanut PSP:tä ja sen päälle rakentuvaa Team Software Processia (TSP) Intian ohjelmistokehitysyksikössään. Kuuden kuukauden kuluessa PSP:n ja TSP:n käyttöönotosta yli kaksi kolmasosaa projekteista toimitettiin virheettöminä ja 94 % projekteista valmistui ajallaan.

Malliprosessi
-------------

PSP-koulutusohjelma etenee tasoittain, siten että jokainen taso lisää järjestelmällisyyttä ja mittareita:

**PSP0**Ohjelmistokehittäjän ennen koulutuksen alkua käyttämä, mahdollisesti täysin intuitioon perustuva ja määrittelemätön prosessi, täydennettynä tehtävään kuluvan ajan ja sen kuluessa havaittujen virheiden kirjaamisella.
PSP0.1Kuten PSP0, mutta täydennettynä tyylioppaan (koodausstandardin) käyttöönotolla, tuotetun ohjelman koon mittaamisella ja henkilökohtaisen kehittymissuunnitelman laatimisella.
**PSP1**Lisää ohjelman koon arvioimisen ennen sen kirjoittamista ja testausraportin laatimisen.
PSP1.1Lisää järjestelmälliset ja edellisissä vaiheissa mitattuja tunnuslukuja hyödyntävät menetelmät tehtävien ja aikataulun suunnitteluun.
**PSP2**Lisää suunnitelman ja ohjelmakoodin katselmoinnit.
PSP2.1Lisää menetelmiä suunnitelman dokumentointiin ja analysointiin.
**TSP**TSP eli Team Software Process tarjoaa mallin, miten PSP:n hallitsevat ohjelmistokehittäjät voivat toimia tehokkaasti tiiminä.

Katso myös
----------

* Ketterät menetelmät
* Six Sigma
* Capability Maturity Model

Lähteet
-------

* Watts S. Humphrey: *PSP: A Self-Improvement Process for Software Engineers*. Pearson Education, 2006. ISBN 0-321-30549-3.

### Viitteet

1. ↑  TSP and CMMI: A Brief History *sei.cmu.edu*. Viitattu 14.10.2009.
2. ↑  Mukesh Jain. Delivering Successful Projects with TSP and Six Sigma: A Practical Guide to Implementing Team Software Process. Auerbach Publications, November 2008.

Aiheesta muualla
----------------

* Team Software Process