A mérnöki tudományban a követelmény olyan szükséglet, amelyet egy adott elemnek ki kell elégítenie ahhoz, hogy elfogadható legyen.

A követelményeket számos mérnöki területen alkalmazzák, beleértve a mérnöki tervezést, a rendszertervezést, a szoftvertervezést, a vállalati tervezést, a termékfejlesztést és a folyamatoptimalizálást .

A követelmény egy viszonylag tág fogalom, amely leírhat bármilyen szükséges vagy kívánt funkciót, attribútumot, képességet, jellemzőt vagy minőséget egy rendszer esetében, hogy értéket és hasznosságot nyújtson egy ügyfél, szervezet, felhasználó vagy más érdekelt fél számára.

A specifikáció vagy "spec" egy követelményrendszer, amelyet jellemzően a fejlesztők használnak a termékfejlesztés tervezési szakaszában, valamint a tesztelők az ellenőrzési folyamat során.

Az iteratív és inkrementális fejlesztéseknél, mint például az agilis szoftverfejlesztés, a követelmények a tervezéssel és megvalósítással párhuzamosan alakulnak ki. A vízesés modellnél a követelmények a tervezés vagy a megvalósítás megkezdése előtt teljesülnek.

A kifejezés eredete A követelmény kifejezést legalább az 1960-as évek óta használják a szoftvermérnöki közösségben.

Az Útmutató a Business Analysis Body of Knowledge® 2. verziójához (BABOK) szerint a követelmény a következő:

Egy feltétel vagy képesség, amelyre egy érdekelt félnek szüksége van egy probléma megoldásához vagy egy cél eléréséhez. Egy feltétel vagy képesség, amelynek teljesülnie kell vagy amelyet birtokolnia kell egy megoldásnak vagy megoldáskomponensnek egy szerződés, szabvány, specifikáció vagy más formálisan előírt dokumentum kielégítése érdekében. Egy feltétel vagy képesség dokumentált ábrázolása az (1) vagy (2) pont szerint.

Ez a meghatározás az IEEE 610.12-1990: IEEE Standard Glossary of Software Engineering Terminology szabványon alapul.

Rendszer vs. folyamati követelmények A követelmények két területre vonatkoznak:

A termékkövetelmények előírják egy rendszer vagy termék tulajdonságait.. A folyamatkövetelmények előírják azokat a tevékenységeket, amelyeket a fejlesztő szervezetnek végre kell hajtania. Például a folyamatkövetelmények meghatározhatják az alkalmazandó módszertanokat és azokat a korlátozásokat, amelyeket a szervezetnek be kell tartania.

A termék- és folyamatkövetelmények szorosan összefüggenek; a termékkövetelményről azt lehet mondani, hogy meghatározza a folyamatkövetelmény támogatásához szükséges automatizálást, míg a folyamatkövetelményről azt lehet mondani, hogy meghatározza a termékkövetelmény támogatásához szükséges tevékenységeket. Például egy maximális fejlesztési költségkövetelmény (folyamatkövetelmény) előírható a maximális eladási ár követelményének (termékkövetelmény) elérésének elősegítése érdekében; azt a követelményt, hogy a termék karbantartható legyen (termékkövetelmény), gyakran bizonyos fejlesztési stílusok (pl. objektumorientált programozás ), stílus-útmutatók vagy egy felülvizsgálati/ellenőrzési folyamat (folyamatkövetelmények) követésének előírásával oldják meg.

A követelmények típusai A követelményeket általában a fejlesztési folyamat különböző szakaszaiban előállított típusokba sorolják, a taxonómia az alkalmazott általános modelltől függ. Például a következő sémát az International Institute of Business Analysis dolgozta ki a Business Analysis Body of Knowledge-ban (lásd még a FURPS-t és a követelmények típusait ).

Építészeti követelmények Az építészeti követelmények megmagyarázzák, hogy mit kell tenni a rendszerstruktúra és a rendszer viselkedésének szükséges integrációjának azonosításával, azaz egy rendszer rendszerarchitektúrájával . A szoftverfejlesztésben ezeket architekturálisan jelentős követelményeknek nevezik, amelyek olyan követelmények, amelyek mérhető hatással vannak a szoftverrendszer architektúrájára .

Üzleti követelmények A szervezet céljainak, feladatainak vagy igényeinek magas szintű megfogalmazása. Általában olyan lehetőségeket írnak le, amelyeket egy szervezet meg akar valósítani, vagy problémákat, amelyeket meg akarnak oldani. Gyakran szerepel üzleti ügyekben .

