Návrh systému JavaPM

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání

Návrh systému JavaPM

Jadrom celého systému je databáza, v ktorej sú uložené všetky údaje, s ktorými pracuje systém. Bude použitá voľne šíriteľná relačná databáza MySQL. Bližšia špecifikácia použitej databázy a logický návrh databázy je uvedený v kapitolách 3.2 a 3.1. Systém bude naprogramovaný v programovacom jazyku Java v jeho verzii Java EE. Architektúra systému bude popísaná v kapitole 3.1.

Architektúra systému

Systém je navrhnutý ako klient/server aplikácia, kde užívatelia budú komunikovať so serverom cez pripojenie v lokálnej sieti organizácie (intranet) alebo v prípade, že bude server prístupný aj zo siete internet, tak budú pristupovať aj cez sieť Internet.

Nakoľko sa nejedná o databázu s veľkým počtom zápisov/čítaní, bude databázový server nainštalovaný na rovnakom počítači ako aplikačný server. Tento server bude mať pridelenú adresu DNS serverom, pre väčší komfort užívateľov, aby nemuseli zadávať do prehliadača IP adresu servera, ale len pridelenú adresu.

V prípade sprístupnenia servera na internet, bude potrebné server chrániť pomocou firewalu, ktorý povolí komunikáciu so serverom iba na štandardnom porte 80. Ostatná komunikácia bude blokovaná.

Obr. 3-1 Architektúra systému

Databáza

MySQL poskytuje viac ukladacích nástrojov (MyISAM, InnoDB, Merge, atď.[10]). Rozhodol som sa využiť ukladací nástroj InnoDB z dôvodu, že patrí medzi najpoužívanejšie a podporuje transakcie, ktoré sa využívajú v programe pri rôznych vkladacích a aktualizačných SQL dotazoch.

Nakoľko systém ukladá všetky údaje do relačnej databázy, je potrebné rozhranie pre komunikáciu aplikácie s informačnou vrstvou, resp. databázovým serverom. Systém využíva databázový server MySQL, preto bude použitý MySQL Connector/J.

MySQL Connector/J poskytuje aplikačné rozhranie pre programovací jazyk Java, aby mohla aplikácia pristupovať k údajom uloženým v databáze a vykonávať operácie nad nimi.

Aplikačný server umožňuje vytvoriť dátový zdroj (datasource) pre každú aplikáciu umiestnenú na serveri pomocou súboru context.xml. Pre dátový zdroj zadefinujeme základné parametre, ako sú napríklad url adresa, prístupové meno, heslo a ovládač (driver), ktorý je použitý pre komunikáciu s databázou. V našom prípade je to spomínaný MySQL Connector/J. Nastavenie dátového zdroja si môžete pozrieť v prílohe. Nakoľko vytvorenie spojenia aplikácie s databázou je náročný proces na systémové zdroje, je vhodnejšie vytvoriť zásobník spojení. Tieto spojenia sú vytvorené pri inicializácii aplikácie a sú zdieľané pre celú aplikáciu. Funkcia, ktorá potrebuje pracovať s údajmi v databáze, si zo zásobníka zoberie spojenie s databázou, vykoná potrebné operácie a vráti spojenie späť do zásobníka. Tento spôsob sa nazýva connection pooling.

Databázové entity

Obr. 3-2 Entitno-relačný diagram databázy pre systém JavaPM

Logický návrh celej databázy je kľúčom k efektivite celej aplikácie, preto netreba podceňovať návrh databázy. Nakoľko sa jedná o relačnú databázu, informácie sú uložené v databáze vo forme tabuliek a medzi jednotlivými záznamami sú vytvorené vzťahy, resp. relácie. Vzťahy medzi entitami, resp. tabuľkami sú vyjadrené v entitno-relačnom diagrame na obrázku 7.

V databáze sa nachádzajú tabuľky napísane v tabuľke 3.1. Ku každej tabuľke je uvedený krátky popis tabuľky s jej účelom v systéme JavaPM.

Názov tabuľky Význam
categories Tabuľka kategórii projektov. Pomáha určiť typ projektu, na základe čoho je možné zvoliť metodiku, ktorá sa použije pri riadení projektu.
customers Tabuľka zákazníkov organizácie. Slúži na ukladanie základných informácii o organizácii zákazníka, prípadne ďalšie doplňujúce informácie.
message_recipients Tabuľka, ktorá slúži na previazanie tabuliek messages a users. Určuje, ktorým užívateľom má byť správa zobrazená a stav tejto správy.
messages Tabuľka užívateľských správ vytvorených v systéme JavaPM.
projects Tabuľka projektov. Systém pracuje vždy len s projektom, ktorý nie je v stave "Ukončený".
tasks Tabuľka jednotlivých úloh priradených k projektom.
tasks_groups Tabuľka skupín úloh. Skupina úloh môže slúžiť ako miľník v projekte, čím uľahčuje sledovanie plnenia projektového plánu.
team_members Tabuľka na previazanie tabuľky teams a users. Určuje jednotlivých členov projektových tímov.
teams Tabuľka projektových tímov.
users Tabuľka užívateľov používajúcich systém JavaPM.
users_posts Tabuľka užívateľských pozícii v organizácii. Slúži na určenie používateľských priorít a pre ľahšiu identifikáciu zamestnanca pri zadeľovaní práce.
Tabuľka 3.1 Zoznam tabuliek v databáze systému JavaPM


