Veliki hardverski ili softverski sustavi, kao što je svemirska letjelica, imaju složene zahtjeve. Zahtjevi su specifikacija onoga što bi trebalo izgraditi, kako bi se sustav trebao ponašati ili ograničenja u procesu izgradnje sustava. Inženjering zahtjeva je korištenje dobrih inženjerskih praksi za razumijevanje zahtjeva prije izgradnje sustava. To postaje važno jer dionici sustava sami nisu jasni o svojim potrebama i imaju različite potrebe.
Složeni sustav može imati mnogo dionika kao što su ljudi koji naručuju sustav, korisnici koji koriste jedan ili više aspekata sustava i ljudi koji imaju koristi od sustava. Također je moguće da među dionicima spadaju i građani na koje utječu određene osobitosti sustava. Dionici imaju svoje posebne potrebe. S druge strane, ljudi koji razvijaju sustav mogu biti tehnički sposobni, ali možda ne razumiju u potpunosti stajalište dionika. Inženjering zahtjeva osnovna je sposobnost koja povezuje ove strane.
Formalno, djelatnost inženjeringa zahtjeva dijeli se na razvoj zahtjeva i upravljanje zahtjevima. Razvoj zahtjeva sastoji se od traženja, analize, specifikacije i verifikacije. Upravljanje zahtjevima je kontrola cjelokupnog procesa zahtjeva, posebno rukovanja svim promjenama u zahtjevima. Neki praktičari, nasuprot tome, cijelu aktivnost nazivaju analizom zahtjeva.
Izazivanje zahtjeva od dionika postaje neophodno jer dionici često ne specificiraju u potpunosti svoje potrebe i ne razumiju implikacije novog sustava. Dionici se možda neće otvoriti jer bi se mogli bojati utjecaja na njihova trenutna radna mjesta. Izvlačenje je stoga pažljiv i, moguće, dug proces u kojem je potrebna empatija i suptilna psihologija. Treba paziti da se premoste kulturne razlike između različitih dionika, kao i developera.
Za izazivanje zahtjeva koristi se nekoliko tehnika. Zahtjevi se mogu utvrditi kroz individualne intervjue, grupne sastanke i promatranje ljudi na njihovim zadacima. Tehnike koje mogu donijeti zahtjeve uključuju fokus grupe, kreiranje prioritetnih popisa, izradu prototipa i usporedbu s drugim sustavima u radu. Zahtjevi za izvlačenje uključuju poslovne potrebe sustava, poslovne procese korisnika dok koriste sustav i funkcionalne značajke sustava. Osim toga, potrebno je istaknuti nefunkcionalne zahtjeve kao što su vrijeme odziva, dostupnost sustava i jednostavnost korištenja.
Korak analize u inženjeringu zahtjeva formira zahtjeve niske razine koji će zadovoljiti izvorne zahtjeve visoke razine. To uključuje stvaranje konceptualnih modela i prototipova kako bi se utvrdila potpunost zahtjeva. Sukobi u potrebama različitih dionika češće se pronalaze prema modelima i prototipovima nego na pukoj listi zahtjeva. Poželjne karakteristike sustava kao što su sigurnost, fleksibilnost i mogućnost održavanja moraju se dodati zahtjevima od strane analitičara.
Zahtjevi su navedeni u dokumentu radi lakšeg razumijevanja svih dionika. U polju softvera, dokument se naziva SRS, što je skraćenica za specifikaciju softverskih zahtjeva. Zahtjeve provjeravaju ključni dionici. To je uglavnom putem prezentacija i dokumenta sa specifikacijama, ali ponekad i s testnim slučajevima koji odgovaraju zahtjevima.
Inženjering zahtjeva je prvenstveno komunikacija, aktivnost, a ne tehnički. Potrebne su multidisciplinarne vještine. Inženjering zahtjeva pomaže dionicima i programerima u rješavanju sukoba i ujedinjuje ih u njihovim ciljevima; To dovodi do robusnog sustava.