Praktický modelem řízený vývoj softwaru

Post on 19-Mar-2016

33 views 0 download

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

transcript

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

PDF

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