La ingeniería de dominio es el acto de crear un nuevo software informático utilizando fragmentos de programas existentes y lo que uno sabe sobre ellos. Una parte importante de la ingeniería de dominio es descubrir cómo los diferentes artefactos y dominios de software son similares a las necesidades de un cliente en particular, para que puedan extraerse y usarse correctamente. Si bien esto significa que el software de un cliente es solo una variante de otro sistema, existen partes únicas del software que están escritas por los creadores. Las ventajas de esto incluyen un tiempo de producción más rápido y menos errores.
Los programas únicos se crean a diario pero, en esencia, muchos de ellos usan la misma codificación para ciertas secciones. En lugar de escribir un programa completamente nuevo que puede usar la misma codificación o una similar, la ingeniería de dominio reutiliza algunas secciones en nuevos programas. Por lo general, se trata de piezas genéricas que se pueden reciclar fácilmente sin ningún problema legal, porque son piezas que se pueden encontrar en la mayoría de los demás programas. Las piezas pueden provenir de un programa o de varios, según las necesidades del cliente.
En la ingeniería de dominio, los creadores de software no copian ninguna parte del software para ver si funciona; en cambio, deben poder analizar los diferentes programas. Por ejemplo, si un cliente quiere una característica determinada, los creadores deben analizar los programas que han creado para ver si hay alguno con características similares. Sin análisis, no hay garantía de que el código copiado funcione correctamente.
Este proceso puede hacer que parezca que la ingeniería de dominio es solo un sistema basado en plantillas en el que los creadores de software copian un código y lo llaman programa nuevo, pero esto no es cierto. Todo el proceso de ingeniería de dominio es bastante intensivo y va más allá de simplemente encontrar partes similares. Una vez que se encuentran las partes similares, normalmente deben personalizarse para las necesidades del cliente, y los creadores a menudo crean un código nuevo para satisfacer otras necesidades del cliente que no están cubiertas por el código copiado.
Se pueden atribuir varias ventajas a la ingeniería de dominio. El programa no está completamente hecho desde cero, por lo que debería llevar menos tiempo desarrollarlo. Esto significa que el cliente puede usar o vender el programa más rápido, lo que a menudo es lo que se desea. La codificación copiada que se usa en la ingeniería de dominio generalmente se prueba de antemano para asegurarse de que funcione, por lo que esto tiende a resultar en menos pruebas, lo que también disminuye el tiempo de desarrollo. Ya se ha demostrado que el código funciona, por lo que a menudo esto da como resultado menos errores de software.