Implementácia systému JavaPM

Z Kiwiki
Verzia z 20:34, 17. jún 2010, ktorú vytvoril Juraj (diskusia | príspevky) (Zamyká „Implementácia systému JavaPM“ ([edit=sysop] (na neurčito) [move=sysop] (na neurčito)))
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Skočit na navigaci Skočit na vyhledávání

Implementácia systému

Systém na riadenie projektov vytvorený v tejto práci je naprogramovaný v jazyku Java, ktorý patrí medzi objektovo orientované programovacie jazyky a je veľmi vhodný pre webové aplikácie. Programovací jazyk Java, má otvorený kód a preto je rozširovaný širokou odbornou verejnosťou. Firmu Sun Microsystems odkúpil gigant Oracle, vďaka čomu je programovací jazyk Java priamo podporovaný pre podnikové riešenia.

Základná architektúra podnikových enterpise aplikácii sa skladá z troch vrstiev, ako je vidieť na obrázku 9. Tieto vrstvy sú:

  1. Informačná/systémová vrstva - táto vrstva sa nazýva aj back-end (tz. vrstva v pozadí), pretože je skrytá pred klientom aplikácie a funkcie sa vykonávajú na serveri. Do tejto vrstvy patrí hlavne komunikácia aplikácie s databázovým serverom, pomocou určitého aplikačného rozhrania, v závislosti od použitého databázového servera. Programovací jazyk Java má k dispozícii veľké množstvo nástrojov pre komunikáciu s akýmkoľvek databázovým serverom. Ďalej sem patrí aj komunikácia aplikácie s inými aplikáciami (napr. pomocou volaní vzdialených funkcii, pomocou XML správ a podobne) a s inými webovými službami (SOAP, WSDL).
  2. Webová vrstva - táto vrstva sa nazýva aj stredná vrstva, pretože sprostredkováva komunikáciu medzi užívateľom a informačno/systémovou vrstvou. Táto vrstva spracováva vstup od užívateľov aplikácie a na základe údajov z informačno/systémovej vrstvy vytvára odozvu, ktorú odosiela klientovi. V tejto vrstve sa nachádzajú hlavne servlety a JSP stránky. V tejto vrstve je najčastejšie využívaná architektúra Model-View-Controller, ktorá je popísaná v nasledujúcej kapitole. Veľmi dôležitým prvkom v tejto vrstve sú Entreprise Java Beans, ktoré predstavujú dátové objekty, ktorých vlastnosti sú tvorené údajmi z klientskej a informačno/systémovej vrstvy, poskytujú funkcie nad týmito vlastnosťami. Tieto objekty môžu byť zdieľané medzi klientmi aplikácie a poskytujú rôzne funkcie, ktoré sú nastavené procesmi organizácie.
  3. Klientská vrstva - táto vrstva sa nazýva aj front-end (vrstva v popredí), nakoľko je to vrstva, ktorá je priamo prezentovaná užívateľovi aplikácie. Užívatelia webových aplikácii využívajú na prácu s nimi webový prehliadač (Microsoft Internet Explorer, Mozilla Firefox a pod.). Preto sa v tejto vrstve nachádzajú hlavne HTML stránky. Z dôvodu užívateľského komfortu a možností webových aplikácii sa obsah týchto stránok generuje dynamicky, na základe požiadaviek užívateľa systému. Preto sa v tejto vrstve využívajú programovací jazyk spúšťaný na strane klienta JavaScript alebo Java applet. V dnešnej dobe sú možnosti dynamických stránok ešte vyššie vďaka technológii AJAX, ktorá umožňuje zavolať funkciu na serveri a na základe výsledku prekresliť obsah stránky zobrazenej vo webovom prehliadači, bez znovu načítania celej stránky, alebo prechodu na inú stránku.
Obr. 4-1 Architektúra Java Enterprise aplikácii

Komponenty tejto architektúry sú umiestnené na aplikačný server, ktorý zabezpečuje vykonanie kódu v Java virtuálnom stroji (JVM). Systém navrhnutý v tejto práci bude spustený na aplikačnom serveri Apache Tomcat od organizácie Apache Foundation. Tento server má v sebe integrovaný aj web server, vďaka čomu nie je potrebná inštalácia dodatočného web servera. Rozhodol som sa využiť tento server, pretože je to produkt s otvoreným kódom, podporuje JEE verzie 5 a poskytuje veľké množstvo podporných knižníc pre tvorbu a prácu so znovu použiteľnými webovými komponentmi. Ďalším dôvodom je aj to, že tento produkt je šírený pod Apache licenciou verzie 2, ktorá umožňuje využiť tento server aj pre komerčné účely a tak môže byť systém nasadený v spomínanej organizácii.

