Praktick modelem zen v voj softwaru
Download
1 / 43

- PowerPoint PPT Presentation


  • 67 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '' - henrik


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Praktick modelem zen v voj softwaru

Praktickýmodelem řízenývývoj softwaru

Bc. Michal Jakubec

MCSE, MCSD, MCDBA, MCTS

http://www.jakubec.cz/


Obsah
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
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


Probl my softwarov ch projekt
Problémy softwarových projektů

Požadavky zákazníka

?

Aplikační řešení

Obrázky: http://www.projectcartoon.com


Mo n e en probl m modelem zen p stup
Možné řešení problémů?Modelem řízený přístup

Požadavky zákazníka

Transformace

Transformace

Transformace

Transformace

Transformace

Aplikační řešení


Pro modelem zen p stup
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


Porovn n mda a mdsd
Porovnání MDA a MDSD

MDA

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

  • Model-DrivenArchitecture

  • 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


Hierarchie prost edk softwarov ho v voje
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


Generov n k du
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


Dom nov specifick jazyky
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ů


Interpretace dsl jazyka
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í


Mechanismus reflexe
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


Dsl v sou asn praxi
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


Shrnut
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


Co n s nyn ek 2 3
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


Prvky generativn infrastruktury
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


Xml jako z klad dsl jazyka
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


Terminologie
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


Dom nov model 1 3
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


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

<?xmlversion="1.0"encoding="utf-8"?>

<domainModelxmlns="urn:AsBest-MetaToolkit-DomainModel-1.0">

<moduleid="System"title="Systém"namespace="AsBest.FlexiCrm„assembly="AsBest.FlexiCrm.Library.Domain">

<entityid="Choice"title="Číselníkovápoložka"abstract="true"

implicit="true"supportsDisabled="true">

<attributename="Id"type="number"key="true"identifier="true"

identity="true"generated="true"title="Identifikátor"/>

<attributename="Code"type="guid"selector="true"unique="true"

title="Kód"/>

<attributename="Name"type="text"length="64"label="true"

title="Název"entryMode="both"/>

<attributename="Description"type="text"optional="true"

position="tail"title="Popis"entryMode="both"/>

<attributename="Rank"type="number"position="tail"title="Pořadí"

entryMode="both"/>

<attributename="Mark"type="text"length="64"optional="true"

lookup="true"position="tail"title="Značka"entryMode="both"/>

<attributename="Disabled"type="flag"position="tail"

title="Zakázáno"/>

</entity>

</module>

</domainModel>


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

<?xmlversion="1.0"encoding="utf-8"?>

<domainModelxmlns="urn:AsBest-MetaToolkit-DomainModel-1.0">

<moduleid="System"title="Systém"namespace="AsBest.FlexiCrm"

assembly="AsBest.FlexiCrm.Library.Domain">

<dataentity="ContactGender">

<item>

<valuename="Id">1</value>

<valuename="Name">Muž</value>

<valuename="Mark">M</value>

<valuename="Rank">100</value>

<valuename="Disabled">False</value>

</item>

<item>

<valuename="Id">2</value>

<valuename="Name">Žena</value>

<valuename="Mark">Z</value>

<valuename="Rank">200</value>

<valuename="Disabled">False</value>

</item>

</data>

</module>

</domainModel>


Transforma n ablony
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


Demo 1 4

DEMO (1/4)

Definice entit a záznamů

Transformační šablony


Gener tor artefakt 1 2
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



Demo 2 4

DEMO (2/4)

Konfigurační profil generátoru

Změnový manifest




Demo 3 4

DEMO (3/4)

Slučování dokumentů

Expanze modelu


Generovan artefakty
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


Shrnut1
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
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


Vlastnosti re ln ho e en
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



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


Uk zka ui 1 2
Ukázka UI (1/2)

  • příklad pohledu typu seznam


Uk zka ui 2 2
Ukázka UI (2/2)

  • příklad pohledu typu detail


Demo 4 4

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


V sledky
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



Literatura
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)


Shrnut2
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!


Z v r
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?