Deklaratıvne-Imperatıvny Aplikaˇcn´Y R´Amec
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨ AKULTA INFORMATIKY !"#$%&'()+,-./012345<yA| Deklarat´ıvne-imperat´ıvny aplikaˇcny´ r´amec DIPLOMOVA´ PRACA´ Martin Jurˇca Brno, jar 2012 Prehl´asenie Prehlasujem, zeˇ tato´ diplomova´ praca´ je moj´ım povodnˆ ym´ autorskym´ die- lom, ktore´ som vypracoval samostatne. Vsetkyˇ zdroje, pramene a literaturu,´ ktore´ som pri vypracovan´ı pouzˇ´ıval alebo z nich cerpal,ˇ v praci´ riadne citu- jem s uveden´ım upln´ eho´ odkazu na pr´ıslusnˇ y´ zdroj. Ved´ucipr´ace: RNDr. Vlastislav Dohnal, Ph.D. iii Pod’akovanie Rad´ by som tymto´ pod’akoval panovi´ Vlastislavovi Dohnalovi za jeho od- bornu´ pomoc a vedenie pri tvorbe tejto prace.´ Dalejˇ by som rad´ pod’akoval panovi´ Pavlovi Cenkovi za jeho odbornu´ asistenciu pri tvorbe navrhu´ tohto aplikacnˇ eho´ ramca.´ Tiezˇ by som rad´ pod’akoval panom´ Petrovi Kubovi, Alesoviˇ Pejchalovi a Milanovi Krˇapkovi´ za podporu a spatn¨ u´ odozvu pri zvazovanˇ ´ı roznychˆ architektonickych´ roz- hodnut´ı v navrhu.´ V neposlednej rade by som chcel pod’akovat’ Andreji Cechovejˇ a mojim rodicomˇ za ich podporu bez ktorej by tato´ praca´ nemohla vzniknut´ ’. v Zhrnutie Rozvoj v oblasti informacnˇ ych´ systemov´ a enterprise aplikaci´ ´ı viedol k na-´ vrhu corazˇ zlozitejˇ sˇ´ıch aplikaci´ ´ı tvorenych´ znacnˇ ym´ mnozstvomˇ progra- moveho´ kodu.´ Aplikacie´ tvorene´ vel’kym´ mnozstvomˇ programoveho´ kodu´ su´ obvykle naro´ cnejˇ sieˇ na udrzovanieˇ a potencialne´ sa v nich vyskytuje viac chyb.´ Tento stav bol adresovany´ roznymiˆ aplikacnˇ ymi´ ramcami,´ ktore´ riesiaˇ beznˇ e´ ukony´ vykonavan´ e´ aplikaciami.´ Tieto ramce´ tiezˇ obvykle zavadzaj´ u´ doporucenˇ e´ praktiky a konvencie pre tvorbu aplikaci´ ´ı. Niektore´ aplikacnˇ e´ ramce´ zaviedli deklarat´ıvne popisy aplikacie,´ ktore´ umozˇnujˇ u´ vyjadrit’ rozneˆ castiˇ aplikacie´ deklarat´ıvnym popisom, ciˇ uzˇ vyu- zitˇ ´ım struktˇ ur´ poskytovanych´ danou platformou, alebo pomocou konfi- guracie.´ Tato´ praca´ sa zaobera´ prepojen´ım deklarat´ıvneho a imperat´ıvneho pr´ıs- tupu ku tvorbe aplikaci´ ´ı s ciel’om vytvorenia noveho´ aplikacnˇ eho´ ramca.´ Ciel’om aplikacnˇ eho´ ramca´ vytvoreneho´ v tejto praci´ je rozsˇ´ırit’ moznostiˇ su´ casnˇ ych´ aplikacnˇ ych´ ramcov´ o nove´ deklarat´ıvne koncepty. vii Kl’´uˇcov´eslov´a aplikacnˇ y´ ramec,´ deklarat´ıvny ramec,´ modularny´ ramec,´ Java, ORM, JPA, validacia´ dat,´ Java Enterprise Edition ix Obsah 1 Poziadavkyˇ ............................... 5 1.1 Ciele ................................ 5 1.1.1 Vyuzitieˇ pre enterprise aplikacie´ . 5 1.1.2 Deklarat´ıvny navrh´ aplikaci´ ´ı.............. 5 1.1.3 Opakovatel’na´ vyuzitelˇ ’nost’ kodu´ . 6 1.1.4 Abstrakcia datov´ eho´ ulo´ ziskaˇ . 6 1.2 Funkcnˇ e´ poziadavkyˇ ....................... 7 1.2.1 Pouzˇ´ıvatel’ske´ u´ cty,ˇ skupiny, role a prava´ . 7 1.2.2 Multi-pouzˇ´ıvatel’ske´ aplikacie´ . 7 1.2.3 Podpora viac-nasobn´ eho´ behu aplikacie´ . 7 1.2.4 Centralna´ konfiguracia´ aplikacie´ . 8 1.2.5 Automaticka´ validacia´ konfiguracie´ . 8 1.2.6 Logovanie . 8 1.2.7 Alarmy . 9 1.2.8 Behove´ statistikyˇ . 9 1.3 Nefunkcnˇ e´ poziadavkyˇ ...................... 9 2 Koncepty aplikaˇcnych´ r´amcov .................... 11 2.1 Model-View-Controller architektura´ . 11 2.2 Deklarat´ıvna tvorba aplikaci´ ´ı . 12 2.3 Agnosticky´ pr´ıstup k pouzˇ´ıvatel’skemu´ rozhraniu . 12 2.4 Databazov´ a´ abstrakcia ...................... 13 2.5 Automaticka´ validacia´ dat´ .................... 13 2.6 Model udalost´ı .......................... 14 2.7 Automaticke´ poskytovanie zavislost´ ´ı . 14 2.8 Autentizacia´ a autorizacia´ .................... 14 2.9 Logovanie ............................. 15 3 N´avrharchitekt ´ury ........................... 17 3.1 Struktˇ ura´ aplikacie´ ........................ 17 3.2 Jadro ................................ 18 3.2.1 Podporne´ nastroje´ . 19 3.3 Moduly ............................... 19 3.3.1 Stav modulu, instalˇ acia´ a odinstalovanieˇ . 20 1 3.4 Sluzbyˇ ............................... 20 3.5 Datov´ e´ sady ............................ 23 3.6 Konfiguracia´ ............................ 23 3.7 Lokalizacia´ ............................. 24 3.8 Zivotnˇ y´ cyklus aplikacie´ ..................... 25 3.8.1 Spustenie aplikacie´ . 25 3.8.2 Ukoncenieˇ aplikacie´ . 26 3.9 Module Manager ......................... 26 3.9.1 Datov´ e´ sady . 27 3.10 Presenter .............................. 27 3.11 File Logger ............................. 27 3.11.1 Datov´ e´ sady . 27 3.12 Users ................................ 28 3.12.1 Datov´ e´ sady . 28 3.13 Sessions ............................... 28 3.13.1 Datov´ e´ sady . 28 3.14 Alarm Logger ........................... 29 3.15 Statistics .............................. 29 3.15.1 Datov´ e´ sady . 29 3.16 Billing ................................ 29 3.16.1 Datov´ e´ sady . 29 3.17 Instalˇ ator´ .............................. 29 4 Uk´azkov´aaplik´aciaˇ .......................... 31 4.1 Modul Fridge ........................... 32 4.2 Modul GUI ............................. 33 4.3 Spustenie aplikacie´ ........................ 33 4.4 Beh aplikacie´ ............................ 34 4.5 Ukoncenieˇ aplikacie´ ........................ 35 5 Z´aver ................................... 37 2 Uvod´ Aplikacnˇ e´ ramce,´ ako napr´ıklad Tapestry [15], predstavuju´ rozsˇ´ırenia danej softwarovej platformy, napr´ıklad Java 6 Enterprise Edition [14]. Pridavaj´ u´ dodatocnˇ u´ funkcionalitu oproti funkcionalite poskytovanej danou softwa- rovou platformou, hoci tato´ funkcionalita je obvykle zaistena´ vyuzitˇ ´ım exis- tujucich´ konstruktovˇ danej platformy. Motivaciou´ pre vytvorenie noveho´ aplikacnˇ eho´ ramca´ je zvy´senieˇ pro- duktivity pri vyvoji´ aplikaci´ ´ı. Toho je dosiahnute´ definovan´ım a implemen- tovan´ım podpornych´ API, ktore´ riesiaˇ castoˇ sa vyskytujuce´ problemy´ alebo ulohy.´ Tieto podporne´ API su´ doplnene´ definovan´ım konvenci´ı danych´ pre navrhnuty´ aplikacnˇ y´ ramec.´ Tieto konvencie predstavuju´ doporucenˇ e´ po- stupy pouzitiaˇ implementovanych´ API pri tvorbe aplikaci´ ´ı. Praca´ je zamerana´ na tvorbu noveho´ aplikacnˇ eho´ ramca´ za u´ celomˇ spo- jenia najuzitoˇ cnejˇ sˇ´ıch postupov a funkcionality aplikacnˇ ych´ ramcov.´ Po- stupy a funkcionalita prevzata´ z inych´ aplikacnˇ ych´ ramcov´ je doplnena´ o dodatocnˇ u´ funkcionalitu. Ciel’om prace´ je navrh´ aplikacnˇ eho´ ramca´ pre prostredie takzvanych´ en- terprise aplikaci´ ´ı orientovanych´ na data.´ Ako enterprise aplikacie´ sa ob- vykle oznacujˇ u´ aplikacie´ vyuzˇ´ıvane´ v priemyselnom sektore, firmami alebo vladnymi´ organizaciami´ [1]. Aplikacie´ orientovane´ na data´ su´ zamerane´ na systematicke´ zbieranie a ukladanie dat,´ ktore´ su´ nasledne´ aplikaciou´ spra- covavan´ e´ za danym´ u´ celom.ˇ Pr´ıkladom aplikacie´ orientovanej na data´ je in- formacnˇ y´ system´ alebo administracnˇ e´ rozhranie webovej aplikacie.´ Pr´ıkla- dom aplikacie,´ ktora´ nie je orientovana´ na data,´ je napr´ıklad akcnˇ a´ pocˇ´ıta- covˇ a´ hra alebo jednoduchy´ hudobny´ prehrava´ cˇ bez funkci´ı ako hudobna´ kniznica.ˇ Navrhnuty´ aplikacnˇ y´ ramec´ bude podporovat’ webove´ pouzˇ´ıvatel’ske´ rozhranie a API pre vzdialenu´ komunikaciu´ s aplikaciou.´ Zabudovana´ pod- pora pre vzdialenu´ komunikaciu´ umozˇnujeˇ intergraciu´ so systemami´ tre- t´ıch stran´ alebo ich spajanie´ do supersystemu.´ Webove´ pouzˇ´ıvatel’ske´ roz- hranie bolo zvolene´ z dovoduˆ multi-platformnosti a pretozeˇ predstavuje technologicky´ trend pre enterprise aplikacie.´ Praca´ je clenenˇ a´ nasledovne: Kapitola Poziadavkyˇ obsahuje zhrnutie a 3 pop´ısanie poziadavkovˇ na navrhnuty´ aplikacnˇ y´ ramec.´ V kapitole Kon- cepty aplikacnˇ ych´ ramcov´ su´ preskuman´ e´ su´ casnˇ e´ aplikacnˇ e´ ramce´ pod- porujuce´ webove´ pouzˇ´ıvatel’ske´ rozhranie z hl’adiska ponukan´ ych´ funkci´ı. Vysledky´ prieskumu aplikacnˇ ych´ ramcov´ spolu s definovanymi´ poziadav-ˇ kami su´ v kapitole Navrh´ architektury´ rozpracovane´ do architektury´ navr- hnuteho´ aplikacnˇ eho´ ramca.´ Kapitola Uka´zkovˇ a´ aplikacia´ popisuje navrh´ a implementaciu´ jednoduchej aplikacie´ zalozenejˇ na navrhnutom aplikac-ˇ nom ramci.´ Praca´ je uzavreta´ kapitolou Zaver´ , ktora´ zhodnocuje navrhnuty´ aplikacnˇ y´ ramec´ a popisuje moznostiˇ jeho d’alsiehoˇ rozsirovaniaˇ a vyvoja.´ 4 Kapitola 1 Poziadavkyˇ Poziadavkyˇ je moznˇ e´ rozdelit’ do nasledujucich´ zakladn´ ych´ skup´ın: • ciele – popisuju´ cohoˇ by malo byt’ dosiahnute´ navrhom´ aplikacnˇ eho´ ramca´ alebo jeho pouzˇ´ıvan´ım. • funkcnˇ e´ poziadavkyˇ – popisuju´ spravanie´ (funkcie ciˇ sluzby)ˇ sys- temu´ a podporuju´ ciele, ulohy´ alebo cinnostiˇ pouzˇ´ıvatel’ov [4]. • nefunkcnˇ e´ poziadavkyˇ – obsahuju´ obmedzenie a kvality [4]. 1.1 Ciele 1.1.1 Vyuzitieˇ pre enterprise aplik´acie Aplikacnˇ y´ ramec´ bude urcenˇ y´ pre tvorbu enterprise aplikaci´ ´ı zameranych´ na data.´ Ked’zeˇ jednou z veducich´ technologi´ ´ı v tejto oblasti je Java Enter- prise Edition, aplikacnˇ y´ ramec´ bude urcenˇ y´ pre tuto´ platformu. 1.1.2 Deklarat´ıvnyn´avrhaplik´aci´ı Deklarat´ıvny navrh´ aplikacii´ spocˇ´ıva vo vytvoren´ı popisu struktˇ ury´ ap- likacie´ a aplikaciou´ spracovavan´ ych´ dat.´ Aplikacnˇ y´ ramec´ nasledne´ vyuzijeˇ tento popis na prisposobenieˆ aplikacnejˇ logiky. Vyuzitieˇ deklarativity zaist’uje [2]: • vysˇsiuˇ produktivity vyvoj´ arov´ • mensieˇ mnozstvoˇ programoveho´ kodu´ • l’ahsiuˇ udrzovatelˇ ’nost’ aplikacie´ – vyplyva´ z mensiehoˇ mnozstvaˇ ko-´ du • mensˇ´ı vyskyt´ chyb´ v aplikacii´ – vyplyva´ z mensiehoˇ mnozstvaˇ kodu´ 5 1. POZIADAVKYˇ Aplikacie´ budu´ navrhovane´ z vel’kej castiˇ definovan´ım datov´ ych´ sad.´ Datov´ a´ sada predstavuje