# Ohjelmistokehitys

**Ohjelmistokehitys** sisältää ohjelmistojen kehityksen laajemmalla vastuulla kuin pelkkä ohjelmointi, etenkin vaatimusmäärittelyn ja testaamisen osalta. Ohjelmistokehitys on joukko aktiviteetteja kuten uuden kehitys, muokkaus, uudelleenkäyttäminen, uudelleen suunnittelu, ylläpito tai muita aktiviteetteja, jotka johtavat ohjelmistotuotteisiin.

Eräissä yhteyksissä ohjelmistokehittäjä ja ohjelmistosuunnittelija tekevät samanlaisia tehtäviä ja termit voivat tarkoittaa samaa. Eräissä yhteyksissä termit eroavat ja suunnittelijalla on laajempi vastuu kaikkien ohjelmistokomponenttien yhteen toimivuudesta. Lisäksi joissain yhteyksissä termien käyttö voi olla rajatumpaa tarkoittamaan vain tiettyjä asiantuntijoita.

## Ohjelmistokehityksen menetelmät

Ohjelmistokehityksessä on useita suuntauksia. Eräiden väitteiden mukaan perinteiset menetelmät ovat "fiktiota, joka antaa kuvan hallinnasta ja symbolista statusta". Menetelmien sanotaan olevan liian mekaanisia luonteeltaan ollakseen käyttökelpoisia. Perinteisiä menetelmiä on kutsuttu "tavoittamattomiksi ideaaleiksi ja opasteeksi utopistisissa kehitystilanteissa".

Eräitä ohjelmistokehityksen suuntauksia ovat:

* vesiputousmalli
* V-malli
* inkrementaalinen malli
* nopean kehityksen malli (RAD-malli)
* ketterä ohjelmistokehitys (engl. *agile*)
* iteratiivinen malli
* spiraalimalli

Jatkuva toimitus on eräs ohjelmistokehityksen periaate, jossa ohjelmisto pidetään jatkuvasti toimituskelpoisena.

## Ohjelmistotuotannon menetelmät

Ohjelmistokehitys on osa ohjelmistotuotantoa, jossa se on usein viimeisiä vaiheita prosessissa.

Ohjelmistokehitysprosesseihin liittyy seuraavia standardeja:

* ISO/IEC 12207
* ISO 9000
* ISO/IEC 15504
* ISO/IEC 24744
* SPEM 2.0

Ohjelmakoodin uudelleenkäytettävyys (ohjelmiston uudelleenkäyttö, engl. software reuse) tarkoittaa ohjelmistojärjestelmien toteuttamista olemassa olevasta ohjelmistosta tyhjästä tekemisen sijaan. Käsite on peräisin Naton ohjelmistokehityskonferenssista vuonna 1968, jossa käsiteltiin suurten ja luotettavien ohjelmistojärjestelmien kehitystä hallitulla ja kustannustehokkaalla tavalla. Konferenssia pidetään ohjelmistokehityksen alan syntypaikkana.

Verrattaessa ohjelmistoprojektien kehitysmallien tuottavuutta ja laatua vain yksi käytäntö on liittynyt sekä korkeaan tuottavuuteen että alhaiseen virhemäärään: varhaisen prototyypin julkaiseminen. Perinteisten ja joustavampien kehitysprosessien välillä ei välttämättä ole haittaa mahdollisesta konfliktista, koska ne perustuvat johdonmukaisille käytännöille, jotka jossain tapauksissa on suunnattu valintojen välisten erojen käsittelyyn.

## Katso myös

* Ketterä ohjelmistokehitys
* Nopean kehityksen malli
* Refaktorointi
* UML-mallinnus
* Ohjelmointiparadigma
* Ohjelmointi
* Versiohallinta
* Ohjelmiston testaaminen
* Ohjelmointirajapinta
* Käyttöliittymä
* Käytettävyys
* Koodin katselmointi

## Lähteet

## Kirjallisuutta

* Peter Naur; Brian Randell; Friedrich Ludwig Bauer; NATO Science Committee: *Software engineering : report on a conference sponsored by the NATO Science Committee*.  Brussels : Scientific Affairs Division, NATO, 7th to 11th October 1968.  (englanniksi)

## Aiheesta muualla

* Kuvia tai muita tiedostoja aiheesta Ohjelmistokehitys Wikimedia Commonsissa