Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alam aeki 2015

Tecniche e tools per velocizzare il ciclo di sviluppo del software in ambito enterprise. Riassunto di quello che abbiamo imparato fino ad oggi nel realizzare Jarvis.

  • Login to see the comments

Alam aeki 2015

  1. 1. ALÅM AEKI guida illustrata all’esplorazione di un dominio con
 EventSourcing + EventStorming 5 Febbraio 2015 @ Apra Informatica - Jesi
  2. 2. Agenda Selfie Gatto Citazione personaggio famoso GIF AnimateCitazioni film xkcd Citazione letteraria
  3. 3. Agenda Contesto Problemi Strumenti Come siamo cambiati
  4. 4. @andreabalducci
  5. 5. Artigiani del software
  6. 6. Fine 2011
  7. 7. la tua software house sviluppa anche Intranet aziendali? per il 2012 pensavamo di implementarne una più moderna e dinamica dell'attuale
  8. 8. la tua software house sviluppa anche Intranet aziendali? per il 2012 pensavamo di implementarne una più moderna e dinamica dell'attuale
  9. 9. Intranet 2.0
  10. 10. 10+ filiali 100+ utenti 250.000+ pagine
  11. 11. Interviste
  12. 12. UX
  13. 13. Maggio 2013
  14. 14. Giugno 2013
  15. 15. Documentale Enterprise Search Calendari Personali e Condivisi Ticket di assistenza Richieste POS Richieste WebBanking Rubrica dinamica Prenotazione attrezzature Statistiche Link Utili Organigramma Censimento IT Single Sign-on Pubblicazione ProdottiNotifiche push Chat Scambio files
  16. 16. Fare tutto …
  17. 17. … per il primo rilascio …
  18. 18. … dobbiamo fare una sorpresa agli utenti.
  19. 19. Ricapitolando
  20. 20. Ricapitolando Ambito applicativo esteso Tempo limitato Gruppo di lavoro ristretto Switch “Big Bang” dai sistemi in uso Cliente Enterprise
  21. 21. Prospettive ?
  22. 22. x nessun gatto ha subito maltrattamenti nella realizzazione di questa applicazione.
  23. 23. Consigli?
  24. 24. Ok, let’s do it!
  25. 25. So che lo state pensando
  26. 26. Iniziamo con qualcosa di semplice
  27. 27. Prenotazione attrezzature
  28. 28. “Nothing surprises me; I’m a scientist.”
  29. 29. ResourceTypes ResourcesUsers Reservations 4 Tabelle
  30. 30. Tabelle? Non è DDD!
  31. 31. ResourceTypes ResourcesUsers Reservations 4 Tabelle
  32. 32. ResourceType ResourceUser Reservation 4 Aggregati
  33. 33. ResourceType ResourceUser Reservation 4 Aggregati
  34. 34. ResourceType Resource User Reservation Aggregati Value Objects +
  35. 35. facile facile…
  36. 36. …ma…(c’è sempre un ma)
  37. 37. “Non l’abbiamo evidenziato perché è scontato che il software lo faccia”
  38. 38. “Dobbiamo fare un sistema migliore del precedente, con più funzionalità”
  39. 39. Statistiche utente / risorsa / tipologia L’auto è in officina Il PC non è configurato Alla fine di una riunione la sala deve essere pulita prima di essere nuovamente disponibile Gli utenti prenotano le attrezzature disponibili… …e il nostro ufficio decide a chi darle. Un utente può annullare una prenotazione… …ma noi dobbiamo confermare l’annullamento. Alcune richieste hanno precedenza su altre La berlina è riservata al C.D.A. Storico delle prenotazioni Notifiche ad ogni evento
  40. 40. Aggiungiamo un flag
  41. 41. Storicizziamo il dato
  42. 42. Gestiamo l’eccezione
  43. 43. Iniettiamo un servizio…
  44. 44. “Iniziamo con qualcosa di semplice”
  45. 45. “E mo’ ?”
  46. 46. “Molte di quelle che chiamiamo difficoltà non ci paiono tali se non perché non ci vogliam torre la briga di cercare i mezzi, spesso molto semplici e maneggevoli, che basterebbero a superarle.” Arturo Graf, Ecce Homo, 1908
  47. 47. “Molte di quelle che chiamiamo difficoltà non ci paiono tali se non perché non ci vogliam torre la briga di cercare i mezzi, spesso molto semplici e maneggevoli, che basterebbero a superarle.” Arturo Graf, Ecce Homo, 1908
  48. 48. You can’t connect the dots looking forward; you can only connect them looking backwards.
  49. 49. Luglio 2013
  50. 50. La mia idea era quella di focalizzarci su Event Storming o comunque su tecniche / trucchi / etc che facilitino la modellazione di un dominio. Sto modellando flussi come se non ci fosse un domani.. E’ necessaria una sala con almeno una superficie utile di grandi dimensioni. Utilizzeremo rotoli di carta per la visualizzazione dei flussi e per la costruzione del modello. Ciao Brando, ho visto su slideshare del materiale che hai pubblicato. Vorrei organizzare un workshop sulla modellazione.
  51. 51. …the whole thing exploded in summer 2013. While I realised there was a lot of value in it, other practitioners (Mathias Verraes, Tom Janssen, Marco Heimeshoff, Yves Reynhout, Tomas Jaskula, Alessandro Colla, Andrea Balducci, Jef Claes, just to name a few) started exploring and playing with the format with amazing results, leading me to the conclusion that this is something more than “just another workshop format”. http://ziobrando.blogspot.it/2013/11/introducing-event-storming.html
  52. 52. …the whole thing exploded in summer 2013. While I realised there was a lot of value in it, other practitioners (Mathias Verraes, Tom Janssen, Marco Heimeshoff, Yves Reynhout, Tomas Jaskula, Alessandro Colla, Andrea Balducci, Jef Claes, just to name a few) started exploring and playing with the format with amazing results, leading me to the conclusion that this is something more than “just another workshop format”. http://ziobrando.blogspot.it/2013/11/introducing-event-storming.html
  53. 53. Event Storming
  54. 54. is a workshop format for Event Storming quickly exploring complex business domains
  55. 55. proviamo a cambiare il punto di vista
  56. 56. ALÅM AEKI
  57. 57. IKEA MÅLA
  58. 58. Le informazioni giuste..
  59. 59. http://blog.avanscoperta.it/it/2014/05/07/eventstorming-invite-the-right-people/
  60. 60. in poco tempo
  61. 61. valgono
 un sacco* * [sàc-co] s.m. - fig. fam. Ingente quantità, numero elevato
  62. 62. costano solo
 21,87€* * facilitatore non incluso nella confezione. Può creare Crea dipendenza.
  63. 63. Scegliete la parete più lunga +
  64. 64. Il tempo scorre in questa direzione
  65. 65. Un pennarello a testa
  66. 66. Start!
  67. 67. Domain Event
  68. 68. Rappresenta qualcosa di significativo accaduto nel dominio. Domain Event
  69. 69. Richiesta
 Approvata
  70. 70. Attacchiamo i primi eventi disponendoli sull’asse temporale Richiesta
 Approvata Richiesta
 Confermata Richiesta
 Respinta
  71. 71. Command
  72. 72. Indica l’intento dell’utente Command
  73. 73. Approva
 Richiesta
  74. 74. Associamo ad ogni evento il comando relativo. Approva
 Richiesta
  75. 75. Read Model
  76. 76. Rappresenta il supporto decisionale per l’utente Read Model
  77. 77. Lista delle attrezzature disponibili
  78. 78. Il readmodel aiuta ad identificare le informazioni necessarie all’utente per prendere decisioni Lista delle attrezzature disponibili
  79. 79. Ubiquitous language
  80. 80. Definisce con precisione il significato di ogni termine Ubiquitous language
  81. 81. Attrezzatura
 Bene materiale oggetto di prenotazione
  82. 82. Attrezzatura
 Bene materiale oggetto di prenotazione ambiguitàconvergenza sul significato dei termini
  83. 83. Problema smontato!
  84. 84. is a workshop format for Event Storming quickly exploring complex business domains non compila!!!
  85. 85. Le nostre “aggiunte”
  86. 86. http://xkcd.com/844/
  87. 87. Event Sourcing
  88. 88. “Capture all changes to an application state as a sequence of events.” Event Sourcing http://martinfowler.com/eaaDev/EventSourcing.html TimeRisorsa
 Censita Risorsa
 resa disponibile Prenotazione
 Inserita Prenotazione
 Approvata Prenotazione
 Inserita Prenotazione
 Confermata Prenotazione
 Non Approvata Risorsa
 Dismessa
  89. 89. Risorsa
 Censita Risorsa
 resa disponibile Prenotazione
 Inserita Prenotazione
 Approvata Prenotazione
 Inserita Prenotazione
 Confermata Prenotazione
 Non Approvata Risorsa
 Dismessa Risorsa_1 Prenotazione_1 Prenotazione_2
  90. 90. Title : ”Budget 2014 - IT”,
 LastModified : “2013-09-15”,
 Tags : [], Author: “Board of Directors”, PublishedBy: null,
 File: “Budget.xlsx” Who: “Mr. Smith”, Why: “DocumentCreated”, When: “2013-09-15 18:35”,
 What:{ Title : ”Budget 2014 - IT”,
 Author: “Board of Directors”, File: “Budget.xlsx” } Who: “Mary J.”, Why: “RevisionAdded”, When: “2013-09-16 09:40”,
 What: {
 File: “Budget with Costs.xlsx”
 } Who: “Mary J.”, Why: “DocumentTagged”, When: “2013-09-16 09:40”,
 What: {
 Tags : [“Draft”, “Accounting”]
 } Who: “Luther Blissett”, Why: “RevisionAdded”, When: “2013-12-06 21:35”,
 What: {
 File: “Budget with Costs & Sales Forecast.xlsx” } Who: “Luther Blissett”, Why: “DocumentTagged”, When: “2013-12-06 21:35”,
 What: {
 Tags : [“Budget”,”Sales”,“Accounting”]
 } Who: “Jane Doe”, Why: “DocumentPublished”, When: “2014-01-05 23:17”,
 What : {
 Title : “Budget 2014”
 Tags : [“Budget”,”Sales”,“Accounting”]
 } TIME Title : ”Budget 2014”,
 LastModified : “2014-01-05”,
 Tags : [“Budget”, “Sales”, “Accounting”], Author: “Board of Directors”, PublishedBy: “Jane Doe”,
 File: “Budget with Costs & Sales Forecast.xlsx” Title : ”Budget 2014 - IT”,
 LastModified : “2013-09-16”,
 Tags : [“Draft”, “Accounting”], Author: “Board of Directors”, PublishedBy: null,
 File: “Budget with Costs.xlsx” Title : ”Budget 2014 - IT”,
 LastModified : “2013-12-06”,
 Tags : [“Budget”,”Sales”,“Accounting”], Author: “Board of Directors”, PublishedBy: null,
 File: “Budget with Costs & Sales Forecast.xlsx” Loss of Memory
  91. 91. 15 Settembre 2013 16 Settembre 2013 12 Dicembre 2013 5 Gennaio 2014 6 Maggio 2014
  92. 92. CQRS
  93. 93. CQRS “At its heart is a simple notion that you can use a different model to update information than the model you use to read information” http://martinfowler.com/bliki/CQRS.html
  94. 94. Business Logic Decision support system
  95. 95. Query CommandBusiness Logic Decision support system
  96. 96. Command Query Event Event Event
  97. 97. join the dots…
  98. 98. Defrag
  99. 99. Aggreghiamo i post-it Defrag
  100. 100. Aggregato Aggregato Bounded Context Aggregato Bounded Context
  101. 101. Invarianti
  102. 102. Sono le regole che non possiamo violare Invarianti
  103. 103. Non sono ammesse prenotazioni sovrapposte per singola attrezzatura.
  104. 104. Aggregato Aggregato Bounded Context Aggregato Bounded Context Non sono ammesse prenotazioni sovrapposte per singola attrezzatura.
  105. 105. Transizioni
  106. 106. Esploriamo le relazioni tra comandi ed eventi Transizioni
  107. 107. Aggregato Aggregato Bounded Context Aggregato Bounded Context
  108. 108. Aggregato
  109. 109. if()
  110. 110. if()
  111. 111. Process
 manager
  112. 112. Rappresenta un processo di business complesso Process
 manager
  113. 113. Assegnazione attrezzatura
  114. 114. Assegnazione attrezzatura
  115. 115. Command Query Responsibility Segregation Command Process Manager Event Event Aggregate Projections Query Model Query Model
  116. 116. Assegnazione attrezzatura
  117. 117. Code well, code fast
  118. 118. Assegnazione attrezzatura Lista delle attrezzature disponibili Approva
 Richiesta Richiesta
 Approvata Non sono ammesse prenotazioni sovrapposte per singola attrezzatura.
  119. 119. AssegnazioneAttrezzature (process) AttrezzatureDisponibili (model) ApprovaRichiesta (command) RichiestaApprovata (event) VietaPrenotazioniSovrapposte (business rule)
  120. 120. BDD
  121. 121.        [Subject("with  a  deleted  handle")]          public  class  when_trying_to_delete_again  :  with_an_initialized_handle          {                  Establish  context  =  ()  =>  {  State.MarkAsDeleted();  };                  Because  of  =  ()  =>  HandleAggregate.Delete();                  It  HandleDeletedEvent_should_be_raised  =  ()  =>                          EventHasBeenRaised<HandleDeleted>().ShouldBeFalse();          }   Machine.Specifications
  122. 122. Continuous Integration
  123. 123. TeamCity
  124. 124. Kanban
  125. 125. Continuous Delivery
  126. 126. ReadModel NEventStore Intranet Auth Tools Collaboration DMS Process Manager Projections MVC
 WebApi SignalR Document
 Store msg query pushhttp write eventcommand CQRS + ES
  127. 127. Cosa abbiamo imparato?
  128. 128. Metriche
  129. 129. “Iteration is the most important part of the strategy. It needs to be very, very fast and always based on learning.”
  130. 130. Intranet 2.0
  131. 131. 知識
  132. 132. Jarvis: Amazing Retrieval & Visualization Information System
  133. 133. grazie! lanyrd.com/cchzbb feedback => andrea.balducci@prxm.it

×