Ingineria domeniului este actul de a crea noi programe de calculator folosind fragmente din programele existente și ceea ce se știe despre ele. O parte importantă a ingineriei domeniului este descoperirea modului în care diferitele artefacte și domenii software sunt similare cu nevoile unui anumit client, astfel încât să poată fi extrase și utilizate în mod corespunzător. În timp ce acest lucru înseamnă că software-ul unui client este doar o variantă a unui alt sistem, există părți unice ale software-ului care sunt scrise de creatori. Avantajele acestui lucru includ timp de producție mai rapid și mai puține erori.
Programele unice sunt create zilnic, dar, în esență, multe dintre ele folosesc aceeași codificare pentru anumite secțiuni. În loc să scrie un program complet nou, care poate folosi aceeași codare sau similară, ingineria domeniului reutiliza unele secțiuni în programe noi. Acestea sunt de obicei piese generice care pot fi reciclate cu ușurință fără probleme legale, deoarece sunt piese care pot fi găsite în majoritatea celorlalte programe. Piesele pot proveni dintr-un program sau mai multe, in functie de nevoile clientului.
În ingineria domeniului, creatorii de software nu copiază nicio parte a software-ului pentru a vedea dacă funcționează; ei trebuie în schimb să poată analiza diferitele programe. De exemplu, dacă un client dorește o anumită caracteristică, creatorii trebuie să analizeze programele pe care le-au realizat pentru a vedea dacă există unele cu caracteristici similare. Fără analiză, nu există nicio garanție că codul copiat va funcționa corect.
Acest proces poate face să pară că ingineria domeniului este doar un sistem bazat pe șabloane în care creatorii de software copiază un cod și îl numesc un program nou, dar acest lucru nu este adevărat. Întregul proces de inginerie a domeniului este destul de intens și depășește doar găsirea de piese similare. După ce sunt găsite părți similare, acestea trebuie în mod normal să fie personalizate pentru nevoile unui client, iar creatorii construiesc adesea cod nou pentru a satisface alte nevoi ale clientului care nu sunt acoperite de codul copiat.
Mai multe avantaje pot fi atribuite ingineriei domeniului. Programul nu este realizat în întregime de la zero, așa că ar trebui să dureze mai puțin timp pentru a se dezvolta. Aceasta înseamnă că clientul poate folosi sau vinde programul mai rapid, ceea ce este adesea dorit. Codarea copiată folosită în ingineria domeniului este de obicei testată în prealabil pentru a se asigura că funcționează, astfel încât acest lucru tinde să ducă la mai puține teste, ceea ce scade și timpul de dezvoltare. S-a demonstrat deja că codul funcționează, așa că acest lucru duce adesea la mai puține erori de software.