Zašto su zahtevi teški?

Objavljeno:

06.05.2012.

Kategorija:

Softverski Zahtevi



"Our problem is to understand users' problems in their culture and their language and to build systems that meet their needs."

— Dean Leffingwell


Cilj faze zahteva

Opšte je prihvaćeno da je cilj faze zahteva da utvrdi i precizira šta softver mora da radi bez opisa kako to da uradi. To toliko jednostavno zvuči da uopšte nije jasno zašto ga je tako teško ostvariti u praksi. Da bi se to razumelo, potrebno je detaljno ispitati ciljeve faze zahteva, gde nastaju greške i zašto priroda ovog zadatka vodi ka nekim usađenim poteškoćama.


Većina autora se slaže da u suštini zahtevi treba da specificiraju šta softver treba da radi, a ne kako da uradi. Drugim rečima cilj zahteva je u tome da razume i specificira problem koji treba da bude rešen a ne samo rešenje. Najosnovniji razlog za to je da specifikacija u smislu problema treba da sagleda stvarne zahteve, a ne da ograničava faze dizajna i implementacije. Takođe, rešenja su obično veoma kompleksna i mnogo se teže menjaju i razumevaju (naročito od strane klijenta) nego sama specifikacija problema.


Nažalost, napraviti jasnu raziliku između ŠTA i KAKO predstavlja veliku dilemu i često je pitanje perspektive. Specifikacija bilo kog nivoa apstrakcije sistema može biti posmatrana kao ŠTA za sledeći nivo. Zato se potrebe klijenta mogu definisati kao ŠTA a razlaganje sistema na hardver i softver kao KAKO, itd. Problem je u tome što se zahtevi ne mogu efektivno razmatrati bez prethodnog dogovora o kom se sistemu govori i na kom nivou apstrakcije. Zato je potrebno dogovoriti šta predstavlja zonu problema, a šta predstavlja zonu rešenja. Analiza sistema i specifikacija zahteva pripadaju zoni problema.


Pored toga, potrebno je napraviti i razliku između razvoja velikih, kompleksnih sistema i malih sistema. Veliki sistemi se stvaraju u timovima sačinjenim od desetina ili stotina programera, koji obično rade u okviru mnogo veće organizacije koja obično uključuje i menadžment, inžinjering sistema, marketing, računovodstvo ili brigu o kvalitetu, a ta velika organizacija je pod uticajem spoljnog sveta u kom su klijenti, pravni okviri ili dobavljači.


Čak i kada je reč o malom sistemu, neizbežna je pojava više verzija rešenja jer vremenom, dok se sistem kreira, testira i postavlja, on se i razvija. Klijenti počinju bolje da razumevaju šta žele, razvojni tim bolje razume šta može a šta ne može da uradi sa ograničenjima prouzrokovanim cenom i rokovima, što uslovljava izmene i u zahtevima za sistemom i u samom sistemu. Nastaju nove verzije programa, koje se razlikuju u detaljima, a neočekivane promene se dešavaju u okviru očekivanih varijacija i planiranih poboljšanja.


Osnovni ciljevi specificiranja stvari koje softver treba da radi mogu da se razlože na sledeće podciljeve:

  • - potrebno je potpuno razumeti šta se zahteva od softvera

  • - potrebno je sa svima koji učestvuju u razvoju komunicirati o razumevanju onoga šta je potrebno da se uradi

  • - potrebno je obezbediti načine za kontrolu izrade kako bi se osiguralo da će finalni rezultati zadovoljavati zahteve (računajući i efekte izmena)

Primer


Preduzetnik Suvenir sztr se bavi proizvodnjom i prodajom suvenira. Shvatio je da štandovi na glavnoj autobuskoj stanici, lokalnom šetalištu i u centru grada ne donose željeni prihod. Čuo je od prijatelja za online prodaju, raspitao se i saznao da mu treba SHOP.

Koje je njegovo prethodno iskustvo sa onlajn prodajom? U najmanju ruku, skromno.

Izvori grešaka

Iz svega sledi da je izvor većine grešaka u zahtevima je nemogućnost da se adekvatno zadovolji neki od ciljeva, tj.

  • - razvojni tim nije uspeo da razume šta klijent, krajnji korisnik ili bilo ko u vezi sa finalnim proizvodom zahteva od softvera

  • - razvojni tim nije kompletno i precizno razumeo zahteve ili nije uspeo da iskomunicira o zahtevima sa ostalima koji su uključeni u razvoj

  • - razvojni tim nije uspeo da se izbori sa izmenama zahteva ili da obezbedi uslove za dalje faze razvoja poput dizajna, kodiranja, implementacije, testiranja ili održavanja


Krajnji rezultat takvih grešaka je softverski sistem koji ne radi ono što je traženo ili očekivano, razvoj koji prevazilazi budžet i rokove ili da na kraju krajeva ne uspeva da se dostavi softver koji uopšte radi!



FB Komentari: