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

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

Praktický modelem řízený vývoj softwaru

Podobné prezentace


Prezentace na téma: "Praktický modelem řízený vývoj softwaru"— Transkript prezentace:

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

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

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

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

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

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

7 Porovnání MDA a MDSD MDA MDSD Model-Driven Software Development
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 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

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

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

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ů

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í

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

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

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

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

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 3.5

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

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

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

20 Doménový model (2/3) <?xml version="1.0" encoding="utf-8"?>
<domainModel xmlns="urn:AsBest-MetaToolkit-DomainModel-1.0"> <module id="System" title="Systém" namespace="AsBest.FlexiCrm„ assembly="AsBest.FlexiCrm.Library.Domain"> <entity id="Choice" title="Číselníková položka" abstract="true" implicit="true" supportsDisabled="true"> <attribute name="Id" type="number" key="true" identifier="true" identity="true" generated="true" title="Identifikátor"/> <attribute name="Code" type="guid" selector="true" unique="true" title="Kód"/> <attribute name="Name" type="text" length="64" label="true" title="Název" entryMode="both"/> <attribute name="Description" type="text" optional="true" position="tail" title="Popis" entryMode="both"/> <attribute name="Rank" type="number" position="tail" title="Pořadí" entryMode="both"/> <attribute name="Mark" type="text" length="64" optional="true" lookup="true" position="tail" title="Značka" entryMode="both"/> <attribute name="Disabled" type="flag" position="tail" title="Zakázáno"/> </entity> </module> </domainModel>

21 Doménový model (3/3) <?xml version="1.0" encoding="utf-8"?>
<domainModel xmlns="urn:AsBest-MetaToolkit-DomainModel-1.0"> <module id="System" title="Systém" namespace="AsBest.FlexiCrm" assembly="AsBest.FlexiCrm.Library.Domain"> <data entity="ContactGender"> <item> <value name="Id">1</value> <value name="Name">Muž</value> <value name="Mark">M</value> <value name="Rank">100</value> <value name="Disabled">False</value> </item> <value name="Id">2</value> <value name="Name">Žena</value> <value name="Mark">Z</value> <value name="Rank">200</value> </data> </module> </domainModel>

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

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

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

25 Generátor artefaktů (2/2)

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

27 Proces transformace modelu

28 Slučování dokumentů XML

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

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

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ů

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

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

34 Architektura webové aplikace

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

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

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

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

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

40 Alternativní využití generátoru

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)

42 spousta témat pro bakalářské a diplomové práce!
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!

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?


Stáhnout ppt "Praktický modelem řízený vývoj softwaru"

Podobné prezentace


Reklamy Google