Praktický modelem řízený vývoj softwaru
description
Transcript of Praktický modelem řízený vývoj softwaru
![Page 1: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/1.jpg)
Praktickýmodelem řízenývývoj softwaruBc. Michal JakubecMCSE, MCSD, MCDBA, MCTShttp://www.jakubec.cz/
1
![Page 2: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/2.jpg)
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
![Page 3: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/3.jpg)
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
![Page 4: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/4.jpg)
Problémy softwarových projektů
Požadavky zákazníka
Aplikační řešení
?
Obrázky: http://www.projectcartoon.com 4
![Page 5: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/5.jpg)
TransformaceTransformace
Transformace Transformace
Transformace
Možné řešení problémů?Modelem řízený přístup
Požadavky zákazníka
Aplikační řešení
5
![Page 6: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/6.jpg)
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
![Page 7: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/7.jpg)
Porovnání MDA a MDSDMDA 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
![Page 8: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/8.jpg)
Hierarchie prostředků softwarového vývoje
Doménově-specifické jazyky (DSL)
Návrhové vzory
Objektově-orientovaný přístup
Generování kódu Interpretace jazyka
8
![Page 9: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/9.jpg)
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
![Page 10: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/10.jpg)
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
![Page 11: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/11.jpg)
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
![Page 12: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/12.jpg)
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
![Page 13: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/13.jpg)
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
![Page 14: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/14.jpg)
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
![Page 15: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/15.jpg)
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
![Page 16: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/16.jpg)
Prvky generativní infrastruktury Založena na strandardech
XML jako DSL jazyk doménového modeluXSD schéma pro validaci modeluXSLT pro prevod modelu na artefakty
Generátor artefaktů pro generování a distribuci výsledných souboruvyužívá .NET Framework verze 3.5
16
![Page 17: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/17.jpg)
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
![Page 18: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/18.jpg)
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
![Page 19: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/19.jpg)
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
![Page 20: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/20.jpg)
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>
20
![Page 21: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/21.jpg)
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> <item> <value name="Id">2</value> <value name="Name">Žena</value> <value name="Mark">Z</value> <value name="Rank">200</value> <value name="Disabled">False</value> </item> </data> </module></domainModel>
21
![Page 22: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/22.jpg)
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
![Page 23: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/23.jpg)
DEMO (1/4)
Definice entit a záznamůTransformační šablony
23
![Page 24: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/24.jpg)
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
![Page 25: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/25.jpg)
Generátor artefaktů (2/2)
Sloučení modelových
definic
Transformace modelových
definic
Distribuce vygenerovaných
artefaktů
sdfsdfsdfsdfSoubory definicmodelu
Souborkonfig. profilu
sdfsdfsdfsdfSoubory artefaktů
Souborzměn.
manifestu
sdfsdfsdfsdfSoubory
transform.šablon
25
![Page 26: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/26.jpg)
DEMO (2/4)
Konfigurační profil generátoruZměnový manifest
26
![Page 27: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/27.jpg)
Proces transformace modelu
27
Sloučenýdefiniční
dokument
Transformace 1
Transformace 2
Transformace 4
Transformace 3
Transformace 5
Sloučení sady generovaných
artefaktůSloučenýdistribučnídokument
![Page 28: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/28.jpg)
Slučování dokumentů XML
28
<?xml version="1.0"/><book> <info> <title>A</title> </info></book>
<?xml version="1.0"?><book> <preface> <title>B</title> <para>C</para> </preface></book>
<?xml version="1.0"?><book> <info> <title>A</title> </info> <preface> <title>B</title> <para>C</para> </preface></book>
Dokument 1 Dokument 2 Sloučený dokument
![Page 29: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/29.jpg)
DEMO (3/4)
Slučování dokumentůExpanze modelu
29
![Page 30: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/30.jpg)
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
![Page 31: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/31.jpg)
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ů
![Page 32: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/32.jpg)
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
![Page 33: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/33.jpg)
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
![Page 34: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/34.jpg)
Architektura webové aplikace
Databázový server
Aplikační server
SlužbaMS SQL Server
Relační databáze
Klientský počítač
Webový prohlížeč
RozhraníNHibernate
Vrstva objektového přístupuk datovému úložišti
RozhraníADO.NET
Doménové entity
Obchodní logika
Prezentační logika
Dynamické webové stránky
Webové služby
Služba MS IIS a ASP.NET
34
![Page 35: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/35.jpg)
Adaptace řešenído modelem řízené podoby
Analýza
Generátor artefaktů
Doménovýmodel aplikace
Obecně použitelný
kód
Specifickýkód
Schematicky opakovatelný
kód
Platforma řešení
Generovaný kód
Manuální kód
Referenční implementace aplikace
ovládá
generuje
Předpisy transformací
řídí
Separace
35
![Page 36: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/36.jpg)
Ukázka UI (1/2)
příklad pohledu typu seznam
36
![Page 37: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/37.jpg)
Ukázka UI (2/2)
příklad pohledu typu detail
37
![Page 38: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/38.jpg)
DEMO (4/4)
Přidání a odebrání atributuPřidání nové entityVytvoření výchozích záznamůÚprava existující šablony
38
![Page 39: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/39.jpg)
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
![Page 40: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/40.jpg)
Alternativní využití generátoru
40
Transformace dokumentu DocBook
Sloučení kapitol do společného
dokumentusdfsdfsdfsdf
Souborys textykapitol
sdfsdfsdfsdfSouboryobrázků
DokumentDocBook
Zpracování pomocí nástroje
pdfLaTeXDokument
HTMLDokument
TeX
Výslednýdokument
![Page 41: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/41.jpg)
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
![Page 42: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/42.jpg)
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
![Page 43: Praktický modelem řízený vývoj softwaru](https://reader036.fdocument.pub/reader036/viewer/2022062400/56814c0f550346895db90da2/html5/thumbnails/43.jpg)
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