Követelménytervezés – Bevezetés (1. rész)
Korábban már tárgyaltuk a követelménytervezés 4 fő tevékenységét.
A követelménytervezés a rendszer által nyújtandó szolgáltatások összegyűjtésének és meghatározásának folyamata.
Ez annak felmérésére összpontosít, hogy a rendszer hasznos-e az üzlet számára (megvalósíthatósági tanulmány), a követelmények feltárására (kiváltás és elemzés), e követelmények valamilyen szabványos formátumba való átalakítására (specifikáció), valamint annak ellenőrzésére, hogy a követelmények meghatározzák-e azt a rendszert, amelyet az ügyfél szeretne (validálás).
A gyakorlatban a követelménytervezés nem szekvenciális folyamat, hanem iteratív folyamat, amelyben a tevékenységek egymásra épülnek.
Először például a felhasználói követelményeket iteráljuk; kiválasztás, specifikáció és validálás, majd ugyanezeket a lépéseket megismételjük a rendszerkövetelmények esetében.
A folyamat elején a legtöbb erőfeszítést a magas szintű üzleti és felhasználói követelmények megértésére fordítják. A folyamat későbbi szakaszában több erőfeszítést fordítanak a részletes rendszerkövetelmények kiváltására és megértésére.
Mások a követelménytervezést a strukturált elemzési módszer, például az objektumorientált elemzés alkalmazásának folyamatának tekintik. Ez magában foglalja a rendszer elemzését és grafikus rendszermodellek, például használati esetmodellek készítését, amelyek aztán rendszerspecifikációként szolgálnak.
Noha a strukturált módszerek szerepet játszanak a követelménytervezés folyamatában, a követelménytervezés sokkal többről szól, mint amit ezek a módszerek lefednek.
A tárgyközpontú elemzést és tervezést egy másik tananyagsorozatban tárgyaljuk.
Felhasználói és rendszerkövetelmények
A követelmények tipikusan két részletességi szinten kerülnek bemutatásra; felhasználói és rendszerkövetelmények, ahol a felhasználónak a követelmények magas szintű megállapításaira van szüksége, míg a rendszerfejlesztőknek részletesebb rendszerspecifikációra. Tehát a felhasználói és a rendszerkövetelmények csak utalnak a különböző részletezettségi szintekre.
A különböző részletezettségi szintek alkalmazása azért hasznos, mert különböző típusú olvasók számára közvetít információt a fejlesztendő rendszerről.
A végfelhasználókat tehát nem érdekli a részletesség, nekik egy általános, absztrahált, írott követelményre van szükségük.
Azoknak viszont, akik részt vesznek a fejlesztésben, arra van szükségük, hogy a rendszernek pontosan mit kell tennie.
Valószínűleg rengeteg problémával és félreértéssel fog járni, ha nem különítették el világosan a különböző szintű részleteket.
Felhasználói követelmények
A rendszer által nyújtandó szolgáltatásokat és azokat a korlátokat írja le, amelyek között a rendszernek működnie kell. Nem várjuk el, hogy bármilyen szintű részletezettséget lássunk, vagy azt, hogy a rendszer pontosan mit fog csinálni, Inkább általános követelményekről van szó.
Ezt általában természetes nyelven írják, és diagramokkal látják el.
A követelmények meghatározásának különböző módjait a sorozat későbbi részében tárgyaljuk.
Rendszerkövetelmények
A rendszerkövetelmények a rendszer szolgáltatásainak részletesebb leírását jelentik, valamint az üzemeltetési megkötéseket, például azt, hogy hogyan fogják használni a rendszert, és a fejlesztési megkötéseket, például a programozási nyelveket.
Ez a részletezettségi szint szükséges azoknak, akik részt vesznek a rendszer fejlesztésében, mint például a mérnökök, rendszerarchitektek, tesztelők stb.
Funkcionális & Nem funkcionális követelmények
A szoftverkövetelmények funkcionális követelményekre és nem funkcionális követelményekre oszthatók.
Funkcionális követelmények
A rendszer által nyújtandó fő funkciókat foglalja magában. Amikor felhasználói követelményként fogalmazzák meg, általában absztrakt módon írják le őket.
A konkrétabb funkcionális rendszerkövetelmények azonban leírják a rendszer funkcióit, bemeneteit, feldolgozását; hogyan fog reagálni egy adott bemenetre, és mi az elvárt kimenet.
Nem funkcionális követelmények
Ezek a rendszer által biztosított funkciókat korlátozzák.
A korlátozások, mint például, hogy a rendszer hány folyamatot képes kezelni (teljesítmény), milyen (biztonsági) problémákkal kell a rendszernek foglalkoznia, mint például az SQL-injekciók …
A hibaarány (megbízhatóság), milyen nyelveket és eszközöket fognak használni (fejlesztés), milyen szabályokat kell követni ahhoz, hogy a rendszer a szervezet törvényei szerint működjön (jogalkotás).
A nem funkcionális követelmények gyakran kritikusabbak, mint az egyes funkcionális követelmények. A felhasználók általában megtalálják a módját, hogy megkerüljenek egy olyan rendszerfunkciót, amely nem igazán felel meg az igényeiknek. Ha azonban egy nem funkcionális követelmény nem teljesül, az azt jelentheti, hogy az egész rendszer használhatatlan.
Ha például egy repülőgép nem felel meg a megbízhatósági követelményeknek, akkor nem lesz biztonságos a működése, vagy ha egy beágyazott vezérlőrendszer nem felel meg a teljesítménykövetelményeknek, akkor a vezérlési funkciók nem fognak megfelelően működni.
A nem funkcionális követelményeknek mérhetőnek kell lenniük
Ahol csak lehet, a nem funkcionális követelményeket kvantitatív módon kell megfogalmaznunk, hogy tesztelhetőek legyenek. Mérhetjük őket, amikor a rendszert teszteljük, hogy ellenőrizzük, a rendszer megfelel-e a nem funkcionális követelményeknek.
A gyakorlatban egy rendszer ügyfelei gyakran nehezen tudják céljaikat mérhető követelményekké alakítani. Nem értik, hogy mi az a bizonyos szám, amely meghatározza az elvárt sebességet vagy megbízhatóságot. Egyes célok, például a karbantarthatóság esetében nincsenek használható mérőszámok.
A mérhető nem funkcionális követelmények ellenőrzésének költségei nagyon magasak lehetnek, és az ügyfelek nem biztos, hogy úgy gondolják, hogy ezek a költségek indokoltak.
A nem funkcionális és funkcionális követelmények függnek egymástól
A nem funkcionális követelmények gyakran ütköznek, kölcsönhatásban vannak egymással, vagy akár más funkcionális vagy nem funkcionális követelményeket generálnak.
Egy biztonsággal kapcsolatos felhasználói követelmény, például a jogosultsággal rendelkező felhasználók hozzáférésének korlátozása, más funkcionális követelményeket generálhat, például azt, hogy a rendszerbe felhasználói hitelesítési lehetőségeket kell beépíteni.
A funkcionális és nem funkcionális követelmények megkülönböztetése
A gyakorlatban nehéz szétválasztani a funkcionális és a nem funkcionális követelményeket. A megkülönböztetés nem olyan egyértelmű, mint ahogy a definícióik sugallják.
A funkcionális és nem funkcionális követelmények szétválasztása
Ha a nem funkcionális követelmények a funkcionális követelményektől elkülönítve vannak megfogalmazva, a köztük lévő kapcsolat nehezen érthető.
Azokat a követelményeket azonban kifejezetten ki kell emelnünk, amelyek egyértelműen kapcsolódnak a rendszer olyan emergens tulajdonságaihoz, mint például a teljesítmény vagy a megbízhatóság.
Az emergens tulajdonságok a rendszer egészének tulajdonságai, nem pedig az egyes rendszerelemek tulajdonságaiból levezethető tulajdonságok.
Az emergens tulajdonságok a rendszer egészének tulajdonságai.