Modelom riadený vývoj softvéru Gabriel Ščerbák 05.06.09
<ul><li>komplexné systémy
cena práce programátorov
krátke časy dodania
náročné technológie
nedokonalé inžinierske postupy
zachytenie vedomostí doménových špecialistov
dokumentácia architektúry </li></ul>Motivácia
Abstrakcia <ul><li>1960 – Assembler
1980 – Procedurálne programovanie
1990 – Objektovo orientované programovanie
2000 – Frameworky
2010 – AOP/MDSD/DSL/.. . ? </li></ul>
Modelom riadený vývoj SW <ul><li>Informácie zachytené v modeloch </li></ul><ul><ul><li>UML diagramy, XML konfigurácia, dom...
História <ul><li>UML -  Unified Modeling Language
CASE nástroje -  Computer Aided Software Engineering
Spustiteľné UML -  Executable UML
MDA  -  Model Driven Architecture
MDSD  -  Model Driven Software Development
DSL  -  Domain Specific Languages </li></ul>
UML <ul><li>90. roky - asi 80 rôznych notácií
UML pred 1.x </li></ul><ul><ul><li>Three amigos  - James Rumbaugh, Grady Booch a Ivar Jacobson </li></ul></ul><ul><li>UML ...
CASE nástroje <ul><li>podpora vývojového procesu a metodiky
možnosti modelovania systému
jednoduché generovanie z class diagramov pomocou šablón </li><ul><li>neskôr možnosť úpravy šablón </li></ul><li>v dnešnej ...
Spustiteľné UML <ul><li>rozšírenie Shlaer-Mellor metódy pre UML
rôzne implementácie
potreba jazyka akčnej sémantiky
Problémy </li><ul><li>sémantická nejednoznačnosť UML
potreba univerzálneho meta modelu </li></ul></ul>
MDA <ul><li>štandard OMG
CIM  (Computer Independent Model)
PIM  (Platform independent Model)
PSM  (Platform specific Model)
dopracovávanie a označkovanie modelov
Množstvo štandardo v </li><ul><li>MOF, QVT, XMI, OCL, ... </li></ul></ul>
MDSD <ul><li>kritika MDA viedla k novým a lepším postupom </li><ul><li>všeobecnejšie
nezasahovanie do modelov a generovaného kódu
odmietnutie nevhodných štandardov (akceptovanie štandardu MOF)
vypustenie odlíšenia platformy
väčší dôraz na textovú notáciu
pragmatický prístup </li></ul></ul>
DSL <ul><li>Doménovo špecifické jazyky
Upcoming SlideShare
Loading in …5
×

Mdsd

