wiki:ReservationSystemDevelopment

Vývoj a údržba rezervačného systému

Obsah

  1. Vývoj a údržba rezervačného systému
    1. Informácie o systéme
    2. Definovanie požiadaviek
    3. Organizácia ticketov
    4. Zdrojový kód
      1. Organizácia repozitára
      2. Pravidlá pre prácu s repozitárom
      3. Organizácia projektov
      4. Zostavenie kódu
      5. Zmeny v kóde
    5. Databáza
      1. Databázová schéma
      2. Objekty schémy
      3. Verzovanie schémy
    6. Testovacie a produkčné prostredie
      1. Testovacie prostredie
      2. Produkčné prostredie
    7. Nasadzovanie rezervačného systému

Informácie o systéme

Rezervačný systém je Java EE aplikácia. Využité komponenty pre vývoj a beh systému sú uvedené v následujúcej tabuľke:

Komponenta verzia Poznámka
Java SDKv1.7.0_55Java Software development kit
Glassfishv4.1 (build 13)aplikačný server
JavaEE-apiv7.0verzia Java Enterprise Edition
EclipseLinkv2.5.1ORM rozhranie z databázou
Stripesv1.5.7webový framework, MVC vzor
fopv1.1generácia PDF dokumentov
jUnitv4.10 testovanie
Mockitov7.0testovanie

Definovanie požiadaviek

Pre ďalší vývoj systému a archiváciu a dokumentáciu vykonanej práce je potrebné v Trac-u udržiavať informácie o funkcionalite na ktorej sa pracuje/pracovalo a tiež informácie o defektoch, ktoré sa v systéme vyskytli a ako boli riešené.

Na definovanie požiadaviek je využívaný formát User Stroies. Zadefinovanie funkcionality je doplnené o akceptačné kritériá, ktoré bližšie špecifikujú správanie sa systému v rámci daného user story.

Na vytvorenie požiadaviek pre potrebnú funkcionalitu je potrebné vytvoriť nový ticket typu "task" a v jeho popise uviesť user stories, ich akceptačné kritériá, prípadne ďalšie poznámky. Príkladom môže byť ticket #10.

V prípade výskytu defektov je tiež nutné ich zaznamenať (viď. hlásenie defektov).

Organizácia ticketov

Na lepšiu orientáciu vo vytvorených ticketoch je vhodné využívať zaraďovanie ticketov do míľnikov (milestones). Míľnik zoskupuje tickety, ktorých splnenie vyžaduje v definovanom termíne ich ukončenia. Tiež je možné sledovať rozsah ich naplnenia.

Zaraďovať tickety je vhodné aj na základe verzie systému, pre ktorú sú určené. Každé nasadenie systému do produkčného prostredia by malo mať svoje označenie verzie a tiež vytvorený tag v SVN po realizácii nasadenia.

Ďalšou možnosťou na zaradenie ticketu je určenie jeho priority. Takto je vyjadrená dôležitosť riešenia konkrétneho ticketu a podľa nej je možné plánovať ďalšie kroky.

Pre viac informácií navštívte stránku The Trac Ticket System.

Zdrojový kód

Zdrojový kód rezervačného systému je udržiavaný v SVN. Repozitár je dostupný na https://lemma.ics.muni.cz/svn/lemma. Na prístup k repozitáru je potrebné oprávnenie. Na získanie oprávnenia je nevyhnutné kontaktovať administrátorov, ktorí sú oprávnení na vytvorenie účtu.

Organizácia repozitára

Repozitár obsahuje základnú štruktúru delenú na trunk - hlavná, stabilná verzia kódu; vetvy (branches) - odčlenené nezávislé kópie trunk-u pre vývoj; tagy (tags) - archivované verzie. Štruktúru znázorňuje nasledujúci obrázok:

Pravidlá pre prácu s repozitárom

  • Vždy udržujte svoj workspace aktuálny (svn update),
  • na vývoj vytvorte a používajte SVN vetvu (branch),
  • vetvy synchronizujte s kódom v trunk-u len ak sú stabilné a otestované (merge),
  • pre kód, z ktorého bol zostavený balík a nasadený do produkčného prostredia, vytvorte tag,
  • ku každému commitu zadávajte sprievodný komentár popisujúci obsah zmien, prípadne odkážte sa na konkrétny ticket s ktorým commit súvisí.

Blžšie informácie o používaní svn získate napr. z online publikácie Version Control with Subversion.

Organizácia projektov

  • "EntityPersistance"
    • Enterprise Java Beans (jar archív),
    • funguje ako vrstva komunikujúca s databázou.
  • "LemmaCommon"
    • Class Library (jar archív),
    • knižnica obsahujúca spoločnú funkcionalitu pre rezervačný systém a webový archív.
  • "RS" (rezervačný systém)
    • Web Application (war archív),
    • webová aplikácia, "front end" rezervačného systému,
    • využíva funkcionalitu z "EntityPersistance" a "LemmaCommon".
  • "WMA" (webový videoarchív)
    • Web Application (war archív),
    • webová aplikácia, "front end" webového archívu,
    • využíva funkcionalitu z "EntityPersistance" a "LemmaCommon".
  • "Lemma-ear"
    • Java Enterprise Application type (ear archív),
    • zaobaľuje rezervačný systém a webový archív do jedného výstupného archívu určeného pre nasadenie na server,
    • hlavný projekt na zostavenie výslednej aplikácie.

Zostavenie kódu

Na zostavenie zdrojového kódu je používaný Apache Maven. Kód je možné vyvíjať v IDE, ktoré podporuje projekty typu Maven.

Zmeny v kóde

Pri vykonávaní zmien v kóde je potrebné dodržiavať už existujúci štýl programovania, aby si kód udržal jednotnú štruktúru. V prípade nutnosti zmeny, je potrebné zvážiť a realizovať zmeny celoplošne v plnom rozsahu.

Zhrnutie základných pravidiel pre vykonávanie zmien:

  • udržiavať jednotný štýl,
  • komunikáciu s databázou realizovať v projekte "EntityPersistance" s využitím EJB a ORM,
  • v prezentačnom projekte "RS" využívať framework Strips a MVC vzor,
  • na zobrazovanie textov využívať Java Resource Bundle na umožnenie prípadnej lokalizácie aplikácie do iných jazykov.
  • neukladať konfiguráciu pre prostredia v kóde,
  • logovať chyby v prípade ich výskytu,
  • správne používať SVN (popísané v časti Práca s repozitárom),
  • vytvárať jednotkové a integračné testy v maximálne možnej miere,
  • pomenovať testy podľa obsahu ktorý testujú, využívať aj vstupné parametre a očakávaný výsledok. (napr. "testGetTextByKeyword_WhenValidKeyword_QueryParameterSet()"),
  • testovať správnu funkcionalitu v testovacom prostredí pred nasadením do produkčného prostredia.

Databáza

Databáza využívaná rezervačným systémom je poskytovaná na fakultnom serveri db.fi.muni.cz s názvom pgdb. Ide o PostgreSQL databázu vo verzii 9.3.5.

Databázová schéma

Databázová schéma je znázornená v priloženom súbore lemma.dbm. Na jeho zobrazenie je možné použiť PostgreSQL Database Modeler.

Objekty schémy

Základné objekty schémy sú:

názov tabuľky poznámka
personsúdaje o používateľoch
projectsprojekty používateľov na ktoré sa vytvárajú rezervácie
reservationsinformácie o rezervácii, kto rezervuje, kto vydáva, odkedy a dokedy je rezervácia vytvorená
sourcesinformácie o zdroji, názov, popis, hodnota, kto zdroj spravuje
source_typeskategórie zdrojov
sources__reservationsinformácie o rezervácii konkrétneho zdroja, ktorej rezervácie bol súčasťou a kedy bol zdroj vrátený.
issuemastersúdaje o výdejároch, kto je výdejár a kde vydáva zdroje, ktoré sú v jeho správe
opening_hoursinformácie o dostupnosti výdejárov, v ktorých dňoch a časoch sú dostupní a môžu vydávať zdroje
vacationsinformácie zadávané do systému výdejármi, sú tu definované dni, v ktorých nebudú na výdajnom mieste dostupní
permission_categorieskategórie oprávnení, zaraďujú súvisiace zdroje do kategórií určujúcich aké oprávnenia sú potrebné na ich rezervovanie
persons__permission_categoriesurčuje ktorá osoba môže rezervovať zdroje ktorej kategórie
requeststabuľka obsahujúca informácie o žiadostiach v systéme (o prístup do systému, o kategórie oprávnení, ...) a ich schválení
emaillogzáznamy všetkých emailov odoslaných systémom
texttexty, časom potenciálne vyžadujúce zmenu vo svojom obsahu
variablespremenné, časom potenciálne vyžadujúce zmenu hodnoty
stateholidaysinformácie o štátnych sviatkoch (nemožnosť vyzdvihnutia a odovzdania rezervácií)

