Portal TFL

TFL Vsebine / TFLGlasnik

Vpliv umetne inteligence na zagotavljanje kakovosti informacijskih sistemov

O PUBLIKACIJI in AVTORJU
ŠTEVILKA in LETO IZDAJE
Sirius 202504
AVTOR
dr. Tina Beranič in dr. Luka Pavlič
Datum
11.11.2025
Rubrika
Članki
Pravna podlaga
ni določena
Povezave
Podsistem TAX
Podsistem FIN
Podsistem LEX
Povzetek
Umetna inteligenca vse bolj prodira na področje razvoja informacijskih sistemov, pri čemer koraki in procesi zagotavljanja kakovosti niso izjema. Če nam umetna inteligenca po eni strani ponudi orodje in pristope, ki zagotavljanje kakovosti lahko pomembno izboljšajo, nas po drugi strani sooči z do zdaj nepoznanimi izzivi, katerih učinkovita obravnava je ključna za učinkovit razvoj sodobne programske opreme. V prispevku se dotaknemo dveh vidikov. Pri prvem obravnavamo umetno inteligenco kot podporo procesu zagotavljanja kakovosti ter predstavimo pristope in orodja, ki s tehnologijami umetne inteligence bistveno izboljšajo in poenostavijo korake zagotavljanja kakovosti. Pri drugem pa se ukvarjamo z izzivom, povezanim z zagotavljanjem kakovosti informacijskih rešitev s komponento umetne inteligence, ter izzivom, ključnim za zagotavljanje kakovostnih rešitev – kaj je pravilno in pričakovano.
BESEDILO
»There is no security against the ultimate development of mechanical consciousness.« Samuel Butler, Erewhon, 1872

Kljub razmahu na področju umetne inteligence (angl. Artificial Intelligence - AI, slov. UI) v zadnjih letih ne gre za nov koncept. Že leta 1872 je Samuel Butler pisal o zavesti, ki jo posedujejo oziroma jo bodo posedovali stroji. Še več, človeštvo že dolgo sanja o tem, da bi inteligenco uspešno in učinkovito vpeljalo v stroje (Riccio et al., 2020). V to smer so se razvijale tudi raziskave 20. stoletja, pri čemer je enega izmed temeljev razvoja umetne inteligence postavil Alan Turing. Leta 1950 (Turing, 1950) je predlagal test za preverjanje sposobnosti inteligentnega vedenja stroja, ki se ne razlikuje od človeškega.

Kar je bilo na začetku poimenovano kot inteligenca strojev, je kar hitro prevzelo poimenovanje umetna inteligenca. Izraz, kot ga uporabljamo še danes, je bil skovan v petdesetih letih 20. stoletja in pojasnjen kot »znanost in inženiring izdelave inteligentnih strojev« (Manning, 2020). Umetna inteligenca obsega številne tehnologije, metode in tehnike, ki omogočajo, da se je razvila do stopnje, s katero se ukvarjamo danes.

Umetna inteligenca prodira na številna področja življenja in dela, izjema ni niti programsko inženirstvo. Programsko inženirstvo je opredeljeno kot uporaba sistematičnega, discipliniranega in merljivega pristopa k razvoju, delovanju in vzdrževanju programske opreme (ISO/IEC/IEEE, 2017), ki obsega številne zahtevne in obsežne korake. Razvoj programske opreme se začne s potrebo, ki se po uveljavljenih postopkih prelije v zahteve, te pa se skladno z aktualnimi dobrimi praksami ter upoštevajoč trenutno stanje razvijejo do delujoče programske opreme. Pomemben del življenjskega cikla programske opreme so postopki preverjanja in zagotavljanja kakovosti, ki so ključni za učinkovit razvoj in obstoj programskih rešitev. Če smo včasih aktivnosti zagotavljanja kakovosti izvajali šele po končani fazi razvoja programske opreme, se s paradigmami »premika v levo« omenjene aktivnosti selijo že v (naj)zgodnejše faze (Nader-Rezvani, 2019).

Zagotavljanje kakovosti v programskem inženirstvu obsega skupek aktivnosti, ki opredeljujejo in ocenjujejo ustreznost procesov programske opreme za zagotavljanje dokazov, za vzpostavitev zaupanja, za zagotovitev, da so procesi programske opreme ustrezni in da proizvajajo programske izdelke ustrezne kakovosti za predvidene namene (IEEE, 2014). Definicija, ki jo podaja IEEE–jev Standard for Software Quality Assurance Processes (IEEE, 2014), izpostavlja pomembno komponento, vidik zaupanja. To je še posebej pomembno, kadar v sicer tradicionalno in uveljavljeno programsko opremo ter seveda pripadajoče pristope, metode in tehnike razvoja posežejo nove in aktualne tehnologije. V današnjem času je primer tega zagotovo umetna inteligenca.

