Per evolvere il dominio a questo punto si è pensato di procedere tramite Strategic Design. Questo tipo di studio individua, a partire dai casi d’uso, i diversi sotto-domini che compongono il dominio principale.
Sono stati quindi trascritti i casi d’uso descritti precedentemente nel file domain.cml usufruendo di Context Mapper come framework. Si è quindi pensato di suddividere il dominio in quattro sotto-domini:
A questo punto, secondo la metodologia DDD, è necessario costruire i cosiddetti Bounded Context, i quali debbano soddisfare i requisiti del sotto-dominio a cui si riferiscono.
Nel nostro dominio sono stati individuati cinque Bounded Context:
Dopo aver determinato i Bounded Context è necessario capire le relazioni tra di essi. Per mostrare tali relazioni viene costruita una Context Map. In questo dominio le associazioni riconosciute sono state le seguenti:
NegligenceReportingContext [U] -> [D, CF] DroneContext:
questa relazione indica che il supplier NegligenceReportingContext fornisce al consumer DroneContext le funzionalità per permettere di eseguire una segnalazione per negligenza. Per far ciò il consumer deve adeguarsi ai cambiamenti del modello del dominio presente nel supplier.
DroneContext [U] -> [D, CF] ShippingContext:
in un altro scenario il DroneContext funziona da supplier verso lo ShippingContext per mettere a disposizione le possibilità di avviare il viaggio di spedizione, di tracciare il drone durante il viaggio, di ricevere la notifica di arrivo a destinazione e di richiamare il drone al magazzino. Anche in questo caso, il consumer deve adattarsi alle richieste del supplier.
UserContext [U, OHS, PL] -> [D] IssueReportingContext:
queste tre relazioni stanno a indicare che lo UserContext opera da fornitore nei confronti degli altri tre contesti elencati, i quali necessitano d’informazioni, spesso relative all’utente acceduto. Data la molteplicità d’uso, al fine di evitare vincoli rispetto ai cambiamenti interni del dominio utente, è stato scelto di aggiungere un layer OHS per permettere ai consumatori di mantenere le informazioni necessarie senza impattare lo sviluppo dello UserContext.