
Specifikacija zahteva koji se postavljaju u procesu nabavke softverskog sistema najčešće je neformalna. Posledice ovakve specifikacije mogu biti teške u fazi uvođenja, kao i eksploatacije softverskog rešenja. U velikom broju slučajeva ovakav pristup može dovesti i do potpunog neuspeha IT projekta.
Zato je važno razjasniti terminologiju u vezi sa modelima najčešće korišćenim u specifikaciji zahteva u kontekstu softverskih sistema kako bi se doprinelo njihovom što konzistentnijem korišćenju. Takođe, potrebno je definisati metodološke korake za izradu detaljne specifikacije zahteva u procesu nabavke softverskog sistema.
Rezultat specifikacije zahteva (SZ) treba da bude dokument (dokumenti) koji će omogućiti adekvatan izbor, nabavku i implementaciju budućih softverskih rešenja. Da bi zadovoljio ovu ulogu, dokument treba da da detaljnu i preciznu specifikaciju potreba (funkcionalnih i tehničkih zahteva). Korisnici, konsultanti i implementatori koriste rezultate SZ u procesu nabavke softverskog rešenja, njegove konfiguracije, adaptacije, kao i kasnijeg održavanja. Zbog toga, zahtevi koji se postavljaju pred novi sistem moraju biti dokumentovani tako da budu korisni ne samo korisnicima sistema i njihovim konsultantima već i tehničkom osoblju tima koji uvodi i održava sistem. Dakle, SZ treba nedvosmisleno da opiše šta sistem treba da radi, dok svi učesnici u procesu treba da se saglase oko toga. Da bi se ovo postiglo, treba otkriti, organizovati i dokumentovati zahtevane funkcionalnosti i ograničenja.
Važan preduslov uspeha projekta specifikacije zahteva je jasno određenje pojma i strukture zahteva koji se postavljaju pred softverski sistem (softverski zahtevi). Formalna definicija softverskih zahteva predložena je u IBM-ovom jedinstvenom procesu razvoja softvera (IBM Rational Unified Process – RUP): „Zahtev opisuje uslov kojem se sistem mora povinovati, ili funkcionalnost koju mora biti u stanju da izvrši; bilo da je izveden direktno iz potreba korisnika, ili definisan u ugovoru, standardu, specifikaciji, ili drugom formalnom dokumentu”.
Kompatibilna, ali opsežnija definicija je data od strane IEEE, gde se softverski zahtev definiše kao:
- Softverska funkcionalnost potrebna korisniku da bi rešio neki problem ili postigao određeni cilj;
- Softverska funkcionalnost koja se mora ispuniti ili koju sistem ili sistemska komponenta poseduje kako bi bio zadovoljen ugovor, standard, specifikacija ili drugi formalni dokument;
- Skup svih softverskih zahteva koji formiraju osnovu za kasniji razvoj softvera ili softverske komponente.
Tako, softverski zahtev je zajednički termin za sledeće tipove zahteva: funkcionalni zahtevi, zahtevi u vezi sa performansama, zahtevi u vezi sa spoljnim interfejsom, projektna ograničenja, kao i određeni kvalitativni atributi. Ponekad se svi zahtevi van funkcionalnih zahteva nazivaju i nefunkcionalni zahtevi.
Na slici je dat predlog modela softverskih zahteva koji može doprineti njihovoj preciznijoj specifikaciji. Globalni model softverskih zahteva (predstavljen najvećim paketom) sadrži druge artefakte koji su modelovani kao manji paketi. Komponente modela softverskih zahteva su na slici predstavljene kao graf manjih paketa povezanih vezama zavisnosti. Centralni deo modela zahteva je model funkcionalnih zahteva koji opisuje željeno ponašanje sistema. On opisuje jasno i detaljno svaki servis koji programski sistem treba da obezbedi. Osnovni dijagrami kojima se u ovoj komponenti opisuje ponašanje su BPMN (Business Process Model and Notation) dijagrami (kojima se definiše model poslovnih procesa koji programski sistem treba da podrži) i dijagram slučajeva korišćenja (kojima se daje prikaz funkcija sistema, tj. slučajeva korišćenja sistema, kao i aktera/učesnika koji te funkcionalnosti koriste).
Komponente čiji modeli se mogu izraziti UML-om predstavljeni su svetlo (moguće ih je predstaviti relativno formalno). Sive komponente se mogu samo delimično predstaviti korišćenjem UML-a. Za njihov opis mogu se koristiti dokumenti zasnovani na prirodnom jeziku, u tekstualnom, tabelarnom ili grafičkom obliku.
Autor: dr Milosav Majstorović