Zadnja leta smo velikokrat soočeni z dvema pojmoma, SE4AI oz. AI4SE. Gre za povezavo domen programskega inženirstva in umetne inteligence. Programsko inženirstvo za umetno inteligenco (angl. SE4AI - Software Engineering for Artificial intelligence) obsega sistematičen razvoj, uvajanje in vzdrževanje rešitev, ki temeljijo na umetni inteligenci. Pri tem gre za uporabo in prilagajanje tradicionalnih načel programskega inženirstva za razvoj rešitev s komponento UI-ja. Po drugi strani pa umetna inteligenca za programsko inženirstvo (AI4SE - Artificial intelligence for Software Engineering) obsega uporabo tehnik za izboljšanje različnih vidikov programskega inženirstva (McDermott et al., 2020).

V prispevku se omejimo na vpetost umetne inteligence v enega izmed korakov programskega inženirstva, procese zagotavljanja kakovosti programske opreme. Še posebej se osredotočimo na testiranje programske opreme, in sicer: v drugem poglavju na vpogled v vključenost tehnologij, tehnik in metod umetne inteligence kot podpore pri izvajanju procesov zagotavljanja kakovosti programske opreme, v tretjem poglavju pa je predstavljeno, kako je mogoče učinkovito preveriti kakovost programskih rešitev, v katerih so komponente, ki temeljijo na umetni inteligenci.

2. UMETNA INTELIGENCA V PROGRAMSKEM INŽENIRSTVU

Procesi programskega inženirstva vključujejo aktivnosti, ki jih programski inženirji izvedejo za izgradnjo in delovanje programske opreme (Washizaki, 2024). Inženirski proces sestavljajo sklopi med seboj povezanih aktivnosti, ki pretvorijo vhode v izhode z uporabo virov, ki to transformacijo omogočijo (Washizaki, 2024). Rezultat izvedbe aktivnosti programskega inženirstva je programska oprema, ki ima določen in opredeljen življenjski cikel ter predstavlja evolucijo produkta ali sistema od koncepta do upokojitve (Project Management Institute, 2021). V programskem inženirstvu so to procesi, dejavnosti in aktivnosti, povezane s planiranjem, analizo in načrtovanjem, razvojem, testiranjem in vzdrževanjem. Pri tem obstaja več modelov življenjskega cikla za razvoj programske opreme, med drugim slapovni, V-model, spiralni in agilni model (Washizaki, 2024).

Glede na vseprisotnost je umetna inteligenca pomembno prodrla tudi na področje programskega inženirstva, na katerem s svojimi metodami in tehnikami na najrazličnejše načine podpira vse korake življenjskega cikla razvoja programske opreme. Umetna inteligenca programskemu inženirstvu ponuja podporo z avtomatizacijo in optimizacijo, prediktivnim modeliranjem, izboljšano podporo odločanju, izboljšanjem kakovosti informacijskih sistemov in drugim.

Barenkamp et al. (2020) so povzeli uporabo umetne inteligence v različnih korakih razvoja programske opreme. Razvidno je, da je umetna inteligenca prisotna, izpostavljajo pa tudi več primerov orodij, ki se uporabljajo v praksi. Podoben pregled sta izvedla Alenezi in Akour (2025), ki sta ga dopolnila s spoznanji, pridobljenimi z anketo. Med drugim so preverjali stopnji sprejetosti umetne inteligence v posameznih korakih življenjskega cikla, pri čemer s skoraj 70 % vodi faza razvoja, z nekaj manj kot 60 % pa sledi faza testiranja. Od vprašanih jih 62% celo verjame, da se je zaradi uporabe različnih orodij, temelječih na umetni inteligenci, pomembno zmanjšalo število napak po izdaji programske opreme, s povprečno oceno 4,0 pa so ovrednotili trditev, povezano z izboljšanjem kakovosti programske kode.

2.1. Umetna inteligenca pri testiranju programske opreme

