Alam aeki 2015

|
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
 187 views
of 157

Please download to get full document.

View again

Description
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.
Share
Transcript
  • 1. ALÅM AEKI guida illustrata all’esplorazione di un dominio con
 EventSourcing + EventStorming 5 Febbraio 2015 @ Apra Informatica - Jesi
  • 2. Agenda Selfie Gatto Citazione personaggio famoso GIF AnimateCitazioni film xkcd Citazione letteraria
  • 3. Agenda Contesto Problemi Strumenti Come siamo cambiati
  • 4. @andreabalducci
  • 5. Artigiani del software
  • 6. Fine 2011
  • 7. la tua software house sviluppa anche Intranet aziendali? per il 2012 pensavamo di implementarne una più moderna e dinamica dell'attuale
  • 8. la tua software house sviluppa anche Intranet aziendali? per il 2012 pensavamo di implementarne una più moderna e dinamica dell'attuale
  • 9. Intranet 2.0
  • 10. 10+ filiali 100+ utenti 250.000+ pagine
  • 11. Interviste
  • 12. UX
  • 13. Maggio 2013
  • 14. Giugno 2013
  • 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. Fare tutto …
  • 17. … per il primo rilascio …
  • 18. … dobbiamo fare una sorpresa agli utenti.
  • 19. Ricapitolando
  • 20. Ricapitolando Ambito applicativo esteso Tempo limitato Gruppo di lavoro ristretto Switch “Big Bang” dai sistemi in uso Cliente Enterprise
  • 21. Prospettive ?
  • 22. x nessun gatto ha subito maltrattamenti nella realizzazione di questa applicazione.
  • 23. Consigli?
  • 24. Ok, let’s do it!
  • 25. So che lo state pensando
  • 26. Iniziamo con qualcosa di semplice
  • 27. Prenotazione attrezzature
  • 28. “Nothing surprises me; I’m a scientist.”
  • 29. ResourceTypes ResourcesUsers Reservations 4 Tabelle
  • 30. Tabelle? Non è DDD!
  • 31. ResourceTypes ResourcesUsers Reservations 4 Tabelle
  • 32. ResourceType ResourceUser Reservation 4 Aggregati
  • 33. ResourceType ResourceUser Reservation 4 Aggregati
  • 34. ResourceType Resource User Reservation Aggregati Value Objects +
  • 35. facile facile…
  • 36. …ma…(c’è sempre un ma)
  • 37. “Non l’abbiamo evidenziato perché è scontato che il software lo faccia”
  • 38. “Dobbiamo fare un sistema migliore del precedente, con più funzionalità”
  • 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. Aggiungiamo un flag
  • 41. Storicizziamo il dato
  • 42. Gestiamo l’eccezione
  • 43. Iniettiamo un servizio…
  • 44. “Iniziamo con qualcosa di semplice”
  • 45. “E mo’ ?”
  • 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. “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. You can’t connect the dots looking forward; you can only connect them looking backwards.
  • 49. Luglio 2013
  • 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. …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. …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. Event Storming
  • 54. is a workshop format for Event Storming quickly exploring complex business domains
  • 55. proviamo a cambiare il punto di vista
  • 56. ALÅM AEKI
  • 57. IKEA MÅLA
  • 58. Le informazioni giuste..
  • 59. http://blog.avanscoperta.it/it/2014/05/07/eventstorming-invite-the-right-people/
  • 60. in poco tempo
  • 61. valgono
 un sacco* * [sàc-co] s.m. - fig. fam. Ingente quantità, numero elevato
  • 62. costano solo
 21,87€* * facilitatore non incluso nella confezione. Può creare Crea dipendenza.
  • 63. Scegliete la parete più lunga +
  • 64. Il tempo scorre in questa direzione
  • 65. Un pennarello a testa
  • 66. Start!
  • 67. Domain Event
  • 68. Rappresenta qualcosa di significativo accaduto nel dominio. Domain Event
  • 69. Richiesta
 Approvata
  • 70. Attacchiamo i primi eventi disponendoli sull’asse temporale Richiesta
 Approvata Richiesta
 Confermata Richiesta
 Respinta
  • 71. Command
  • 72. Indica l’intento dell’utente Command
  • 73. Approva
 Richiesta
  • 74. Associamo ad ogni evento il comando relativo. Approva
 Richiesta
  • 75. Read Model
  • 76. Rappresenta il supporto decisionale per l’utente Read Model
  • 77. Lista delle attrezzature disponibili
  • 78. Il readmodel aiuta ad identificare le informazioni necessarie all’utente per prendere decisioni Lista delle attrezzature disponibili
  • 79. Ubiquitous language
  • 80. Definisce con precisione il significato di ogni termine Ubiquitous language
  • 81. Attrezzatura
 Bene materiale oggetto di prenotazione
  • 82. Attrezzatura
 Bene materiale oggetto di prenotazione ambiguitàconvergenza sul significato dei termini
  • 83. Problema smontato!
  • 84. is a workshop format for Event Storming quickly exploring complex business domains non compila!!!
  • 85. Le nostre “aggiunte”
  • 86. http://xkcd.com/844/
  • 87. Event Sourcing
  • 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. 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. 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. 15 Settembre 2013 16 Settembre 2013 12 Dicembre 2013 5 Gennaio 2014 6 Maggio 2014
  • 92. CQRS
  • 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. Business Logic Decision support system
  • 95. Query CommandBusiness Logic Decision support system
  • 96. Command Query Event Event Event
  • 97. join the dots…
  • 98. Defrag
  • 99. Aggreghiamo i post-it Defrag
  • 100. Aggregato Aggregato Bounded Context Aggregato Bounded Context
  • 101. Invarianti
  • 102. Sono le regole che non possiamo violare Invarianti
  • 103. Non sono ammesse prenotazioni sovrapposte per singola attrezzatura.
  • 104. Aggregato Aggregato Bounded Context Aggregato Bounded Context Non sono ammesse prenotazioni sovrapposte per singola attrezzatura.
  • 105. Transizioni
  • 106. Esploriamo le relazioni tra comandi ed eventi Transizioni
  • 107. Aggregato Aggregato Bounded Context Aggregato Bounded Context
  • 108. Aggregato
  • 109. if()
  • 110. if()
  • 111. Process
 manager
  • 112. Rappresenta un processo di business complesso Process
 manager
  • 113. Assegnazione attrezzatura
  • 114. Assegnazione attrezzatura
  • 115. Command Query Responsibility Segregation Command Process Manager Event Event Aggregate Projections Query Model Query Model
  • 116. Assegnazione attrezzatura
  • 117. Code well, code fast
  • 118. Assegnazione attrezzatura Lista delle attrezzature disponibili Approva
 Richiesta Richiesta
 Approvata Non sono ammesse prenotazioni sovrapposte per singola attrezzatura.
  • 119. AssegnazioneAttrezzature (process) AttrezzatureDisponibili (model) ApprovaRichiesta (command) RichiestaApprovata (event) VietaPrenotazioniSovrapposte (business rule)
  • 120. BDD
  • 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. Continuous Integration
  • 123. TeamCity
  • 124. Kanban
  • 125. Continuous Delivery
  • 126. ReadModel NEventStore Intranet Auth Tools Collaboration DMS Process Manager Projections MVC
 WebApi SignalR Document
 Store msg query pushhttp write eventcommand CQRS + ES
  • 127. Cosa abbiamo imparato?
  • 128. Metriche
  • 129. “Iteration is the most important part of the strategy. It needs to be very, very fast and always based on learning.”
  • 130. Intranet 2.0
  • 131. 知識
  • 132. Jarvis: Amazing Retrieval & Visualization Information System
  • 133. grazie! lanyrd.com/cchzbb feedback => andrea.balducci@prxm.it
  • We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks