1 / 43

Praktický modelem řízený vývoj softwaru

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

henrik
Download Presentation

Praktický modelem řízený vývoj softwaru

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Praktickýmodelem řízenývývoj softwaru Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS http://www.jakubec.cz/

  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: http://www.projectcartoon.com

  5. Možné řešení problémů?Modelem řízený přístup Požadavky zákazníka Transformace Transformace Transformace Transformace 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 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

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

  21. 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>

  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. 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. DEMO (2/4) Konfigurační profil generátoru Změnový manifest

  27. Proces transformace modelu

  28. Slučování dokumentů XML

  29. 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. 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?

More Related