Felhasználói (érintettek) követelmények Középszintű nyilatkozatok egy adott érdekelt fél vagy érintett csoport szükségleteiről. Általában leírják, hogy valaki hogyan kíván kapcsolatba lépni a tervezett megoldással. Gyakran középpontként működik a magas szintű üzleti követelmények és a részletesebb megoldási követelmények között.

Funkcionális (megoldási) követelmények Általában részletes nyilatkozatok a képességekről, viselkedésről és információkról, amelyekre a megoldásnak szüksége lesz. Ilyen például a szöveg formázása, egy szám kiszámítása, egy jel modulálása. Néha képességeknek is nevezik őket.

Szolgáltatásminőségi (nem funkcionális) követelmények Általában részletes nyilatkozatok arról, hogy a megoldásnak milyen feltételek mellett kell hatékonynak maradnia, milyen tulajdonságokkal kell rendelkeznie a megoldásnak, vagy milyen korlátok között kell működnie.Ralph, P., and Wand, Y. A Proposal for a Formal Definition of the Design Concept. In, Lyytinen, K., Loucopoulos, P., Mylopoulos, J., and Robinson, W., (eds.), Design Requirements Engineering: A Ten-Year Perspective: Springer-Verlag, 2009, pp. 103-136 Példák: megbízhatóság, tesztelhetőség, karbantarthatóság, rendelkezésre állás. Jellemzőknek, megszorításoknak vagy jogosítványoknak is nevezik őket .

Megvalósítási (átmeneti) követelmények Általában a képességek vagy viselkedés részletes kimutatásai csak a vállalat jelenlegi állapotából a kívánt jövőbeli állapotba való átmenet lehetővé tételéhez szükségesek, de ezt követően már nem lesz szükség. Példák közé tartozik a toborzás, a szerepkörök változása, az oktatás, valamint az adatok egyik rendszerről a másikra történő migrálása. Szabályozási követelmények Törvényekben (szövetségi, állami, önkormányzati vagy regionális), szerződésekben (feltételek és feltételek) vagy szabályzatokban (vállalati, részleg- vagy projektszintű) meghatározott követelmények.

A jó követelmények jellemzői A jó követelmények jellemzőit a különböző írók eltérően fogalmazzák meg, és általában minden író az általános vitához vagy az adott technológiai területhez leginkább megfelelő jellemzőket emeli ki. A következő jellemzők azonban általánosan elismertek. Jellemző Magyarázat Egységes (összefüggő) A követelmény egy és egyetlen dologra vonatkozik. teljesA követelmény egy helyen teljes egészében meg van fogalmazva, hiányzó információk nélkül. Következetes A követelmény nem mond ellent semmilyen más követelménynek, és teljes mértékben összhangban van minden hiteles külső dokumentációval. Nem konjugált ( atomi ) A követelmény atomi, azaz nem tartalmaz kötőszót. Pl.: "Az irányítószám mezőben érvényesíteni kell az amerikai és a kanadai irányítószámokat" két külön követelményként kell írni: (1) "Az irányítószám mezőben érvényesíteni kell az amerikai irányítószámokat" és (2) "Az irányítószám mezőben érvényesíteni kell a kanadai irányítószámokat" kódok". Nyomon követhető A követelmény teljes egészében vagy részben kielégíti az érdekelt felek által megfogalmazott és hitelesen dokumentált üzleti igényt. Jelenlegi A követelmény az idő múlásával nem évült el. Félreérthetetlen A követelmény tömören, szakzsargon, mozaikszavak (kivéve, ha a Követelmények dokumentumban máshol van meghatározva) vagy más ezoterikus szóhasználat nélkül fogalmazva. Objektív tényeket fejez ki, nem szubjektív véleményeket. Egy és egyetlen értelmezés tárgya. A homályos alanyok, melléknevek, elöljárószavak, igék és szubjektív kifejezések kerülendők. A negatív és összetett állítások kerülendők.Fontosság meghatározásaSzámos követelmény olyan, az érintettek által meghatározott jellemzőt képvisel, amelynek hiánya jelentős vagy akár végzetes hiányossághoz vezet. Mások olyan funkciókat képviselnek, amelyek megvalósíthatók, ha az idő és a költségvetés lehetővé teszi. A követelménynek meg kell határoznia a fontossági szintet. Igazolható A követelmény megvalósítása alapvető lehetséges módszerekkel határozható meg: ellenőrzés, demonstráció, teszt (műszeres) vagy elemzés (validált modellezés és szimuláció is). Számos további tulajdonságot kell figyelembe venni, amelyek hozzájárulnak a követelmények minőségéhez. Ha a követelményekre az adatintegritás szabályai vonatkoznak (például), akkor a pontosság/helyesség és az érvényesség/jogosultság is méltó tulajdonságok. A nyomon követhetőség megerősíti, hogy a meghatározott követelmény kielégíti az igényt (nem több - és nem kevesebb, mint amennyi szükséges).

