Deo zbornika Uvod u softversko inženjerstvo

Projektni obrasci (Design patterns)

Email Twitter LinkedIn Facebook Google

Prosto rečeno, projektni obrasci predstavljaju akumulirano iskustvo “starih” i iskusnih programera u rešavanju nekih osnovnih programerskih problema iz oblasti objektnog programiranja.

Posao softverskih inženjera je pre svega rešavanje softverskih problema. To su problemi koje su drugi inženjeri verovatno već rešavali veliki broj puta u različitim oblicima. Tokom kreiranja softvera primenom objektno-orjentisanog pristupa, veliki broj obrazaca, principa i slučajeva najbolje prakse je otkriven, imenovan i unet u katalog. Poznavanjem ovih obrazaca i uobičajenih rešenja, inženjeri mogu da „razbijaju“ složene probleme i razviju aplikacije sa oprobanim i pouzdanih rešenjima.

Projektni obrasci (design patterns) predstavljaju apstraktne primere rešenja na visokom nivou. Njih treba posmatrati kao plan u rešavanju problema, a ne kao samo rešenje. Gotovo je nemoguće pronaći okvir (framework) koji će biti primenjen kako bi se kreirala cela aplikacija. Umesto toga, inženjeri vrše uopštavanje problema kako bi prepoznali obrasce koje treba da primene. Projektni obrasci imaju za cilj ponovnu upotrebu postojećih rešenja. Iako nisu svi problemi jednaki, ako je moguće posmatrani problem „razbiti“ i naći sličnosti sa problemima koji su ranije bili rešavani, onda je moguće primeniti uniformno rešenje nad njim. Većina problema na koje se nailazi tokom programiranja je već rešena nebrojeno puta, pa verovatno postoji i obrazac koji može pomoći u implementaciji.

Obrasci su nastali kao rezultat dobre prakse i iskustva programera. Skup najvažnijih i najčešće korišćenih obrazaca je skupljen i objavljen u knjizi Design Patterns: Elements of Reusable Object-Oriented Software, koju su napisali Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides, poznati kao Gang of Four.

Obrasci su ključni za dizajn i razvoj softvera. Oni omogućavaju izražavanje namera kroz zajednički rečnik, kada se problemi rešavaju prilikom projektovanja, tako i tokom kreiranja samog koda. Obrasci promovišu upotrebu dobrog dizajna objektno-orjentisanog softvera. Oni predstavljaju efikasan način da se opiše rešenje kompleksnih problema. Sa poznavanjem dizajn paterna, moguća je brza komunikacija unutar tima bez obraćanja pažnje na detalje implementacije niskog nivoa. Njihova posebna vrednost se nalazi u činjenici da su to oprobana i testirana rešenja.

Obrasci su nezavisni od korišćenog programskog jezika. Njihova primena je identična u svim objektno-orjentisanim programskim jezicima.

Međutim, ne zahtevaju svi problemi primenu dizajn paterna. Tačno je da obrasci mogu učiniti da kompleksni problemi postanu jednostavni, ali oni takođe mogu jednostavne probleme učiniti kompleksnim. Nakon prvog upoznavanja sa dizajn paternima, mnogi inženjeri upadaju u problem da pokušavaju da primene obrasce na svaki deo koda. Ovim se postiže suprotan efekat od željenog, odnosno, sam softver se dodatno komplikuje.

Izvor: Zdravko Ivanković, Dejan Lacmanović, Softversko inženjerstvo 2, Tehnički fakultet Mihajlo Pupin, Zrenjanin