Tarkvaraarendus
Tarkvaraarendus (inglise software development) on tarkvaraloomeprotsess. Üldjuhul peetakse tarkvaraarenduse all silmas tarkvara loomist inimrühma poolt ja kokkulepitud reeglite alusel. Informaalset tarkvara loomist üksikisiku poolt nimetatakse sageli lihtsalt programmeerimiseks (kuigi ka see võib sisaldada kõiki protsessi etappe). Tarkvaraarenduse protsessi täpne kuju sõltub peamiselt arendatava tarkvara otstarbest ning loojate eelistustest ning kogemustest. Klassikaliselt sisaldab tarkvaraarendus järgmisi tegevusi: Süsteemianalüüs (sageli ka nõuete analüüs või spetsifitseerimine) – luuakse või määratakse kindlaks see, mida loodav tarkvara tegema peab, sageli ka lahenduse üldkuju. Sageli kasutatakse selleks prototüüpimist, mille käigus luuakse tulevase lahenduse osaline mudel, erinevate lahendusvariantide katsetamise või probleemi parema mõistmise eesmärgil. Disain – luuakse tarkvara sisemine arhitektuur ehk loogiline ülesehitus ning eri omaduste jaotus programmi osade vahel. Sageli luuakse disain väga üksikasjalikult – pseudokoodi tasemel. Programmeerimine – disainitud lahendus teostatakse programmeerimiskeeles, vajadusel kujundatakse tarkvara kasutajaliides. Sageli on disaini ja programmeerimise vahelise piiri tõmbamine raske. Mõned allikad peavad täpseimaks disainiks testitud programmi lähtekoodi. Testimine – kontrollitakse lahenduse töökindlust, jõudlust ja eesmärgipärasust. Silumine – kompileerimisvigade, käitusaegsete ning loogika- ja struktuursete vigade eemaldamine. Juurutamine – olenevalt loodava tarkvara tüübist võib see tähendada nii tarkvara paigaldamist konkreetsesse keskkonda, kui ka lihtsalt müüki paiskamist. Sageli hõlmab juurutamine ka kasutajate koolitamist tarkvaraga töötamiseks. Hooldus – vigade parandamine, täiendavate omaduste lisamine, kohandamine muutuva keskkonnaga, klienditugi. Nende tegevuste tegemise ulatus, järjekord ja täpne sisu olenevad suuresti arendaja poolt kasutatavast tarkvaraprotsessist. Näiteks viiakse nn. kosemudeli kohaselt eelnimetatud sammud läbi üksteise järel. Iteratiivse mudeli kohaselt seevastu koosneb kogu protsess mitmest järjestikusest tsüklist (iteratsioonist), mis kõik sisaldavad analüüsi, disaini, programmeerimist ja testimist, kuid eri tsüklites on rõhk erinevatel osadel. Tarkvara protsessimudeleid täiustatakse pidevalt.