A fentiekhez néhányan hozzáteszik az Externally Observable (külsőleg megfigyelhető) tulajdonságot is, vagyis a követelmény olyan jellemzőt határoz meg, amely a termék külsőleg megfigyelhető vagy a felhasználó által tapasztalható tulajdonsága. Az ilyen jogvédők azzal érvelnek, hogy azok a követelmények, amelyek a belső architektúrát, tervezést, megvalósítást vagy tesztelési döntéseket határozzák meg, valószínűleg korlátozások, és egyértelműen a követelmények dokumentum korlátozások részében kell szerepelniük. Az ellentétes nézet az, hogy ez a perspektíva két ponton kudarcot vall. Először is, a perspektíva nem ismeri fel, hogy a felhasználói élményt a felhasználó által nem érzékelhető követelmények támogathatják. Például a geokódolt információk felhasználó számára történő bemutatására vonatkozó követelményt támogathatja egy külső, harmadik fél üzleti partnerrel való interfész követelménye. Az interfész a felhasználó számára észrevehetetlen lesz, bár az interfészen keresztül kapott információk bemutatása biztosan nem lesz az. Másodszor, egy korlátozás a tervezési alternatívákat korlátozza, míg egy követelmény a tervezési jellemzőket határozza meg. Például, egy webszolgáltatási interfész kiválasztását előíró követelmény különbözik egy olyan korlátozástól, amely a tervezési alternatívákat a Single Sign-On architektúrával kompatibilis módszerekre korlátozza.

Igazolás Minden követelménynek ellenőrizhetőnek kell lennie. A leggyakoribb módszer a tesztelés. Ha ez nem lehetséges, akkor más ellenőrzési módszert kell alkalmazni (például elemzés, bemutató, ellenőrzés vagy a tervezés felülvizsgálata).

Bizonyos követelmények már szerkezetüknél fogva nem ellenőrizhetők. Ide tartoznak azok a követelmények, amelyek szerint a rendszer soha vagy mindig nem mutathat fel egy adott tulajdonságot. Ezeknek a követelményeknek a megfelelő tesztelése végtelen tesztelési ciklust igényelne. Az ilyen követelményeket át kell fogalmazni, hogy ellenőrizhetők legyenek. Amint fentebb említettük, minden követelménynek ellenőrizhetőnek kell lennie.

A nem funkcionális követelményeket, amelyek szoftverszinten nem ellenőrizhetők, továbbra is meg kell őrizni a vevői szándék dokumentációjaként. Azonban ezeket olyan folyamatkövetelményekhez lehet kapcsolni, amelyek gyakorlati módon biztosítják ezek teljesítését. Például a hátsó ajtóktól való mentességre vonatkozó nem funkcionális követelmény kielégíthető, ha lecseréljük a páros programozás használatára vonatkozó folyamatkövetelményre. Az egyéb nem funkcionális követelmények más rendszerelemekre vonatkoznak, és ezen a szinten ellenőrizhetők. Például a rendszer megbízhatóságát gyakran rendszerszintű elemzéssel igazolják. A bonyolult biztonsági követelményeivel rendelkező repüléselektronikai szoftvernek követnie kell a DO-178B fejlesztési folyamatát.

Olyan tevékenységek, amelyek a rendszer- vagy szoftverkövetelmények levezetéséhez vezetnek. A követelménytervezés magában foglalhatja a projekt megvalósíthatósági tanulmányát vagy koncepcionális elemzési szakaszát, valamint a követelmények feltárását (az érdekelt felek igényeinek összegyűjtése, megértése, áttekintése és megfogalmazása), valamint követelményelemzést, elemzést (konzisztencia és teljesség ellenőrzése), specifikációt. (a követelmények dokumentálása) és az érvényesítés (a meghatározott követelmények helyességének ellenőrzése).