Model driven story

23
Model driven story @borisbucha

Transcript of Model driven story

Page 1: Model driven story

Model driven story

@borisbucha

Page 2: Model driven story

Čo je model?

http://xkcd.com/657

<<bullshit>>

Page 3: Model driven story

Prečo modelovať?

• Spoločensko – psychologický aspekt

„chicks think that architects are hot“

<<bullshit>>

Page 4: Model driven story

Prečo modelovať?

• Zachytenie essential complexity• Efektívnejšia komunikácia

Page 5: Model driven story

História sw modelovania

‘80 ‘90 ‘00

• Ambícia lepšie kontrolovať komplexný sw vývoj

• Množstvo vendorov (nekompatibilné)

• Príliš komplikované

• Unifikácia jazyka• Modeluje OOP koncepty

Uml profiles?

Page 6: Model driven story

UML je užitocné ako...(alebo prečo ešte nezomrelo)

• Reverse engineering tool

• Sketching tool

Page 7: Model driven story

DSL - Doménovo špecifický jazyk

Interný vs Externý DSL

@martinfowler

Dependency InjectionDTO

Domain Model

Event Aggregator

Warp Drive

Page 8: Model driven story

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

Page 9: Model driven story

DSL – sa oplatí keď je ...

• Small

• Simple

• Focused

• Executable

A == B

SELECT * from XXX WHERE A == B

Page 10: Model driven story

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/]

Page 11: Model driven story

Externý <- Interný DSL

Page 12: Model driven story

Pattern -> iDSL -> eDSL

Page 13: Model driven story

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

Page 14: Model driven story

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

Page 15: Model driven story

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)

Page 16: Model driven story

Fails

• XLS je binárny formát –> version control

Page 17: Model driven story

NTDSL – Syntax

Page 18: Model driven story

NTDSL – výsledok - UI

Page 19: Model driven story

NTDSL – výsledok - BL

• Workflow DTOs• Parsers• Validators• Responders

Page 20: Model driven story

NTDSL – výsledok – storage

• Repository• DAL• DDL – Tabuľky– Indexy, – ...

• DML– PLSQL– Trigre

Page 21: Model driven story

NTDSL – kúzlo

Page 22: Model driven story

Štatistika – 1 vybraný systém

• * = 18MB – ls -r -include:*.cs,*.aspx,*.ascx,*.ps1, *.pck,*.sql | measure-object -sum -property Length

• *.generated.* = 8MB (44%)

Page 23: Model driven story

Tools

• VBA• XSLT• T4