Architektúra Model-View-Controller

Systém je založený na architektúre MVC (Model-View-Conroller). Architektúra MVC je najpoužívanejšou v oblasti JEE aplikácii. Táto architektúra sa skladá z troch prvkov:

  • model - reprezentuje údaje, ktoré sa v systéme nachádzajú. Tieto údaje sú reprezentované ako objekty. Tieto objekty majú svoje vlastnosti, ako napríklad objekt projekt má vlastnosť dátum zahájenia, dátum ukončenia a pod. Ďalej tieto objekty poskytujú určité funkcie pre prácu s nimi, napríklad vytvoriť projekt, zmeniť dátum ukončenia projektu a pod.
  • pohľad (view) - slúži na prezentáciu modelu pre užívateľa.
  • aplikačná logika (controller) - je vstupnou bránou, nakoľko spracováva vstupné požiadavky a vytvára volania na model.
Obr. 4-2 Architektúra Model-View-Controller

Opis použitých technológií

V nasledujúcich kapitolách budú bližšie popísané technológie použité v systéme. V kapitolách sa sústredíme na technológie použité na webovej vrstve aplikácie, pretože sa jedná o nosné technológie používané pri tvorbe JEE aplikácii. V kapitole 5.2.3. bude bližšie popísaná technológia JavaServer Faces(JSF) a knižnice komponentov pre túto technológiu. Technológia JSF je konkurentom, resp. nasledovníkom technológie Struts, ktorá patrí zatiaľ medzi najpopulárnejšie technológie v oblasti tvorby webových aplikácii. Technológia JSF je však modernejšia, využíva nový funkčný model (popísaný v kapitole 5.2.3) a umožňuje veľmi ľahkú tvorbu znovu použiteľných komponentov. Tieto komponenty sú potom zoskupené do rôznych knižníc, systém bude využívať dve veľmi populárne knižnice RichFaces a PrimeFaces.

Servlety

Servlety predstavujú spojovaciu vrstvu medzi požiadavkami klienta a aplikáciou na HTTP serveri alebo databázou. V modely MVC servlety predstavujú ovládač. Úlohy servletov sú [1]:

  • Prečítať údaje odoslané užívateľom – zdrojom týchto údajov sú rôzne formuláre umiestnené na web stránkach, prípadne údaje odoslané Java appletom alebo inou HTTP aplikáciou.
  • Prečítať všetky informácie umiestnené v HTTP hlavičke požiadavku – zoznam a podrobný popis údajov, ktoré môžu byť umiestnené v hlavičke nájde napríklad na stránke http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
  • Vytvorenie odpovede – tento proces zahŕňa napríklad komunikáciu s databázou, inými aplikáciami, vnútorné výpočty a pod.
  • Zformátovať odpoveď do dokumentu – výsledné údaje sú zformatované do príslušného dokumentu, ktorým je vo väčšine prípadov HTML alebo XML dokument.
  • Nastavenie parametrov odozvy HTTP - servlet uloží do hlavičky informácie o odosielanom dokumente, aby ho klient (web prehliadač) mohol správne spracovať.
  • Odoslanie dokumentu späť užívateľovi

Servlety sú vhodné vďaka svojim výhodám, napríklad oproti „tradičným“ CGI (Common gateway Interface). Nakoľko sú servlety založené na jazyku Java, medzi ich výhody patrí prenositeľnosť a cena.

Java Server Pages (JSP)

Technológia JSP umožňuje umiestňovať Java kód priamo na HTML stránku. Kód je umiestnený do špeciálnych značiek - <% Java kód %>. JSP stránky majú veľkú výhodu pre Java programátorov oproti konkurenčným produktom, ako sú ASP (Microsoft) a PHP, vďaka programovaciemu jazyku Java, ktorý je vhodný pre komplexné aplikácie a umožňuje vytvoriť znovapoužiteľné a prenositeľné komponenty (viď kapitoly JSF, RichFaces a frameworky).

Použitie JSP stránok je výhodnejšie ako použitie servletov, pretože je ľahšie editovať HTML kód, ako pracne písať výstup pomocou príkazov v servletoch. V konečnom dôsledku je však aj JSP stránka preložená do servletu na pozadí na serveri.

JavaServer Faces (JSF) a knižnice komponentov

