Your SlideShare is downloading. ×
0
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Mdsd
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mdsd

1,016

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,016
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Modelom riadený vývoj softvéru Gabriel Ščerbák 05.06.09
  • 2. <ul><li>komplexné systémy
  • 3. cena práce programátorov
  • 4. krátke časy dodania
  • 5. náročné technológie
  • 6. nedokonalé inžinierske postupy
  • 7. zachytenie vedomostí doménových špecialistov
  • 8. dokumentácia architektúry </li></ul>Motivácia
  • 9. Abstrakcia <ul><li>1960 – Assembler
  • 10. 1980 – Procedurálne programovanie
  • 11. 1990 – Objektovo orientované programovanie
  • 12. 2000 – Frameworky
  • 13. 2010 – AOP/MDSD/DSL/.. . ? </li></ul>
  • 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. História <ul><li>UML - Unified Modeling Language
  • 16. CASE nástroje - Computer Aided Software Engineering
  • 17. Spustiteľné UML - Executable UML
  • 18. MDA - Model Driven Architecture
  • 19. MDSD - Model Driven Software Development
  • 20. DSL - Domain Specific Languages </li></ul>
  • 21. UML <ul><li>90. roky - asi 80 rôznych notácií
  • 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. CASE nástroje <ul><li>podpora vývojového procesu a metodiky
  • 24. možnosti modelovania systému
  • 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. Spustiteľné UML <ul><li>rozšírenie Shlaer-Mellor metódy pre UML
  • 27. rôzne implementácie
  • 28. potreba jazyka akčnej sémantiky
  • 29. Problémy </li><ul><li>sémantická nejednoznačnosť UML
  • 30. potreba univerzálneho meta modelu </li></ul></ul>
  • 31. MDA <ul><li>štandard OMG
  • 32. CIM (Computer Independent Model)
  • 33. PIM (Platform independent Model)
  • 34. PSM (Platform specific Model)
  • 35. dopracovávanie a označkovanie modelov
  • 36. Množstvo štandardo v </li><ul><li>MOF, QVT, XMI, OCL, ... </li></ul></ul>
  • 37. MDSD <ul><li>kritika MDA viedla k novým a lepším postupom </li><ul><li>všeobecnejšie
  • 38. nezasahovanie do modelov a generovaného kódu
  • 39. odmietnutie nevhodných štandardov (akceptovanie štandardu MOF)
  • 40. vypustenie odlíšenia platformy
  • 41. väčší dôraz na textovú notáciu
  • 42. pragmatický prístup </li></ul></ul>
  • 43. DSL <ul><li>Doménovo špecifické jazyky
  • 44. dlho známa myšlienka dnes jednoduchšie realizovateľná vďaka novým nástrojom a postupom
  • 45. presun dôrazu z modelov na jazyk </li><ul><li>menší význam transformácií modelov
  • 46. upustenie od štandardov MDA </li></ul></ul>
  • 47. Modely a modelovanie <ul><li>Modely
  • 48. Metamodelovanie
  • 49. Obmedzenia
  • 50. Označkovné modely
  • 51. Opätovná použiteľnosť modelov </li></ul>
  • 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. Metamodelovanie <ul><li>M3: meta meta model
  • 54. M2: meta model
  • 55. M1: model
  • 56. M0: reálny objekt
  • 57. Motivácia </li></ul><ul><ul><li>potreba interoperability medzi nástrojmi </li></ul></ul>
  • 58. Obmedzenia <ul><li>Modely predstavujú abstraktnú štruktúru informácie, ktorá často nestačí na vyjadrenie všetkých vzťahov a podmienok
  • 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. založený na teórií množín a predikátovej logike
  • 61. podpora zreťazovania volania funkcií
  • 62. vstupné a výstupné podmienky
  • 63. inkarnácia v podobe jazyka Check </li></ul></ul>
  • 64. Označkované modely <ul><li>Dodatočné informácie vložené do modelu </li><ul><li>opätovné využite modelu
  • 65. komentár, označená hodnota, podpora v UML
  • 66. znečistenie modelu </li></ul><li>málo značiek - rozšíriť model
  • 67. zdrojový kód v značkách - umožniť kombináciu generovaného a ručne písaného kódu
  • 68. veľa značiek s malou variabilitou – parameter transformácie
  • 69. veľa rôznych značiek – model pohľadu </li></ul>
  • 70. Opätovná použiteľnosť modelov <ul><li>Riešenie problémov </li><ul><li>podobne ako vzory
  • 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. Transformácie <ul><li>Vlastnosti transformácií
  • 73. Transformácie medzi modelmi
  • 74. Spájajúce a rozdeľujúce transformácie
  • 75. Vizualizačné transformácie </li></ul>
  • 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. 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. Spájajúce a rozdeľujúce <ul><li>Spájajúce transfromácie </li><ul><li>viacero modelov na vstupe
  • 79. pohľady
  • 80. partície </li></ul><li>Rozdeľujúce transformácie </li><ul><li>viacero modelov na výstupe
  • 81. rozdelenie kvôli generátorom
  • 82. rozdelenie kvôli informáciám pre špecifické technológie
  • 83. trojvrstvová architektúra </li></ul></ul>
  • 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. 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. 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. Spracovanie
  • 88. Návrh </li></ul>
  • 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. Tabuľková
  • 91. Kombinácie – matematická notácia </li></ul>
  • 92. Spracovanie <ul><li>Externé doménovo špecifické jazyky </li><ul><li>treba zabezpečiť infraštruktúru (parser, editor)
  • 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. obmedzenie syntaxou hosťujúceho jazyka </li></ul><li>Generovanie – pomalší vývoj, efektívnejší kód
  • 95. Interpretovanie – rýchlejší vývoj, pomalší kód </li></ul>
  • 96. Návrh <ul><li>Obmedzenie výrazovosti – DSL != GPL
  • 97. „ Veľký“ jazyk – veľa konceptov </li><ul><li>ľahké využitie pre doménových špecialistov
  • 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. Inšpirácia z GPL – rozsahy platnosti, menné priestory, ... </li></ul>
  • 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. AOP a AOSD <ul><li>Záujmy - funkčné požiadavky, ...
  • 102. Prierezové záujmy - nefunkčné požiadavky, logovanie, bezpečnosť, ...
  • 103. Body rezu
  • 104. Aspekty pomocou modelov
  • 105. Prepletanie modelov
  • 106. Aspekty vrámci modelom riadeného vývoja softvéru </li></ul>
  • 107. Prestávka
  • 108. Softec <ul><li>FAAST - class diagramy, CASE, TCL transformácie
  • 109. JavaTec – J2EE, AOP, vývoj v Eclipse, MDA s manuálnym prechodom z PIM do PSM
  • 110. JOK FW – pre konkrétneho zákazníka, rôzne cieľové platformy
  • 111. WAFT - interné DSL, fixná platforma, bez podpory transformácií, interpretácia, založené na OS (Tapestry, Spring, Hibernate, HiveMind, ...)
  • 112. Výrobné linky - firemný framework, aplikačný framework </li></ul>
  • 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. Microsoft </li></ul><ul><ul><li>DSL Tools
  • 115. OSLO </li></ul></ul><ul><li>Jetbrains - Meta Programming System
  • 116. Intentional Software - Intentional Domain Workbench </li></ul>
  • 117. openArchitectureWare <ul><li>MWE - postupy spracovania modelov
  • 118. Check - obmedzenia, založené na OCL
  • 119. Xtend - jazyk transformácií
  • 120. Xpand – šablóny na generovanie kódu
  • 121. Xtext - doménovo špecifické jazyky
  • 122. XWeave – prepletanie modelov </li></ul>
  • 123. Meta Programming System <ul><li>Language Oriented Programming
  • 124. Možnosti </li></ul><ul><ul><li>externé doménovo špecifické jazyky
  • 125. rozšírenia jazykov (Java)
  • 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. implementácia refaktoringu </li></ul></ul>
  • 128. Microsoft OSLO <ul><li>Jazyk M - IntelliPad </li><ul><li>MGrammar - gramatiky
  • 129. MGraph – abstraktná syntax
  • 130. MSchema – db schémy </li></ul><li>Quadrant – nástroj na vizuálne modelovanie
  • 131. MS SQL Repository – už nie je povinná
  • 132. Interpretácia - XML </li><ul><li>Indigo, WPF, ... </li></ul></ul>
  • 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. Jazyk na tvorbu projekcií
  • 135. Kombinácia notácií
  • 136. Možnosť nasadenia editora pre konkrétne DSL </li><ul><li>poisťovníctvo </li></ul></ul>
  • 137. Najlepšie postupy a vzory <ul><li>Proces a organizácia
  • 138. Doménové modelovanie a doménovo špecifické jazyky
  • 139. Architektúra nástrojov
  • 140. Vývoj aplikačnej platformy
  • 141. Otvorené problémy </li></ul>
  • 142. Proces a organizácia <ul><li>Nechajte ľudí robiť to v čom sú dobrí
  • 143. Iteratívny vývoj s dvomi stopami
  • 144. Vyňatie infraštruktúry
  • 145. Vytváranie jazyka paralelne s konceptami
  • 146. Nákupný košík s pevným rozpočtom
  • 147. Obchodovanie s rozsahom
  • 148. Schválenie iterácie
  • 149. Metaware ako produkt
  • 150. Kompatibilná organizácia </li></ul>
  • 151. DSM a DSL <ul><li>Formálny meta model
  • 152. Zdroje pre jazyk
  • 153. Notácia, notácia, notácia
  • 154. Grafická alebo textová notácia
  • 155. Pohľady
  • 156. Partície
  • 157. Poučenie z jazykov tretej generácie
  • 158. Kto sú občania prvej triedy? </li></ul>
  • 159. Architektúra nástrojov <ul><li>Ignorovanie konkrétnej syntaxe
  • 160. Podpora tímovej spolupráce
  • 161. Implementácia meta modelu
  • 162. Na nástrojoch záleží </li></ul>
  • 163. Vývoj aplikačnej platformy <ul><li>Generačná priepasť
  • 164. Bohatá doménovo špecifická platforma
  • 165. Technické subdomény
  • 166. Generovaný kód nie je vhodné upravovať
  • 167. O šablóny sa treba starať
  • 168. Možnosť prispôsobenia metaware-u
  • 169. Netreba zabúdať na testovanie </li></ul>
  • 170. Otvorené problémy <ul><li>Kombinácia notácií (projekčné editory)
  • 171. Modulárnosť doménovo špecifických jazykov (strom abstraktnej syntaxe)
  • 172. Evolúcia doménovo špecifických jazykov a modelov (Edapt, EPatch)
  • 173. Debuggovanie modelov
  • 174. Kombinácia generovania a interpretovania
  • 175. Škálovateľnosť modelov (EMF Index)
  • 176. Zásobníky </li></ul>
  • 177. Otázky? Priestor na diskusiu
  • 178. Ďakujem za Vašu pozornosť! Gabriel Ščerbák 05.06.09

×