Ku každej entite je v systéme vytvorený objekt, ktorý preberá z databázovej entity jej vlastnosti a ku ktorým ma priradená štandardné funkcie typu get/set (získaj/nastav). V nasledujúcich kapitolách budú popísané jednotlivé entity, objekty a ich účel v systéme.

Projekt

Projekt je akýkoľvek jedinečný sled aktivít a úloh, ktorý má [2]:

  • daný špecifický cieľ, ktorý má byť jeho realizáciou splnený
  • definovaný dátum začiatku a konca uskutočnenia
  • stanovený rámec pre čerpanie zdrojov potrebných pre jeho realizáciu

Systém JavaPM bude spravovať len jeden projekt súčasne, preto umožní projektovému manažérovi vytvoriť vždy len jeden projekt, ktorý sa nebude nachádzať v stave „Ukončený“. Systém bude umožňovať užívateľom prezerať parametre aktuálne prebiehajúceho projektu a oprávneným užívateľom aj meniť jeho parametre. Všetky komponenty systému budú buď priamo alebo nepriamo naviazané na projekt.

Úloha

Úloha je prirodzený sled činností, u ktorých môžeme špecifikovať požadovaný výsledok. Má relatívne krátku dobu trvania a minimum iterácii s inými úsekmi práce. [2]

Pri plánovaní projektu, je potrebné rozdeliť projekt na čiastkové úseky práce, ktoré sa nazývajú úlohy. Systém bude umožňovať projektovému manažérovi, prípadne vedúcemu tímu vytvárať úlohy. Úlohy budú môcť byť priradené jednotlivým členom projektových tímov, alebo celému tímu súčasne. Ďalej bude možné pri vytváraní pracovnej úlohy, zadefinovať nasledovné údaje:

  • presný dátum začatia a ukončenia danej úlohy.
  • prácnosť - vyjadruje počet pracovných hodín, potrebných na vykonanie danej úlohy.
  • prioritu - každej úlohe bude možné priradiť jeden z troch stupňov priorít, aby v prípade pridelenia viacerých úloh jednému pracovníkovi systém mohol určiť poradie vykonania pridelených úloh.
  • náväznosť úloh - v prípade, že daná úloha môže byť splnená až po vykonaní inej, prípadne iných úloh, systém bude umožňovať zadefinovať tieto náväznosti, vďaka čomu bude potom možné vygenerovať časový harmonogram projektu.

Na základe presne špecifikovaných úloh projektu, bude systém schopný generovať podrobný rozpis prác, ktorý je súčasťou projektového plánu. Vo fáze implementácie projektu, tento rozpis prác slúži ako nástroj na sledovanie plnenia plánu.

Ďalej bude systém schopný vypočítať predpokladané náklady na prácu, nakoľko ku každej úlohe bude definovaná plánovaná prácnosť a každý užívateľ v systéme bude mať definované náklady na jeho pracovnú hodinu.

Dokumentácia

Pri projektovom riadení vznikajú rôzne dokumenty, preto systém bude umožňovať zdieľanie dokumentov medzi užívateľmi systému a archiváciu zmien týchto dokumentov, aby sa nestalo, že užívateľ pracuje s neaktuálnym dokumentom.

V systéme je vytvorená tabuľka documents, do ktorej sa ukladajú cesty k dokumentom uložených na pevných diskoch servera, prípadne na vzdialenom dátovom úložisku.

Správy

Komunikácia je neoddeliteľnou súčasťou projektového riadenia. Systém navrhnutý v tejto práci preto musí vytvoriť efektívny a spoľahlivý informačný kanál, ktorý bude slúžiť na distribúciu informácii medzi účastníkmi projektu. Tabuľka messages slúži na ukladanie správ vytvorených užívateľmi systému a je založená na princípe posielania elektronickej pošty. Užívateľ určí adresáta(-ov) správy, napíše výstižný predmet správy, prioritu správy a do tela správy napíše text správy. Následne bude správa uložená do databázy. Tabuľka message_recipients slúži na previazanie správ s užívateľmi. Každá nová správa bude pri vytvorení označená ako neprečítaná a užívateľ bude upozornený, že sa v jeho schránke nachádza neprečítaná správa. Systém ďalej bude generovať aj automatické správy, ktoré budú užívateľa informovať o rôznych zmenách, udalostiach a upozorneniach týkajúcich sa jeho osoby, alebo jemu pridelenej práce. Systém musí byť preto schopný včas detekovať takúto udalosť, vygenerovať správu a zaslať ju správnym užívateľom.

