L’ingegneria del dominio è l’atto di creare un nuovo software per computer utilizzando frammenti di programmi esistenti e ciò che si conosce su di essi. Una parte importante dell’ingegneria del dominio è scoprire come i diversi artefatti e domini software sono simili alle esigenze di un particolare cliente, in modo che possano essere correttamente estratti e utilizzati. Sebbene ciò significhi che il software di un cliente è solo una variante su un altro sistema, ci sono parti uniche del software scritte dai creatori. I vantaggi di questo includono tempi di produzione più rapidi e meno errori.
Ogni giorno vengono creati programmi unici ma, in sostanza, molti di essi utilizzano la stessa codifica per determinate sezioni. Invece di scrivere un programma completamente nuovo che potrebbe utilizzare la stessa codifica o una codifica simile, l’ingegneria del dominio riutilizza alcune sezioni in nuovi programmi. Si tratta in genere di parti generiche che possono essere facilmente riciclate senza problemi legali, poiché sono parti che possono essere trovate nella maggior parte degli altri programmi. Le parti possono provenire da uno o più programmi, a seconda delle esigenze del cliente.
Nell’ingegneria del dominio, i creatori di software non copiano alcuna parte del software per vedere se funziona; devono invece essere in grado di analizzare i diversi programmi. Ad esempio, se un cliente desidera una determinata funzionalità, i creatori devono analizzare i programmi che hanno creato per vedere se ce ne sono con caratteristiche simili. Senza analisi, non vi è alcuna garanzia che il codice copiato funzioni correttamente.
Questo processo può far sembrare che l’ingegneria del dominio sia solo un sistema basato su modelli in cui i creatori di software copiano del codice e lo chiamano un nuovo programma, ma questo non è vero. L’intero processo di ingegneria del dominio è piuttosto intenso e va oltre la semplice ricerca di parti simili. Dopo che le parti simili sono state trovate, normalmente devono essere personalizzate per le esigenze del cliente e i creatori spesso costruiscono nuovo codice per soddisfare altre esigenze del cliente che non sono coperte dal codice copiato.
Diversi vantaggi possono essere attribuiti all’ingegneria del dominio. Il programma non è interamente realizzato da zero, quindi dovrebbe richiedere meno tempo per svilupparlo. Ciò significa che il cliente può utilizzare o vendere il programma più velocemente, il che spesso è desiderato. Il codice copiato utilizzato nell’ingegneria del dominio di solito viene testato in anticipo per assicurarsi che funzioni, quindi questo tende a comportare un minor numero di test, il che riduce anche il tempo di sviluppo. È già stato dimostrato che il codice funziona, quindi questo spesso si traduce in un minor numero di errori software.