Dokumentiranje programskih rješenja je jedno od ključnih aktivnosti programskog inženjerstva. Postoji niz prepreka u izradi kvalitetne dokumentacije, a jedan od njih je relativno kratko vrijeme koje se daje za njenu izradu. U većini današnjih projekata zahtjevi se brzo mijenjaju i potrebno je brzo reagirati kako projekt ne bi ispaštao u kvaliteti. Ovakvo dinamičko okruženje često uzrokuje zanemarivanje dokumentacije.

Ovim dokumentom se želi ukazati na važnost programske dokumentacije, a daje se i pregled tipova dokumentacije te preporuke za kvalitetnu izradu. Dokumentacija programskog projekta ima višestruke uloge. Na primjer, može služiti kao komunikacijski medij među članovima razvojnog tima ili kao priručnik koji će korisnici moći koristiti prilikom rada i administracije sustava. Također, može poslužiti kao jedinstveni repozitorij informacija razvojnim inženjerima koji održavaju sustav.

Često se koristi kao izvor informacija menadžmentu koji će na temelju tih informacija donositi odluke vezane uz budžet, poslovni plan i daljnju razradu rasporeda razvoja projekta.

Za zadovoljavanje svih navedenih potreba obično nije dovoljno napisati jedan već više vrsta dokumenata. Često se počinje od neformalno napisane radne dokumentacije pa sve do profesionalno obrađenih korisničkih uputa. Ovisno o namijeni, postoji nekoliko tipova dokumentacija, a u ovom dokumentu se opisuju najvažnije. Dokumentacije u ovom dokumentu su odabrane prema vodećim referencama iz područja programskog inženjerstva

  

U ranim fazama razvoja računarstva programska potpora je bila vezana za računalo na kojemu je napravljeno. Nije bilo potrebno voditi računa o prenošenju programa na druge odjele organizacije ili na veće udaljenosti jer su računala bila slabo rasprostranjena. Razvojem modernog računarstva nastale su platforme pomoću kojih se mogla prenositi programska potpora sa jednog računala na drugo. Ovakav preokret pokrenuo je naglu informatizaciju i integraciju računala u gotovo sve grane današnjeg modernog društva.

Ovaj dokument opisuje problematiku dokumentiranja programskih rješenja. Radi se o procesu koji započinje puno prije samog programskog ostvarenja, ali se također nastavlja i nakon izrade konačnog proizvoda. U tom procesu potrebno je napisati više vrsta dokumentacije, a to su dokumentacija zahtjeva, tehnička dokumentacija i korisnička dokumentacija. Svaka od njih je namijenjena određenoj skupini ljudi (korisnicima, inženjerima, administratorima i drugim dionicima).

Prilikom izrade dokumentacije preporučljivo je koristiti neke od opisanih tehnike dokumentiranja i dobrih praksi. Neke od njih su UML dijagrami, konvencije imenovanja i korištenje razvojnog okruženja u održavanju dokumentacije. Kako bi se stvaranje i održavanje dokumentacije olakšalo razvijeni su brojni alati koji pomažu u stvaranju pojedinih vrsta dokumenata. Većina alata pomažu u tehničkoj dokumentaciji i održavanju zahtjeva. Održavanje i stvaranje korisničke dokumentacije se zasniva na opisu pojedinih koraka i prikazom tih koraka putem slika. Kako je svaki sustav jedinstven, nije moguće napraviti alat koji će automatizirati stvaranje korisničke dokumentacije. Tehnička dokumentacija je bitan dio programske potpore koji je ključan u održavanju i nadogradnji projekta. Česta motivacija za izradu kvalitetne tehničke dokumentacije je njezina korisnost prilikom promjene jednog ili više članova razvojnog tima. Naime, s kvalitetnom tehničkom dokumentacijom novi razvojni inženjeri lako mogu uočiti posebnosti projekta i preuzeti ga. No, korisnost kvalitetne tehničke dokumentacije nadilazi potrebe novih članova razvojnog tima. Prilikom implementacije velikih i složenih sustava rješavaju se razni problemi i prepreke. Kada ne bi postojala kvalitetna dokumentacija bilo bi nezamislivo shvaćati i prisjećati se posebnosti pojedinih riješenih problema. Za razliku od tehničke dokumentacije, korisnička dokumentacija je namijenjena krajnjim korisnicima sustava. Korisnička dokumentacija ne sadrži objašnjenja programskog koda niti opis samog dizajna sustava. Njezin cilj je na jednostavan način objasniti kako koristiti pojedine funkcionalnosti programske potpore. Isto kao i tehnička dokumentacija, bitno je da korisnička dokumentacija bude uvijek ažurna i sinkronizirana s programskom potporom. Ukoliko se promjenom programa (ili zahtjeva) određen slijed akcija promijeni potrebno je odmah ažurirati korisničku dokumentaciju. Kada korisnička dokumentacija nije ažurna, korisnik neće moći koristiti programsku potporu što će uzrokovati nezadovoljstvo ili čak zastoj u radu.