Technológia JSF je zoskupenie UI komponentov na strane servera založených na programovacom jazyku Java a je rozšírením tradičných JSP stránok. Táto technológia, aktuálna verzia je JSF 2.0, je podporovaná od JavaEE verzie 5 a Servlet 2.5

Využíva sa hlavne pri tvorbe webových aplikácii, nakoľko značne uľahčuje prácu vývojárov, pretože pomocou tagov v JSP stránke umožňuje na stránku umiestňovať UI komponenty previazané s objektami na strane servera a navyše JSF dokáže uchovávať aj stav týchto komponentov medzi požiadavkami. JSF sa skladá z dvoch hlavných komponentov [7]:

  • aplikačné rozhranie pre prezentáciu komponentov a riadenie ich stavu; obsluhu udalostí; validáciu dát na strane servera; definovanie navigácie medzi stránkami; podporu internacionalizácie a dostupnosti a poskytuje rozšíriteľnosť spomenutých funkcii
  • dve JSP stránky s vlastnými tagmi pre zobrazenie UI komponentov v rámci JSP stránky a pre previazanie komponentov s objektmi na strane servera.

O obsluhu stránok s JSF komponentmi sa stará servlet, ktorý má na starosti vytvorenie obsahu tzv. FacesContext, ktorý obsahuje objekty ako ServletRequest, ServletResponse a ServletContext. Tento objekt potom odovzdá spracovateľskému objektu Lifecycle, ktorý spracuje daná obsah v šiestich fázach, ako je vidieť na spodnej časti obrázku 10. Výsledný objekt je odovzdaný späť servletu, ktorý na základe výsledkov vytvorí odpoveď pre klienta.

Obr. 4-3 Tok spracovania požiadavky [6]

V práci budú navyše využité veľmi populárne knižnice komponentov pre technológiu JSF, ktoré poskytujú rozšírené UI komponenty. Naviac knižnica RichFaces rozširuje funkcionalitu systému o technológiu AJAX. RichFaces tak umožňuje vývojárovi aplikácie používať technológiu AJAX bez toho, že by potreboval hlbšie znalosti tejto technológie. Na strane servera je spustený servlet Ajax4jsf, ktorý spracováva požiadavky klienta a ak sa jedná o požiadavku komponentu s AJAX technológiou, túto požiadavku spracuje a odovzdá ju potom ďalej na spracovanie pomocou Lifecycle. Na obrázku 10 je zobrazené, ako je požiadavka z JSF stránky spracovaná s technológiou RichFaces.

Knižnica PrimeFaces ponúka UI komponenty pre stránky s JSF technológiou a aj tieto komponenty podporujú technológiu AJAX. V práci bude použitý napríklad prvok Layout, pomocou ktorého budú vytvorené lišty popísané v kapitole 4.3


Návrh dizajnu

Obr. 4-4 Návrh rozloženia aplikácie

Obrazovka aplikácie bude rozdelená do niekoľkých líšt. Lišty budú rozdelené do štyroch regiónov (viď obr. ). Obsah a význam líšt je nasledovný:

  • horná lišta - jej účel je viac dekoračný ako účelový. V tejto lište bude logo aplikácie, meno aktuálne prihláseného užívateľa a v prípade, že užívateľ má novú(-é) správy v schránke, v tejto lište sa rozbliká obálka.
  • navigačná lišta - v tejto lište sa bude nachádzať navigačné menu, ktoré bude slúžiť na zmenu obsahu hlavnej lišty.
  • hlavná lišta - ako aj z názvu vyplýva, je to najdôležitejšia lišta v aplikácii. Jej obsah sa mení na základe požiadaviek užívateľa. Táto lišta bude zobrazovať rôzne formuláre pre zadávanie dát, ale aj rôzne výstupné formuláre a grafy.
  • informačná lišta - v tejto lište bude zobrazený kalendár s udalosťami a zoznam úloh, ktoré má daný užívateľ ešte vykonať.

Výsledný výzor systému JavaPM je zobrazený v prílohe č.2. Informačná lišta je zatiaľ nevyužitá, pretože systém v čase odovzdávania práce nemal integrovanú podporu projektového kalendára a užívateľských kalendárov.


Problémy pri implementácii

Zvolené technológie na tvorbu systému sú pomerne nové, preto k nim nie je veľké množstvo podrobných návodov. Preto pri implementácii rôznych komponentov bolo potrebné testovať všetky vlastnosti komponentov, zistiť ich možnosti a následné využitie v systéme. Tento systém implementácie komponentov spomaľoval vývoj aplikácie, nakoľko systém z tohto dôvodu prechádzal početným redizajnom.

