You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/01-development_process/businessDomainAnalysisAndDesign.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,36 +8,36 @@ has_children: false
8
8
9
9
# Analisi e Design del Business Domain
10
10
11
-
Il campo del dominio sanitario presenta numerose sfaccettature che possono rendere estremamente complesso comprendere appieno questo ambito, soprattutto per coloro che non sono addetti ai lavori e non hanno familiarità con il linguaggio tecnico e le pratiche specifiche di questo settore. A fronte di ciò si è reso necessario intraprendere un percorso di Knowledge Crunching, al fine di colmare il gap della lack of knowledge e, ancora più importante, della lack of awareness.
11
+
Il campo del dominio sanitario presenta numerose sfaccettature che possono rendere estremamente complesso comprendere appieno questo ambito, soprattutto per coloro che non sono addetti ai lavori e non hanno familiarità con il linguaggio tecnico e le pratiche specifiche di questo settore. A fronte di ciò si è reso necessario intraprendere un percorso di Knowledge Crunching, al fine di colmare il gap della lack of knowledge e, ancora più importante, della lack of awareness.
12
12
13
13
Considerando che il DDD ha l'obiettivo di ottenere una conoscenza condivisa del dominio è necessario stabilire un unico punto nel quale la conoscenza converge ed evolve in modo organizzato ed accessibile da tutti, anche dagli esperti di dominio in maniera semplice. A tal fine, adottando un approccio che si avvicinasse alla realtà, si è scelto di utilizzare [Confluence](https://www.atlassian.com/it/software/confluence), un software commerciale nel quale è stato documentata sia l'analisi del *problem space* che la progettazione del *solution space*.
14
14
15
15
La scelta di questo strumento è stata incentivata dalla possibilità di integrazione con strumenti di comunicazione come [Slack](https://slack.com/intl/it-it). Infatti, considerando che il processo di Knowledge Crunching necessita di più meeting, è necessario prevedere uno strumento che gestisca la comunicazione, assicurando cooperazione e collaborazione.
16
16
17
-
Il sito di progetto è visitabile al seguente link: [https://giacomoaccursi.atlassian.net/l/cp/vAxD2YKh](https://giacomoaccursi.atlassian.net/l/cp/vAxD2YKh)
17
+
**Il sito di progetto è visitabile al seguente link: [https://giacomoaccursi.atlassian.net/l/cp/vAxD2YKh](https://giacomoaccursi.atlassian.net/l/cp/vAxD2YKh)**
18
18
19
-
Seguendo le best-practice del Knowledge Crunching abbiamo cercato, insieme all'esperto del dominio (il professore del corso), di comprendere il dominio del problema. Abbiamo svolto un primo meeting con l'obiettivo di raccogliere i requisiti coarse-grained del sistema e la struttura del blocco operatorio. Durante il meeting è stato eseguito dello sketching tramite la creazione di una mind-map che riassumesse e mettesse in evidenza i concetti chiave del dominio, evitando così la perdita di informazioni. Questo primo incontro ha inoltre permesso l'identificazione degli stakeholder coinvolti e gli esperti di dominio da consultare nelle fasi successive. A seguito di ciò, al fine di delineare il comportamento del sistema, è stato effettuato un ulteriore meeting che ha condotto alla redazione dei diagrammi dei casi d'uso.
19
+
Seguendo le best-practice del Knowledge Crunching abbiamo cercato, insieme all'esperto del dominio (il professore del corso), di comprendere il dominio del problema. Abbiamo svolto un primo meeting con l'obiettivo di raccogliere i requisiti coarse-grained del sistema e la struttura del blocco operatorio. Durante il meeting è stato eseguito dello sketching tramite la creazione di una mind-map che riassumesse e mettesse in evidenza i concetti chiave del dominio, evitando così la perdita di informazioni. Questo primo incontro ha inoltre permesso l'identificazione degli stakeholders coinvolti e gli esperti di dominio da consultare nelle fasi successive. A seguito di ciò, al fine di delineare il comportamento del sistema, è stato effettuato un ulteriore meeting che ha condotto alla redazione dei diagrammi dei casi d'uso.
20
20
Partendo da essi abbiamo organizzato un ulteriore meeting al fine di raffinare, in modo iterativo ed incrementale, la conoscenza di alcuni processi ponendo domande mirate al committente. Questo ha permesso, tramite l'ausilio di strumenti di sketching come il Domain Storytelling, di ottenere un aumento della collaborazione diminuendo al tempo stesso l'ambiguità.
21
21
Infine, gli ultimi dubbi rimasti e i dettagli prettamente tecnici sono stati chiariti effettuando un'intervista che ha coinvolto gli sviluppatori, l'esperto di dominio e un esperto tecnico dell'ospedale.
22
22
23
-
Una volta ottenuta una soddisfacente conoscenza del dominio, al fine di gestire la complessità e lo spazio del problema, sono stati individuati i relativi sottodomini che lo compongono, classificandoli in una delle tre tipologie tipiche del DDD. Questo ci ha aiutato a suddividere il problema in modo che fosse di più facile gestione e manutenibile.
24
-
Inoltre, per alcuni sottodomini è stata eseguita un'analisi più approfondita, accompagnata da una predizione della loro futura evoluzione, tramite l'ausilio di Core Domain Charts.
23
+
Una volta ottenuta una soddisfacente conoscenza del dominio, al fine di gestire la complessità e lo spazio del problema, sono stati individuati i relativi sottodomini che lo compongono, classificandoli in una delle tre tipologie tipiche del DDD. Questo ci ha aiutato a comprenderne le priorità e a suddividere il problema in modo che fosse di più facile gestione.
24
+
Inoltre, per alcuni sottodomini è stata eseguita un'analisi più approfondita, accompagnata da una predizione della loro futura evoluzione, tramite l'ausilio di *Core Domain Charts*.
25
25
26
-
Durante i vari meeting svolti, e per tutta la durata del progetto, si è cercato di individuare un linguaggio preciso e consistente eliminando qualsiasi forma di ambiguità, andando a creare di fatto quello che viene definito Ubiquitous Language. Nello specifico è stata creata una tabella dove ad ogni termine è associata una breve descrizione e i sottodomini d'interesse.
26
+
Durante i vari meeting svolti, e per tutta la durata del progetto, si è cercato di individuare un linguaggio preciso e consistente eliminando qualsiasi forma di ambiguità, andando a creare di fatto quello che viene definito *Ubiquitous Language*. Nello specifico è stata creata una tabella dove ad ogni termine è associata una breve descrizione e i sottodomini d'interesse.
27
27
28
28
Nell'ultima fase di analisi del dominio del problema si è provveduto, per ogni sottodominio, alla formalizzazione dei requisiti secondo la suddivisione tradizionale (business, utente, funzionali, non funzionali e di implementazione).
29
29
30
-
La suddivisione del problema in sottodomini ha permesso di comprendere quali siano le parti più importanti e in cui impiegare la maggior parte delle risorse. Quindi, dopo aver analizzato il problem space si è passati alla fase di analisi e progettazione del solution space partendo dalla progettazione dei Bounded Context che hanno permesso allo stesso tempo di iniziare il design dell'architettura del sistema stesso.
30
+
La suddivisione del problema in sottodomini ha permesso di comprendere quali siano le parti più importanti e in cui impiegare la maggior parte delle risorse. Quindi, dopo aver analizzato il *problem space* si è passati alla fase di analisi e progettazione del *solution space* partendo dalla progettazione dei *Bounded Context* che hanno permesso allo stesso tempo di iniziare il design dell'architettura del sistema stesso.
31
31
32
-
Nella progettazione dei Bounded Context abbiamo cercato di progettarli per rimpiazzo invece che per riuso, seguendo le best-practices del DDD. L'obiettivo di essi è la separazione dei modelli e dei loro vari significati, evitando così l'ambiguità e rispettando il Single Responsibility Principle (SRP). Inoltre, ogni Bounded Context è stato pensato per essere un servizio indipendente nella sua progettazione, implementazione e sopratutto nel suo versionamento ed evoluzione. Essi rappresentano non solo un boundary di modello, ma anche un boundary fisico e, cercando di simulare un contesto più reale possibile, abbiamo cercato di creare dei sotto-team (da una, fino al massimo di due persone) che si occuppassero di ogni singolo Bounded Context.
32
+
Nella progettazione dei Bounded Context abbiamo cercato di progettarli per rimpiazzo invece che per riuso, seguendo le best-practices del DDD. L'obiettivo di essi è la separazione dei modelli e dei loro vari significati, evitando così l'ambiguità e rispettando il *Single Responsibility Principle* (SRP). Inoltre, ogni Bounded Context è stato pensato per essere un servizio indipendente nella sua progettazione, implementazione e sopratutto nel suo versionamento ed evoluzione. Essi rappresentano non solo un boundary di modello, ma anche un boundary fisico e, cercando di simulare un contesto più reale possibile, abbiamo cercato di creare dei sotto-team (da una, fino al massimo di due persone) che si occuppassero di ogni singolo Bounded Context.
33
33
34
-
Come riportanto nel [sito di progetto](https://giacomoaccursi.atlassian.net/wiki/spaces/SOB/pages/3276818/Context+Map), l'analisi dettagliata svolta sui sottodomini ha portato ad una corrispondenza 1:1 tra i sottodomini e i Bounded Context, anche se i primi sono stati semplicemente individuati, mentre i secondi progettati.
34
+
Come riportato nel [sito di progetto](https://giacomoaccursi.atlassian.net/wiki/spaces/SOB/pages/3276818/Context+Map), l'analisi dettagliata svolta sui sottodomini ha portato ad una corrispondenza 1:1 tra i sottodomini e i Bounded Context, anche se i primi sono stati semplicemente individuati, mentre i secondi progettati.
35
35
36
-
Dopodichè, al fine di definire le relazioni presenti tra i diversi Bounded Context, è stata creata la relativa Context Map, sfruttando il software *Context Mapper*, che ha permesso di mettere in evidenza aspetti tecnici ed organizzativi.
36
+
Dopodichè, al fine di definire le relazioni presenti tra i diversi Bounded Context, è stata creata la relativa *Context Map*, sfruttando il software *Context Mapper*, che ha permesso di mettere in evidenza aspetti tecnici ed organizzativi.
37
37
38
-
Una volta definita la Context Map abbiamo formalizzato il modello del dominio di ogni sottodominio individuato sfruttando gli elementi del design tattico del DDD che ci hanno permesso di definire un meta-modello con cui poi mappare i concetti, individuati nel dominio, all'interno del codice, cercando di rispettare al tempo stesso l'Ubiquitous Language.
38
+
Una volta definita la Context Map abbiamo formalizzato il modello del dominio di ogni sottodominio individuato sfruttando gli elementi del design tattico del DDD che ci hanno permesso di definire un meta-modello con cui poi mappare i concetti, individuati nel dominio, all'interno del codice cercando di rispettare al tempo stesso l'Ubiquitous Language.
39
39
40
-
Dall'intervista svolta con l'esperto di dominio è emersa la necessità dello sviluppo di due tipologie di dashboard: l'*Operating Block Dashboard* e l'*Operating Room Dashboard*, perciò abbiamo organizzato un ulteriore meeting con l'obiettivo di definire i rispettivi mockup. Al fine di aumentare la collaborazione e la comprensione, si è scelto di sfruttare lo strumento *Figma* per produrre mockup *interattivi*.
40
+
Dall'intervista svolta con l'esperto di dominio è emersa la necessità dello sviluppo di due tipologie di dashboard: l'*Operating Block Dashboard* e l'*Operating Room Dashboard*. Perciò abbiamo organizzato un ulteriore meeting con l'obiettivo di definire i rispettivi mockup. Al fine di aumentare la collaborazione e la comprensione si è scelto di sfruttare lo strumento *Figma* per produrre mockup *interattivi*.
41
41
42
42
Il processo di analisi e di design del Business Domain del problema ha permesso di ottenere una conoscenza che fosse funzionale al mantenimento del software nella sua evoluzione e quindi che permettesse ad esso di essere più versatile, flessibile e manutenibile. Ciò è diverso dalle analisi dei requisiti che abbiamo svolto nei progetti precedenti con l'obiettivo di raccogliere informazioni per la progettazione di un'unica versione del software.
Copy file name to clipboardExpand all lines: docs/01-development_process/index.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,10 +7,10 @@ nav_order: 2
7
7
8
8
# Descrizione del processo adottato
9
9
10
-
Per quanto riguarda il processo di sviluppo, considerando che il Domain-Driven Design (DDD) necessita di un approccio di project management iterativo che enfatizzi feedback frequenti da parte degli esperti di dominio e degli utenti coinvolti, il team ha deciso di adottare una metodologia agile, ispirandosi ai principi del framework *Scrum*.
10
+
Per quanto riguarda il processo di sviluppo, considerando che il *Domain-Driven Design* (*DDD*) necessita di un approccio di project management iterativo che enfatizzi feedback frequenti da parte degli esperti di dominio e degli utenti coinvolti, il team ha deciso di adottare una metodologia agile, ispirandosi ai principi del framework *Scrum*.
11
11
Considerando la cardinalità ridotta del team, si è adottata una versione semplificata di Scrum cercando di rimanere coerenti con la filosofia originale.
12
12
13
-
Il DDD, grazie alla sua filosofia domain-centered e alle diverse sessioni di knowledge crunching che hanno accompagnato il progetto durante tutto il suo ciclo di vita, ha permesso a tutto il team di avere una visione chiara e completa del dominio, evitando i problemi tipici degli approcci agili (narrowing vision, orientazione al codice, ...). Ha permesso inoltre l'allineamento del codice con la realtà del dominio del problema facilitando l'evoluzione del software e prediligendo la collaborazione tra designers/developers ed esperti del dominio.
13
+
Il DDD, grazie alla sua filosofia domain-centered e alle diverse sessioni di knowledge crunching che hanno accompagnato il progetto durante tutto il suo ciclo di vita, ha permesso a tutto il team di avere una visione chiara e completa del dominio, evitando i problemi tipici degli approcci agili. Ha permesso inoltre l'allineamento del codice con la realtà del dominio del problema facilitando l'evoluzione del software e prediligendo la collaborazione tra designers/developers ed esperti del dominio.
14
14
15
15
Considerando che il progetto è stato portato avanti durante periodi di sessione di esami (Gennaio e Febbraio) e in seguito di lezioni (Marzo, Aprile e Maggio), gli Sprint hanno avuto due durate diverse: per il primo periodo due settimane, per il secondo un mese per un totale di sette Sprint.
16
16
Al termine di ogni sprint si è simulato un incontro con il committente al fine di validare il lavoro svolto e assicurare che non ci fossero discrepanze fra le aspettative e i risultati ottenuti.
Copy file name to clipboardExpand all lines: docs/01-development_process/tools.md
+3-4Lines changed: 3 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,13 +10,13 @@ has_children: false
10
10
11
11
Come supporto delle pratiche del DDD durante tutto il progetto sono stati utilizzati diversi strumenti con lo scopo di agevolare e rendere più produttivo il team e l'interazione con gli esperti di dominio.
12
12
13
-
Di seguito verranno descritti i principali strumenti associando ognuno di essi allo scopo per cui è stato utilizzato e suddividendoli
13
+
Di seguito verranno descritti i principali strumenti associando ad ognuno di essi lo scopo per cui è stato utilizzato.
14
14
15
15
## Knowledge crunching
16
16
17
17
### Egon.io
18
18
19
-
[Egon.io](https://egon.io/) è un tool di supporto al Domain Storytelling.
19
+
[Egon.io](https://egon.io/) è un tool di supporto al *Domain Storytelling*.
20
20
21
21
Esso è stato utilizzato dal team per rappresentare, attraverso un linguaggio pittografico, le Domain stories raccontate dagli esperti di dominio durante i processi di Knowledge Crunching.
22
22
@@ -93,7 +93,7 @@ Esso è stato utilizzato dal team per raccogliere tutta la documentazione di pro
93
93
94
94
### Context Mapper
95
95
96
-
[Context Mapper](https://contextmapper.org/) è un framework di modellazione per il design strategico (e tattico) del DomainDriven Design.
96
+
[Context Mapper](https://contextmapper.org/) è un framework di modellazione per il design strategico (e tattico) del Domain-Driven Design.
97
97
98
98
Esso è stato utilizzato dal team per la formalizzazione e la descrizione dei sottodomini, dei Bounded Context, della Context Map e dei modelli di dominio.
99
99
@@ -138,4 +138,3 @@ Esso è stato utilizzato dal team per la creazione dei mockup interattivi delle
Copy file name to clipboardExpand all lines: docs/02-design/index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ Dopo aver analizzato in dettaglio i requisiti del sistema ed aver compreso i pro
14
14
15
15
## Design architetturale ad alto livello
16
16
17
-
In <ahref="#simpleArchitecture">Figura 1</a> è possibile notare la suddivisione in layer caratterizzante il sistema in esame.
17
+
In <ahref="#simpleArchitecture">Figura 1</a> è possibile notare la suddivisione in layer caratterizzante il sistema in esame.
18
18
19
19
L'obiettivo del nostro design è proporre una soluzione che sia indipendente da specifiche scelte tecnologiche e che si concentri solamente sui paradigmi e sulle tecniche offrendo un maggior grado di astrazione ed un sistema maggiormente estendibile e manutenibile.
Copy file name to clipboardExpand all lines: index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ I servizi principali messi a disposizione dal sistema sviluppato sono:
18
18
+**Monitoring e process automation**: il monitoraggio dei processi è parte fondamentale per quanto riguarda un blocco operatorio smart. Esso riguarda il monitoraggio di tutti gli interventi chirurgici, lo spostamento del personale all'interno del blocco e il monitoraggio del paziente in termini di posizione e parametri vitali. Inoltre, il monitoraggio consente di avere i dati a disposizione per poter reagire agli eventi che riguardano il processo, fornendo scenari di automazione che possano migliorare l'esperienza lavorativa del personale e la buona riuscita dell'intervento.
19
19
+**Surgery Report**: tutti gli eventi e i dati raccolti durante il processo chirurgico partecipano alla creazione automatica del verbale operatorio che poi potrà essere integrato con le informazioni inserite dal personale autorizzato. La generazione automatica evita le imprecisioni e gli errori tipici dati dalle compilazioni manuali e permette un tracciamento più accurato delle attività coinvolte durante il processo e delle condizioni in cui esso viene svolto. In aggiunta permette un minor dispendio di tempo per il personale sanitario.
20
20
21
-
Il progetto è stato portato avanti seguendo l'approccio e le buone pratiche dettate dal DomainDriven Design e utilizzando i principi e le pratiche di DevOps imparate a lezione.
21
+
Il progetto è stato portato avanti seguendo l'approccio e le buone pratiche dettate dal *Domain-Driven Design* e utilizzando i principi e le pratiche di *DevOps* imparate a lezione.
22
22
A tal fine, per simulare un contesto reale è stato realizzato un sito di progetto, condiviso con un committente ed esperti di dominio di fantasia che verrà descritto nelle sezioni seguenti.
0 commit comments