Inženjering domene je čin stvaranja novog računalnog softvera korištenjem dijelova postojećih programa i onoga što netko zna o njima. Važan dio inženjeringa domene je otkrivanje kako su različiti softverski artefakti i domene slični potrebama određenog kupca, tako da se mogu pravilno izvući i koristiti. Iako to znači da je softver korisnika samo varijanta na drugom sustavu, postoje jedinstveni dijelovi softvera koje su napisali kreatori. Prednosti ovoga uključuju brže vrijeme proizvodnje i manje pogrešaka.
Jedinstveni programi se stvaraju svakodnevno, ali, u biti, mnogi od njih koriste isto kodiranje za određene odjeljke. Umjesto pisanja potpuno novog programa koji može koristiti isto ili slično kodiranje, inženjering domene ponovno koristi neke odjeljke u novim programima. To su obično generički dijelovi koji se mogu lako reciklirati bez ikakvih pravnih problema, jer su to dijelovi koji se mogu naći u većini drugih programa. Dijelovi mogu dolaziti iz jednog programa ili više, ovisno o potrebama kupca.
U inženjeringu domene, kreatori softvera ne kopiraju nijedan dio softvera kako bi vidjeli radi li; umjesto toga moraju biti sposobni analizirati različite programe. Na primjer, ako kupac želi određenu značajku, kreatori moraju analizirati programe koje su napravili kako bi vidjeli postoje li neki sa sličnim značajkama. Bez analize nema jamstva da će kopirani kod ispravno raditi.
Ovaj proces može učiniti da se čini da je inženjering domene samo sustav temeljen na predlošku u kojem kreatori softvera kopiraju neki kod i nazivaju ga novim programom, ali to nije točno. Cijeli proces inženjeringa domene je prilično intenzivan i nadilazi samo pronalaženje sličnih dijelova. Nakon što se pronađu slični dijelovi, oni se obično moraju prilagoditi potrebama korisnika, a kreatori često grade novi kod kako bi zadovoljili druge potrebe korisnika koje nisu pokrivene kopiranim kodom.
Nekoliko prednosti može se pripisati inženjeringu domene. Program nije u potpunosti napravljen od nule, pa bi mu trebalo manje vremena za razvoj. To znači da kupac može brže koristiti ili prodavati program, što je često poželjno. Kopirano kodiranje koje se koristi u inženjeringu domene obično se prethodno testira kako bi se uvjerilo da radi, tako da to obično rezultira manjim brojem testova, što također smanjuje vrijeme razvoja. Već se pokazalo da kod radi, pa to često rezultira manjim brojem softverskih pogrešaka.