Verzovanie schémy

Na zabezpečenie prehľadu o zmenách vykonaných v databázovej schéme systému sú tieto zmeny verzované v SVN.

Pravidlá pre verzovanie schémy sú:

  1. pre každú zmenu schémy, prípadne korekcie dát v schéme je potrebné vytvoriť SQL skript vykonávajúci túto zmenu,
  2. skript pomenovať tak, aby jeho meno obsahovalo ako prefix trojmiestne číslo určujúce poradie skriptu (napr. "009-StateHolidayTableDefinition.sql"),
  3. skript uložiť do SVN do adresára "/Schema",
  4. aplikovať skript na cieľovú databázu v poradí určenom v prefixe názvov skriptov,
  5. po aplikácii skriptu na produkčnú databázu vložiť do skriptu komentár s dátumom jeho aplikácie,
  6. skript, ktorý už bol označený ako aplikovaný, znovu v cieľovej databáze nespúšťať.

Testovacie a produkčné prostredie

Na umožnenie testovania rezervačného systému bolo vytvorené testovacie a produkčné prostredie. Tieto prostredia sú od seba izolované (nezdieľajú spoločnú databázu). Testovacie prostredie je možné využiť na účely testovania funkcionality a správania sa zmien po nasadení do produkčného prostredia. Produkčné prostredie je prostredie používané pre ostrý beh aplikácie a nie je vhodné na testovanie ani na overovanie funkcionality, pretože by mohlo dôjsť k znehodnoteniu dát.

Testovacie aj produkčné prostredie je vytvorené ako GlassFish doména na serveri lemma.ics.muni.cz

Testovacie prostredie

Informácie o testovacom prostredí:

Testovacie prostredie
Názov GlassFish doménylemmatest
Umiestnenie GlassFish domény/usr/src/glassfish4/glassfish/domains/lemmatest
Port domény10081
URL RShttps://lemma.ics.muni.cz:10081/RS/
URL k administrácii doményhttps://lemma.ics.muni.cz:10048/
Databázový serverlocalhost
DatabázaLemmaTest

V prípade testovacieho prostredia je použitá lokálne nainštalovaná inštancia PostgreSQL databázy.

Produkčné prostredie

Informácie o produkčnom prostredí:

Produkčné prostredie
Názov GlassFish doménylemma
Umiestnenie GlassFish domény/usr/src/glassfish4/glassfish/domains/lemma
Port domény50080
URL k administrácii doményhttps://lemma.ics.muni.cz:50048/
Databázový serverdb.fi.muni.cz
Databázapgdb

Nasadzovanie rezervačného systému

Pred nasadzovaním novej verzie rezervačného systému do produkčného prostredia, je vhodné nasadiť túto verziu najprv do testovacieho prostredia a overiť jej správanie.

Postup pre nasadenie je následovný:

  1. zostaviť výsledný archív rezervačného systému zo zdrojového kódu (projekt Lemma-ear),
  2. prihlásiť sa do administrácie testovacieho prostredia a prejsť do časti "Applications",
  3. odstrániť starú verziu systému (undeploy),
  4. aplikovať na databázu daného prostredia všetky skripty, ktoré v nej ešte aplikované neboli, a to v určenom poradí,
  5. nasadiť (deploy) novú verziu (zostavený archív z 1. kroku) pod menom "Lemma-ear",
  6. vykonať kontrolu funkčnosti,
    1. otestovať základnú funkcionalitu (napr. vytvorenie rezervácie),
    2. otestovať novopridanú funkcionalitu,
  7. po úspešnom nasadení aplikovať kroky 2 až 5 na produkčné prostredie,
  8. otestovať správnosť produkčného prostredia podobne ako v kroku 6.1, s tým, že je vhodné vyhnúť sa krokom, ktoré by nevhodne manipulovali so stavom, resp. dátami produkčného prostredia.
Last modified 2 years ago Last modified on 11/06/18 16:01:24

Attachments (2)

Download all attachments as: .zip