Zagotavljanje kakovosti je pomemben korak v razvoju programske opreme. Aktivnosti, ki vključujejo vse od različnih tipov in ravni testiranja, spremljanje atributov kakovosti, do pregledov programske kode, so z razmahom umetne inteligence učinkovitejše in uspešnejše. Testiranje programske opreme obsega dinamično verifikacijo, da programska rešitev dela, kot se pričakuje, izvede pa se z zaključenim številom testnih primerov, primerno izbranih iz običajno neskončnega področja izvajanja (Bourque in Fairley, 2014). Opredeljene so tri ravni testnih procesov, organizacijski testni procesi, procesi upravljanja testiranja in dinamični testni procesi (ISO/IEC/IEEE, 2022). Slednji vključujejo korake od ustvarjanja in implementacije testov, oblikovanja testnega okolja in upravljanja podatkov, do izvajanja testov in poročanja o testnih incidentih (ISO/IEC/IEEE, 2022).

Durrani et al. (2024) izpostavljajo več prednosti, pridobljenih z različnimi tehnologijami umetne inteligence v fazi testiranja programske opreme. Poenostavljeno je določanje prioritet izvajanja testov, izboljšano odpravljanje in napovedovanje napak v programski opremi, ustreznejše vzorčenje, bolje pa se lahko optimizirajo tudi testni nabori. Povezava podpore oz. uporabe umetne inteligence v procesih testiranja programske opreme je zelo bogato področje s pestro zgodovino. To dokazuje tudi terciarna študija avtorja Amalfitano s sodelavci (2023), v kateri so izbrali več kot 20 sistematičnih študij omenjenega področja, datiranih vse od leta 2009 naprej. Veliko študij omenja generiranje testnih primerov s pomočjo umetne inteligence, definiranje testnih orakljev, optimizacijo testnih primerov in drugo. Številne primere uporabe umetne inteligence za uspešno napoved napak navaja tudi Yesare (2025). Nekateri primeri uporabe umetne inteligence pri testiranju programske opreme vključujejo:

  • pomoč pri avtomatizaciji,
  • enostavnejše ustvarjanje testnih primerov,
  • avtomatsko vzdrževanje testnih postopkov,
  • samodejno generiranje testnih primerov,
  • generiranje testnih podatkov,
  • prediktivno analizo napak,
  • avtomatizacijo regresijskega testiranja,
  • načrtovanje, vzdrževanje in spremljanje izvedenih testov.

Dodatno umetna inteligenca podpira tudi avtomatizacijo generiranja testnih primerov na podlagi analize sprememb programske kode, pri čemer je njen pomemben doprinos predvidevanje potencialnih točk napak v programski opremi (Alenezi in Akour, 2025).

3. TESTIRANJE REŠITEV S KOMPONENTO UMETNE INTELIGENCE

Nedvomno je uporaba umetne inteligence kot pripomočka močno prisotna tako pri testiranju programske opreme kot tudi širše v programskem inženirstvu. Nove izzive pa odpira vprašanje, kako zagotoviti kakovost programske opreme, ki vključuje komponento umetne inteligence. Felderer in Ramler (2021) sisteme s komponento umetne inteligence opredeljujeta kot programsko opremo, v kateri so tradicionalne komponente programske opreme združene s komponentami umetne inteligence. Komponente umetne inteligence, predvsem tiste, ki temeljijo na nadzorovanem strojnem ali globokem učenju, se od tradicionalnih razlikujejo predvsem zaradi svoje podatkovne usmerjenosti (Felderer in Ramler, 2021). Med bolj poznane primere rešitev, v katerih so tradicionalne komponente informacijskih sistemov združene s komponentami umetne inteligence, so na primer sistemi za prepoznavanje govora ali slik, sistemi avtonomne vožnje in obdelava naravnega jezika (Riccio et al., 2020).

Do zdaj uspešno implementirani pristopi razvoja informacijskih sistemov in uporabljene dobre prakse pri programskih rešitvah s komponento umetne inteligence naletijo na številne ovire. Z vključitvijo umetne inteligence rešitve postajajo podatkovno intenzivne, nenehno razvijajoče se in samoprilagajoče, njihovo obnašanje pa ima določeno splošno sprejeto stopnjo negotovosti zaradi inherentnega nedeterminizma (Felderer in Ramler, 2021). To še posebej vpliva na področje zagotavljanja kakovosti informacijskih sistemov in testiranje (Lenarduzzi et al., 2021). Čeprav testiranje algoritmov umetne inteligence v fazi razvoja izvedejo že razvijalci umetne inteligence, je testiranje delovanja komponent v okviru celotnega informacijskega sistema pomemben vidik, ki ga je treba upoštevati pri načrtovanju in izvajanju že uveljavljenih procesov zagotavljanja kakovosti v programskem inženirstvu.

Celoten članek je dostopen za naročnike!

BREZPLAČNI PREIZKUS

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

 
x - Dialog title
dialog window