Rozpočet projektu

Rozpočet projektu je neodeliteľnou súčasťou projektového riadenia a je súčasťou Plánu projektu. Vyhotovuje sa počas konceptuálneho návrhu projektu a na základe schváleného rozpočtu sa vypracovava rozpis jednotlivých prác, ktoré je potrebné na projekte vykonať. Náklady patria medzi najdôležitejšiu časť rozpočtu. Na základe nákladov, sa dá z plánovaného zisku vypočítať rentabilita celého projektu. Náklady projektu môžeme rozdeliť nasledovne[2]:

  • Priame náklady - tieto možno priamo priradiť k projektu. Sú to zdroje čerpané priamo pri realizácii projektu:
  • práca
  • materiál
  • technológie
  • cestovné, poistenie
  • licencie a poplatky
  • nákup subdodávok
  • externé služby
  • náklady na financovanie projektu

Nepriame (režijné) náklady – sa do projektu premietnu na základe percentuálnyc koeficientov predpísaných ekonomickým manažerom. Zahŕňajú:

  • platy
  • marketing
  • dane a odvody
  • náklady na prevádzku budov a technológii

Ostatné - náklady, ktoré neboli zahrnuté v kategóriách vyššie

Systém JavaPM bude schopný na základe informácii zadaných pri plánovaní projektu schopný vypočítať plánované náklady na prácu pre jednotlivé úlohy, následne aj pre celý projekt. Ak bude mať systém k dispozícii aj plánovaný zisk, bude schopný vypočítať plánovanú rentabilitu projektu. V priebehu vykonávania projektu, budú užívatelia evidovať počet odrobených hodín na projekte, z čoho sa budú následne počítať reálne náklady na projekt. Takto bude možné sledovať odchylku projektu od plánu a informovať projektového manažéra o plnení plánu a reálnych hodnotách nákladov a rentability projektu.

Prihlásenie sa do systému

Ako vyplýva z požiadaviek, systém bude používať viac užívateľov s rôznymi oprávneniami. Identifikácia klienta bude zabezpečená pri vstupe užívateľa do aplikácie. Užívateľ sa identifikuje pomocou prihlasovacieho mena a hesla. Tieto údaje sa overia v databáze a ak užívateľ v systéme existuje, bude do systému prihlásený. Na základe jeho kompetencií v systéme, bude vygenerované základné menu aplikácie, ktoré bude poskytovať prístup k funkciám systému.

Užívateľov do systému budú môcť pridávať iba administrátor systému alebo projektový manažér. Obrazovka prihlásenia užívateľa do systému je v prílohe .

Použitie systému JavaPM

Po úspešnom prihlásení sa užívateľ v systéme považuje za prihláseného užívateľa. Jeho možnosti vyjadruje diagram použitia na obrázku 8. Tieto možnosti sú spoločné pre všetkých užívateľov nehľadiac na jeho pracovnú pozíciu.

Obr. 3-3 Diagram použitia systému JavaPM

Štruktúra balíčkov a tried systému JavaPM

V programovacom jazyku Java sa objekty, resp. triedy zoskupujú do balíčkov. Baličky zoskupujú triedy s podobnými vlastnosťami alebo účelom. Štruktúru balíčkov a ich tried si môžete pozrieť v prílohe na obrázku . Podrobný rozpis tried v týchto balíčkoch nájdete v prílohe. Systém JavaPM má tieto balíčky tried:

  • controllers - nachádzajú sa v ňom triedy, ktoré poskytujú funkcie na prácu s dátovými objektami (viď balíček dao). Slúžia na tvorbu a prácu so zoznamami týchto objektov a na koľko sú v systéme ako triedy Java Beans, poskytujú aj validáciu a konverziu dát od/pre užívateľa, ale aj navigáciu medzi stránkami.
  • converters – triedy v tomto balíčku slúžia na konverziu objektov na textové reťazce (String) a opačne pre UI komponenty na JSF stránkach.
  • dao – triedy v tomto balíčku predstavujú objekty z databázy. Preberajú vlastnosti z atribút databázových entít a poskytujú funkcie typu get a set.
  • database – triedy v tomto balíčku slúžia na vytvorenie spojenia a komunikáciu s databázou. Ďalej sa tu nachádzajú triedy, ktoré volajú SQL dotazy v databáze.
  • enums – v tomto balíčku sa nachádzajú enumeráoty sustému JavaPM.
  • javabeans – tento balíček zoskupuje objekty typu Java Beans, ktoré neboli zaradené do iného balíčka.
  • projectObjects – tento balíček zoskupuje triedy, ktoré predstavujú objekty z terminológie projektového riadenia.
  • properties – v tomto balíčku sa nachádzajú nastavovacie súbory typu *.properties. Jedná sa o textové súbory, ktoré obsahujú páry kľúč=hodnota. Tieto súbory sa využívajú hlavne na internationalizáciu.
  • utilities – balíček obsahuje pomocné triedy, ktoré riešia všeobecné problémy.