Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Praktický modelem řízený vývoj softwaru Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1.

Podobné prezentace


Prezentace na téma: "Praktický modelem řízený vývoj softwaru Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1."— Transkript prezentace:

1 Praktický modelem řízený vývoj softwaru Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1

2 Obsah Stručně o modelem řízeném vývoji Generativní infrastruktura na bázi XML Ukázka použití na skutečném projektu 2

3 Co nás nyní čeká? (1/3) Stručně o modelem řízeném vývoji Generativní infrastruktura na bázi XML Ukázka použití na skutečném projektu 3

4 Problémy softwarových projektů Požadavky zákazníka Aplikační řešení ? Obrázky: 4

5 Transformace Možné řešení problémů? Modelem řízený přístup Požadavky zákazníka Aplikační řešení 5

6 Proč modelem řízený přístup? Je deterministický Ušetří mnoho rutinních činností Usnadňuje údržbu a rozvoj řešení Možnost opakovaného využití na více projektech => Software Factory 6

7 Porovnání MDA a MDSD MDA Model-Driven Architecture přístup „shora dolů“ definováno sdružením OMG základem UML postupná transformace modelů různých úrovní abstrakce vstupem formalizované požadavky v podobě modelu výsledkem spustitelná aplikace zásadní nedostatky  složitá infrastruktura  chybí nástrojová podpora  praktické potíže s nasazením MDSD Model-Driven Software Development přístup „zdola nahoru“ obecný přístup k vývoji aplikací založený na doménovém modelování vstupem může být model i zdrojový kód výstupem zejména zdrojový kód k překladu míra nasazení záleží na potřebách projektu  lze vyvíjet souběžně i konvenčním způsobem 7

8 Hierarchie prostředků softwarového vývoje Doménově-specifické jazyky (DSL)Návrhové vzory Objektově-orientovaný přístup Generování kóduInterpretace jazyka 8

9 Generování kódu Zajišťuje automatizovanou produkci zdrojového kódu odpovídajícího stanoveným pravidlům  jako řídících dat lze s výhodou použít informace zachycené pomocí DSL Zachovává konzistenci kódu při výskytu duplicitních údajů v artefaktech  např. velikost textového sloupce v tabulce databáze oproti maximální délce v poli formuláře V případě, že je nutné pozměnit implementaci, stačí upravit transformační mechanismus  dotčený kód bude následně re-generován či odstraněn 9

10 Doménově-specifické jazyky Zjednodušují formální zachycení struktury a/nebo chování z problémové domény Pomáhají překlenout „propast“ mezi abstrakcí problémové domény a její implementací Zajišťují centralizaci klíčových údajů (obchodních pravidel) a jejich oddělení od implementace v kódu programovacích jazyků 10

11 Interpretace DSL jazyka Umožňuje získat vysokou tvárnost aplikačního řešení bez nutnosti překladu  i uživatel může měnit chování aplikace Efektivní implementace změn  není nutný zásah prostřednictvím vývojového prostředí a nová kompilace kódu Vyšší nároky na architekturu aplikace  možná bezpečnostní rizika  nároky na výkonnost aplikačního prostředí 11

12 Mechanismus reflexe Poskytuje možnost dynamické práci s datovými typy za běhu aplikace  např. práce s moduly plug-in, add-in Umožňuje datové typy obohacovat o vlastní metadata (tzv. atributy či anotace), jež lze vyhodnocovat za běhu aplikace V kombinaci s generováním kódu a interpretací DSL zvyšuje strukturální tvárnost aplikace 12

13 DSL v současné praxi Širšímu uplatnění brání:  chybějící poznatky z praxe  vysoké nároky na znalosti a zkušenosti vývojářů Použití vlastního DSL jazyka je většině projektů nedostupné  návrh gramatiky je náročný na abstrakci  složitá kontrola syntaxe  problémy s vlastní interpretací jazyka Možné řešení: DSL založený na XML 13

14 Shrnutí Vývoj softwaru je rizikový byznys Modelem řízený vývoj může nabídnout pomocnou ruku a možná i východisko Potíže na projektech činí implementace vlastních DSL jazyků Jednou z dostupných alternativ může být DSL na bázi jazyka XML 14

15 Co nás nyní čeká? (2/3) Stručně o modelem řízeném vývoji Generativní infrastruktura na bázi XML Ukázka použití na skutečném projektu 15

16 Prvky generativní infrastruktury Založena na strandardech  XML jako DSL jazyk doménového modelu  XSD schéma pro validaci modelu  XSLT pro prevod modelu na artefakty Generátor artefaktů pro generování a distribuci výsledných souboru  využívá.NET Framework verze

17 XML jako základ DSL jazyka Jazykové konstrukce jako prvky XML  snadno rozšiřitelné dle aktuálních potřeb Gramatika definována XML schématem  validace zajišťuje kontrolu syntaxe Interpretace DSL jazyka prostřednictvím transformačních šablon XSLT  generování kódu  překlad na jiné DSL 17

18 Terminologie Artefakt – součást projektu (zdrojový kód, konfigurační soubor, záznamy dat) Doménový model – zdroj informací o prvcích domény problému/řešení Transformace – převod určitého prvku doménového modelu na sadu artefaktů Distribuce – proces fyzického umístění vygenerovaných artefaktů ve složkové struktuře souborového systému 18

19 Doménový model (1/3) Ukládán jako množina dokumentů XML  validace pomocí schémat XSD – podpora IntelliSense  transformace modelu pomocí XSLT  podporuje generické slučování dílčích definic Umožňuje definovat strukturu doménových entit aplikační logiky Možnost specifikace výchozích záznamů pro vybrané entity 19

20 Doménový model (2/3) 20

21 Doménový model (3/3) 1 Muž M 100 False 2 Žena Z 200 False 21

22 Transformační šablony Transformují doménový model na:  tabulky, pohledy, referenční omezení, spouště, výchozí záznamy, aj.  mapovací soubory O/R vrstvy  aplikační třídy doménových entit  stránky uživatelského rozhraní typu seznam- detail  jednotkové testy pro doménové entity Dosud vytvořeno celkem 30 šablon XSLT  některé šablony využívají jazyka JavaScript 22

23 DEMO (1/4) Definice entit a záznamů Transformační šablony 23

24 Generátor artefaktů (1/2) Nástroj pro plně automatizované generování artefaktů dle doménového modelu  univerzálně použitelný díky konfiguračním profilům Ukládání generovaných artefaktů přímo do struktury jednotlivých projektů  integrováno s MS Visual Studio 2008/2010  podporuje systém pro správu zdrojového kódu Udržuje aktuální sadu artefaktů  evidována v tzv. změnovém manifestu  nepotřebné artefakty jsou tak vždy odstraněny 24

25 Generátor artefaktů (2/2) 25

26 DEMO (2/4) Konfigurační profil generátoru Změnový manifest 26

27 Proces transformace modelu 27

28 Slučování dokumentů XML 28

29 DEMO (3/4) Slučování dokumentů Expanze modelu 29

30 Generované artefakty Databázové schéma a výchozí záznamy Mapovací soubory O/R vrstvy Aplikační třídy doménových entit Uživatelské rozhraní „seznam-detail“ Jednotkové testy pro doménové entity 30

31 Shrnutí XML jako základ DSL jazyka Doménový model pro zachycení struktury i výchozích datových záznamů Transformační šablony pro převod prvků modelu do podoby artefaktů Generátor artefaktů načítá definice modelu, transformuje je a provádí distribuci artefaktů 31

32 Co nás nyní čeká? (3/3) Stručně o modelem řízeném vývoji Generativní infrastruktura na bázi XML Ukázka použití na skutečném projektu 32

33 Vlastnosti reálného řešení Webová aplikace podnikového IS  celkem cca 70 entit, 550 atributů  nejprve konvenční zakázkový vývoj Použité technologie  programovací jazyk C#.NET, platforma.NET Framework 3.5  O/R mapovací vrstva NHibernate 2.0  databáze MS SQL Server 2008 Generativní infrastruktura nasazena během aktivní realizace projektu 33

34 Architektura webové aplikace 34

35 Adaptace řešení do modelem řízené podoby 35

36 Ukázka UI (1/2) příklad pohledu typu seznam 36

37 Ukázka UI (2/2) příklad pohledu typu detail 37

38 DEMO (4/4) Přidání a odebrání atributu Přidání nové entity Vytvoření výchozích záznamů Úprava existující šablony 38

39 Výsledky Generováno přibližně 2300 artefaktů, z toho:  110 webových stránek seznam-detail  70 tříd doménových entit  67 databázových tabulek Jeden běh generování trvá ~30 sekund Všechny artefakty mají produkční kvalitu  formátování souborů, platné jmenné konvence, aj. Veškerý generovaný kód ukládán do SVN  snadný návrat ke starším revizím 39

40 Alternativní využití generátoru 40

41 Literatura Model-Driven Software Development: Technology, Engineering, Management (2006) Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools (2004) Praktické využití konceptů generativního programování pro efektivní vývoj podnikových aplikací (Bakalářská práce, 2010) 41

42 Shrnutí Generativní infrastruktura se v praxi osvědčila  došlo ke zkrácení vývojových cyklů Generovaný kód tvoří zhruba 80% kódu  minimalizace úsilí Identifikovány nové podněty k dalšímu zkoumání  snaha o implementaci plně dynamického IS Potenciál dalšího rozvoje  generátor artefaktů, vhodná metodologie, šablony… = spousta témat pro bakalářské a diplomové práce! 42

43 Závěr Stručně o modelem řízeném vývoji Generativní infrastruktura na bázi XML Ukázka použití na skutečném projektu Dotazy? 43


Stáhnout ppt "Praktický modelem řízený vývoj softwaru Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1."

Podobné prezentace


Reklamy Google