1,236 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,236
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Mdsd

  1. 1. Modelom riadený vývoj softvéru Gabriel Ščerbák 05.06.09
  2. 2. <ul><li>komplexné systémy
  3. 3. cena práce programátorov
  4. 4. krátke časy dodania
  5. 5. náročné technológie
  6. 6. nedokonalé inžinierske postupy
  7. 7. zachytenie vedomostí doménových špecialistov
  8. 8. dokumentácia architektúry </li></ul>Motivácia
  9. 9. Abstrakcia <ul><li>1960 – Assembler
  10. 10. 1980 – Procedurálne programovanie
  11. 11. 1990 – Objektovo orientované programovanie
  12. 12. 2000 – Frameworky
  13. 13. 2010 – AOP/MDSD/DSL/.. . ? </li></ul>
  14. 14. Modelom riadený vývoj SW <ul><li>Informácie zachytené v modeloch </li></ul><ul><ul><li>UML diagramy, XML konfigurácia, doménovo špecifické jazyky, ... </li></ul></ul><ul><li>Transformácie spracujúce modely </li></ul><ul><ul><li>program, ktorý načíta model a upraví ho alebo vytvorí nový </li></ul></ul><ul><li>Generátory vytvárajúce zdrojové kódy z modelov </li></ul><ul><ul><li>šablóny, interpretátor, kompilátor, ... </li></ul></ul>
  15. 15. História <ul><li>UML - Unified Modeling Language
  16. 16. CASE nástroje - Computer Aided Software Engineering
  17. 17. Spustiteľné UML - Executable UML
  18. 18. MDA - Model Driven Architecture
  19. 19. MDSD - Model Driven Software Development
  20. 20. DSL - Domain Specific Languages </li></ul>
  21. 21. UML <ul><li>90. roky - asi 80 rôznych notácií
  22. 22. UML pred 1.x </li></ul><ul><ul><li>Three amigos - James Rumbaugh, Grady Booch a Ivar Jacobson </li></ul></ul><ul><li>UML 1.x </li></ul><ul><ul><li>OMG – veľký úspech a štandardizácia, profily </li></ul></ul><ul><li>UML 2.x </li></ul><ul><ul><li>sémantická integrita </li></ul></ul>
  23. 23. CASE nástroje <ul><li>podpora vývojového procesu a metodiky
  24. 24. možnosti modelovania systému
  25. 25. jednoduché generovanie z class diagramov pomocou šablón </li><ul><li>neskôr možnosť úpravy šablón </li></ul><li>v dnešnej dobe podpora princípov MDA </li></ul>
  26. 26. Spustiteľné UML <ul><li>rozšírenie Shlaer-Mellor metódy pre UML
  27. 27. rôzne implementácie
  28. 28. potreba jazyka akčnej sémantiky
  29. 29. Problémy </li><ul><li>sémantická nejednoznačnosť UML
  30. 30. potreba univerzálneho meta modelu </li></ul></ul>
  31. 31. MDA <ul><li>štandard OMG
  32. 32. CIM (Computer Independent Model)
  33. 33. PIM (Platform independent Model)
  34. 34. PSM (Platform specific Model)
  35. 35. dopracovávanie a označkovanie modelov
  36. 36. Množstvo štandardo v </li><ul><li>MOF, QVT, XMI, OCL, ... </li></ul></ul>
  37. 37. MDSD <ul><li>kritika MDA viedla k novým a lepším postupom </li><ul><li>všeobecnejšie
  38. 38. nezasahovanie do modelov a generovaného kódu
  39. 39. odmietnutie nevhodných štandardov (akceptovanie štandardu MOF)
  40. 40. vypustenie odlíšenia platformy
  41. 41. väčší dôraz na textovú notáciu
  42. 42. pragmatický prístup </li></ul></ul>
  43. 43. DSL <ul><li>Doménovo špecifické jazyky
  44. 44. dlho známa myšlienka dnes jednoduchšie realizovateľná vďaka novým nástrojom a postupom
  45. 45. presun dôrazu z modelov na jazyk </li><ul><li>menší význam transformácií modelov
  46. 46. upustenie od štandardov MDA </li></ul></ul>
  47. 47. Modely a modelovanie <ul><li>Modely
  48. 48. Metamodelovanie
  49. 49. Obmedzenia
  50. 50. Označkovné modely
  51. 51. Opätovná použiteľnosť modelov </li></ul>
  52. 52. Modely <ul><li>Model predstavuje reálny objekt pričom zanedbávame nepodstatné detaily </li><ul><li>vyššia úroveň abstrakcie </li></ul><li>štruktúra, notácia a sémantika </li><ul><li>formálny model </li></ul><li>UML model vs UML diagram </li><ul><li>štruktúra vs notácia </li></ul></ul>
  53. 53. Metamodelovanie <ul><li>M3: meta meta model
  54. 54. M2: meta model
  55. 55. M1: model
  56. 56. M0: reálny objekt
  57. 57. Motivácia </li></ul><ul><ul><li>potreba interoperability medzi nástrojmi </li></ul></ul>
  58. 58. Obmedzenia <ul><li>Modely predstavujú abstraktnú štruktúru informácie, ktorá často nestačí na vyjadrenie všetkých vzťahov a podmienok
  59. 59. OCL (Object Constraint Language) </li><ul><li>vytvorený zároveň s UML (Anneke Kleppe a Jos Warmer), určený pre doménových expertov
  60. 60. založený na teórií množín a predikátovej logike
  61. 61. podpora zreťazovania volania funkcií
  62. 62. vstupné a výstupné podmienky
  63. 63. inkarnácia v podobe jazyka Check </li></ul></ul>
  64. 64. Označkované modely <ul><li>Dodatočné informácie vložené do modelu </li><ul><li>opätovné využite modelu
  65. 65. komentár, označená hodnota, podpora v UML
  66. 66. znečistenie modelu </li></ul><li>málo značiek - rozšíriť model
  67. 67. zdrojový kód v značkách - umožniť kombináciu generovaného a ručne písaného kódu
  68. 68. veľa značiek s malou variabilitou – parameter transformácie
  69. 69. veľa rôznych značiek – model pohľadu </li></ul>
  70. 70. Opätovná použiteľnosť modelov <ul><li>Riešenie problémov </li><ul><li>podobne ako vzory
  71. 71. zachytávajú know-how doménových špecialistov </li></ul><li>Metaware </li><ul><li>modely, meta modely, transformácie a generátory </li></ul><li>Interoperabilita a nezávislosť od konkrétnej platformy, technológie či nástroja </li></ul>
  72. 72. Transformácie <ul><li>Vlastnosti transformácií
  73. 73. Transformácie medzi modelmi
  74. 74. Spájajúce a rozdeľujúce transformácie
  75. 75. Vizualizačné transformácie </li></ul>
  76. 76. Vlastnosti transformácií <ul><li>Prispôsobiteľnosť </li><ul><li>potreba parametrizácie transformácií </li></ul><li>Trasovateľnosť </li><ul><li>nevyhnutná ak sa modely ručne upravujú </li></ul><li>Prírastková konzistencia </li><ul><li>generovaný model nezruší ručné úpravy </li></ul><li>Obojsmernosť </li><ul><li>prejavenie ručných úprav v zdrojovom modeli, reverse engineering </li></ul></ul>
  77. 77. Transformácie medzi modelmi <ul><li>Transformácie na zjednodušenie generátorov </li><ul><li>hromadné úpravy, preskupenie, ... </li></ul><li>Transformácie v roli optimalizácie </li><ul><li>zjednodušovanie hierarchií, ... </li></ul><li>Simulácia pomocou transformácie modelov </li><ul><li>využitie existujúcich simulačných nástrojov podporujúcich klasické modely (konečno stavové automaty, rule based systems, ...) </li></ul></ul>
  78. 78. Spájajúce a rozdeľujúce <ul><li>Spájajúce transfromácie </li><ul><li>viacero modelov na vstupe
  79. 79. pohľady
  80. 80. partície </li></ul><li>Rozdeľujúce transformácie </li><ul><li>viacero modelov na výstupe
  81. 81. rozdelenie kvôli generátorom
  82. 82. rozdelenie kvôli informáciám pre špecifické technológie
  83. 83. trojvrstvová architektúra </li></ul></ul>
  84. 84. Vizualizačné transformácie <ul><li>Vizualizácia modelu </li><ul><li>obzvlášť vhodné v kombinácií s textovými doménovo špecifickými jazykmi
  85. 85. prehľad, dokumentácia </li></ul><li>Využitie nástrojov ako GraphViz a Prefuse </li><ul><li>vytvorenie doménovo špecifického jazyka pre tieto nástroje a generovanie kódu tochto jazyka (oAW) </li></ul></ul>
  86. 86. Doménovo špecifické jazyky <ul><li>Zväčša malý jazyk, nie nevyhnutne programovací, ktorý prináša hodnotu doménovým špecialistom </li><ul><li>biznis domény, technické domény </li></ul><li>Základné súčasti </li><ul><li>konkrétna, abstraktná syntax a sémantika </li></ul><li>Notácia
  87. 87. Spracovanie
  88. 88. Návrh </li></ul>
  89. 89. Notácia <ul><li>výber je dôležitý najmú pre biznis domény </li><ul><li>existujúce notácie v danej doméne </li></ul><li>Grafická - vzťahy, stavové automaty, … </li><ul><li>názorná, náročná implementácia nástrojov </li></ul><li>Textová - správanie, algoritmy, … </li><ul><li>jednoduchšia implementácia nástrojov, podpora existujúcich nástrojov (diff/merge/versioning) </li></ul><li>Formulárová
  90. 90. Tabuľková
  91. 91. Kombinácie – matematická notácia </li></ul>
  92. 92. Spracovanie <ul><li>Externé doménovo špecifické jazyky </li><ul><li>treba zabezpečiť infraštruktúru (parser, editor)
  93. 93. projekčné a orientované na parser DSL editory </li></ul><li>Interné doménovo špecifické jazyky </li><ul><li>možnosť využitia hosťujúceho všeobecného programovacieho jazyka a jeho infraštruktúry
  94. 94. obmedzenie syntaxou hosťujúceho jazyka </li></ul><li>Generovanie – pomalší vývoj, efektívnejší kód
  95. 95. Interpretovanie – rýchlejší vývoj, pomalší kód </li></ul>
  96. 96. Návrh <ul><li>Obmedzenie výrazovosti – DSL != GPL
  97. 97. „ Veľký“ jazyk – veľa konceptov </li><ul><li>ľahké využitie pre doménových špecialistov
  98. 98. udržanie konzistencie je náročnejšie </li></ul><li>„ Malý“ jazyk – len nevyhnutné koncepty </li><ul><li>jednoduchší jazyk, výhodná krivka učenia sa </li></ul><li>Evolúcia jazykov – problém kombinovania gramatík
  99. 99. Inšpirácia z GPL – rozsahy platnosti, menné priestory, ... </li></ul>
  100. 100. Generatívne programovanie <ul><li>Metaprogramovanie </li><ul><li>šablónové metaprogramovanie v C++, Policy Based Design, Converge, Lisp, ... </li></ul><li>Šablóny </li><ul><li>Smarty template engine, ASP, JSP, ... </li></ul><li>Doménovo špecifické jazyky </li><ul><li>Ruby, Boost DSEL, ... </li></ul></ul>
  101. 101. AOP a AOSD <ul><li>Záujmy - funkčné požiadavky, ...
  102. 102. Prierezové záujmy - nefunkčné požiadavky, logovanie, bezpečnosť, ...
  103. 103. Body rezu
  104. 104. Aspekty pomocou modelov
  105. 105. Prepletanie modelov
  106. 106. Aspekty vrámci modelom riadeného vývoja softvéru </li></ul>
  107. 107. Prestávka
  108. 108. Softec <ul><li>FAAST - class diagramy, CASE, TCL transformácie
  109. 109. JavaTec – J2EE, AOP, vývoj v Eclipse, MDA s manuálnym prechodom z PIM do PSM
  110. 110. JOK FW – pre konkrétneho zákazníka, rôzne cieľové platformy
  111. 111. WAFT - interné DSL, fixná platforma, bez podpory transformácií, interpretácia, založené na OS (Tapestry, Spring, Hibernate, HiveMind, ...)
  112. 112. Výrobné linky - firemný framework, aplikačný framework </li></ul>
  113. 113. Nástroje <ul><li>Eclipse + EMF </li></ul><ul><ul><li>Acceleo, oAW + fornax, JET + JMerge, … </li></ul></ul><ul><li>MetaCase - MetaEdit+
  114. 114. Microsoft </li></ul><ul><ul><li>DSL Tools
  115. 115. OSLO </li></ul></ul><ul><li>Jetbrains - Meta Programming System
  116. 116. Intentional Software - Intentional Domain Workbench </li></ul>
  117. 117. openArchitectureWare <ul><li>MWE - postupy spracovania modelov
  118. 118. Check - obmedzenia, založené na OCL
  119. 119. Xtend - jazyk transformácií
  120. 120. Xpand – šablóny na generovanie kódu
  121. 121. Xtext - doménovo špecifické jazyky
  122. 122. XWeave – prepletanie modelov </li></ul>
  123. 123. Meta Programming System <ul><li>Language Oriented Programming
  124. 124. Možnosti </li></ul><ul><ul><li>externé doménovo špecifické jazyky
  125. 125. rozšírenia jazykov (Java)
  126. 126. kombinácia komponentov jazykov </li></ul></ul><ul><li>Úprava stromu AST </li></ul><ul><ul><li>kombinácia jazykov (jednoznačné gramatiky)
  127. 127. implementácia refaktoringu </li></ul></ul>
  128. 128. Microsoft OSLO <ul><li>Jazyk M - IntelliPad </li><ul><li>MGrammar - gramatiky
  129. 129. MGraph – abstraktná syntax
  130. 130. MSchema – db schémy </li></ul><li>Quadrant – nástroj na vizuálne modelovanie
  131. 131. MS SQL Repository – už nie je povinná
  132. 132. Interpretácia - XML </li><ul><li>Indigo, WPF, ... </li></ul></ul>
  133. 133. Intentional Domain Workbench <ul><li>Projekčný DSL editor </li><ul><li>najprv sa vytvára model a potom jeho projekcie do DSL a cieľového kódu </li></ul><li>Intentional Tree
  134. 134. Jazyk na tvorbu projekcií
  135. 135. Kombinácia notácií
  136. 136. Možnosť nasadenia editora pre konkrétne DSL </li><ul><li>poisťovníctvo </li></ul></ul>
  137. 137. Najlepšie postupy a vzory <ul><li>Proces a organizácia
  138. 138. Doménové modelovanie a doménovo špecifické jazyky
  139. 139. Architektúra nástrojov
  140. 140. Vývoj aplikačnej platformy
  141. 141. Otvorené problémy </li></ul>
  142. 142. Proces a organizácia <ul><li>Nechajte ľudí robiť to v čom sú dobrí
  143. 143. Iteratívny vývoj s dvomi stopami
  144. 144. Vyňatie infraštruktúry
  145. 145. Vytváranie jazyka paralelne s konceptami
  146. 146. Nákupný košík s pevným rozpočtom
  147. 147. Obchodovanie s rozsahom
  148. 148. Schválenie iterácie
  149. 149. Metaware ako produkt
  150. 150. Kompatibilná organizácia </li></ul>
  151. 151. DSM a DSL <ul><li>Formálny meta model
  152. 152. Zdroje pre jazyk
  153. 153. Notácia, notácia, notácia
  154. 154. Grafická alebo textová notácia
  155. 155. Pohľady
  156. 156. Partície
  157. 157. Poučenie z jazykov tretej generácie
  158. 158. Kto sú občania prvej triedy? </li></ul>
  159. 159. Architektúra nástrojov <ul><li>Ignorovanie konkrétnej syntaxe
  160. 160. Podpora tímovej spolupráce
  161. 161. Implementácia meta modelu
  162. 162. Na nástrojoch záleží </li></ul>
  163. 163. Vývoj aplikačnej platformy <ul><li>Generačná priepasť
  164. 164. Bohatá doménovo špecifická platforma
  165. 165. Technické subdomény
  166. 166. Generovaný kód nie je vhodné upravovať
  167. 167. O šablóny sa treba starať
  168. 168. Možnosť prispôsobenia metaware-u
  169. 169. Netreba zabúdať na testovanie </li></ul>
  170. 170. Otvorené problémy <ul><li>Kombinácia notácií (projekčné editory)
  171. 171. Modulárnosť doménovo špecifických jazykov (strom abstraktnej syntaxe)
  172. 172. Evolúcia doménovo špecifických jazykov a modelov (Edapt, EPatch)
  173. 173. Debuggovanie modelov
  174. 174. Kombinácia generovania a interpretovania
  175. 175. Škálovateľnosť modelov (EMF Index)
  176. 176. Zásobníky </li></ul>
  177. 177. Otázky? Priestor na diskusiu
  178. 178. Ďakujem za Vašu pozornosť! Gabriel Ščerbák 05.06.09

×