5. História sw modelovania
• Ambícia lepšie
kontrolovať
• Unifikácia jazyka
komplexný sw vývoj
• Modeluje OOP koncepty
• Množstvo vendorov
(nekompatibilné)
• Príliš komplikované
Uml profiles?
‘80 ‘90 ‘00
6. UML je užitocné ako...
(alebo prečo ešte nezomrelo)
• Reverse engineering tool
• Sketching tool
7. DSL - Doménovo špecifický jazyk
Interný vs Externý DSL
Dependency Injection
DTO
@martinfowler
Domain Model
Event Aggregator
Warp Drive
8. DSL
• interné (Fluent APIs) vs externé
(textové, grafické)
• Interpretácia vs generovanie kódu
• imperatívne vs deklaratívne (čo spraviť vs ako
sa to má spraviť)
9. DSL – sa oplatí keď je ...
• Small SELECT * from XXX
WHERE A == B
• Simple
A == B
• Focused
• Executable
10. Externý DSL v praxi
"I’ll be honest with you – building this stuff is expensive."
[http://www.udidahan.com/2012/05/23/nservicebus-3-2-released/]
"I don’t think we’ll be able to offer the full round-tripping
model-to-code-back-to-model abilities for some time (as
they’re horrendously difficult to do well)"
[http://www.udidahan.com/2012/04/24/nservicebus-studio-presentation-online/]
13. NT File processing language
• DSL pre popis schémy a pravidiel spracovania súborov zákazníka
• NT File – xml alebo flat textový súbor s nudnými dátami o
osobách, účtoch, úveroch, úverových incidentoch, ...
• Spracovanie znamená: validácia, integrácia dát, tvorba odpovede o
spracovaní
• relatívne jednoduchá doména
14. NTDSL – Ciele
• Dostatočne popisný
– Schéma súboru
– Validácie (fixné domény, autorizácia, invarianty)
– tvorba odpovedí
– Integrácia dát (RDBMS)
• „Spustiteľný“
– Targetuje všetky app vrstvy
– Nachádzanie nekonzistencií modelu
– Môže byť súčasťou CI
• Zdieľaný
– Analytik <-> Programátor (vlastníci)
– Analytik -> Zákazník
15. NTDSL – Ciele
• Čitatéľný s minimom kompromisov kvôli IT
– Microsoft EXCEL !!!
– Analytik sa môže vyblázniť
• Deklaratívny = jednoduhšie spustiťeľný / optimalizovateľný
• Rozšíriteľný
– “hooks” (embednutý C#)
– Tvorba komponentov, nie kompletnej app
– Paralelný technický model
• Lacný (NIE Wizardy a Parsre)