Event based modeling iad 2012

Click here to load reader

  • date post

    17-Oct-2014
  • Category

    Technology

  • view

    2.362
  • download

    1

Embed Size (px)

description

Scan delle sldes di accompagnamento del workshop su Event-Driven modeling all'Italian Agile Day - Milano 2012

Transcript of Event based modeling iad 2012

marted 27 novembre 12

Obiettivi

Giungere ad un modello di un sistema complesso in tempi rapidifare emergere i concetti fondamentali di Domain-Driven Design senza particolari prerequisiti.

marted 27 novembre 12

marted 27 novembre 12

In pratica...

Srotoliamo un rotolone di carta sulla parete.Abbiamo a disposizione 25 metri lineari di spazio per modellareLavoro collaborativo

marted 27 novembre 12

Domain EventsApparente parentela con un Activity Diagram

...ma non stiamo facendo UMLGli eventi non possono essere messi in discussione. Sono avvenuti. Prendiamone atto.Visione dinsiemeTutti i team tendono a partire per la tangente immaginando un dominio, invece che chiedere allesperto di dominio.

Il sistema reale potrebbe risultare molto pi sempliceIl sistema reale potrebbe risultare molto pi complesso

marted 27 novembre 12

Dritta:

...la cosa molto pi interessante se esploriamo collaborativamente le aree che non conosciamo.

...con lesperto di dominio.

... con esempi concreti.

marted 27 novembre 12

marted 27 novembre 12

origine degli eventiGli eventi non nascono dal nulla:

alcuno nascono in risposta ad azioni degli utentialtri nascono in sistemi esternialtri sono originati dallo scorrere del tempo...altri sono generati in risposta ad altri eventi

marted 27 novembre 12

marted 27 novembre 12

marted 27 novembre 12

Event FlowRicerchiamo antefatti e conseguenze dei nostri eventiIl trucco del participio passato aiuta a chiarire la semantica:

matrimonio non un evento (ma non ditelo a vostra moglie/marito)

Pi attori entrano nel nostro sistemamarted 27 novembre 12

marted 27 novembre 12

AggregatesCome definire correttamente gli aggregati? questa la questione che arrovella ogni DDD practitioner

fate un giro su DDD-IT, se non ci credete

Lobiettivo di questo esperimento di arrivare ad una loro definizione per una strada diversa dal solito

marted 27 novembre 12

DefinizioneUnaggregato rappresenta una unit di consistenza: un gruppo di oggetti il cui stato cambia simultaneamente.

...ma cos non molto chiaro......quanto sono grandi questi oggetti?...come sono fatti?

Ha a che fare con i confini transazionali, ma non detto che i nostri siano Ok.

marted 27 novembre 12

Rule of thumb

Per individuare cosa fa parte dellaggregato possiamo pensare a

Informazioni che vengono cancellate assiemeInformazioni che vengono spostate assiemeInformazioni che vengono distribuite assieme

marted 27 novembre 12

Invarianti

Dimentichiamo il dato:Laggregato pu accettare o rifiutare il comando.

Sulla base di quali informazioni?

Cosa sempre garantito per il nostro aggregato?

marted 27 novembre 12

marted 27 novembre 12

AggregatiLa prospettiva basata sulle invarianti aiuta a modellare correttamente gli aggregati

Mi limito ad una dimensione che posso controllarePropago le variazioni con Domain EventsEsploro correttamente il dominioIl sistema eventualmente consistente

marted 27 novembre 12

EsempioLimite massimo di partecipanti per classe:

Da dove deriva?

Limite logistico aula? --> accetto e tratto per una location pi adattaLimite fisiologico corso --> stand-by e tratto per una nuova edizione

Non impongo requisiti non presenti nel sistema

marted 27 novembre 12

marted 27 novembre 12

SubdomainsRappresentano la visione business del sistemaAlcune porzioni sono fondamentali per la competitivit della nostra azienda.

Es contenuti su web, marketing, quello che ci fa vendere qualcosa in pi.

Altre sono semplicemente necessarie.Es. fatturazione: serve, ma non avremo nessun cliente un pi per la bellezza ed il tempismo delle nostre fatture.

marted 27 novembre 12

LinguaggiIn aziende di medie dimensioni i referenti sono diversi.

Hanno obiettivi diversiParlano lingue diverse...richiederanno modelli diversi

Attenzione: non stiamo parlando (ancora) dei Bounded Contexts...

marted 27 novembre 12

marted 27 novembre 12

Bounded ContextsEvidenziano i diversi modelli in gioco

Applicazioni softwareComponenti legacyLinguaggi utilizzati

Sono una foto della realt, non di come vorremmo che fosse.

marted 27 novembre 12

marted 27 novembre 12

Users & PersonasPossiamo aggiungere informazioni relative agli utenti, o alle loro famigliePossiamo evidenziare le caratteristiche chiave delle personas e renderle parte del modello......specialmente se questo genera una conversazione interessante con gli esperti di dominio

marted 27 novembre 12

marted 27 novembre 12

TestsDurante la conversazione emergono dettagli che ha senso catturare in un test.

Scritto in linguaggio naturale...secondo gli schemi BDD (--> Cucumber)

In una prospettiva ad eventi, la struttura Given [events] When [command] Then [event] molto interessante :-)

marted 27 novembre 12

marted 27 novembre 12

TakeawaysSiamo riusciti a modellare un sistema complesso ignorando i dati

... e se il data model fosse parte del problema?

Abbiamo mantenuto il focus sul comportamento del sistema e non sulla struttura static

marted 27 novembre 12

TakeawaysQuesto modello ha valore anche come strumento di apprendimento collettivo, e come visione di insieme (non detto che gli esperti di dominio sappiano gi tutto)Il tempo tiranno, ma...Lo spazio tiranno, ma...

marted 27 novembre 12

marted 27 novembre 12

Sistemi LegacyIl modello che abbiamo costruito molto vicino ad un modello ideale del sistema

NON il punto di partenza per rifare tutto!Ma un buon punto di riferimento per stabilire una direzione

Componenti legacy che non fanno parte del dominio, emergono come complessit accidentale.

Operazioni batch, foglietti che non sapete dove piazzare......sono fuori posto come uno squatter alla prima della Scala

marted 27 novembre 12