Tarkvara arenduse elutsüklis on olemas erinevaid tegevusi, nende tegevuste tulemusel tekib hulk artifakte
mis dokumenteerib nendes tegevustes kas siis tehtavaid tegevusi või tehtud tegevusi ja nende tegijaid
Dokumentatsioon tekib peaaegu igas tarkvaraarenduse elutsükli etapis ja põhimõtteliselt igas tarkvara
arenduse elutsükli tüübis. Need artefaktid kokku moodustavadgi tarkvara dokumentatsiooni
On olemas erinevaid tüüpe dokumentatsioone, aga tüpiliselt esinevad vähemalt järgnevad:
Kujutab endast erinevates arendustsüklites oleva analüüsietapi väljundit, kus pannakse paika
arendatava süsteemi erinevad nõuded koostöös lõppkasutajagan ning kliendiga. Arvestatakse mõlemi vajadusi
ning selgitatakse välja erinevad takistavad aspektid.
Dokumendi eesmärk on anda arendajale arhitektuurse disaini dokumendi loomise jaoks täpne sisend selle kohta,
mida üldse arendama peab, selle abil kirjeldatakse juba süsteemselt arendajale vajalik info.
Kirjeldab ära dokumendi eesmärgi(Milleks ja kellele), Projekti ulatuse(Mida arendatakse, mida mitte)
Terminite sõnastik(Mittearendajatele kirjeldamakskasutatud tehnoloogilisi termineid), Viiteid teistele
Dokumentidele(erinevaid uml diagrammid, kasutajajuhendid, meeskonna arenduse halduskeskkond, projekti
juhtimise halduskeskkond, Arendatava töö enda haldusjuhend, spm)
Kirjeldab arendustööd ennast, mida selle dokumendi abil arendama hakatakse/arendatakse
Kirjeldatakse ära, mida tahab kasutaja teha, mida klient sellest saab, mis on nende erinevad vajadused,
kas neil on eelnevaid kogemusi sarnaste toodetega samast tootekategooriast. Näiteks rollipõhine tabel sotsiaalmeedia
äpi jaoks
| Roll | Tegevused |
| Külaline |
|
| Registreeritud kasutaja | Kõike mis külaline +
|
| Admin | Kõike mida registreerinud kasutaja +
|
| Süsteemi administraator | Hoolitseb veebiäpi toimimise eest, haldab andmebaase, teeb korrastustöid, vajadusel konfigureerib, ja jälgib muud statistikat, et tagada kliendi ja kasutaja rahulolu |
Kirjeldatakse ära erinevad piirangud või tõkestavad aspektid, mis võivad arenduselette tulla, kasutajatel endal olla,
Keskonnast toode toimima peab, arendusvahenditest tulenevad piirangud ja seaduslikud piirangud
Toote loomist võib tingida mingisugune eelnev tingimus - viiakse sisse riigisüteemis mingisugune muudatus, digitaalne
vahend selle jaoks puudub, ning leitakse, et on vaja arendada vastav tööriist, et tagada riigisüsteemi muutuse ülalhoid.
Kirjeldab ära keskkonna riistvaraliselt millel arendatud toode toimima peab . See võib endas sisaldada erinevaid
Kirjeldab ära erinevad funktsionaalsed nõuded(Näiteks sisselogimisefunktsioon backendis) kasutajalugudena ning muud
tehnilised nõuded arenduskeskkonnas. Sisaldab ka endas erinevaid UML skeeme.
Kujutab endast arendatava toote või süsteemi ülesehitus. Kirjeldab ära ka selles süsteemis erinevaid
mooduleid, komponente ning muid sõltuvusi. Pannakse kirja ka kuidas need komponendid/moodulid omavahel suhtlevad
ning süsteem ise tervikuna süsteemiväliste elementidega (Muud liidesed/apid/platvormid/riistvarad/jne). Ära kirjeldatakse
ka arhitektuur keskkonnale kus ja kuidas valminud toode (Või süsteemi erinevad osad )hiljem olema peab(/peavad).
Dokumendi eesmärk on tekitada arendajaile struktuur mida nad arendama hakkavad, see struktuur tuletatakse tarkvara
nõuete dokumendist. Dokumendi kiistab süsteemiarhitakt
Kirjeldatakse ära dokumendi eesmärk (milleks ja kuidas), viidatakse muudele dokumentidele(sh. Tarkvara nõuete dokument)
ning omab sissukorda.
Kirjutatakse välja milliseid arendusvahendeid on otsustatud arendustööks rakendada. Kirjeldatakse ära ka nende seadistus
ja põhjendatakse ära miks just need arendusvahendid valitud on. Kirjeldatakse ära samamoodi ka peale arendusvahendite
arenduskeskkond
On kokkulepelised konventsioonid, mida kogi arendusmeeskond jälgima peab, nendeks on:
Kirjeldatakse ära teised, välised süsteemid ja kuidas nendega arendatav tarkvaratoode suhtlema peaks.
Sealhulgas ka mis kujul ja mis viisil need välised süsteemid infot vastuvõtavad ja tagasi annavad
Kirjeldatakse ära kuidas arendatav toode sisemiselt erinevateks komponentideks jaotub, ning milline on
selle üleüldine sisemine struktuur. Mida iga komponent tegema peab, mis on selle komponendi eesmärk
ja kuidas komponendid omavahel suhtlevad
Siin tuuakse välja miks miski arhitektuuri otsus langetati, ehk miks just nii mitte naa. Pakutakse välja ka
ka olemasolevatele otsustele alternatiive juhuks kui esialgne plaan ei sobi või on tõkestatud
Tuuakse välja ka nõuded mille põhjal erinevad otsused langetati, ehk mida see otsus lahendama peaks
Pannakse kirja tarkvaratootele kliendi poolt esitatud jõudlusnõuded, näiteks: kui palju kasutajaid suudab
sotsiaalmeedia platvorm korraga hallata. Testimise käigus üritataksegi testida arendusjärgus olevat toodet
simuleeritud koormusega. Kõik muud jõudlusnõuded peaksid oleam ka testitavad sellisel viisil
Kuida sprogramm väljendab oma funktsionaalsust lõppkasutajale, ning millisel viisil esitatakse programmis
tekkinud vigu *kasutajale*. Teisisõnu on siin ka kasutajaliidese disain. Kasutajaliidese disain võib olla
ka eraldi dokument
Kirjeldab ära kui palju vajab arendatav toode erinevaid süsteemi raudvara nõudeid resursse nagu:
Kuidas ja mis viisidel hoitakse lõppkasutaja andmed ja raudvara terve ja turvalisena ning tehakse kindlaks
et lõppkasutaja saaks kätte ainult need andmed mida tal programmis oleva tegevuse teostamiseks vaja on.
Näiteks krüpteeritakse tundlikud andmed andmebbasi esmasel sisestamisel ära, ning iga järgmine kord
võrreldakse kasutaja sisestusi (Nagu parool jms) andmebaasis juba oleva krüpteeritud kujuga
Kas programm on võimalik käivitada teistel(Nii riistvaralistel kui ka tarkvaralistel) platvormidel, ja kui
siis millistel
Kui klient otsustab, et nüüd on vaja tarkvara dokumendis mingi nõue vaja ringi teha, siis tuleb vastavad muudatused sisse
viia ka arhitektuurse disaini dokumenti. Sellel eesmärgil on mõlemis dokumendis nõuete ja arhitektuurielemendi vahel ristviited
Kui on näiteks vaja sisselogimisfunktsiooni muuta, et nüüd klient tahab ka saada telefoninumbrit 2FA läbiviimiseks, siis on seal
nõude juures ka ristviide vastavale programi moodulile, mis haldab kasutaha sisselogomist. Sellele kasutajaajaloole lisatakse juurde
telefoninumbri küsimine ja juurdelisatud osa läheb arendusse uue inkremendina
Ning vastupidi, kui arhitektuuris tuleb välja, et telefoninumbri küsimine ei ole võimalik, siis on selles dokumendis vastav ristviide
Tarkvara nõudele, ja seal defineeritakse nõue ringi, et telefoninumbrit kohe küsida ei saa, tehakse uus nõue mis lubab kasjutajal
Selle telefoninumbri hiljem lisada
On dokument mis aitab lõppkasutajal kasutada ning navigeerida valminud tootes. ta kirjeldab ära kuidas erinevaid tegevusi soovitada
milleks seda programmi üldse kasutada saab, kuidas lahendada korduma kippuvaid küsimusi ja muid võimalikke kasutaja tegevuse tagajärjel
tellinud veaolekuid. Kasutaja juhend on kirjutatud selle põhjal mis on kasutajale näha ning saadaval, aga mitte käsitledes programmi
siseseid detaile. Näiteks Monteerimisprogramm kirjeldab kasutajale kuidas muuta tööriist nähtavaks näiteks läbi "view > window" menüü, aga mitte
seda millist muutujat muuta vaja, et kuvada see aken koodis (bool isToolVisible = false;-> bool isToolVisible = true)
haldusjuhend on dokument mille koostavad arendajad mille koostavad arendajad mille koostavad arendajad toote kohta potensiaalselt mittetegevale isikule, aga
kes on kliendi palgal valminud süsteemi hooldamas. Dokument käsitleb:
On omakorda dokumendiartefaktide kogum, mis käsitleb projekti haldamisega seotud dokumente, sh ajakava planeerimist, arendusega
seotud ressursside planeermist arendustöö hetkejärkujm