78
UNIVERZITET U BEOGRADU FAKULTET ORGANIZACIONIH NAUKA ZAVRŠNI RAD Tema: SOFTVERSKI SISTEM ZA PRAĆENJE IZRADE ZAVRŠNOG RADA U JAVA EE OKRUŽENJU MENTOR: STUDENT: DR SINIŠA VLAJIĆ PREDRAG STANIŠIĆ 465/06 BEOGRAD, 2012.godine

Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

Embed Size (px)

Citation preview

Page 1: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

UNIVERZITET U BEOGRADU FAKULTET ORGANIZACIONIH NAUKA

ZAVRŠNI RAD

Tema: SOFTVERSKI SISTEM ZA PRAĆENJE IZRADE ZAVRŠNOG RADA U JAVA EE OKRUŽENJU

MENTOR: STUDENT:

DR SINIŠA VLAJIĆ PREDRAG STANIŠIĆ 465/06

BEOGRAD, 2012.godine

Page 2: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

1

Sadržaj

1. Uvod .......................................................................................................................................................... 3

2. Java platforma ........................................................................................................................................... 4

2.1. Java Card ............................................................................................................................................. 5

2.1.1. Portabilnost ................................................................................................................................. 5

2.1.2. Sigurnost ...................................................................................................................................... 5

2.2. Java Micro Edition (JME) ..................................................................................................................... 6

2.3. Java Standard Edition (JSE) ................................................................................................................. 6

2.4. Java Enterprise Edition (JEE) ............................................................................................................... 6

2.5. JavaFX ................................................................................................................................................. 7

3. Java Servlet Tehnologija ........................................................................................................................... 8

3.1. Servlet i servlet kontejner ................................................................................................................... 8

3.2. Osnovne metode servleta ................................................................................................................. 10

3.3. Životni ciklus servleta ........................................................................................................................ 11

3.3.1. Inicijalizacija ............................................................................................................................... 12

3.3.2. Obrada zahteva .......................................................................................................................... 12

3.3.3. Uništavanje ................................................................................................................................ 12

3.4. Filterovanje zahteva i odgovora ....................................................................................................... 12

3.4.1. Programiranje filtera .................................................................................................................. 13

3.5. Obrada izuzetaka .............................................................................................................................. 14

3.6. Prednosti servleta ............................................................................................................................. 14

4. Java Server Pages tehnologija ................................................................................................................ 15

4.1. Uvod u JSP ......................................................................................................................................... 15

4.2. JSP arhitektura .................................................................................................................................. 16

4.3. Elementi JSP ...................................................................................................................................... 17

4.3.1. Direktive ..................................................................................................................................... 17

4.3.2. Deklaracije ................................................................................................................................. 19

4.3.3. Izrazi ........................................................................................................................................... 19

4.3.4. Skripleti ...................................................................................................................................... 20

4.4. Životni ciklus JSP strane .................................................................................................................... 21

Page 3: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

2

4.4.1. Prevođenje i kompajliranje ........................................................................................................ 21

4.4.2. Izvršenje ..................................................................................................................................... 22

4.4.3. Baferovanje ................................................................................................................................ 22

4.4.4. Obrađivanje grešaka .................................................................................................................. 23

4.5. Prednosti JSP-a.................................................................................................................................. 23

5. Studijski primer ....................................................................................................................................... 24

5.1. Zahtevi .............................................................................................................................................. 24

5.1.1. Korisnički zahtev ........................................................................................................................ 24

5.1.2. Specifikacija zahteva pomoću modela slučajeva korišćenja ...................................................... 24

5.2. Faza analize ....................................................................................................................................... 31

5.2.1. Ponašanje softverskog sistema .................................................................................................. 31

5.2.2. Sistemski dijagrami sekvenci ..................................................................................................... 31

5.2.3. Rezultat analize sistemskog dijagrama sekvenci: ...................................................................... 42

5.2.4. Definisanje ugovora o sistemskim operacijama ........................................................................ 43

5.2.5. Konceptualni (domenski) model ................................................................................................ 45

5.2.6. Relacioni model ......................................................................................................................... 46

5.3. Faza projektovanja ............................................................................................................................ 47

5.3.1. Arhitektura softverskog sistema ................................................................................................ 47

5.3.2. Projektovanje strukture softverskog sistema ............................................................................ 48

5.3.3. Projektovanje skladišta podataka .............................................................................................. 52

5.3.4. Projektovanje korisničkog interfejsa ......................................................................................... 54

5.3.5. Finalna arhitektura softverskog sistema .................................................................................... 73

5.4. Faza implementacije ......................................................................................................................... 74

6. Zaključak .................................................................................................................................................. 76

7. Literatura ................................................................................................................................................. 77

Page 4: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

3

1. Uvod

Java danas ima zapažen uticaj na Internet, ali takođe predstavlja srž mnogih aplikacija i uređaja sa kojima se svakodnevno susrećemo. Java je prisutna u mobilnim uređajima, desktop računarima, video igrama, navigacionim sistemima, poslovnim aplikacijama. Java programsko okruženje postalo je glavni izbor za robusne i velike poslovne sisteme. Uz pomoć Java Enterprise Edition (Java EE) razvoj Java složenih (enterprise) aplikacija nikad nije bio lakši ni brži. Cilj Java EE platforme je da olakša rad programerima, skraćujući potrebno vreme za razvoj aplikacija, smanjujući kompleksnost i obezbeđujući bolje performanse.

U okviru ovoga rada prikazan je razvoj Web aplikacije u Java Enterprise Edition okruženju. U prvom delu ovog rada kratko je opisana Java tehnologija uz akcenat na posebnim Java platformama dok su detaljnije opisane tehnologije za razvoj Web aplikacija – Java Servlet tehnologija i Java Servlet Pages tehnologija koje su i korišćene u razvoju aplikacije iz studijskog primera.

Na kraju rada dat je studijski primer koji primenjuje prethodno opisane tehnologije. Razvoj aplikacije iz studijskog primera urađen je u četiri faze. Prvu fazu čini aktivnost prikupljanja zahteva koja je opisana pomoću modela slučajeva korišćenja. Druga faza je faza analize opisana je pomoću sistemskih dijagrama sekvenci i ugovora čime je opisano ponašanje softverskog sistema i konceptualnog i relacionog modela čime je opisana struktura softverskog sistema. Treća faza – projektovanje definiše arhitekturu softverskog sistema. Na kraju je objašnjena faza implementacije. Za razvoj aplikacije korišćeno je Eclipse razvojno okruženje.

Page 5: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

4

2. Java platforma

Izdanje Java platforme predstavlja skup povezanih programa koji omogućavaju razvoj i izvršavanje aplikacija napisanih u Java programskom jeziku. Java platformu čine virtuelna mašina i kompajler sa bibliotekama. Postoje posebne implementacije ovih komponenata za različite operativne sisteme i zbog toga je moguće izvršavanje iste Java aplikacije na bilo kom operativnom sistemu. Postoje sledeća izdanja Java platforme:

1. Java Card 2. Java Micro Edition (JME) 3. Java Standard Edition (JSE) 4. Java Enterprise Edition (JEE) 5. JavaFX

Java platforma se sastoji od nekolicine programa, od kojih svaki obezbeđuje deo celokupnih mogućnosti Jave. Na primer, Java kompajler (Java compiler) koji konvertuje Java source kod u java bajtkod (bytecode) (za potrebe Java virtuelne mašine) čini deo Java Development Kit-a (JDK). Java Runtime Environment (JRE) sadrži just-in-time (JIT) kompajler koji konvertuje bajtkod u mašinski kod. Opširan skup biblioteka je takođe deo Java platforme.

Java virtuelna mašina

Srž Java platforme je koncept virtuelne mašine koja izvršava Java bajtkod programe. Bajtkod je isti bez obzira na kakvom se hardveru i operativnom sistemu izvršava program. Postoji JIT (Just-In-Time) kompajler u okviru Java virtuelne mašine koji prevodi Java bajtkod u procesorske instrukcije u toku rada i upisuje kod u memoriju u toku izvršavanja.

Upotreba bajtkoda dozvoljava Java programima da se izvršavaju na bilo kojoj platformi koja ima virtuelnu mašinu. Iako su Java programi nezavisni od platforme, kod Java virtuelne mašine koja izvršava programe nije. Svaki podržani operativni sistem ima sopstvenu Java virtuelnu mašinu.

Biblioteke klasa

U većini modernih operativnih sistema, velika količina koda koji se često upotrebljava je dostupna da bi se olakšao posao programerima. S obzirom da je Java platforma nezavisna od operativnog sistema aplikacije ne mogu da se oslone na postojeće biblioteke operativnog sistema. Zato Java obezbeđuje opširan skup sopstvenih biblioteka koje sadrže mnoštvo standardnih funkcija koje se često nalaze u modernim operativnim sistemima. Veći deo ovih biblioteka je napisan u Javi. Na primer Swing biblioteka crta korisnički interfejs i sama obrađuje događaje, čime se eliminišu suptilne razlike u tome kako različite platforme obrađuju slične komponente.

Java biblioteke klasa imaju tri uloge u okviru Java platforme. Prvo, kao i druge biblioteke standardnog koda, Java biblioteke obezbeđuju programeru dobro poznat skup funkcija za obavljanje čestih zadataka, kao što je održavanje liste članova ili kompleksno parsiranje stringova. Drugo, biblioteke daju apstraktni interfejs za aktivnosti koje bi inače bile veoma

Page 6: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

5

zavisne od hardvera i operativnog sistema (na primer pristup mreži i pristup datotekama). Na kraju, kada neka platforma ne podržava sve aspekte koji su potrebni Javi, biblioteke se koriste da obavljaju funkcije komponenata koje nedostaju, ili obezbeđivanjem zamene putem emulacije ili barem obezbeđivanjem standardnog načina za proveru da li postoje neophodne komponente.

2.1. Java Card

Java Card je tehnologija koja omogućava da se Java aplikacije (apleti) sigurno izvršavaju na smart karticama i sličnim malim memorijskim uređajima. Java Card omogućava korisniku da programira uređaj i time ga učini zavisnim od aplikacije. Široko se koristi u SIM i ATM karticama.

