Il nostro attuale processo aziendale è che gli esperti di dominio scriveranno la logica aziendale in un documento Word e gli sviluppatori cercheranno di riflettere tali logiche il più strettamente possibile con l'implementazione.
Questo processo viola il principio DRY (non ripetersi) e crea così molti problemi associati alla violazione del principio DRY.
Non esiste un modo programmatico per determinare se la modifica nel documento di dominio è correttamente riflessa nel codice di base. Ciò costringe la comunicazione molto unita tra l'esperto di dominio e lo sviluppatore, il che causa altri problemi come il documento che assomiglia più alle specifiche tecniche piuttosto che alle specifiche di dominio e alle riunioni frequenti se è necessario aggiornare qualsiasi parte del documento.
Nota che sono uno sviluppatore e non sto cercando di introdurre una soluzione che richiede l'adozione di un approccio software da parte di chiunque tranne me. Sto cercando di trovare una soluzione semplice che possa essere gestita da un singolo sviluppatore.
Ho svolto le mie ricerche e ho riscontrato alcune soluzioni suggerite come linguaggio specifico del dominio o progettazione basata su domini, ma non si adattano alle mie esigenze per i seguenti motivi:
- DSL: ciò richiede l'adozione da parte di DE per l'uso della DSL. Posso utilizzare DSL per implementare la logica del dominio utilizzando DSL, ma questo non risolve il problema di separazione tra documento di dominio e implementazione. Inoltre, non voglio limitare la capacità degli esperti di dominio di esprimere il problema del dominio in modo specifico con DSL. Voglio che siano in grado di usare l'inglese naturale.
- DDD: Un po 'meglio di DSL in quanto solo il linguaggio onnipresente deve essere sviluppato, ma questo richiede ancora di spiegare il concetto di DDD a tutti i soggetti coinvolti.
In sostanza, sto cercando una soluzione semplice che possa essere contenuta da un singolo sviluppatore. Una soluzione ideale che stavo pensando era di avere uno strumento che potesse in qualche modo annotare una sezione della documentazione per l'implementazione del codice specifico, in modo tale che almeno avessimo una breve indicazione visiva di quanto sia ben coperta la nostra documentazione.