Integracija softverskih komponenti pomoću DI paterna
UNIVERZITET « MEDITERAN » PODGORICA
Fakultet za informacione tehnologije-Podgorica
Veselin Raković
Integracija softverskih komponenata pomoću Dependency Injection paterna
ZAVRŠNI RAD
Podgorica, 2011.
UNIVERZITET « MEDITERAN » PODGORICA
Fakultet za informacione tehnologije - Podgorica
Integracija softverskih komponenata pomoću Dependency Injection paterna
ZAVRŠNI RAD
Projektovanje i razvoj softverskih aplikacija
doc. dr Dragan Đurić
Veselin Raković
Softverski inženjering
1302984220014
Podgorica, septembar, 2011.

1.2. Poglavlja rada
Poslije uvodnog dijela i sadržaja slijedi poglavlje o osnovnim pojmovima koji se koriste u radu. Biće riječi o
programskom jezuku Java, njegovoj istoriji i upotrebi. Biće objašnjeni pojmovi kao što su: softverska komponenta,
moduli, servisi. Zatim će biti opisani paterni među koje spada i sam Dependency Injection. U poglavlju će takođe
biti riječi o Dependency Injection-u, odnosno načinu na koji on funkcioniše u sprezi sa paradigmom “Programiranje
preko interfejsa”, koja će takođe biti pojašnjena. Takođe će biti pojašnjen pojam Inversion of Control (Inverzija
odgovornosti) koji se vezuje uz Dependency Injection. Zatim će detaljnije biti objašnjen pojam frejmvorka i biće
opisani sledeći frejmvorci:
•
Apache Tapestry
– komponentno orijentisan frejmvork za razvoj web aplikacija. Intresatno je da Tapestry
ima svoj Dependency Injection frejmvork (Tapestry IoC) kojem će biti posvećen dobar dio ovog rada.
•
Spring
– prvi i jedan od najpopularnijih Dependency Injection frejmvorka. Pored Dependency Injectiona
Spring može obavljati i druge funkcije. Neke od njih će biti korišćene u četvrtom poglavlju.
•
Hibernate
– omogućava pamćenje podataka korišćenjem objektno relacionog mapiranja. Hibernate se
može koristiti u sprezi sa Java Persistence API koji je takođe frejmvork koji koristi objektno relaciono
mapiranje. Hibernate – JPA kombinacija će biti korišćena u praktičnim primjerima koji se nalaze u trećem
poglavlju.
•
TestNG
– frejmvork za automatsko testiranje.
U poglavlju o osnovnim pojmovima je objašnjeno takođe šta je automatsko testiranje i koje vrste testova postoje, šta
su transakcije i šta je perzistenicija.
Zatim slijedi četvrto poglavlje koje obuhvata najobimniji dio rada. U njemu su dati praktični primjeri iz aplikacije za
demonstraciju Dependency Injectiona. kao i frejmvorka koji automatizuju Dependency Injection: Tapestry IoC i
Spring. Aplikacija je implementirana pomoću sledećih tehnologija: Apache Tapestry 5.2.4, Spring 3.0.5, Hibernate
3.6.0 final i TestNG 5.13.1. Primjeri su sledeći:
•
Prvi primjer se odnosi na stranicu koja ispisuje poruku o greški ukoliko korisnik nije dobro uradio određeni
zadatak. Funkcionalnost je implementirana upotrebom Dependency Injection-a i Tapestry IoC-a a
razmotren je i slučaj u kojem DI ne bi bio korišćen.
•
Drugi primjer je znatno obimniji - sastoji se od nekoliko potprimjera. Oni obuhvataju kreiranje i
konfigurisanje servisa za korisnike, preko Tapestry IoC-a. Biće pokazano da Dependency Injection
omogućava laku zamjenu postojećeg korisničkog servisa sa kompleksnijim servisom (zbog veze sa bazom
podataka) konfigurisanim u Spring frejmvorku i Tapestry IoC-u. Biće takođe prikazane mane i nedostaci
njihovih alternativa – servisa koji ne koriste Dependency Injection.
•
Treći primjer pokazuje kako se mogu koristiti Tapestry komponente u sprezi sa Tapestry IoC-om za zaštitu
stranica od neovlašćenog pristupa. Prikazani su nedostaci rješenja su u kojem se ne koristi Dependecy
Injection za zaštitu od neovlašćenog pristupa.
•
U četvrtom primjeru su korišćene napredne mogućnosti Tapestry IoC i Spring frejmvorka za
implementaciju Open Session In View filtera. Izvršeno je i poređenje sa primjerom u kojem se ne koristi
Dependency Injection.
•
U petom primjeru je prikazano kako je moguće uticati na Tapestry konfiguraciju preko contribute
mehanizma po kojem se Tapestry IoC razlikuje od ostalih DI frejmvorka.
•
Na kraju četvrtog poglavlja je dat primjer Late Binding-a kojeg omogućava Dependency Injection.
Na kraju rada se nalazi zaključak, popis slika, kao i spisak literature koja je korišćena za pisanje ovog rada.
2
2. Sadržaj
1 Uvod
……………………………………………………………...........................................................................................1
1.1 Dependency Injection..........................................................................................................................................1
1.2 Poglavlja rada.....................................................................................................................................................2
2 Sadržaj
……………………………………………….........................................................................................................3
3 Osnovni pojmovi
………………………………………………………...............................................................................5
3.1 Java......................................................................................................................................................................5
3.2 Softverske komponente i servisi...........................................................................................................................6
3.3 Moduli..................................................................................................................................................................6
3.4 Softverski paterni.................................................................................................................................................6
3.4.1 Dizajn i arhitekturalni paterni....................................................................................................................6
3.4.2 MVC – Model-View-Controll patern..........................................................................................................6
3.4.3 Dependency Injection.................................................................................................................................7
3.5 Programiranje preko interfejsa...........................................................................................................................8
3.6 Automatsko testiranje softvera............................................................................................................................9
3.6.1 Unit testiranje.............................................................................................................................................9
3.6.2 Integracioni testovi.....................................................................................................................................9
3.6.3 Funkcionalni testovi....................................................................................................................................9
3.6.4 Testovi prihvatljivosti...................................................................................................................................9
3.6.5 Testovi performansi....................................................................................................................................10
3.7 Frejmvorci..........................................................................................................................................................10
3.7.1 Spring frejmvork........................................................................................................................................14
3.6.2 Apache Tapestry frejmvork.........................................................................................................................11
3.7.3 ORM frejmvorci – Hibernate i JPA............................................................................................................11
3.7.4 Frejmvorci za automatsko testiranje..........................................................................................................12
3.8 Perzistentni objekti............................................................................................................................................12
3.9 Transakcije.........................................................................................................................................................12
3