Ďalším problémom, ktorý sa vyskytol pri vývoji aplikácie, boli hardvérové obmedzenia počítača na ktorom bol systém vyvíjaný. Na danom stroji musel byť spustený databázový aj aplikačný server súčasne s vývojovým prostredím NetBeans. Testovanie všetkých funkcií naprogramovaných v systéme vyžadovalo časté nahrávanie a spúšťanie systému na serveri. To spôsobovalo veľké vyťaženie zdrojov počítača a to hlavne pamäte.

Záver

V tejto práci boli prebrané základné pojmy z oblasti projektového riadenia, ktoré boli následne využité pri návrhu a implementácii nástroja na podporu projektového riadenia. Úlohou práce bolo vytvoriť takýto nástroj za pomoci programovacieho jazyka Java a jeho enterprise verzii, ktorý bude na svoju prácu využívať databázu.

V práci sa podarilo teoreticky opísať základné vlastnosti nástroja na riadenie projektov a vytvoriť logický návrh pre tento nástroj. Tento nástroj sme pomenovali JavaPM, pretože názov odráža názov jazyka, v ktorom bol naprogramovaný a skratka PM vyjadruje projektové riadenie (Project Management). Pri tvorbe JavaPM boli použité najmodernejšie nástroje z oblasti vývoja webových aplikácii.

Zadané úlohy sa podarilo splniť vytvorením logického návrhu databázy a jeho implementácii na konkrétny databázový server. Po implementácii databázy nasledoval návrh a naprogramovanie objektov v programovacom jazyku Java. Následne bolo možné vytvoriť grafické rozhranie pre užívateľov, ktorý môžu pomocou webového prehliadača pracovať so systémom JavaPM.

Vyvinutý systém v tejto práci neponúka zatiaľ žiadnu obchodnú logiku, nakoľko projektové riadenie je množina komplexných väzieb medzi objektmi, ktoré sa v systéme vyskytujú. Pridanie tejto logiky je predmetom ďalšej práce, v ktorej bude systém rozšírený o sledovanie parametrov zadaných užívateľmi, podporu riadenia viacerých projektov súčasne a rozšírenie o rôzne výstupy, ako napríklad Ganttové diagramy a pod.

Zoznam použitej literatúry

  1. HALL, Marty. Java servlety a stránky JSP. 1. vyd. Praha : Neocortex, s.r.o, 2001. 586 s. ISBN 80-86330-06-0.
  2. SVOZILOVÁ, Alena. Projektový management. 1. vyd. Praha : Grada Publishing, a.s., 2008. 360 s. ISBN 80-247-1501-5.
  3. BALOGA, Miroslav. Software pro podporu projektového řízení. Praha, 2009. 115 s. Diplomová práce. České vysoké učení technické v Praze.
  4. KERZNER, Harold. Project Management : A Systems Approach to Planning, Scheduling, and Controlling. 8. vyd. New Jersey : John Wiley & Sons, Inc., 2003.891 s. ISBN 978-0471225775.
  5. CLELAND, D.I.; KING, W.R. System analysis and project management. 3. vyd. New Yourk : McGraw-Hill, 1983. 480 s. ISBN 978-0070113114.
  6. RedHat. RichFaces : Basic concepts of the RichFaces Framework [online]. 5.5.2010. RichFaces Developer Guide. Dostupné z WWW: <http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/ArchitectureOverview.html>.
  7. Dev Shed [online]. 2009 [cit. 2010-05-12]. Introduction to JavaServer Faces, Part 1 . Dostupné z WWW: <http://www.devshed.com/c/a/Java/Introduction-to-JavaServer-Faces-1/>.
  8. IS ProMan. Úvodná prezentácia spoločnosti ProIT Services a IS ProMan. Bratislava : Pro IT Services, 2009.
  9. Microsft Office Online [online]. 2009, 1.4.2009 [cit. 2010-05-11]. Office Project 2007 edition comparison. Dostupné z WWW: <http://office.microsoft.com/en-us/project/FX101757931033.aspx>.
  10. MySQL 5.1 Reference Manual [online]. 2009 [cit. 2010-05-11]. Chapter 13. Storage Engines. Dostupné z WWW: <http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html>.

Prílohy

Obr. 7-1 Prihlasovacie okno systému JavaPM
Obr. 7-2 Záložka "Informácie o projektu"