Veliki sistemi strojne ali programske opreme, kot je vesoljsko plovilo, imajo zapletene zahteve. Zahteve so specifikacija, kaj je treba zgraditi, kako naj se sistem obnaša, ali omejitve v procesu gradnje sistema. Inženiring zahtev je uporaba dobrih inženirskih praks za razumevanje zahtev, preden je sistem zgrajen. Pomembna je, ker deležniki sistema sami niso jasni glede svojih potreb in imajo različne potrebe.
Kompleksni sistem ima lahko veliko deležnikov, kot so ljudje, ki naročijo sistem, uporabniki, ki uporabljajo enega ali več vidikov sistema, in ljudje, ki imajo koristi od sistema. Možno je tudi, da so med deležniki tudi državljani, na katere vplivajo določene posebnosti sistema. Zainteresirane strani imajo svoje posebne potrebe. Po drugi strani pa so ljudje, ki razvijajo sistem, lahko tehnično sposobni, vendar morda ne razumejo v celoti stališča deležnikov. Inženiring zahtev je bistvena sposobnost, ki povezuje te strani.
Formalno se dejavnost inženiringa zahtev deli na razvoj zahtev in upravljanje zahtev. Razvoj zahtev je sestavljen iz pridobivanja, analize, specifikacije in preverjanja. Upravljanje zahtev je nadzor nad celotnim procesom zahtev, zlasti obvladovanje kakršnih koli sprememb zahtev. Nekateri praktiki, nasprotno, celotno dejavnost imenujejo analiza zahtev.
Pridobivanje zahtev od zainteresiranih strani postane potrebno, ker deležniki pogosto ne natančno opredelijo svojih potreb in ne razumejo posledic novega sistema. Zainteresirane strani se morda ne bodo odprle, saj bi se lahko bali vpliva na njihova trenutna delovna mesta. Izvlečanje je torej previden in morda dolg proces, kjer sta potrebni empatija in subtilna psihologija. Paziti je treba, da se kulturne razlike med različnimi deležniki in razvijalci premostijo.
Za pridobivanje zahtev se uporablja več tehnik. Zahteve je mogoče pridobiti z individualnimi intervjuji, skupinskimi sestanki in opazovanjem ljudi pri njihovih nalogah. Tehnike, ki lahko ustvarijo zahteve, vključujejo fokusne skupine, ustvarjanje prednostnih seznamov, izdelavo prototipov in primerjavo z drugimi sistemi, ki delujejo. Zahteve za pridobivanje vključujejo poslovne potrebe sistema, poslovne procese uporabnikov, ko sistem uporabljajo, in funkcionalne značilnosti sistema. Poleg tega je treba izpostaviti nefunkcionalne zahteve, kot so odzivni čas, razpoložljivost sistema in enostavna uporaba.
Korak analize pri inženiringu zahtev oblikuje zahteve nizke ravni, ki bodo zadovoljile prvotne zahteve visoke ravni. To vključuje ustvarjanje konceptualnih modelov in prototipov za ugotavljanje popolnosti zahtev. Konflikte v potrebah različnih deležnikov pogosteje najdemo pri modelih in prototipih kot pri zgolj seznamu zahtev. Analitiki morajo zahtevam dodati zaželene značilnosti sistema, kot so varnost, prilagodljivost in vzdržljivost.
Zahteve so določene v dokumentu za lažje razumevanje vseh deležnikov. Na področju programske opreme se dokument imenuje SRS, kar pomeni Specifikacija programskih zahtev. Zahteve preverjajo ključne zainteresirane strani. To je večinoma prek predstavitev in specifikacijskega dokumenta, včasih pa tudi s testnimi primeri, ki ustrezajo zahtevam.
Inženiring zahtev je predvsem komunikacija, dejavnost in ne tehnična. Potrebuje multidisciplinarna znanja. Inženiring zahtev pomaga deležnikom in razvijalcem pri reševanju konfliktov in jih združuje pri njihovih ciljih; To vodi do močnega sistema.