3. Osnovni pojmovi
3.1 Java
Java je besplatan, objekto-orijentisani programski jezik otvorenog koda koji se pojavio 1995. godine.
Razvio ga je James Gosling za potrebe firme Sun Microsystems. Na Javin razvoj su uticali popularni programski
jezici C i C++ kao i Smalltalk, jedan od prvih objektno-orijentisanih jezika.
Ono što posebno izdvaja Javu (naročito u vrijeme kada se pojavila) je njena nezavisnost od platforme na kojoj se
izvršava. To se postiže pomoću Javine Virtuelne Mašine. Naime, Javine klase se kompajliraju u bajtkod a taj bajtkod
se izvršava tj. interpretira na Java Virtuelnoj Mašini - JVM. Dovoljno je imati JRE (sadrži JVM) za pokretanje
programa koji pisan u Javi, uopšte nije bitno na kom je operativnom sistemu on napisan.
Java ima svoj garbage kolektor koji vrši automatsko čišćenje memorije što ju je takođe posebno izdvajalo od ostalih
konkurentnih jezika u vrijeme kada se pojavila. U međuvremenu su se pojavili programski jezici koji se izvršavaju
na JVM - Scala, Clojure i Groovy. Oni se mogu koristiti u kombinaciji sa Javom.
Smatra se da je jedan od najlakših i najjednostavnijih objektno-orijentisanih jezika. Java je, zahvaljujući svojoj
otvorenosti, poslužila kao osnov za brojne popularne frejmvorke i alate. Oni su dobrim dijelom zaslužni za to što je
Java danas jedan od najpopularnijih programskih jezika. Zbog te popularnosti na netu se može naći ogromna
dokumentacija koja olakšava učenje Jave. Pored toga njeno korišćenje i učenje olakšava veliki broj raspoloživih
biblioteka.
Programski jezik Java je dio Java platforme. Njena izdanja su:
•
Java Standard Edition ili Java SE (J2SE)
– za razvoj desktop aplikacija
•
Java Enterprise Edition ili Java EE (J2EE )
- za razvoj enterprise aplikacija
•
Java Micro Edition ili Java ME (J2ME)
– za razvoj aplikacija za mobilne telefone, PDA uređaje i ostale
koje ne mogu da podrže J2SE ili J2EE zbog hardverskih ograničenja.
Njihov međusoban odnos najbolje ilustruje sledeća slika:
Slika 2. Izdanja Java platforme i njihov međusoban odnos
5
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti