Modelovanie a generovanie softvérových systémov

Ciele
  1. Oboznámiť sa s organizáciou cvičení v predmete Modelovanie a generovanie softvérových architektúr.
  2. Oboznámiť sa so základnými pojmami a princípmi v oblasti modelovania a generovania softvérových systémov.
  3. Oboznámiť sa so zadaním, ktoré je riešené priebežne v predmete Modelovanie a generovanie softvérových architektúr.
  4. Oboznámiť sa so základnou štruktúrou projektov potrebných pre predmet.
Úvod

    Predstavme si základné pojmy a princípy modelovania a generovania softvérových systémov. Nasledujúci obrázok porovnáva jednotlivé prístupy používané pri realizácii softvérových systémov.
    Obr.: Porovnanie prístupov používaných pri realizácii softvérových systémov
    Systémy sú pri generatívnom programovaní zostavené z viacerých kódov rôzneho charakteru.
    Obr.: Architektúra systémov vytvorených generatívnym procesom
    Základná architektúra nástroja pre podporu generovania softvérových systémov, ktorý bude vytváraný na cvičení, je zobrazená na nasledujúcom obrázku.
    Obr.: Základná architektúra nástroja pre podporu generovania softvérových systémov
Postup
  1. Oboznámte sa s organizáciou cvičení predmetu Modelovanie a generovanie softvérových architektúr. Na tom istom mieste nájdete aj informácie o zadaní, ktoré bude na tomto predmete riešené priebežne.
  2. Úloha: Preštudujte si informácie uvedené v úvode tohto modulu.


    Pošli
  3. Pre potreby generovania systému budeme používať nasledovnú štruktúru projektov:
    • MaGSA - hlavný projekt, obsahuje tri moduly (podprojekty):
      • magsa-generator - zdrojový kód generátora, ktorého implementácia je cieľom týchto cvičení,
      • magsa-framework - univerzálny kód,
      • magsa-application - projekt obsahujúci vygenerované zdrojové kódy (vygenerovaná aplikácia).

    Môžete použiť vytvorenú projektovú štruktúru projects.zip vytvorenú pomocou nástroja Maven. Projekt je možné otvoriť vo vývojových prostrediach s podporou Maven.
    Poznámka: Balík je potrebné stiahnuť, rozbaliť a následne otvoriť v zodpovedajúcom vývojovom prostredí.
    Úloha: Vyskúšajte otvoriť a skompilovať projekt vo vývojovom prostredí.
    Poznámka: Zatiaľ čo Netbeans obsahuje Maven vo svojej inštalácii, pre IntelliJ Idea, musíte Maven nainštalovať samostatne. Nezabudnite pritom správne nastaviť premennú prostredia M2_HOME.


    Pošli
  4. Úloha: Oboznámte sa s univerzálnym kódom, ktorý predstavuje nevariabilnú časť riešenia nezávislú od výslednej konfigurácie produktu.


    Pošli
    V našom prípade to bude rámec, ktorý je nezávislý od cieľovej domény entít. Bude použitý pre oblasť personalistiky rovnako ako pre potreby bankovníctva. Zdrojové kódy v projekte magsa-framework obsahujú nasledujúce triedy:
    • Entity - predstavuje abstraktnú entitu. Od tejto triedy budú dediť všetky triedy entít. Spoločnou vlastnosťou je existencia identifikátora entity.
    • CRUDDao - rozhranie definuje základné operácie pre prácu s perzistentným úložiskom pre entity (Data Access Object): vytvorenie - create, zmenu - edit, odstránenie - remove, vyhľadanie na základe identifikátora - find, získanie entít konkrétneho typu - selectAll. Toto rozhranie umožňuje vďaka špecifikácii služieb oddeliť prácu s úložiskom údajov od vyšších vrstiev (aplikačná, prezentačná).
    • CRUDDaoImpl - abstraktná trieda implementujúca všeobecnú funkčnosť práce s relačnou databázou prostredníctvom JDBC a je základnou doménovo nezávislou implementáciou rozhrania CRUDDao.
    • ConnectionPool - definuje operácie používané DAO (Database Access Object) objektmi pre získanie a uvoľnenie spojenia na databázu.
    • Utilities - obsahuje všeobecne používané statické metódy (napr. načítanie riadku z konzoly).
    • ApplicationException a ValidatorException - triedy výnimiek.
    • FormDialog, TableDialog - abstraktné triedy dialógov používateľského rozhrania so všeobecnou funkčnosťou pre formuláre a dialógy zobrazujúce entity.
    Štruktúra uvedených tried je zobrazená na nasledujúcom obrázku.
    Obr.: Štruktúra tried všeobecného kódu modulu magsa-framework
    Úloha: Všeobecný kód sa nachádza v module magsa-framework. Preštudujte si triedy v tomto module.


    Pošli
  5. Úloha: Preštudujte si literatúru uvedenú v sekcii Zdroje.


    Pošli
  6. Vymažte súbory z disku a zrušte všetky vami vytvorené nastavenia vo vývojovom prostredí!
Zdroje
  1. Zdrojové kódy:
  2. Metaprogramovanie:
  3. Generatívne programovanie
    • K. Czarnecki, U. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000, 832 p. ISBN 0201309777.
  4. Jazyky všeobecného použitia vs. doménovo-špecifické jazyky
    • M. Mernik, J. Heering, A. M. Sloane: When and how to develop domain-specific languages. ACM Computing Surveys, 37(4):316–344, 2005.
    • M. Fowler: Domain Specific Languages. Addison-Wesley Professional (2010), 640 p., ISBN 0321712943.
  5. Modelom riadený vývoj softvéru (MDSD)
    • T. Stahl, M. Voelter: Model-Driven Software Development: Technology, Engineering, Management. Wiley, 2006, 444 p. ISBN 0470025700.
  6. Modely vs. programy
    • J. Greenfield, K. Short, S. Cook, S. Kent: Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. Wiley, 2004, 500 p. ISBN 0471202843.
  7. Softvérová architektúra
    • L. Bass, P. Clements, R. Kazman: Software Architecture in Practice, Second Edition. Addison Wesley, 2003. 560 p. ISBN 0-321-15495-9.
    • J. Bosch: Design and Use of Software Architectures. Addison-Wesley, 2000. 368 p. ISBN 0201674947.
  8. DRY princíp (Don't repeat yourself)
    • A. Hunt, D. Thomas: The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley Professional, 1999. 352 p. ISBN 978-0201616224.
Doplňujúce zdroje
  1. Viac o nástroji Maven.
  2. Inštalácia Maven pod MS Windows
  3. Maven v jednotlivých vývojových prostrediach:
comments powered by Disqus