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.

background image

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

background image

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

Želiš da pročitaš svih 45 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti