Upload
henrik
View
33
Download
0
Embed Size (px)
DESCRIPTION
Praktický modelem řízený vývoj softwaru. Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS http://www.jakubec.cz/. Obsah. Stručně o modelem řízeném vývoji Generativní infrastruktura na bázi XML Ukázka použití na skutečném projektu. Co nás nyní čeká ? (1/3). Stručně o modelem řízeném vývoji - PowerPoint PPT Presentation
Citation preview
Praktickýmodelem řízenývývoj softwaruBc. Michal JakubecMCSE, MCSD, MCDBA, MCTShttp://www.jakubec.cz/
1
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
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
Problémy softwarových projektů
Požadavky zákazníka
Aplikační řešení
?
Obrázky: http://www.projectcartoon.com 4
TransformaceTransformace
Transformace Transformace
Transformace
Možné řešení problémů?Modelem řízený přístup
Požadavky zákazníka
Aplikační řešení
5
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
DEMO (1/4)
Definice entit a záznamůTransformační šablony
23
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
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
DEMO (2/4)
Konfigurační profil generátoruZměnový manifest
26
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
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
DEMO (3/4)
Slučování dokumentůExpanze modelu
29
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ů
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
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
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
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
Ukázka UI (1/2)
příklad pohledu typu seznam
36
Ukázka UI (2/2)
příklad pohledu typu detail
37
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
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
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
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
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
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