sg at ctu · 3sg at ctu 3sg.czacm.org cerny t., chalupa v., rychtecky l., linhart t....
TRANSCRIPT
![Page 1: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/1.jpg)
3SG at CTU 3sg.czacm.org
Cerny T., Chalupa V., Rychtecky L., Linhart [email protected]
www.jformbuilder.org
![Page 2: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/2.jpg)
Vývoj enterprise aplikací
Struktura aplikace
Problémy s údržbou i tvořením GUI
Závislosti 3 vrstev (coupling)
Opakování informace a replikace rozhodnutí Generátory UI Automatizace skrze inspekci
JFormBuilder (JFB)
Co, kde, kdy, jak a proč
Online tutoriál JFB Za hranice Javy
MDD, XLS, XML, Aneb přátelství analytika a vývojáře Budoucí vize
![Page 3: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/3.jpg)
Běžná aplikace je rozdělena na vrstvy To umožní oddělení zájmů
▪ Prezentace - JSF, Facelets, RichFaces..▪ EJB, (Spring)▪ JPA - entity
![Page 4: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/4.jpg)
Entita určuje persistentní data▪ Ale také určuje co se bude sbírat od uživatele▪ Jak budou data vypadat, či jaká mají omezení
Služby pracují s entitami ▪ Pokud se změní název entity musí se to promítnout i zde
Prezentace dat (entit) v uživatelském rozhraní▪ Formuláře a Tabulky▪ Provázání asosiací
▪ Tabulka – formulář
▪ Navigace a menu▪ Layout▪ Akce
![Page 5: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/5.jpg)
Vrstva prezentace defnuje zobrazení dat uživateli▪ Vizualizace dat
▪ Motivace▪ Údržba Software ≈ 65-75% životního cyklu aplikace▪ Porozumění SW ≈ 40-60% z údržby SW▪ Vývoj uživatelského rozhraní ≈ 50% celkového vývoje
▪ Formuláře a Tabulky▪ Jsou nejvíce svázány s persistentní vrstvou ▪ Jsou koncepčně nejsložitější části UI (omezení a validace)▪ Jak budou tyto vypadat je určeno
Entitou Layoutem Rozhodnutím jaké pole tam má být a jaké ne Uživatelskými právy Volbou widgetu Kontextem (editace, čtení, hledání)
[IEEE-CSAE, Cerny et al., 2011], [ACM-RACS, Cerny et al., 2011]
![Page 6: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/6.jpg)
Entity Class View Form
View Table
![Page 7: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/7.jpg)
Entity Class View Form
View Table
![Page 8: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/8.jpg)
Perzistentní vrstva JPA Entita
▪ Zachycuje omezení každého atributu▪ Povolený typ▪ Informace o očekávaných datech
Hibernate Validation▪ Detailní informace o validních datech pro každý atribut
Byznys vrstva
Prezentace Form
▪ Dekoruje entitu a její atributy▪ Přídává omezení pro validní data
Tabulka▪ Dekoruje entitu a její atributy
![Page 9: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/9.jpg)
class Osoba { String jmeno; String prijmeni; String email; String pass; Pohlavy pohlavy; String narozen;}
UiWidgety
InputText InputDoubleText InputSecret InputSelect InputCheckBox InputDate
class Firma { Katg kategorie; String misto; String ulice; String mesto; String psc; String tel; Boolean souhlas;}
![Page 10: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/10.jpg)
class Osoba { String jmeno; String prijmeni; String email; String pass; Pohlavy pohlavy; Date narozen;}
UiWidgety
InputText InputDoubleText InputSecret InputSelect InputCheckBox InputDate
class Firma { Katg kategorie; String misto; String ulice; String mesto; String psc; String tel; Boolean souhlas;}
![Page 11: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/11.jpg)
class Osoba { String jmeno; String prijmeni; String email; String pass; Pohlavy pohlavy; Date narozen;}
UiWidgety
InputText InputDoubleText InputSecret InputSelect InputCheckBox InputDate
class Firma { Katg kategorie; String misto; String ulice; String mesto; String psc; String tel; Boolean souhlas;}
![Page 12: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/12.jpg)
class Osoba { String jmeno; String prijmeni; String email; String pass; Pohlavy pohlavy; Date narozen;}
UiWidgety
InputText InputDoubleText InputSecret InputSelect InputCheckBox InputDate
class Firma { Katg kategorie; String misto; String ulice; String mesto; String psc; String tel; Boolean souhlas;}
![Page 13: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/13.jpg)
GMail
![Page 14: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/14.jpg)
InputText InputDoubleText InputSecret InputSelect InputCheckBox InputDate
![Page 15: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/15.jpg)
ACM-ICPC
This form is made by JFB
![Page 16: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/16.jpg)
Vývojář opakuje svá rozhodnutí, pro použití UI Widgetů. Používá totožné komponenty, jen je jinak dekoruje. Musí replikovat nastavení již zachycené v entitě.
Náchylnost k chybám Snadno přehlédnutá inkonzistence Nudná práce pro „opice“
Otázka Jak jinak lze vytvořit UI něž manuálně?
![Page 17: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/17.jpg)
Grafcké drag & drop formy Složité přizpůsobení Stále replikace informací na dvou místech, neřeší údržbu Neřeší nekonzistenci informací mezi dat. vrstvou a prezentací
XML Model formy Stále replikace informací na dvou místech (XML a Class), neřeší údržbu Neřeší nekonzistenci informací mezi dat. vrstvou a prezentací
Inspekce zdrojového kódu a následná transformace Machine learning Vizualization
<h:inputText required=„false“
@Column(nullable=false)String getName() { ..
![Page 18: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/18.jpg)
Speciální značky
1. InspektorŠablony
UI Widgetů
2. Meta Model
3. Visualizér
Konfgurace
Mapování
![Page 19: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/19.jpg)
▪ Inspekce entity a následné získání MetaModelu▪ Enitita má speciální značky
▪ JPA, Hibernate Validator, JFormBuilder nebo cokoliv, co si nastavíme v konfguraci▪ Značky lze vytvořit dle požadavků klienta v JFB frameworku▪ Zjištěný MetaModel nezavisí na výstupu
▪ Inspektor sestaví meta model a identifkuje vlastnosti atributů
Inspektor
Meta Model
Speciální značky
![Page 20: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/20.jpg)
▪ Kompatibilita s GUI widgety▪ Konfgurace umožní provázání UI Widgetů se skupinou atributů tříd
▪ String and length > 255 inputTextArea▪ String and email inputEmail
▪ Není nutné mít specifckou skupinu widgetů, ale lze adaptovat cokoliv▪ HTML, RichFaces, JSF, ICEFaces, PrimeFaces, Tomahawk, Trinidad, ADF, XML.. :)
▪ Šablona UI Widgetu odkazuje na konkrétní použití widgetu bez identifkace specifcký hodnot
ŠablonyUI Widgetů
Konfgurace
<h:inputText onblur="validateInputText(this,..);#{onblur}" styleClass="#{inputClass}" rendered="#{empty render$id ? 'true' : render$id}" required=”$notNull" id=”$id" maxlength=”$maxLength" size=”$size" title=”#{text[$entity.$name]}" value=”#{$value}">
Input Text Widget
Mapování
![Page 21: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/21.jpg)
▪ Vizualizér▪ Dle konfgurace spojí inspektovaný atribut třídy a UIWidget▪ Bere v potaz
▪ Vybraný profl▪ Search, Edit, Read
▪ Vybraná práva uživatele▪ Layout
Visualizér
Profl Editace Role s nižším právy
![Page 22: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/22.jpg)
▪ Snadné propagování validace do UI▪ Snazší vyplnění formulářů▪ User friendly – usability ▪ Lze integrovat kontextovou nápovědu▪ Není třeba AJAX - snadná integrace s JS
![Page 23: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/23.jpg)
▪ Layout▪ Jak vysázet vstupní pole do výsledného výstupu (formuláře)▪ One column, two column, custom▪ Šablona
▪ Profl▪ Generujeme fragment zaměřený na hledání, čtení, zápis, nebo něco jiného.
▪ Bezpečnost▪ Statická a nebo lze i Third party / Role based access control (PicketLink, Spring)
Uplný form Zamezení přístupu Jiny profl a jiný layout
![Page 24: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/24.jpg)
![Page 25: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/25.jpg)
▪ Snadná změna poskytovatele UI Widgetů i cílové platformy
▪ Centralizace použití widgetu▪ Vše je defnováno jednou a na jednom místě▪ Možná Vám to připomíná Aspektové orientované programování▪ Podpora údržby
▪ => Přenostitelnost▪ Snadná migrace do jiného UI▪ Téměř okamžitý přechod z RichFaces do ICEFaces
▪ Jen změna šablon pro UI Widgety
![Page 26: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/26.jpg)
▪ On-demand (run-time) generování▪ Generování UI fragmentů na dotaz v produkci▪ Možný contextový security framework jenž aplikuje run-time informace▪ Zamezení běžně používaným kondicionálům v UI fragmentech
▪ Možné zlepšení výkonu načítání fragmentů (měřeno!)
▪ Možné další rozšíření ▪ Specifcké UI pro vybraného uživatele [2011 - IEEE cultural UI] ▪ Uživatel má možnost nastavení svého UI▪ Možné rozlišovat mobilní zařízení a desktopy a ovlivnit výstup
?
?
![Page 27: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/27.jpg)
▪ Údržba UI fragmentů▪ Značná redukce
▪ Na místo psaní formů a tabulek jen defnice UI Widgetů a mapování mezi skupinou atributů
▪ String and length > 255 inputTextArea▪ String and email inputEmail
▪ Studie údržby
Změna Změněných souborů Změna řádků
JFormBuilder/Manuální vývoj
Nový atribut 3 / 12 6 / 126
Nová třída 9 / 7 41 / 121
Změna pořadí prvků 1 / 2 2 / 54
Globální změna - internacionalizace 25 / 29 32 / 213
![Page 28: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/28.jpg)
▪ Quick Tour▪ Václav Chalupa▪ JFormBuilder.org/video
![Page 29: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/29.jpg)
▪ Inspektor nemusí jen inspektovat Javu▪ Lze i XML, UML, XLS nebo cokoliv jiného
▪ Analytik si snadno napíše v Excelu spcifkaci UI a nechá si přes JFB vygenerovat HTML▪ Ihned vidí co vytvořil a to prodiskutuje se zákazníkem
▪ Pošle vývojáři Excel XSL, ten použije jiné šablony a nechá přes JFB vygenerovat RichFaces UI nebo dokonce celý datový model v Javě a klidně i SQL databázi▪ JFB dokáže daný meta model přeložit do jakékoliv textové podoby
▪ Android
▪ Další Frameworky a jazyky
Inspektor
Meta Model
Speciální značky
JavaXLSXML
![Page 30: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/30.jpg)
▪ Tlustý datový model lze zachytit již na úrovni modelu▪ Model-driven development▪ UML Class model + UML Profly▪ Z modelu lze generovat aplikaci obsahující vazbu na JFB
▪ �
![Page 31: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/31.jpg)
Java XML
View
![Page 32: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/32.jpg)
Vývoj enterprise aplikací Struktura aplikace
▪ (JPA, EJB, JSF, Facelets, RichFaces, ICEFaces, ADT, apod.) Problémy s údržbou i tvořením GUI Závislosti 3 vrstev (coupling) Opakování informace a replikace rozhodnutí
Generátory UI Automatizace skrze inspekci
JFormBuilder (JFB)▪ Kompatibilita s GUI widgety▪ On-demand generation▪ Third party / Role based access control▪ Profly▪ Layouty▪ Možné zrychlení načítání stranek ▪ Udržba = nulová investice▪ Přenositelnost
Online tutoriál JFB Za hranice Javy
MDD, XLS, XML, Aneb přátelství analytika a vývojáře
![Page 33: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/33.jpg)
Prototypování aplikací
Android
.NET a další platformy
Reverse engineering vysosej metaModel převeď jinam
![Page 34: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/34.jpg)
FormBuilder: A Novel Approach to Deal with View Development and Maintenance 2011, ČERNÝ T., DONAHOO M. J. In SofSem 2011 Proceedings of Student Research Forum. Bratislava: OKAT, 2011, p. 16-34. ISBN 978-80-88720-17-1.
A Profle Approach to Using UML Models for Rich Form Generation 2010, ČERNÝ T., SONG E. In ICISA 2010 International Conference on Information Science and Applications (ICISA), 2010. New York: IEEE Computer Society Press, 2010, p. 635-342. ISBN 978-1-4244-5941-4.
UML-Based Enhanced Rich Form Generation, 2011, Tomas Cerny and Eunjee Song
ACM RACS 2011 – recently published at http://oslab.ssu.ac.kr/CFP/RACS2011/
Aspektově orientované programování [Kiczales 1997] Model Driven Architecture – OMG.org
Naked Objects MetaWidget
![Page 35: SG at CTU · 3SG at CTU 3sg.czacm.org Cerny T., Chalupa V., Rychtecky L., Linhart T. 3sg-jf@googlegroups.com Vývoj enterprise aplikací](https://reader035.vdocuments.pub/reader035/viewer/2022062507/5fe48797044b112c4018b275/html5/thumbnails/35.jpg)
? ? ?? ? ?