Pri razvoju programske opreme s sledenjem več kompleksnim korakom pretvorimo idejno zasnovo, ki je nastala iz potreb uporabnikov, v delujočo rešitev. Gre za zapleten skupek procesov, pri katerem je priporočljivo sledenje že ustvarjenim in večkrat preizkušenim dobrim praksam in smernicam razvoja programske opreme. Vsaka izmed faz v življenjskem ciklu programske opreme je podprta s številnimi multidisciplinarno priznanimi standardi, smernicami in dobrimi praksami. Vanje je združenih mnogo izkušenj in sledenje tem lahko pozitivno vpliva na uspešnost projekta razvoja programske opreme.
Eden izmed pomembnejših delov razvoja predstavljajo zahteve programske opreme. Ta del razvoja je usmerjen v pridobivanje, analizo, specificiranje, potrjevanje in upravljanje zahtev programske opreme v celotnem življenjskem ciklu (IEEE, 2014). V industriji in raziskovalni sferi velja, da so projekti razvoja programske opreme še posebej kritično ranljivi, kadar so koraki, povezani z zahtevami, slabo oziroma pomanjkljivo izvedeni (IEEE, 2014). Glede na pomembnost področja je to urejeno s številnimi dostopnimi dobrimi praksami in standardi. Eden izmed njih je standard ISO/IEC/IEEE 29148:2011 (ISO/IEC/IEEE, 2018b), ki nagovarja inženiring zahtev v sistemskem in programskem inženirstvu. Trenutno aktualna verzija standarda je nasledila verzijo iz leta 2011. Gre za standard, ki specificira procese, implementirane v inženirske aktivnosti, te pa se odražajo v zahtevah za sistemske in programske produkte (ISO/IEC/IEEE, 2018b). Standard je močno povezan s standardoma ISO/IEC/IEEE 15288:20152 (ISO/IEC/IEEE, 2015) in ISO/IEC/IEEE 12207:20173 (ISO/IEC/IEEE, 2017b) ter ponuja smernice za implementacijo z zahtevami povezanih procesov.
V prispevku se omejujemo na standard ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b) in njegovo vlogo pri revidiranju inženiringa zahtev programske opreme. V naslednjem poglavju natančneje predstavimo pojma programska oprema in programsko inženirstvo ter življenjski cikel programske opreme v skladu z opredelitvami, ki jih ponujata standarda ISO/IEC/IEEE 15288:2015 (ISO/IEC/IEEE, 2015) in ISO/IEC/IEEE 12207:2017 (ISO/IEC/IEEE, 2017b). Nato je podrobneje predstavljen inženiring zahtev programske opreme, pri čemer se opiramo na standard ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b). V drugem delu prispevka se osredotočimo na praktični prikaz izvedbe revidiranja inženiringa zahtev programske opreme, natančneje na preverjanje skladnosti z dvema procesoma, ki sta povezana z inženiringom zahtev. Nadaljujemo pa z opisom revizijskega pristopa, v katerem vzorčno poudarimo nekaj konkretnih primerov vprašanj in analiz po predlaganih metodah in tehnikah revidiranja.
Programska oprema4 (angl. software) je poznan in razširjen izraz tako pri informacijsko-komunikacijskih tehnologijah kot tudi izven tega področja. Večinoma si programsko opremo predstavljamo kot del računalnika, ki nam uporabnikom zagotovi želeno delovanje. Glede na opredelitev, ki jo ponuja ISO/IEC/IEEE 24765:2017,5 je programska oprema (1) program oziroma zbirka programov, ki jih poganja računalnik, oziroma (2) računalniški program, postopki in morebitna povezana dokumentacija ter podatki, ki se nanašajo na delovanje računalniškega sistema ali sistema za procesiranje informacij (ISO/IEC/IEEE, 2017a). S programsko opremo, natančneje z načrtovanjem, implementacijo, testiranjem in dokumentiranjem programske opreme, se ukvarja programsko inženirstvo (ISO/IEC/IEEE, 2017a). To je opredeljeno kot uporaba sistematičnega, discipliniranega in merljivega pristopa za razvoj, izvajanje in vzdrževanje programske opreme (IEEE, 2014, ISO/IEC/IEEE, 2017a).
Programsko opremo razvijamo v procesu razvoja programske opreme, ki je glede na opredelitev proces, pri katerem so potrebe uporabnika prenesene v programski produkt (ISO/IEC/IEEE, 2017a). Razvoj programske opreme je del življenjskega cikla programske opreme (angl. software life cycle – slC), pri čemer je življenjski cikel programske opreme zaporedje projektno specifičnih aktivnosti, ustvarjenih z mapiranjem aktivnosti standarda na izbran model življenjskega cikla programske opreme oziroma cikel, ki se začne na podlagi potreb uporabnikov in zaključi z ukinitvijo uporabe izdelka ali ko programska oprema več ni na voljo za uporabo (ISO/IEC/IEEE, 2017a).
Tako standard ISO/IEC/IEEE 15288:2015 (ISO/IEC/IEEE, 2015) kot tudi standard ISO/IEC/IEEE 12207:2017 (ISO/IEC/IEEE, 2017b) obravnavata procese življenjskega cikla, pri čemer se standard ISO/IEC/IEEE 15288:2015 (ISO/IEC/IEEE, 2015) osredotoča na sisteme, standard ISO/IEC/IEEE 12207:2017 (ISO/IEC/IEEE, 2017b) pa svoje področje omeji na programsko opremo. Kadar je sistemski element programska oprema, se za njeno implementacijo lahko uporabi standard ISO/IEC/IEEE 12207:2017. Standarda sta med seboj usklajena in primerna za uporabo na istem projektu (ISO/IEC/IEEE, 2015). Da gre za usklajena standarda, dokazuje tudi tabela z mapiranimi procesi obeh standardov, ki je na voljo v prilogah standarda ISO/IEC/IEEE 12207:2017 (ISO/IEC/IEEE, 2017b).
Standard ISO/IEC/IEEE 12207:2017 k že obstoječim opredelitvam programske opreme doda pojem programskega sistema4 (angl. software system). Gre za sistem, za katerega je zainteresiranim deležnikom programska oprema primarnega pomena (ISO/IEC/IEEE, 2017a). Standard predvideva, da je programski sistem ustvaril in uporabil človek za zagotavljanje produkta ali storitve v opredeljenem okolju v korist uporabnikov in drugih deležnikov (ISO/IEC/IEEE, 2017b). Pri tem lahko programski sistemi vključujejo elemente, kot so strojna in programska oprema, podatki, procesi, procedure, storitve in drugo (ISO/IEC/IEEE, 2017b).
Standard ISO/IEC/IEEE 15288:2015 predvideva, da ima vsak sistem svoj življenjski cikel, pri čemer se življenjski cikli razlikujejo glede na naravo, namen, uporabo in prevladujoče okoliščine sistema (ISO/IEC/IEEE, 2015). Vsaka faza ima svoj namen in pripomore k celotnemu življenjskemu ciklu (ISO/IEC/IEEE, 2015). Glede na ISO/IEC/IEEE 24728-1:2018 (ISO/IEC/IEEE, 2018a) ima tipičen življenjski cikel sistema šest faz (Slika 1). Gre za faze koncepta, razvoja, produkcije, uporabe, podpore in upokojitve (ISO/IEC/IEEE, 2018a). Kot pojasnjuje standard, pa uporaba omenjenih terminov za poimenovanje faz ne predstavlja normativa (ISO/IEC/IEEE, 2017b) in se po potrebi lahko primerno prilagodi.
Aktivnosti, ki jih je mogoče izvesti v življenjskem ciklu, standarda ISO/IEC/IEEE 15288:2015 (ISO/IEC/IEEE, 2015) in ISO/IEC/IEEE 12207:2017 (ISO/IEC/IEEE, 2017b) združujeta v štiri procesne skupine, prikazane na sliki 2. Gre za skupine procesov dogovora (angl. agreement processes), organizacijskih procesov za omogočanje projektov (angl. organizational project-enabling processes), skupino procesov tehničnega vodenja (angl. technical management processes) in skupino tehničnih procesov (angl. technical processes).
Procesne skupine združujejo 30 procesov, vsak izmed njih pa je opisan z vidika namena, želenih izhodov, aktivnosti in opravil, ki so izvedena za doseganje določenih izhodov (ISO/IEC/IEEE, 2017b). Struktura opisa posameznega procesa je prikazana na Sliki 3.
Čeprav je revizijski pregled mogoč glede na vse štiri skupine in pripadajoče procese, se v pričujočem članku omejimo le na procese inženiringa zahtev programske opreme in procese, vključene v skupino tehničnih procesov.
Inženiring zahtev programske opreme izraža sistematično ravnanje z zahtevami (IEEE, 2014) pri razvoju programske opreme. Je interdisciplinarna funkcija, ki posreduje med domeno prevzemnika in dobavitelja oziroma razvijalca, in sicer za vzpostavitev in vzdrževanje zahtev, ki jih mora izpolniti programska oprema (ISO/IEC/IEEE, 2018b). Inženiring zahtev programske opreme obsega odkrivanje, izvabljanje, razvoj, analizo, verifikacijo, validacijo, komunikacijo, dokumentiranje in upravljanje zahtev (ISO/IEC/IEEE, 2018b).
Po opredelitvi iz standarda ISO/IEC/IEEE 29148:2018 je zahteva izjava, ki prevaja ali izraža potrebo in povezane omejitve ter pogoje (ISO/IEC/IEEE, 2018b). Po standardu mora vsaka izmed oblikovanih zahtev programske opreme ustrezati značilnostim, prikazanim na Sliki 4. Podrobna razlaga vsake značilnosti je v standardu ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b).
Slika 4: Značilnosti posameznih zahtev programske opreme po standardu ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b)
Rezultat inženiringa zahtev so zahteve, ki se nanašajo na izbrani sistem ali programsko opremo, omogočajo dogovorjeno razumevanje med deležniki, so validirane glede na potrebe realnega sveta, jih je mogoče implementirati in zagotavljajo referenco za verifikacijo načrta in rešitev (ISO/IEC/IEEE, 2018b).
Revidiranje inženiringa zahtev programske opreme je lahko pomembno z več vidikov. Med številnimi cilji je mogoče zaslediti tudi cilj preverjanja skladnosti z izbranim in uporabljenim standardom. V pričujočem prispevku smo se omejili na standard ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b), pri čemer na več praktičnih primerih prikažemo izvedbo revizijskega pregleda za potrditev skladnosti s standardom. Če je proces inženiringa zahtev skladen s standardom ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b), je skladen tudi s procesi inženiringa zahtev standardov ISO/IEC/IEEE 15288:2015 (ISO/IEC/IEEE, 2015) in ISO/IEC/IEEE 12207:2017 (ISO/IEC/IEEE, 2017b). Gre za procese:
Procesi inženiringa zahtev v verzijah standarda ISO/IEC/IEEE 29148 se razlikujejo. Razlike so posledica drugače opredeljenih procesov v verzijah standardov ISO/IEC/IEEE 15288:2008 (ISO/IEC/IEEE, 2008a) in ISO/IEC/IEEE 12207:2008 (ISO/IEC/IEEE, 2008b). Glede na to, da trenutne verzije standardov šele vstopajo v veljavo in je še zmeraj mogoče zaslediti sledenje predhodnim verzijam standarda, Slika 5 grafično predstavlja spremembe v procesih inženiringa zahtev med standardoma ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b) in ISO/IEC/IEEE 29148:2011 (ISO/IEC/IEEE, 2011). Zaradi lažjega razumevanja in sledenja standardom so nazivi procesov navedeni v izvornem jeziku.
Slika 5: Razlika med procesi inženiringa zahtev, kot jih obravnavata standarda ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b) in ISO/IEC/IEEE 29148:2011 (ISO/IEC/IEEE, 2011)
V prispevku se v nadaljevanju osredotočamo na trenutno verzijo standarda ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b) in na proces analize poslov ali nalog, opredelitev potreb in zahtev deležnikov ter analizo zahtev programske opreme pri njenem razvoju. Omenjeni procesi za izhod ponudijo osnovni nabor zahtev, kar je izhodišče in predstavlja vhod v nadaljnje procese razvoja programske opreme, natančneje v arhitekturo in načrtovanje.
V standardu ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b) so vsi trije procesi opisani s strukturo, prikazano na Sliki 3. Struktura je poznana že iz standardov ISO/IEC/IEEE 15288:2015 (ISO/IEC/IEEE, 2015) in ISO/IEC/IEEE 12207:2017 (ISO/IEC/IEEE, 2017b) ter po poglavjih o namenu, izhodih ter aktivnostih in opravilih opiše vsakega izmed procesov. Standard ISO/IEC/IEEE 29148:2018 (ISO/IEC/IEEE, 2018b) pregledno vključi in prikaže vsebino iz povezanih standardov ter jo dopolni s smernicami za implementacijo posameznih aktivnosti in pripadajočih opravil.
V nadaljevanju sta v ločenih podpoglavjih predstavljena proces opredelitve potreb in zahtev deležnikov ter proces opredelitve zahtev programske opreme, ne pa tudi proces analize poslov ali nalog. Predstavimo strukturo in točke preverjanja vsakega izmed procesov, prav tako pa ponudimo nekaj praktičnih primerov preverjanja skladnosti z izbranimi procesi inženiringa zahtev.
Tax-Fin-Lex d.o.o.
pravno-poslovni portal,
založništvo in
izobraževanja
Tax-Fin-Lex d.o.o.
Železna cesta 18
1000 Ljubljana
Slovenija
T: +386 1 4324 243
E: info@tax-fin-lex.si
PONUDBA
Predstavitev portala
Zakonodaja
Sodna praksa
Strokovne publikacije
Komentarji zakonov
Zgledi knjiženj
Priročniki
Obveščanja o zakonodajnih novostih
TFL AI
TFL IZOBRAŽEVANJA
TFL SVETOVANJE
TFL BREZPLAČNO
Brezplačne storitve
Preizkusite portal TFL
E-dnevnik Lex-Novice
E-tednik TFL Glasnik
Dodatni članki