Glavni ciljevi Java Card tehnologije su:

1. portabilnost 2. sigurnost

2.1.1. Portabilnost

Java Card pokušava da definiše standardno okruženje za smart kartice tako što će se isti Java Card apleti izvršavati na različitim tipovima smart kartica. Kao i u Javi ovo se postiže kombinovanjem virtuelne mašine (Java Card Virtual Machine) i dobro definisane runtime biblioteke. Glavne prepreke u postizanju ovog cilja su problemi sa memorijom, performansama i podrškom.

2.1.2. Sigurnost

Java Card tehnologija je prvobitno razvijena u cilju obezbeđivanja osetljivih podataka koji se čuvaju na smart karticama. Bezbednost određuju različiti aspekti ove tehnologije:

• Enkapsulacija podataka – Podaci se čuvaju u okviru aplikakcije, a Java Card aplikacije se izvršavaju u bezbednom okruženju (Java Card virtuelna mašina) odvojenom od operativnog sistema i hardvera.

• Firewall apleta – Za razliku od drugih Java virtuelnih mašina, Java Card virtuelna mašina uglavnom izvršava više aplikacija od kojih svaka kontroliše osetljive podatke. Različite aplikacije su stoga odvojene aplet firewall-om koji ograničava i proverava pristup elemenata jednog apleta drugom.

• Kriptografija – Simetrični algoritmi koji se uglavnom koriste – DES, Trostruki DES, AES i asimetrični algoritmi kao što je RSA su podržani kao i druge kriptografske usluge kao što su potpisivanje, generisanje i razmena ključeva.

• Aplet – aplet je mašina stanja koja obrađuje samo dolazeće komandne zahteve i odgovara slanjem podataka ili statusa nazad do interfejs uređaja.

Page 7: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

6

2.2. Java Micro Edition (JME)

Java Micro Edition (ranije poznata pod nazivom Java 2 Platform, Micro Edition (J2ME)) je Java platforma namenjena opsegu manjih uređaja od industrijskih kontrolnih uređaja do mobilnih telefona. Ova tehnologija obezbeđuje nekoliko skupova različitih biblioteka (koje se nazivaju profili) za uređaje sa ograničenim memorijskim i procesorskim mogućnostima. Trenutno postoji preko 2.1 milijardi mobilnih i PDA uređaja koji koriste Java ME tehnologiju. Iako se ne koristi na najnovijim mobilnim platformama (kao što su iPhone, Windows Phone 7, Android) i dalje je veoma zastupljena na jeftinijim uređajima kao što su uređaji Nokia Series 40. Takođe se koristi u Bada i Symbian operativnim sistemima.

2.3. Java Standard Edition (JSE)

Java Standard Edition (JSE) je široko upotrebljavana platforma za programiranje u Java programskom jeziku. To je Java platforma koja se koristi za izvršavanje standardnih portabilnih aplikacija. Java Standard Edition obuhvata dva osnovna proizvoda:

1. Java SE Development Kit (JDK) 2. Java SE Runtime Environment (JRE)

Java Development Kit sadrži alate neophodne za razvoj Java programa i sadrži Java Runtime Environment radi izvršavanja tih programa. Neki od alata su java compiler, java application launcher, Appletviewer i slično. Za razliku od Java Development Kit-a Java Runtime Environment sadrži Java virtuelnu mašinu, biblioteke klasa i druge datoteke i koristi se samo za izvršavanje Java programa.

2.4. Java Enterprise Edition (JEE)

Java Enterprise Edition (JEE) je platforma koja obezbeđuje API i izvršno okruženje za razvoj i pokretanje enterprise softvera, uključujući mrežne i web servise kao i druge višenivoske, skalabilne, pouzdane i bezbedne mrežne aplikacije. Ova platforma se može podeliti u tri grupe tehnologija:

1. Java Web tehnologije koje se koriste za razvoj prezenatacionog sloja Web i JEE aplikacija. U ove tehnologije spadaju: - Java Servlet - Java Server Pages (JSP) - Java Server Pages Standard Tag Library (JSTL) - Java Server Faces (JSF)

2. Enterprise JavaBeans (EJB) tehnologije, koje se koriste za razvoj poslovne logike

aplikacija. U ove tehnologije spadaju: - Session Beans - Entity Beans - Message Driven Beans

3. Java XML tehnologije koje se koriste prilikom implementacije Web servisa. U ove

tehnologije spadaju:

Page 8: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

7

- Java API for XML Processing (JAXP) - Java API for XML based RCP (JAX-RCP) - SOAP with Attachments API for JAVA (SAAJ) - Java API for XML Registries (JAXR)

JEE platforma podržava:

- Višenivoski distribuirani aplikacioni model - Komponente koje se mogu ponovo koristiti - Jedinstveni model zaštite - Fleksibilnu transakcionu kontrolu - Web servise koji su zasnovani na XML standardima i protokolima

JEE platforma koristi distribuirani višenivoski model (obično tronivoski model) za razvoj JEE enterprise aplikacija. JEE aplikacija sastoji se od JEE komponenti koje su instalirane na različitim računarima. Komponente, odnosno računari na kojima se izvršavaju komponente su dodeljene različitim nivoima JEE aplikacije:

1. Klijentski nivo – komponente koje se izvršavaju na klijentskim računarima 2. Nivo aplikacione logike – komponente koje se izvršavaju na J2EE serveru. Ovaj nivo je

podeljen na dva podnivoa: • Web nivo • Poslovni nivo

3. Enterprise information system (EIS) nivo – komponente koje se izvršavaju na EIS serveru (uglavnom neki sistem za upravljanje bazama podataka)

J2EE aplikacija može da bude realizovana kao Web aplikacija, ili kao EJB aplikacija. Web aplikacija predstavlja aplikaciju koja se izvršava u okruženju Web servera. Postoje dva tipa Web aplikacija:

• Prezentaciono orijentisana - ove aplikacije generišu Web strane na osnovu zahteva koji im postavlja klijent. Web strana može biti realizovana preko HTML, XML ili pomoću nekog drugog jezika.

• Servisno orijentisana – ove aplikacije koriste Web servise da realizuju zahteve koje im postavlja klijent ili prezentaciono orijentisana aplikacija.

2.5. JavaFX

JavaFX je softverska platforma za razvoj Rich Internet Aplikacija (RIA) koje mogu da se izvršavaju na mnoštvu međusobno povezanih uređaja. To podrazumeva razvoj aplikacija za desktop računare, Internet pretraživače i mobilne telefone, s tim da su televizijski uređaji, igračke konzole, Blu-ray plejeri i drugi uređaji planirani za budućnost.

Pre verzije 2.0 za razvoj JavaFX aplikacija je korišćen statički deklarativni jezik JavaFX Script. Ipak Java kod je mogao biti integrisan u JavaFX aplikacije. JavaFX kod se kompajlirao u Java bajtkod tako da su JavaFX aplikacije mogle biti izvršavane na bilo kom desktop računaru i browser-u koji sadrži Java Runtime Environment i na mobilnim telefonima koji sadrže Java ME.

Od verzije 2.0 JavaFX je implementiran kao Java biblioteka i stoga je napisan u Java kodu. Oracle je odustao od razvoja JavaFX Scripta.

Page 9: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

8

3. Java Servlet Tehnologija

3.1. Servlet i servlet kontejner

Java Servlet tehnologija obezbeđuje web programerima jednostavan i konzistentan mehanizam za nadogradnju funkcionalnosti web servera. Pre servleta Common Gateway Interface (CGI) programiranje je korišćeno kao glavna tehnologija za generisanje dinamičkog sadržaja. Zbog glavnih nedostataka CGI tehnologije, kao što su nedostatak skalabilnosti i platformska zavisnost, nastala je Java Servlet tehnologija.

Servlet predstavlja Java klasu i serversku (server-side) komponentu koja se koristi radi proširenja mogućnosti servera koji izvršavaju aplikacije kojima se pristupa po principu modela zahtev-odgovor.

Slika 3.1: Model zahtev-odgovor http servleta

Iako servleti mogu da odgovore bilo kom tipu zahteva, obično se koriste da prošire aplikacije koje se izvršavaju na Web serveru. Stoga se servleti mogu smatrati Java apletima koji se izvršavaju na serveru umesto u Internet pretraživaču. Kao što se vidi na slici 3.1, klijent šalje http zahtev serveru a server poziva odgovarajući servlet koji zatim odgovara izvršavanjem doGet() ili doPost() metode u zavisnosti od zahteva klijenta.

Svaki servlet mora direktno ili indirektno da implementira javax.servlet.Servlet interfejs. Ovo je centralni interfejs Servlet API-a. Nasleđivanje pomenutog interfejsa se uglavnom postiže nasleđivanjem jedne od sledećih klasa:

• javax.servlet.GenericServlet • javax.servlet.http.HttpServlet, koja i sama nasleđuje GenericServlet

Servlet je objekat koji se učitava i pokreće sa servletske mašine ili servletskog kontejnera kao što je Apache Tomcat. Servlet kontejner je kompajliran, izvršni program koji izvršava funkcije učitavanja, inicijalizovanja i izvršavanja servleta.

Page 10: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

9

Primer http servleta:

package servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import database.KomunikacijaSaBazom; import util.ServletOperacije; import beans.Korisnik; @SuppressWarnings("serial") @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet{ protected void obradiZahtev(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession sesija = request.getSession(); String korisnickoIme = (String) request.getParameter("korisnickoIme"); String lozinka = (String) request.getParameter("lozinka"); if(korisnickoIme.isEmpty() || lozinka.isEmpty()) { ServletOperacije.posaljiPorukuIPreusmeri(request, response, "Niste popunili sva polja", "prijava.jsp"); }else{ try{ String connectionURL = getServletContext().getInitParameter("connection-url"); String driver = getServletContext().getInitParameter("connection-driver"); String username = getServletContext().getInitParameter("database-username"); String password = getServletContext().getInitParameter("database-password"); Korisnik korisnik = new Korisnik(); korisnik.setKorisnickoIme(korisnickoIme); korisnik.setLozinka(lozinka); korisnik = KomunikacijaSaBazom.returnDB(connectionURL, username, password, driver).vratiKorisnika(korisnik); if(korisnik.getSifraKorisnika() != 0) { sesija.setAttribute("korisnik", korisnik); }else{ ServletOperacije.posaljiPorukuIPreusmeri(request, response, "Neispravno korisnicko ime i lozinka!", "prijava.jsp");

Page 11: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

10

} ServletOperacije.preusmeri(request, response, "PrikaziServlet"); }catch(Exception e) { sesija.invalidate(); } } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { obradiZahtev(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { obradiZahtev(request, response); } } Navedena klasa LoginServlet predstavlja servlet jer, kako je objašnjeno u prethodnom delu teksta, nasleđuje klasu javax.servlet.http.HttpServlet. Klijent unosi korisničko ime i lozinku u login formu na JSP strani i prilikom submita šalje http zahtev serveru. Server zatim poziva LoginServlet koji izvršava doGet() metodu (u ovom slučaju), proverava da li su uneti ispravni login podaci i u zavisnosti od toga preusmerava zahtev na drugi servlet.

3.2. Osnovne metode servleta

Osnovne metode servleta su:

1. init() metoda 2. service() metoda 3. destroy()

pored navedenih postoje sledeće pomoćne metode:

4. getServletConfig() metoda 5. getServletInfo() metoda

Metoda init() se poziva nakon što je servlet učitan prvi put. Sve aktivnosti oko inicijalizacije se mogu obaviti u ovom trenutku (na primer ostvarivanje veze sa bazom podataka). ServletConfig objekat koji se prosleđije init() metodi se može iskoristiti za čuvanje konfiguracionih podataka kojima se zatim može pristupiti korišćenjem getServletConfig() metode.

Page 12: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

11

Metoda service() predstavlja glavni deo servleta. Ova metoda se poziva kad god klijent pošalje zahtev pojedinom servletu. Metoda service() čita zahtev koji dobija u formi ServletResponse objekta. Pošto postoji samo jedna instanca servleta i pošto više niti može pozvati service() metodu servleta istovremeno ova metoda mora biti implementirana na thread-safe način.

Kada servlet završi svoju funkciju on može biti uništen pozivanjem destroy() metode. Ova metoda obavlja sve neophodne aktivnosti “čišćenja” za servletom kao što su zatvaranje konekcija sa bazom podataka i oslobađanje resursa koje je servlet koristio.

3.3. Životni ciklus servleta

Životni ciklus servleta (Slika 3.2) predstavlja jednostavan objektno orijentisani dizajn. Servlet biva konstruisan i inicijalizovan. Zatim obrađuje nula ili više zahteva dok servis koji uključuje pomenuti servlet ne prekine sa radom. U tom trenutku servlet se uništava i dolazi do sakupljanja smeća. Različiti serveri i servlet kontejneri imaju pomalo različite životne cikluse servleta ali postoje koraci koji su za svaki servlet isti. Koraci životnog ciklusa servleta su:

1. Kreiranje i inicijalizacija servleta, 2. Obrada zahteva, 3. Uništavanje servleta.

Slika 3.2: Životni ciklus servleta

Page 13: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

12

3.3.1. Inicijalizacija

Servlet kontejner učitava servlet ili pri startovanju servera (pred-učitavanje) ili kada mu se pristupi. Većina aplikacionih servera i servlet kontejnera dozvoljava da se podesi koji servleti će biti učitani pri startovanju. Server poziva init() metodu servleta odmah pošto kreira instancu servleta. Bez obzira da li se servlet učitava pri startovanju servera ili dinamično, init() metoda mora biti pozvana pre nego što se počne sa obradom zahteva. Metoda init() se poziva samo jedanput i u njoj servlet kreira i inicijalizuje resurse koje će upotrebljavati pri obradi zahteva. ServletConfig objekat koji metoda init() prima obezbeđuje parametre za inicijalizaciju servletu. Ovi se parametri prosleđuju servletu i ne odnose se na pojedine zahteve. Oni sadrže početne vrednosti kao na primer: početna vrednost brojača, ili broj konekcija koje je potrebno otvoriti. ServletConfig objekat takođe sadrži referencu na ServletContext objekat preko koga se dobijaju informacije o okruženju servleta.

3.3.2. Obrada zahteva

Metoda service() obrađuje sve zahteve koji dolaze od klijenta. Obrada zahteva ne može početi dok init() metoda ne završi sa radom. Ova metoda prima dva parametra: (Http)ServletRequest objekat koji sadrži informacije o zahtevu tj. informacije koje obezbeđuje klijent i (Http)ServletResponse objekat koji sadrži informacije koje se šalju klijentu. Metoda service() HttpServlet klase prekriva service() metodu GenericServlet klase i sadrži kod koji automatski preusmerava http zahteve tipa GET ili POST metodama doGet() i doPost().

3.3.3. Uništavanje

Servlet kontejner zaustavlja servlet pozivanjem destroy() metode čime se završava životni ciklus servleta. U destroy() metodi se oslobađaju svi resursi koji su kreirani i inicijalizovani u init() metodi.

3.4. Filterovanje zahteva i odgovora

Filter je objekat koji vrši transformaciju zaglavlja i/ili sadržaja zahteva ili odgovora. Filteri se razlikuju od web komponenata u tome što filteri uglavnom sami ne kreiraju odgovor. Filter obezbeđuje funkcionalnost koja se može dodeliti različitim Web resursima.

Filteri servleta predstavljaju niz aktivnosti koje se obavljaju za svaki zahtev-odgovor pre nego što se istom omogući pristup servletu, jsp ili html stranici u web aplikaciji.

Filter obavlja sledeće funkcije:

• Na osnovu određenih informacija iz zahteva preduzima predviđene akcije. • Sprečava dalje prosleđivanje para zahtev-odgovor. • Vrši izmenu zaglavlja i podataka zahteva. Ovo se postiže obezbeđivanjem sopstvene

modifikovane verzije zahteva. • Vrši izmenu zaglavlja i podataka odgovora. Ovo se postiže obezbeđivanjem sopstvene

modifikovane verzije odgovora.

Page 14: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

13

• Vrši interakciju sa spoljnim resursima.

Primene filtera uključuju autentifikaciju, logovanje, konverziju slika, kompresiju podataka, enkripciju, tokenizirajuće stream-ove, XML transformacije i slično.

Može se podesiti da Web resurs bude filtriran od strane lanca od nijednog, jednog ili više filtera u određenom redosledu. Ovaj lanac se definiše kada se izvršava web aplikacija koja sadrži komponentu, a instancira se kada web kontejner učita komponentu.

3.4.1. Programiranje filtera

API za kreiranje filtera čine Filter, FilterChain i FilterConfig interfejsi u javax.servlet paketu. Filter se definiše implementiranjem Filter interfejsa.

Metode filtera su:

• doFilter() – Ovoj metodi se prosleđuju objekti zahteva, odgovora i filter lanca (request, response, filterChain) i ona vrši sledeće aktivnosti:

- Ispituje zaglavlje zahteva. - Modifikuje objekat zahtev ukoliko filter želi da promeni zaglavlja ili podatke

zahteva. - Modifikuje objekat odgovor ukoliko filter želi da promeni zaglavlja ili podatke

odgovora. - Poziva sledeći entitet u lancu filtera. Ukoliko je trenutni filter poslednji u lancu koji

se završava ciljnom web komponentom ili nekim statičkim resursom, sledeći entitet je resurs na kraju lanca u suprotnom to je neki drugi prethodno definisani lanac.

- Ispituje zaglavlje odgovora nakon što je pozvan sledeći filter u lancu. - Baca izuzetak kako bi ukazao na grešku u obradi.

• init() – Ovu metodu poziva kontejner kada se pravi instanca filtera. Ukoliko je potrebno poslati parametre za inicijalizaciju filteru, oni se dobijaju iz FilterConfig objekta koji se prosleđuje init metodi.

• destroy()

Page 15: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

14

3.5. Obrada izuzetaka

Izuzeci se mogu desiti za vreme izvršavanja ili kompajliranja. U servletima, izuzeci su predstavljeni preko pojavljivanja klasa javax.servlet.ServletException i izvedene klase javax.servlet.UnavailableException. Servlet baca ServletException da ukaže na opšti servlet problem. UnavailableException je korisniji. Kada dođe do ovog izuzetka servlet obaveštava server da nije dostupan za obradu zahteva. Postoji više tehnika za obradu izuzetaka u servletu, neke od njih su:

• Upotreba web.xml datoteke za obradu izuzetaka. • Upotreba RequestDispatcher-a za prosleđivanje zahteva na error stranu. • Upotreba HttpServletResponse metode sendError(). • Upotreba Web Application Log-a za beleženje informacije o izuzetku. • Upotreba HttpServletResponse metode setStatus() za vraćanje stanja greške čitaču. • Pristupanje atributima greške iz HttpServletRequest objekata.

3.6. Prednosti servleta

Servleti obezbeđuju web programerima brojne prednosti koje neće pronaći u drugim tehnologijama. Te prednosti uključuju:

• Performanse – Performanse servleta su superiornije u odnosu na CGI jer ne postoji kreiranje procesa za svaki zahtev klijenta. Umesto toga svaki zahtev obrađuje proces servlet kontejnera. Nakon što je servlet završio obradu zahteva on ostaje učitan u memoriju i čeka naredni zahtev.

• Prenosivost – Kao i ostale Java tehnologije servlet aplikacije su u potpunosti prenosive kroz operativne sisteme i serversku implementaciju.

• Brz ciklus razvoja – Pošto je u pitanju Java tehnologija dotupna je bogata Java biblioteka što ubrzava razvoj aplikacija.

• Robusnost – Servlete kontroliše Java virtuelna mašina što eliminiše probleme koji nastaju pri pisanju robusnih aplikacija (skupljanje “smeća”, “curenje” memorije).

• Snaga - Pomoću servleta se mogu izvršiti operacije koje je jako teško ili nemoguće izvršiti sa CGI-om, na primer servlet može direktno da komunicira sa web serverom, za razliku od CGI programa. Servleti mogu deliti podatke međusobno i održavati sesiju korišćenjem mehanizma za praćenje (session tracking mechanism), koji im omogućava da čuvaju informacije od zahteva do odgovora.

• Nadogradnja – Servlet API je projektovan na takav način da se može veoma lako proširiti.

Page 16: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

15

4. Java Server Pages tehnologija

4.1. Uvod u JSP

JavaServerPages (JSP) predstavlja tehnologiju koja omogućava programerima da kreiraju dinamički generisane web strane zasnovane na HTML, XML ili drugim tipovima dokumenata. Što se arhitekture tiča JSP se može smatrati apstrakcijom Java servleta visokog nivoa. JSP strane se prevode u servlete u toku izvršavanja, a svaki tako kreirani servlet se memoriše i ponovo koristi sve dok ne dođe do izmene originalne JSP strane.

JSP se može koristiti nezavisno ili kao komponenta za prikaz podataka (view) u serverski orijentisanom Model-View-Controller (MVC) dizajnu uz Java Bean-ove kao model komponentu i Java servlete kao controller komponentu.

JSP omogućava da se Java kod i određene predefinisane akcije koriste zajedno sa statičkim web markup sadržajem, a rezultujuća strana se kompajlira i izvršava na serverskoj strani da bi se dobio dokument. Kompajlirane strane, kao i korišćene Java biblioteke koriste Java bajtkod. Kao i svaki Java program i JSP se izvršava u okviru Java virtuelne mašine. JSP strana predstavlja tekstualni dokument koji se sastoji iz dva dela: statičnih podataka koji predstavljaju bilo koji tekstualni format (HTML, XML, itd) i JSP elemenata kojima se generiše dinamički sadržaj. Primer funkcionisanja JSP-a uz odvajanje aplikacione logike od prezentacije je prikazan na slici 4.1.

Slika 4.1: Funkcionisanje JavaServerPages

Kao i sa običnim stranicama, browser šalje HTTP zahtev Web serveru. Web server je Java server, koji identifikuje servlete i rukovodi njima. Web server zatim prosleđuje HTTP zahtev JSP

Page 17: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

16

mašini koja konvertuje JSP stranu u servlet. JSP mašina kompajlira servlet u izvšnu klasu i prosleđuje originalni zahtev servlet mašini. JSP mašina konvertuje JSP stranu u servlet i rekompajlira je samo ako je došlo do izmene JSP strane od poslednjeg zahteva. Deo Web servera koji nazivamo servlet mašina učitava servlet klasu i izvršava je. Tokom izvršavanja servlet generiše izlaz u HTML formatu koji servlet mašina prosleđuje Web serveru putem HTTP odgovora. Web server zatim prosleđuje HTTP odgovor browseru koji dinamički generiše HTML stranu, baš kao da je u pitanju statična stranica.

4.2. JSP arhitektura

Postoje tri scenarija izvršavanja JSP strane što se može videti i sa slike 4.2:

1. Klijent prvi put poziva JSP stranu. Klijent šalje zahtev do Web servera (1). Web server pokreće mehanizam koji na osnovu JSP strane generiše servlet (2.1) koji nakon toga kompajlira (3). JSP mehanizam izvršava servlet (4), koji vraća neki rezultat (5). Rezultat se vraća nazad do klijenta (6).

2. Klijent zove JSP stranu za koju je već kreiran servlet. Klijent šalje zahtev do Web servera (1). JSP mehanizam izvršava servlet (4), koji vraća neki rezultat (5). Rezultat se vraća nazad do klijenta (6).

3. Došlo je do izmene JSP strane za koju je već kreiran servlet (servlet više nije validan). Klijent šalje zahtev do Web servera (1). Web server pokreće mehanizam koji na osnovu JSP strane generiše novi servlet (2.2), koji nakon toga kompajlira (3). JSP mehanizam izvršava Servlet (4), koji vraća neki rezultat (5). Rezultat se vraća nazad do klijenta (6).

Na osnovu navedenog može se zaključiti da se za svaku JSP stranu generiše po jedan servlet.

Slika 4.2: Načini izvršavanja JSP strane

Page 18: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

17

4.3. Elementi JSP

Postoje dva tipa podataka u JSP-u:

1. Statički deo (HTML, CSS i sl.) – koji JSP mašina direktno kopira u odgovor. 2. Dinamički deo – koji predstavlja deo koji JSP mašina prevodi i kompajlira.

Elementi JSP datoteke:

• direktive (direktives) – obezbeđuju osnovne informacije o strani, kao što su klase koje su importovane, contentType koji će se koristiti, informacije o jeziku koji će se koristiti u JSP strani (language=˝java˝), itd.

• deklaracije (declaratives) – koje se koriste za deklarisanje promenljivih i metoda na JSP stranama.

• izrazi (expressions) – koji se formatiraju u stringove koji se uključuju u rezultat izvršenja JSP strane.

• skripleti (scriplets) – Java programski kod koji se unosi u JSP stranu.

4.3.1. Direktive

JSP direktiva je izraz koji daje JSP mehanizmu informacije o JSP strani koja treba da se obradi. Generalna sintaksa JSP direktiva je:

<%@ directive {attribute=˝value˝} %>

gde direktive mogu da imaju više atributa:

• page – informacije za stranu • include – datoteke koje se uključuju • taglib – biblioteka tagova koja će biti korišćena na strani.

Direktiva page može imati sledeće atribute:

- language – definiše koji programski jezik je u upotrebi. Sintaksa: language=˝java˝

- extends – definiše koju klasu servlet nasleđuje. Podrazumevano je nasleđena HttpJspBase klasa koja obezbeđuje osnovu za funkcionisanje servleta i stoga se ne preporučuje korišćenje ovog atributa.

Sintaksa: extends=˝package.class˝

- import – uključuje pakete i klase u JSP stranu.

Sintaksa: import=˝package.*, package.class˝

Page 19: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

18

- session – ukoliko je vrednost atributa session true onda se session objekat servleta i Java Bean objekti mogu koristiti. U suprotnom, session objekat se mora eksplicitno navesti, a Java Bean objekti se ne mogu koristiti.

Sintaksa: session=˝true|false˝

- buffer – određuje se veličina izlaznog toka ukoliko postoji. Podrazumevana veličina je 8kb. Ovaj atribut se koristi uz autoFlush atribut.

Sintaksa: buffer=˝none|8kb|sizekb˝

- autoFlush – ukoliko je vrednost ovog atributa true tada se izlazni buffer prazni nakon što se popuni. U suprotnom dolazi do izuzetka kada se popuni izlazni buffer.

Sintaksa: autoFlush=˝true|false˝

- isThreadSafe – ukoliko je vrednost ovog atributa true to znači da više korisnika istovremeno može da pristupa JSP strani. U suprotnom samo jedan korisnik, u jednom trenutku, može da pristupi JSP strani.

Sintaksa: isThreadSafe=˝true|false˝

- info – informacije o strani koje su dostupne putem Servlet.getServletInfo() metode - errorPage – relativna putanja do JSP strane gde se obrađuju neobrađeni izuzeci

Sintaksa: errorPage=˝pathToErrorPage˝

- isErrorPage – strana se označava kao strana za greške (error strana)

Sintaksa: isErrorPage=˝true|false˝

- contentType – navodi tip sadržaja strane i kod znakova (podrazumevani je ISO-8859-1) koji će se vratiti klijentu

Sintaksa: contentType=˝text/html; charset=ISO-8859-1˝

- isElIgnored – određuje se da li će se EL (Expression Language) izrazi koji se nalaze na JSP strani obraditi ili ne

Sintaksa: isElIgnored=˝true|false˝

Page 20: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

19

4.3.2. Deklaracije

U okviru deklaracije definiše se jedna ili više promenljivih i/ili metoda koje se koriste u JSP strani.

Generalna sintaksa je sledeća:

<%! declaration; [ declaration; ] ... %>

Na primer:

<%! int broj=5; %>

<%! int saberi(int a, int b) {return a+b;} %>

Kod deklaracije se mora voditi računa o sledećim pravilima:

- Kraj deklaracije se mora završiti sa tačka-zarez (;) znakom - Mogu se koristiti promenljive ili metode koje su generisane u paketima importovanim na

JSP stranu putem page direktive. Ove promenljive i metode se ne moraju posebno deklarisati unutar JSP strana.

4.3.3. Izrazi

Izrazi predstavljaju klasičan Java izraz koji se konvertuje u string i prikazuje na JSP strani. Generalna sintaksa je:

<%= expression %>

Na primer:

<% for(int i=0;i<5;i++) { %>

<BR>

Vrednost indeksa: <%= i %>

<% } %>

Uz pomoć JSP izraza veoma je lako ugraditi vrednosti u HTML kod. Bilo šta između <%= i %> tagova će biti obrađeno, tako što se konvertuje u string i ugrađuje u response objekat. Konverzija iz primitivnog tipa u string se radi automatski.

Page 21: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

20

4.3.4. Skripleti

Skriplet je validan Java programski kod koji se unosi u JSP stranu. Generalna sintaksa je:

<% Java programski kod %>

Unutar skripleta se mogu izvoditi sledeće akcije:

- Deklarisati promenljive i metode koje će kasnije biti korišćene na JSP strani - Pisati validne Java naredbe - Koristiti implicitni objekti (deklarisani izvan skripleta) ili drugi objekti deklarisani kao

<jsp:useBean> objekti.

Iz skripleta se može pristupiti sledećim implicitnim objektima koji će biti generisani u servletu:

- request – zahtev klijenta - response – odgovor klijentu - pageContext – kontekst strane, iz koga se dobijaju brojne informacije o aplikaciji,

servletu, sesiji, itd. - session – HTTP session objekat koji omogućava da se unutar njega kreiraju promenljive

sesije - application – na osnovu pageContext.getServletContext() dobija se objekat same

aplikacije unutar koje se koristi JSP strana - out – izlani tok, koji se povezuje sa response objektom i pomoću koga se šalju podaci do

klijenta - config – konfiguracioni objekat za stranu - page – objekat koji sadrži referencu na samog sebe - exception – objekat koji se prosleđuje do strane koja obrađuje greške koje se dešavaju

u toku izvršenja programa.

Page 22: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

21

4.4. Životni ciklus JSP strane

JSP strana obrađuje zahteve kao servlet. Stoga su životni ciklus i mnoge sposobnosti JSP strana (posebno dinamički aspekti) određene Java Servlet tehnologijom. Kada je zahtev prosleđen do JSP strane, Web kontejner prvo proverava da li je servlet JSP strane stariji od same JSP strane. Ukoliko je servlet stariji, Web kontejner prevodi JSP stranu u servlet klasu i kompajlira klasu. Tokom razvoja, jedna od prednosti JSP strana nad servletima je to što se build proces obavlja automatski.

4.4.1. Prevođenje i kompajliranje

Tokom faze prevođenja svaki tip podataka u JSP strani se tretira različito. Statički podaci se pretvaraju u kod koji će slati podatke u tok odgovora (response stream). JSP elementi se tretiraju na sledeći način:

- Direktive se koriste da kontrolišu kako Web kontejner prevodi i izvršava JSP stranu. - Skripting elementi se ubacuju u servlet klasu JSP strane. - EL izrazi (expression language expressions) se prosleđuju kao parametri pozivima JSP

expression evaluatoru. - jsp: [set | get] Property elementi se konvertuju u pozive metoda JavaBeans komponenti. - jsp: [include | forward] elementi se konvertuju u pozive Java Servlet API-ja. - jsp:plugin element se konvertuje u specifični markup čitača (browser-specific markup) za

aktiviranje apleta. - Custom tagovi se konvertuju u pozive do tag handler-a koji implementira custom tag.

I faza prevođenja i faza kompajliranja može uzrokovati greške koje se mogu uočiti jedino kad se strana zahteva po prvi put. Ukoliko do greške dođe u bilo kojoj od ove dve faze, server će vratiti JasperException i poruku koja uključuje ime JSP strane i liniju u kojoj je došlo do greške.

Nakon što je strana prevedena i kompajlirana, servlet JSP strane (uglavnom) ima životni ciklus sličan životnom ciklusu servleta opisanom u poglavlju 3.3 (što je vidljivo i sa slike 4.3):

Page 23: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

22

Slika 4.3 – Životni ciklus JSP strane

1. Ukoliko instanca servleta JSP strane ne postoji, Web kontejner: • Učitava servlet klasu JSP strane • Kreira instancu servlet klase • Inicijalizuje instancu servleta pozivanjem jspInit metode

2. Poziva _jspService metodu, prosleđujući joj request i response objekte.

Ukoliko kontejner mora da ukloni servlet JSP strane to čini pozivanjem jspDestroy metode.

4.4.2. Izvršenje

Različiti parametri izvršenja JSP strane mogu se kontrolisati korišćenjem page direktiva.

4.4.3. Baferovanje

Kada je JSP strana izvršena, izlaz zapisan u objektu odgovora je automatski buffer-ovan. Veličina buffer-a se može podesiti korišćenjem sledeće page direktive:

<%@ page buffer=˝none|xxxkb˝ %>

Veći buffer omogućava da se upiše više sadržaja pre nego što se bilo šta pošalje nazad klijentu, što obezbeđuje JSP strani više vremena da podesi odgovarajuće statusne kodove i zaglavlja ili

Page 24: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

23

da sve prosledi drugom Web resursu. Manji buffer skraćuje vreme učitavanja memorije serveru i omogućava klijentu da ranije počne da prima podatke.

4.4.4. Obrađivanje grešaka

Može doći do brojnih izuzetaka u toku izvršavanja JSP strane. Kako bi se naznačilo Web kontejneru da prosledi kontrolu do strane koja prikazuje grešku u slučaju izuzetka potrebno je ubaciti sledeću page direktivu na početku JSP strane:

<%@ page errorPage=˝file_name˝ %>

Sledeća page direktiva na početku strane ukazuje na to da se zapravo radi o strani za greške (error page):

<%@ page isErrorPage=˝true˝ %>

Ova direktiva čini objekat tipa javax.servlet.jsp.ErrorData dostupnim strani kako bi se mogle izvući, protumačiti i prikazati informacije o uzroku izuzetka na strani za greške.

4.5. Prednosti JSP-a

Prednosti JSP tehnologije u odnosu na neke konkurentne tehnologije su:

• JSP i Active Server Pages (ASP) – ASP i JSP su slične tehnologije. ASP je razvijen od strane Microsofta. Prednost JSP-a nad ASP-om je u sledecem: dinamički delovi napisani u Javi su mnogo moćniji i lakši za korišćenje i moguće ih je koristiti na drugim operativnim sistemima i web serverima a ne samo na mašinama sa Microsoft softverom.

• JSP i čisti servleti - Servleti generišu HTML preko println naredbi, dok JSP direktno koristi i modifikuje HTML. JSP strana se sastoji iz HTML-a (kao statičkog dela) i Java koda (kao dinamičkog dela), tako da se ova dva dela mogu nezavisno pisati i razvijati i na kraju sastaviti u jednu JSP stranu. To nije moguće sa servletima.

Jedan od glavnih razloga zašto je Java Server Pages tehnologija izrasla u ono što je danas je velika tehnička potreba za jednostavno projektovanim aplikacijama sa odvojenim dinamičkim sadržajem od statičkih šablonski prikazanih podataka. Druga prednost korišćenja JSP-a je to što omogućuje jasnije odvajanje uloge web dizajnera od programera softvera. JSP tehnologija je platformski nezavisna, u svojim dinamičkim web stranama, web serverima i osnovnim server komponentama. JSP strane se izvršavaju bez bilo kakvih problema na bilo kojoj platformi, pokreću se na bilo kom web serveru.

Page 25: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

24

5. Studijski primer

5.1. Zahtevi

Zahtevi predstavljaju svojstva i uslove koje sistem ili šire gledajući projekat mora da zadovolji.

5.1.1. Korisnički zahtev

Potrebno je kreirati softversko rešenje informacionog sistema za praćenje aktivnosti studenata prilikom izrade diplomskih radova u kome će se voditi evidencija o svim studentima koji su u procesu izrade diplomskih radova, njihovim mentorima i aktivnosti koje isti preduzimaju na svim aktivnim diplomskim radovima. Studentima je potrebno omogućiti da vide postojeće aktivnosti na njihovom diplomskom, da unose nove aktivnosti, da vrše pretragu aktivnosti i da menjaju lične podatke za pristup, dok je mentorima (profesorima i asistentima) potrebno dodatno omogućiti i kreiranje novih korisnika aplikacije, unos novih diplomskih radova, brisanje diplomskih radova, brisanje korisnika i uvid u sve aktivnosti diplomskih radova na kojima su mentori.

Softversko rešenje treba razviti kao Web aplikaciju, koja će omogućiti da se navedene funkcionalnosti obavljaju korišćenjem Interneta.

5.1.2. Specifikacija zahteva pomoću modela slučajeva korišćenja

Imamo sledeće slučajeve korišćenja:

1. Autentifikacija korisnika 2. Unos novog korisnika 3. Ažuriranje naloga 4. Brisanje korisnika 5. Unos novog diplomskog 6. Ažuriranje diplomskog 7. Brisanje diplomskog 8. Unos nove aktivnosti 9. Ažuriranje aktivnosti

Page 26: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

25

Slika 5.1: Dijagram slučajeva korišćenja (mentor)

Slika 5.2: Dijagram slučajeva korišćenja (student)

Page 27: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

26

Slučaj Korišćenja 1 : Autentikacija korisnika

Naziv SK: Autentikacija korisnika

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan.

Osnovni scenario SK

1. Korisnik unosi podatke za autentikaciju korisnika.(APUSO) 2. Korisnik poziva sistem da pronađe korisnika sa zadatim podacima.(APSO) 3. Sistem pretražuje korisnike.(SO) 4. Sistem prikazuje poruku da je korisnik uspesno logovan.(IA)

Alternativni scenario:

4.1 Ukoliko sistem nije mogao da pronađe korisnika, prikazuje poruku o neuspešnoj autentikaciji.(IA) Izvršenje scenarija se prekida.

Slučaj Korišćenja 2 : Unos novog korisnika

Naziv SK: Unos novog korisnika

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor i otvorena je stranica za unos novog korisnika.

Osnovni scenario SK

1. Korisnik unosi podatke o novom korisniku. (APUSO) 2. Korisnik proverava da li je uneo sve potrebne podatke. (ANSO) 3. Korisnik poziva sistem da sačuva novog korisnika. (APSO) 4. Sistem čuva novog korisnika. (SO) 5. Sistem prikazuje poruku da je korisnik uspešno sačuvan. (IA)

Alternativni scenario:

5.1. Ukoliko sistem nije mogao da sačuva novog korisnika prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

Page 28: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

27

Slučaj Korišćenja 3 : Ažuriranje naloga

Naziv SK: Ažuriranje naloga

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, korisnik je ulogovan i otvorena je stranica za ažuriranje naloga.

Osnovni scenario:

1. Korisnik menja podatke.(APUSO) 2. Korisnik zahteva od sistema da sačuva izmene.(APSO) 3. Sistem čuva izmene podataka o korisniku. (SO) 4. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Alternativna scenarija

4.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

Slučaj Korišćenja 4 : Brisanje korisnika

Naziv SK: Brisanje korisnika

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor i otvorena je stranica za brisanje korisnika.

Osnovni scenario:

1. Korisnik unosi ime, prezime i tip korisnika kog želi da obriše. (APUSO) 2. Korisnik poziva sistem da pronađe traženog korisnika. (APSO) 3. Sistem prikazuje listu korisnika koji odgovaraju unetim parametrima. (IA) 4. Korisnik bira korisnika iz liste korisnika i poziva sistem da obriše korisnika (APSO) 5. Sistem briše korisnika. (SO) 6. Sistem prikazuje korisniku poruku da je korisnik obrisan. (IA)

Alternativna scenarija

3.1. Ukoliko sistem ne može da pronađe korisnika sa zadatim podacima prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Page 29: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

28

6.1. Ukoliko korisnik za brisanje ima aktivan diplomski rad prikazuje se poruka o tome da dati diplomski mora biti obrisan pre nego što se obriše korisnik (IA). Prekida se izvršenje scenarija

6.2. Ukoliko sistem ne može da obriše korisnika prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Slučaj Korišćenja 5 : Unos novog diplomskog

Naziv SK: Unos novog diplomskog

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor i otvorena je stranica za unos novog diplomskog.

Osnovni scenario SK

1. Korisnik unosi podatke o novom diplomskom. (APUSO) 2. Korisnik proverava da li je uneo sve potrebne podatke. (ANSO) 3. Korisnik poziva sistem da sačuva novi diplomski. (APSO) 4. Sistem čuva novi diplomski. (SO) 5. Sistem prikazuje poruku da je diplomski uspešno sačuvan. (IA)

Alternativni scenario:

5.1. Ukoliko sistem nije mogao da sačuva novi diplomski prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

Slučaj Korišćenja 6 : Ažuriranje diplomskog

Naziv SK: Ažuriranje diplomskog

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je profesor ili asistent i otvorena je stranica za ažuriranje diplomskog.

Osnovni scenario:

Page 30: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

29

1. Korisnik menja podatke.(APUSO) 2. Korisnik zahteva od sistema da sačuva izmene.(APSO) 3. Sistem čuva izmene podataka o diplomskom. (SO) 4. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Alternativna scenarija

4.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

Slučaj Korišćenja 7 : Brisanje diplomskog

Naziv SK: Brisanje diplomskog

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor i otvorena je stranica za brisanje diplomskog.

Osnovni scenario:

1. Korisnik unosi ime, prezime i broj indeksa korisnika čiji diplomski želi da obriše. (APUSO) 2. Korisnik poziva sistem da pronađe traženi diplomski. (APSO) 3. Sistem prikazuje diplomski koji odgovara unetim parametrima. (IA) 4. Korisnik poziva sistem da obriše diplomski (APSO) 5. Sistem briše diplomski. (SO) 6. Sistem prikazuje korisniku poruku da je diplomski obrisan. (IA)

Alternativna scenarija

3.1. Ukoliko sistem ne može da pronađe diplomski za zadate podatke prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

6.1. Ukoliko sistem ne može da obriše diplomski prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Page 31: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

30

Slučaj Korišćenja 8 : Unos nove aktivnosti

Naziv SK: Unos nove aktivnosti

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, korisnik je ulogovan i otvorena je stranica za unos nove aktivnosti.

Osnovni scenario SK

1. Korisnik unosi podatke nove aktivnosti. (APUSO) 2. Korisnik proverava da li je uneo sve potrebne podatke. (ANSO) 3. Korisnik poziva sistem da sačuva novu aktivnost. (APSO) 4. Sistem čuva novu aktivnost. (SO) 5. Sistem prikazuje poruku da je aktivnost uspešno sačuvana. (IA)

Alternativni scenario:

5.1. Ukoliko sistem nije mogao da sačuva novu aktivnost prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

Slučaj Korišćenja 9 : Ažuriranje aktivnosti

Naziv SK: Ažuriranje aktivnosti

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, korisnik je ulogovan i otvorio je aktivnost koju je sam kreirao.

Osnovni scenario:

1. Korisnik menja podatke aktivnosti.(APUSO) 2. Korisnik zahteva od sistema da sačuva izmene.(APSO) 3. Sistem čuva izmene podataka aktivnosti. (SO) 4. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Alternativna scenarija

4.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

Page 32: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

31

5.2. Faza analize

Faza analize opisuje logičku strukturu i ponašanje softverskog sistema (poslovnu logiku softverskog sistema). Ponašanje softverskog sistema je opisano pomoću sistemskih dijagrama sekvenci, koji se prave za svaki slučaj korišćenja, i pomoću ugovora o sistemskom operacijama, koje se dobijaju na osnovu sistemskih dijagrama sekvenci. Struktura softverskog sistema se opisuje pomoću konceptualnog i relacionog modela.

5.2.1. Ponašanje softverskog sistema

Ponašanje sistema se može opisati preko UML sekvencionih dijagrama, odnosno preko dijagrama saradnje.

5.2.2. Sistemski dijagrami sekvenci

Sistemski dijagram sekvenci prikazuje, za izdvojeni scenario slučaja korišćenja, događaje u određenom redosledu, koji uspostavljaju interakciju između aktora i softverskog sistema. Događaj koji napravi aktor je pobuda za poziv sistemske operacije. Za događaj koji predstavlja pobudu za poziv sistemske operacije se često kaže da je to sistemski događaj. Broj događaja je jednak broju APSO akcija koje izvodi aktor.

DS1: Dijagram sekvenci slučaja korišćenja : Autentikacija korisnika

Osnovni scenario SK

1. Korisnik poziva sistem da pronađe korisnika sa zadatim podacima.(APSO) 2. Sistem prikazuje poruku da je korisnik uspesno logovan.(IA)

Page 33: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

32

Alternativni scenario:

2.1 Ukoliko sistem nije mogao da pronađe korisnika, prikazuje poruku o neuspešnoj autentikaciji.(IA) Izvršenje scenarija se prekida.

DS2: Dijagram sekvenci slučaja korišćenja : Unos novog korisnika

Osnovni scenario SK

1. Korisnik poziva sistem da sačuva novog korisnika. (APSO) 2. Sistem prikazuje poruku da je korisnik uspešno sačuvan. (IA)

Page 34: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

33

Alternativni scenario:

2.1. Ukoliko sistem nije mogao da sačuva novog korisnika prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

DS3: Dijagram sekvenci slučaja korišćenja : Ažuriranje naloga

Osnovni scenario:

1. Korisnik zahteva od sistema da sačuva izmene.(APSO) 2. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Page 35: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

34

Alternativna scenarija

2.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

DS4: Dijagram sekvenci slučaja korišćenja : Brisanje korisnika.

Osnovni scenario:

1. Korisnik poziva sistem da pronađe traženog korisnika. (APSO) 2. Sistem prikazuje listu korisnika koji odgovaraju unetim parametrima. (IA) 3. Korisnik bira korisnika iz liste korisnika i poziva sistem da obriše korisnika (APSO) 4. Sistem prikazuje korisniku poruku da je korisnik obrisan. (IA)

Page 36: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

35

Alternativna scenarija

2.1. Ukoliko sistem ne može da pronađe korisnika sa zadatim podacima prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

4.2. Ukoliko sistem ne može da obriše korisnika prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Page 37: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

36

DS5: Dijagram sekvenci slučaja korišćenja : Unos novog diplomskog

Osnovni scenario SK

1. Korisnik poziva sistem da sačuva novi diplomski. (APSO) 2. Sistem prikazuje poruku da je diplomski uspešno sačuvan. (IA)

Page 38: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

37

Alternativni scenario:

2.1. Ukoliko sistem nije mogao da sačuva novi diplomski prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

DS6: Dijagram sekvenci slučaja korišćenja : Ažuriranje diplomskog

Osnovni scenario:

1. Korisnik zahteva od sistema da sačuva izmene.(APSO) 2. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Page 39: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

38

Alternativna scenarija

2.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

DS7: Dijagram sekvenci slučaja korišćenja : Brisanje diplomskog

Osnovni scenario:

1. Korisnik poziva sistem da pronađe traženi diplomski. (APSO) 2. Sistem prikazuje diplomski koji odgovara unetim parametrima. (IA) 3. Korisnik poziva sistem da obriše diplomski (APSO) 4. Sistem prikazuje korisniku poruku da je diplomski obrisan. (IA)

Page 40: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

39

Alternativna scenarija

2.1. Ukoliko sistem ne može da pronađe diplomski za zadate podatke prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

4.1. Ukoliko sistem ne može da obriše diplomski prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Page 41: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

40

DS8: Dijagram sekvenci slučaja korišćenja : Unos nove aktivnosti

Osnovni scenario SK

1. Korisnik poziva sistem da sačuva novu aktivnost. (APSO) 2. Sistem prikazuje poruku da je aktivnost uspešno sačuvana. (IA)

Page 42: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

41

Alternativni scenario:

2.1. Ukoliko sistem nije mogao da sačuva novu aktivnost prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

DS9: Dijagram sekvenci slučaja korišćenja : Ažuriranje aktivnosti

Osnovni scenario:

1. Korisnik zahteva od sistema da sačuva izmene.(APSO) 2. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Page 43: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

42

Alternativna scenarija

2.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

5.2.3. Rezultat analize sistemskog dijagrama sekvenci:

Kao rezultat analize scenarija dobijeno je ukupno 9 sistemskih operacija koje treba projektovati:

1. signal PronadjiKorisnika(Korisnik) 2. signal SacuvajKorisnika(Korisnik) 3. signal AzurirajNalog(Korisnik) 4. signal ObrisiKorisnika(Korisnik) 5. signal PronadjiDiplomski(Diplomski) 6. signal SacuvajDiplomski(Diplomski) 7. signal AzurirajDiplomski(Diplomski) 8. signal ObrisiDiplomski(Diplomski) 9. signal SacuvajAktivnost(Aktivnost) 10. signal AzurirajAktivnost(Aktivnost)

Page 44: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

43

5.2.4. Definisanje ugovora o sistemskim operacijama

Za svaku od uočenih operacija prave se ugovori. Sistemska operacija opisuje ponašanje softverskog sistema. Sistemska operacija ima svoj potpis, koji sadrži ime metode i opciono ulazne i/ili izlazne argumente. Ona je javna i njoj se može pristupiti iz okruženja softverskog sistema. Ugovori se prave za sistemske operacije i oni opisuju njeno ponašanje. Ugovori opisuju šta operacija treba da radi, bez objašnjenja kako će to da bude izvršeno. Jedan ugovor je vezan za jednu sistemsku operaciju. Ugovori se sastoje iz sledećih sekcija:

• Operacija – ime operacije i njeni ulazni argumenti. • Veza sa SK – imena SK u kojima se poziva sistemska operacija. • Preduslov – pre izvršenja sistemske operacije moraju biti zadovoljeni određeni preduslovi

(sistem mora biti u odgovarajućem stanju). • Postuslovi – posle izvršenja sistemske operacije u sistemu moraju biti zadovoljeni

određeni postuslovi (sistem mora biti u odgovarajućem stanju ili se poništava rezultat operacije).

UGOVOR UG1: PronadjiKorisnika Operacija: PronadjiKorisnika(Korisnik): signal Veza sa SK: DS1, DS4 Preduslovi: / Postuslovi: Vraćen je traženi korisnik.

UGOVOR UG2: SacuvajKorisnika Operacija: SacuvajKorisnika(Korisnik): signal Veza sa SK: DS2 Preduslovi: / Postuslovi: Korisnik je sačuvan.

UGOVOR UG3: AzurirajKorisnika Operacija: AzurirajKorisnika(Korisnik): signal Veza sa SK: DS3 Preduslovi: Korisnik postoji. Postuslovi: Izmene podataka o korisniku su sačuvane.

UGOVOR UG4: ObrisiKorisnika Operacija: ObrisiKorisnika(Korisnik): signal Veza sa SK: DS4 Preduslovi: Korisnik postoji. Postuslovi: Korisnik je obrisan.

Page 45: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

44

UGOVOR UG5: PronadjiDiplomski Operacija: PronadjiDiplomski(Diplomski): signal Veza sa SK: DS5, DS8 Preduslovi: / Postuslovi: Vraćen je traženi diplomski.

UGOVOR UG6: SacuvajDiplomski Operacija: SacuvajDiplomski(Diplomski): signal Veza sa SK: DS6 Preduslovi: / Postuslovi: Diplomski je sačuvan.

UGOVOR UG7: AzurirajDiplomski Operacija: AzurirajDiplomski(Diplomski): signal Veza sa SK: DS7 Preduslovi: Diplomski postoji. Postuslovi: Izmene podataka diplomskog su sačuvane.

UGOVOR UG8: ObrisiDiplomski Operacija: ObrisiDiplomski(Diplomski): signal Veza sa SK: DS8 Preduslovi: Diplomski postoji. Postuslovi: Diplomski je obrisan.

UGOVOR UG9: SacuvajAktivnost Operacija: SacuvajAktivnost(Aktivnost): signal Veza sa SK: DS9 Preduslovi: / Postuslovi: Aktivnost je sačuvana.

UGOVOR UG10: AzurirajAktivnost Operacija: AzurirajAktivnost(Aktivnost): signal Veza sa SK: DS10 Preduslovi: Aktivnost postoji. Postuslovi: Izmene podataka aktivnosti su sačuvane.

Page 46: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

45

5.2.5. Konceptualni (domenski) model

Konceptualni model opisuje konceptualne klase domena problema. Konceptualni model sadrži konceptualne klase (domenske objekte) i asocijacije između konceptualnih klasa. Često se za konceptualne modele kaže da su to domenski modeli ili modeli objektne analize.

Slika 5.3: Domenski model

Page 47: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

46

5.2.6. Relacioni model

Na osnovu konceptualnog modela može se napraviti relacioni model, koji će predstavljati osnovu za projektovanje relacione baze podataka. Na osnovu konceptualnog modela formiran je relacioni model:

Diplomski(SifraDiplomskog, SifraProfesora, SifraAsistenta, SifraStudenta, Tema, Predmet, DatumPocetka, DatumZavrsetka)

Aktivnost(SifraAktivnosti, SifraDiplomskog, Autor, Datum, Naslov, Poruka, URLObjekta)

Korisnik(SifraKorisnika, KorisnickoIme, Lozinka, TipKorisnika)

Profesor(SifraKorisnika, Titula, Ime, Prezime, email, TerminKonsultacija, Kabinet)

Asistent(SifraKorisnika, Titula, Ime, Prezime, email, TerminKonsultacija, Kabinet)

Student(SifraKorisnika, Ime, Prezime, BrojIndeksa, email)

Page 48: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

47

5.3. Faza projektovanja

Faza projektovanja opisuje fizičku strukturu i ponašanje softverskog sistema (arhitekturu softverskog sistema). Projektovanje arhitekture softverskog sistema obuhvata projektovanje aplikacione logike, skladišta podataka i korisničkog interfejsa.

5.3.1. Arhitektura softverskog sistema

Pre nego što krenemo na projektovanje strukture i ponašanja softverskog sistema potrebno je da definišemo arhitekturu softverskog sistema. U ovom radu je korišćena klasična tronivoska arhitektura (što se vidi na slici 5.4) koja se sastoji od:

• Korisničkog interfejsa • Aplikacione logike • Skladišta podataka

Slika 5.4: Tronivoska arhitektura

Page 49: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

48

5.3.2. Projektovanje strukture softverskog sistema

Za svaku SO treba napraviti konceptualna rešenja koja su direktno povezana sa logikom problema. Za svaki od ugovora projektuje se konceptualno rešenje.

Projektovanje konceputalnih rešenja SO

UGOVOR UG1: PronadjiKorisnika Operacija: PronadjiKorisnika(Korisnik): signal Veza sa SK: DS1, DS4 Preduslovi: / Postuslovi: Vraćen je traženi korisnik.

UGOVOR UG2: SacuvajKorisnika Operacija: SacuvajKorisnika(Korisnik): signal Veza sa SK: DS2 Preduslovi: / Postuslovi: Korisnik je sačuvan.

UGOVOR UG3: AzurirajKorisnika Operacija: AzurirajKorisnika(Korisnik): signal Veza sa SK: DS3 Preduslovi: Korisnik postoji. Postuslovi: Izmene podataka o korisniku su sačuvane.

Page 50: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

49

UGOVOR UG4: ObrisiKorisnika Operacija: ObrisiKorisnika(Korisnik): signal Veza sa SK: DS4 Preduslovi: Korisnik postoji. Postuslovi: Korisnik je obrisan.

UGOVOR UG5: PronadjiDiplomski Operacija: PronadjiDiplomski(Diplomski): signal Veza sa SK: DS5, DS8 Preduslovi: / Postuslovi: Vraćen je traženi diplomski.

Page 51: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

50

UGOVOR UG6: SacuvajDiplomski Operacija: SacuvajDiplomski(Diplomski): signal Veza sa SK: DS6 Preduslovi: / Postuslovi: Diplomski je sačuvan.

UGOVOR UG7: AzurirajDiplomski Operacija: AzurirajDiplomski(Diplomski): signal Veza sa SK: DS7 Preduslovi: Diplomski postoji. Postuslovi: Izmene podataka diplomskog su sačuvane.

UGOVOR UG8: ObrisiDiplomski Operacija: ObrisiDiplomski(Diplomski): signal Veza sa SK: DS8 Preduslovi: Diplomski postoji. Postuslovi: Diplomski je obrisan.

Page 52: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

51

UGOVOR UG9: SacuvajAktivnost Operacija: SacuvajAktivnost(Aktivnost): signal Veza sa SK: DS9 Preduslovi: / Postuslovi: Aktivnost je sačuvana.

UGOVOR UG10: AzurirajAktivnost Operacija: AzurirajAktivnost(Aktivnost): signal Veza sa SK: DS10 Preduslovi: Aktivnost postoji. Postuslovi: Izmene podataka aktivnosti su sačuvane.

Page 53: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

52

5.3.3. Projektovanje skladišta podataka

Na osnovu softverskih klasa strukture projektovane su tabele (skladišta podataka) relacionog sistema za upravljanje bazom podataka (MySQL Server):

Diplomski SifraDiplomskog int SifraProfesora int SifraAsistenta int SifraStudenta int

Tema String Predmet String

DatumPocetka String DatumZavrsetka String

Aktivnost SifraAktivnosti int

SifraDiplomskog int Autor int Datum String Naslov String Poruka String

URLObjekta String

Korisnik SifraKorisnika int KorisnickoIme String

Lozinka String TipKorisnika String

Profesor SifraProfesora int

Titula String Ime String

Prezime String email String

TerminKonsultacija String Kabinet String

Page 54: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

53

Asistent SifraAsistenta int

Titula String Ime String

Prezime String email String

TerminKonsultacija String Kabinet String

Student SifraStudenta int

Ime String Prezime String

BrojIndeksa String email String

Page 55: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

54

5.3.4. Projektovanje korisničkog interfejsa

U sledećem delu biće prikazano projektovanje slučajeva korišćenja koje se izvodi preko ekranske forme i izgled tih ekranskih formi.

Slučaj Korišćenja 1 : Autentikacija korisnika

Naziv SK: Autentikacija korisnika

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan.

Osnovni scenario SK

1. Korisnik unosi podatke za autentikaciju korisnika.(APUSO)

Page 56: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

55

2. Korisnik poziva sistem da pronađe korisnika sa zadatim podacima.(APSO)

3. Sistem pretražuje korisnike.(SO) 4. Sistem prikazuje početnu stranu korisniku.(IA)

Page 57: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

56

Alternativni scenario:

4.1 Ukoliko sistem nije mogao da pronađe korisnika, prikazuje poruku o neuspešnoj autentikaciji.(IA) Izvršenje scenarija se prekida.

Slučaj Korišćenja 2 : Unos novog korisnika

Naziv SK: Unos novog korisnika

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor i u meniju Korisnik je odabrao opciju Novi Korisnik.

Osnovni scenario SK

1. Korisnik unosi podatke o novom korisniku. (APUSO)

Page 58: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

57

2. Korisnik proverava da li je uneo sve potrebne podatke. (ANSO) 3. Korisnik poziva sistem da sačuva novog korisnika. (APSO)

4. Sistem čuva novog korisnika. (SO) 5. Sistem prikazuje poruku da je korisnik uspešno sačuvan. (IA)

Page 59: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

58

Alternativni scenario:

5.1. Ukoliko sistem nije mogao da sačuva novog korisnika prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

Slučaj Korišćenja 3 : Ažuriranje naloga

Naziv SK: Ažuriranje naloga

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, korisnik je ulogovan i u meniju Korisnik je odabrao opciju Ažuriraj nalog.

Osnovni scenario:

1. Korisnik menja podatke.(APUSO)

Page 60: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

59

2. Korisnik zahteva od sistema da sačuva izmene.(APSO)

3. Sistem čuva izmene podataka o korisniku. (SO) 4. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Page 61: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

60

Alternativna scenarija

4.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

Slučaj Korišćenja 4 : Brisanje korisnika

Naziv SK: Brisanje korisnika

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor i u meniju Korisnik je odabrao opciju Obriši Korisnika.

Osnovni scenario:

1. Korisnik unosi ime, prezime i tip korisnika kog želi da obriše. (APUSO)

Page 62: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

61

2. Korisnik poziva sistem da pronađe traženog korisnika. (APSO)

3. Sistem prikazuje listu korisnika koji odgovaraju unetim parametrima. (IA)

Page 63: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

62

4. Korisnik bira korisnika iz liste korisnika i poziva sistem da obriše korisnika (APSO) 5. Sistem briše korisnika. (SO) 6. Sistem prikazuje korisniku poruku da je korisnik obrisan. (IA)

Alternativna scenarija

5.1. Ukoliko sistem ne može da pronađe korisnika sa zadatim podacima prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Page 64: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

63

7.1. Ukoliko korisnik za brisanje ima aktivan diplomski rad prikazuje se poruka o tome da dati diplomski mora biti obrisan pre nego što se obriše korisnik (IA). Prekida se izvršenje scenarija

6.1. Ukoliko sistem ne može da obriše korisnika prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Page 65: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

64

Slučaj Korišćenja 5 : Unos novog diplomskog

Naziv SK: Unos novog diplomskog

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor, u bazi postoji student za koga nije unet diplomski rad i u meniju Diplomski korisnik je odabrao opciju Novi Diplomski.

Osnovni scenario SK

1. Korisnik unosi podatke o novom diplomskom. (APUSO)

2. Korisnik proverava da li je uneo sve potrebne podatke. (ANSO)

Page 66: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

65

3. Korisnik poziva sistem da sačuva novi diplomski. (APSO)

4. Sistem čuva novi diplomski. (SO) 5. Sistem prikazuje poruku da je diplomski uspešno sačuvan. (IA)

Alternativni scenario:

5.1. Ukoliko sistem nije mogao da sačuva novi diplomski prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

Page 67: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

66

Slučaj Korišćenja 6 : Ažuriranje diplomskog

Naziv SK: Ažuriranje diplomskog

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je profesor ili asistent i otvorio je stranicu za ažuriranje diplomskog.

Osnovni scenario:

1. Korisnik menja podatke.(APUSO)

2. Korisnik zahteva od sistema da sačuva izmene.(APSO)

Page 68: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

67

3. Sistem čuva izmene podataka o diplomskom. (SO) 4. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Alternativna scenarija

4.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

Page 69: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

68

Slučaj Korišćenja 7 : Brisanje diplomskog

Naziv SK: Brisanje diplomskog

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, ulogovani korisnik je asistent ili profesor i u meniju Diplomski je odabrao opciju Obriši Diplomski.

Osnovni scenario:

1. Korisnik unosi ime, prezime i broj indeksa korisnika čiji diplomski želi da obriše. (APUSO)

2. Korisnik poziva sistem da pronađe traženi diplomski. (APSO)

Page 70: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

69

3. Sistem prikazuje diplomski koji odgovara unetim parametrima. (IA)

4. Korisnik poziva sistem da obriše diplomski (APSO) 5. Sistem briše diplomski. (SO) 6. Sistem prikazuje korisniku poruku da je diplomski obrisan. (IA)

Page 71: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

70

Alternativna scenarija

3.1. Ukoliko sistem ne može da pronađe diplomski za zadate podatke prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

6.1. Ukoliko sistem ne može da obriše diplomski prikazuje se poruka o tome (IA). Prekida se izvršenje scenarija.

Slučaj Korišćenja 8 : Unos nove aktivnosti

Naziv SK: Unos nove aktivnosti

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, korisnik je ulogovan i u meniju Aktivnost korisnik je odabrao opciju Nova Aktivnost.

Osnovni scenario SK

1. Korisnik unosi podatke nove aktivnosti. (APUSO)

Page 72: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

71

2. Korisnik proverava da li je uneo sve potrebne podatke. (ANSO) 3. Korisnik poziva sistem da sačuva novu aktivnost. (APSO)

4. Sistem čuva novu aktivnost. (SO) 5. Sistem prikazuje poruku da je aktivnost uspešno sačuvana. (IA)

Alternativni scenario:

5.1. Ukoliko sistem nije mogao da sačuva novu aktivnost prikazuje se poruka o tome (IA). Prekida se izvršavanje scenarija.

Page 73: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

72

Slučaj Korišćenja 9 : Ažuriranje aktivnosti

Naziv SK: Ažuriranje aktivnosti

Aktori SK: Korisnik sistema

Učesnici SK: Korisnik i sistem

Preduslov: Sistem je aktivan, korisnik je ulogovan i otvorio je aktivnost koju je sam kreirao.

Osnovni scenario:

1. Korisnik menja podatke aktivnosti.(APUSO)

2. Korisnik zahteva od sistema da sačuva izmene.(APSO)

Page 74: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

73

3. Sistem čuva izmene podataka aktivnosti. (SO) 4. Sistem prikazuje korisniku poruku o uspešnoj izmeni podataka.(IA)

Alternativna scenarija

4.1. Ukoliko sistem nije mogao da sačuva izmene podataka prikazuje poruku o tome (IA). Prekida se izvršenje scenarija.

5.3.5. Finalna arhitektura softverskog sistema

Na slici 5.5 prikazana je finalna arhitektura softverskog sistema.

Slika 5.5: Finalna arhitektura softverskog sistema

Page 75: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

74

5.4. Faza implementacije

Za implementaciju klijent-server tronivoske arhitekture korišćena je JEE tehnologija. Baza podataka implementirana je u MySQL-u. Za razvoj aplikacije korišćeno je Eclipse (eclipse-jee-indigo-SR2-win32) razvojno okruženje i Apache Tomcat (apache-tomcat-7.0.23) server. Modul DiplomskiRad se sastoji iz softverskih komponenti organizovanih u tri paketa.

Paket beans sadrži:

• Aktivnost.java • Asistent.java • Diplomski.java • Korisnik.java • Profesor.java • Student.java

Paket database sadrži:

• KomunikacijaSaBazom.java

Paket servlets sadrži:

• AzurirajAktivnostServlet.java • AzurirajAsistentaServlet.java • AzurirajDiplomskiServlet.java • AzurirajNalogServlet.java • AzurirajProfesoraServlet.java • AzurirajStudentaServlet.java • DiplomskiZaBrisanjeServlet.java • KorisniciZaBrisanjeServlet.java • LoginServlet.java • LogoutServlet.java • ObrisiDiplomskiServlet.java • ObrisiKorisnikaServlet.java • PonistiServlet.java • PretraziServlet.java • PrikaziAktivnostServlet.java • PrikaziAsistentaServlet.java • PrikaziDiplomskiServlet.java • PrikaziProfesoraServlet.java • PrikaziServlet.java • PrikaziStudentaServlet.java • SacuvajAktivnostServlet.java • SacuvajDiplomskiServlet.java • SacuvajKorisnikaServlet.java

Page 76: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

75

• StudentiZaDiplomskiServlet.java

Paket util sadrzi:

• Datum.java • ServletOperacije.java

Page 77: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

76

6. Zaključak

U prvom delu ovog rada dato je kratko upoznavanje sa Java tehnologijama s tim što su tehnologije Java Servlet i Java Servlet Pages detaljnije opisane. Studijski primer prati razvoj pojednostavljenog softverskog sistema za potrebe praćenja izrade završnih radova korišćenjem pomenutih Java tehnologija. Prikazane su faze životnog ciklusa razvoja softverskog sistema. Faza prikupljanja zahteva je predstavljena preko modela slučajeva korišćenja. Ponašanje softverskog sistema je opisano u fazi analize pomoću sistemskih dijagrama sekvenci i ugovora, dok je struktura softverskog sistema opisana pomoću konceptualnog i relacionog modela. Faza projektovanja predstavljena je pomoću dijagrama klasa i dijagrama sekvenci, a sadrži i projektovanje korisničkog interfejsa. Faza implementacije nije detaljno opisana s obzirom na to da se izvorni kod i ceo projekat nalaze na pratećem disku. Faza testiranja nije razmatrana.

Radeći na ovom radu dosta sam naučio o Java tehnologiji i očito je da se ova tehnologija razvija u pravcu koji svakim danom olakšava programerima kreiranje pouzdanih, skalabilnih, višenivoskih i sigurnih aplikacija najrazličitijih vrsta. Upoznavanje sa pomenutim tehnologijama i razvoj ove aplikacije u mnogome je olakšalo postojanje obimne dokumentacije i brojnih primera na Internetu što je svaki problem svelo na pronalaženje i specifičnu primenu odgovarajućeg primera.

Page 78: Softverski Sistem Za Pracenje Izrade Zavrsnog Rada u JavaEE Okruzenju

77

7. Literatura

1) S. Vlajić, D. Savić, V. Stanojević, I. Antović, M. Milić: Projektovanje Softvera – Napredne Java tehnologije, Zlatni Presek, Beograd, 2008.

2) dr Siniša Vlajić: Napredni koncepti Jave i web programiranje u Javi, FON, Beograd 2005. 3) Wikipedia the free encyclopedia – http://en.wikipedia.org 4) Technology outline - Servlets – http://users.on.net/~brunoa/TechPapers/Servlets.html 5) Servlet basics – http://www.exforsys.com/tutorials/j2ee/servlet-basics.html 6) The Java EE 6 tutorial – http://docs.oracle.com/cd/E19226-01/820-7627/bnafd/index.html 7) The life cycle of a JSP page – http://docs.oracle.com/javaee/5/tutorial/doc/bnahe.html 8) Java servlets – http://wiki.eeng.dcu.ie/ee557/g2/426-EE.html 9) Lifecycle of a JSP page http://freeonlineprogrammingtutorials.com/lifecycle-of-a-jsp-page