POROČILA S Iskanje zakonov oblikovanja programske opreme z metodami znanosti o kompleksnosti Peter- Ko kol1-, Milan Z o rman1-' Mitja Lenič1, Alojz Tapajner1 1 Laboratorij za načrtovanje sistemov, FERl Univerza v Mariboru, Smetanova 17, Maribor J Center za interdisciplinarne in multidisciplinarne raziskave in Študije Univerze v Mariboru, Krekova 2, Maribor Povzetek Z dramatičnim povečanjem kompleksnosti in velikosti programske opreme se veča tudi verjetnost pojava napak in kriznih situacij pri njeni uporabi. Žal konvencionalne metode za merjenje in kontrolo kvalitete niso dovolj uspešne, zato je potrebno uporabiti nekonven-cionalne pristope, kot so teorija kompleksnosti in adaptivnlh sistemov, fizikalno podprte metrike, evolucijske ekonomsko/tri ne teorije ter inteligentno analizo podatkov, da bi dosegli temeljno razumevanje in večjo kakovost programske opreme In samega procesa njenega oblikovanja. V članku humn predstavili prve rezultate evropskega projekta SQUFQL, v katerem smo za merjenje kvalitete programske opreme uporabili in nadgradili tehnike, ki so se uveljavile v zgoraj navedenih področjih. Abstract SOFTWARE QUALITY FOUNDED ON DESIGN LAVUS AND SCIENCE OF COMPLEXITY As the size and complexity of software systems is growing dramatically the possibility of crises from failure increases Conventional methods for measuring and controlling quality are not successful enough, therefore it is our objective to use the science of complexity, the theory of chaos, fractals, traditionally ¿physically based1 methodologies, theory of complex adaptive systems, biologically and evolutionary inspired economic/market theories, intelligent data analysis and data mining to gain a fundamental understanding of thB software process and the software products and to improve them. The aim of the recent paper is to present the first results of the European project SQUFOL. 1 Uuod Razvoj in oblikovanje programske opreme je kompleksen proces [1, 4, 3,14]. Še nedavno tega smo nanju gledali kot na umetnost, pa tudi danes še nista dosegla vseh žalitev popolnoma inženirske discipline. V zadnjih desetletjih, še posebej u zadnjih nekaj letih sta velikost in kompleksnost programske opreme dramatično narastli. Sistemi z več sto milijoni vrstic programskega koda niso več nobena posebnost, poleg tega zahteve po kompleksnih programskih sistemih naraščaja hitreje kot naše zmožnosti, da takšne sisteme načrtujemo, gradimo in vzdržujemo. S porastom naših zahtev in s porastom naše odvisnosti od računalnikov naraščajo možnosti, da ho zaraili izpada računalniškega sistema prišlo do različnih kriznih situacij, ki lahko obsegajo manjše neprijetnosti, finančne nepravilnosti in izgube, v skrajnih primerih pa cela izgube človeških življenj. Torej je jasno, da zanesljivost programske opreme ne zadeva več samo načrtovalcev programske opreme in računalniških strokovnjakov, ampak tudi širšo družbo kot celoto. Zato je konsistentno in ekonomično doseganje najvišjega nivoja kvalitete programske opreme ključnega pomena, vendar zato potrebujemo zakone razvoja programske opreme, ki jih žal še nismo odkrili. Popolnoma jasno je, da lahko zakone oblikovanja odkrijemo samo z uporaba empiričnega znanstveno/sistemskega pristopa, za kar pa potrebujemo uspešne metrike programske opreme. Žal konvencionalne metode za merjenje programske opreme niso dovolj uspešne, zato je potrebno uporabiti nekonuencionalne pristope. 1.1 Oblikouanje programske opreme jo kompleksen adaptiuen sistem Tako kot kompleksni sistemi v ekonomiji in menedž-mentu ima tudi razvoj programske opreme {razvoj tu zajema celoten življenjski cikel, od idej in opisov potreb do uporabe in vzdrževanja) podobne sistemske lastnosti [3, 11]: je kompleksen, dinamičen, nelinearen in adaptiven. Posledično je cilj evropskega projekta SQUFOL [5] (Software Quality Founded on Design Laws) odkriti temeljne zakone programske opreme, 2004 - Številka 2 • letnik XII UPODADN* INFORMATIKA 107 Pelpr Kokol. MrL.in Čornian. Milja Lenič, Alojz Tapajner; Iskanje zakonov oblikovanja programske opreme i metodami znanosti o kompleksnosti njene evolucije, kvalitete in razvojnega procesa z uporabo pristopa, ki združuje teorijo kompleksnosti, razne sistemske teorije, teorijo kaosa ter fraktalov, tradicionalne fizikalno podprte metodologije, teorijo kompleksnih adaptivnih sistemov, evolucijske tržno-ekonomske teorije, inteligentno analizo podatkov, podatkovno rudarjenje ter druge metode, ki Se niso priznane s strani raziskovalcev oblikovanja programske opreme. Poznavanje temeljnih zakonov ho omogočalo povečanje znanja o kvaliteti programske opreme in njenem razvojnem procesu, oblikovanje enostavnega in razumljivega procesa oblikovanja in kot posledico razvoj visoko kvalitetne programske opreme, ki ne bo povzročala prej omenjenih težav. V članku bomo predstavili enega izmed prvih rezultatov projekta SQUFOL - zakonitost, da se oblikovanje programske opreme obnaša podobno kot dinamični kaotični sistemi, generirani s 1.1, logistično enačbo, 2 Težave pri oblikovanju programske opreme Porast zahtev po kvalitetni programski opremi in nezmožnost izpolnjevanja le-te sta pripeljala do dobro znane 'krize' programske opreme. Njeni vzroki in posledice so predmet mnogih razprav v literaturi [10], naše mnenje pa je, da je glavni vzrok te krize nezmožnost poiskati in razumeti temeljne zakone programske opreme, njihovo uporabo, kvaliteto in njihov proces razvoja. Menimo, da je osnova za reševanje krize odkrivanje temeljev in zakonov oblikovanja, ki v katerikoli znanstveni disciplini temelji na zmožnosti merjenja. Žal na področju razvoja programske opreme ni dovolj uspešnih programskih metrik, za kar so krivi naslednji vzroki [7]: • Metrike so odvisne od jezika in oblike: za različne programske jezike (izvorna koda), objektne kode itd., je potrebno uporabiti različno metrike. Nadalje je programska oprema lahko predstavljena v različnih oblikah, kot so sistemski koncepti, zahteve, specifikacije, razvojna dokumentacija, uporabniški vmesniki, zbirke pomoči itd. Še dodatno so lahko vse te predstavitve predstavljene v različnih oblikah, kot so tekst v naravnem jeziku, grafična predstavitev, simbolni zapis, tekst, zapisan s formalnimi jeziki ipd. Za vsako od teh različnih predstavitev moramo uporabiti svojo metriko, kar pomeni, da nismo zmožni primerjati enakih izdelkov v različnih oblikah ali predstavitvah ter tako ne moremo slediti spremembam kompleksnosti skozi razvojne faze. • Izhod tradicionalne metrike je številka, ki nima nikakršnega 'fizikalnega' pomena in enote (ne vemo, kaj merimo), niti nima znanih kritičnih vrednosti, ki bi povedale, kdaj je izmerjena vrednost majhna ali velika. • Relacije metrike - programska oprema (za izdelke in procese) so redko znane, zato so tudi takšne metrike slaba podlaga za postavitev temeljnih zakonitosti. To je posledica predvsem dveh dejstev: ■ Metrika ni bila izpeljana na podlagi teorije, ampak na podlagi pragmatičnih kratkoročnih ciljev. - Implementacija učinkovitih metrik je pogosto izvedena brez popolnega razumevanja metrike same ali je le-la osnovana na minimalni množici »poceni« postopkov za zbiranje podatkov. 3 Projekt SQUFOL Da bi se izognili gornjim problemom, smo v projektu SQUFOL uporabili in nadgradili tehnike, ki so se uveljavile v okviru vse bolj priljubljene znanosti o kompleksnih sistemih: 1. Na program gledamo kot na zbirko simbolov [6, 12, 13] in tako nanj apliciramo tehnike, ki ta program pretvorijo v 'signale'. Na teh signalih uporabimo tehnike analize, ki izhajajo s področja fizike. Primeri teh analiz so izračun informacijske vsebnosti, daljnosežnih korelacij, entropije ipd. 2. Faze razvoja programske opreme lahko primerjamo s fazami iterativnih map [2], 3. Na razvoj programske opreme lahko gledamo kot na trženje idej. Vsaka ideja ima svoje gene/meme in tekmuje za vire. Najboljše ideje preživijo, se med seboj križajo in mutirajo. Zato lahko procese analiziramo z uporabo evolucijsko-hioloških ekonomsko/tržnih teorij. 4. S celovitim pristopom in sekvenčnimi študijami lahko izmerimo vsa dejstva o programski opremi in njenem razvoju. 5. Z uporabo inteligentne analize poda (kov, podatkovnega rudarjenja in ek$ frakcije znanja lahko odkrijemo relacije, skrito znanje in zakone oblikovanja programske opreme. V nadaljevanju članka bomo predstavili prvi dve ideji. 4 Inverzne bifurkacije, logistična funkcija in oblikovanje programske opreme Programsko opremo običajno oblikujemo z iterativnim procesom [2] - računalniški program se razvija 108 upohabna INFORMATIKA 2004 - številka 2 - lelnik XII Peter Kokol. Milan Zorman, Mitja Lenič, Alojz Tapajner: iskanje lakonov oblikovanja programske opreme z metodami znanosti o kompleksnosti skozi različne verzije (slika 1). Na začetku procesa imamo veliko različnih idej, kako pravilno ali nepravilno predstaviti rešitev. Kreativnost je na vrhuncu, entropija je velika, vsebnost informacije je nizka. V naslednjih korakih se razvijejo pravilne in optimalne rešitve. V zadnji fazi se po navadi ukvarjamo z eno samo idejo (verjetno zelo kompleksno). Entropija in kreativnost sta nizki (imamo eno rešitev), medtem ko se informacijska vsebnost poveča. Za modeliranje gornjega procesa lahko uporabimo zelo popularen in zanimiv koncept iz teorije kompleksnih adaptivnih sistemov - to je logistično funkcijo, ki ponazarja dinamiko biološke populacije. Zanjo predpostavljamo, da generira podobno obnašanje, kot je obnašanje procesa oblikovanja programske opreme, vendar v obratnem vrstnem redu. Logistična funkcija je definirana kot kjer X v originalu predstavlja normirano število osebkov populacije, v primeru oblikovanja programske opreme pa informacijsko vsebnost ideje. Dinamika logistične funkcije vsebuje tri faze: kaos, bifurkacijo in normalno fazo. bifurkacija predstavlja podvojitev števila alraktorjev, v našem inverznem procesu pa združevanje idej. Če naredimo preslikavo med logistično funkcijo in procesom razvoja programske opreme, lahko faze logistične funkcije preprosto identificiramo s kontrolnim parametrom p in tako ugotovimo, v kateri fazi oblikovanja smo. Seveda za to potrebujemo metriko informacijsko vsebnosti idej (v našem primeru je ideja predstavljena kot računalniški program, psevdokod, algoritem ipd.) in jo opisujemo v naslednjih razdelkih. 5 Fraktalna programska metrika a Fraktalna metrika a [6| temelji na izračunu daljnosežnih korelacij. Metriko smo razširili Iz originalne Schenklove metode za pisana besedila na metodo znakov. Podobno kot na pisano besedilo lahko gledamo na računalniški program ali algoritem kot na niz znakov: Črk, števk, ločil, Z uporabo kodne tabele pretvorimo vsak znak v pripadajoče binarno zaporedje; program tako preslikamo v model dvodimenzionalnega Brovvnovega gibanja, ki je osnova za izračun regresijske funkcije F(1): F2(/)S M,/,,)]3 200Í - številka 2 - letnik XII Prvi del zgornje enačbe predstavlja povprečje kvadratov razlik med dvema točkama v modelu Brow-novega gibanja in drugi del kvadrat povprečij razlik, kjer razliko izračunamo s spodnjo enačbo: Ay(Ua)^y(l0 + l)-y(l0) Regresijska funkcija F(¡) loči med dvema tipoma obnašanja: ■ če je podano zaporedje znakov nekorelirano ali so prisotne lokalne koreiadje, ki segajo do nekega karakterističnega ranga (npr. Markovske verige ali simbolično zaporedje, tovorjeno iz regularnih gramatik), potem je F(l) * I05 ■ če ne obstaja karakteristična dolžina in so korela-cije "neskončne", potem je skalirna lastnost F(l) opisana s potenčnim zakonom F(/)»/ain 3.6), kako razviti razpoznava I ni k. Bistven preskok se ponovno zgodi med verzijama 21 in 22, kjer se očitno razjasni ideja rešitve. Slika 6: Rast velikosti Itpd skozi verzij« ID,5 1 t1 21 31 Bitka A n za razpoznavalnik skozi verzija ii 0.8 0,75 0.7 0,65 0,6 Slika 7; a in a* metriki za Itpd skozi verzije 2004 ■ številka 2 • letnik XII uporabna INFORMATIKA 111 Peler Kokot. Milan Zorman, Mitja Lenič, Alojz Ijp3jner: Iskanje zakonov oblikovanja programske opreme z metodami znanosti o kompleksnosti Slika C n 2a raipomavainik skozi verzije Zanimiv je tudi hkraten pogled na spremembe a metrike skozi čas, saj opazimo sočasne spremembe metrike na obeh modulih. o.o - 0,5--1-1-1-!- 12 3 4 5 — razpoznaval ni k — ftpd Slika 9 a metrika oba modula ikoii čas u mesecih G Sklep V članku smo predstavili temeljne ideje projekta SQUFOL in njegove prve rezultate. Bolj podrobno smo opisali metodologijo, s katero lahko ocenimo trenutno stanje razvoja programske opreme in njegove trende. Teorijo smo preverili na konkretnem primeru in pokazali njeno empirično veljavnost. 7 Literatura [1] Bar Yam, Y., "Dynamics of Complex Systems", Addison Wesley, 1997. [2] Cardoso, A. [,, Crespo, G., "Is the software process a eahotic one?", Working paper of Mathematical Science Center, Madeira University, 1999. [3| Gell-Mann, M., "What is complexity". Complexity 1(1), 1995,pp. 16-19. [4] Kitchenbam, B.. "The certainty of uncertainty". Proceedings of FESMA (Eds: Combes H. et al), Tech no logi s h Institut, 1998, pp. 17-25. [5] Kokol R et al. Software quality founded on design laws (SQUFOL): final report [about EU project] 5th Framework Programme, reporting period under review 1/10/2002-30/9/2003, (5th European framework project). Maribor: Fakulteta za elektrotehniko, računalništvo in informatiko. [6] Kokol, R, Podgorelec, V., Zorman, M., Pighin, M,, 'Alpha - a generic software complexity metric", Project control for software quality (Eds: Rob J. Kusters et a!.}, Maastricht: Shaker Publishing BV, 1999, pp 397-405. [7] Kokol, R, Podgorelec, V., Brest, J,, "A wishful complexity metric", Proceedings of FESMA (Eds: Combes H et al), Tech no logi sh Institut, 1998, pp. 235-246. [8] Kokol, R, Brest, J., "Fractal structure of random programs", Sigplan Notices, June 1998, pp. 33-38. [9] Kokol, R, Kokol, T., "Linguistic laws and computer programs", Journal of the American Society for Information Science, 47(10), 1996, pp. 781-785. [10] Kokoi, R, S t iglic, B. and Zumer, V,: Me ta paradigm: a soft and situation oriented MIS design approach. International Journal of Bio-Medical Computing 39, 1995, pp. 243-256. [11] Morowiu, H., "The Emergence of Complexity", Complexity 1(1), 1995, pp. 4. [12] Podgorelec V., Kokol, R: Uporaba fraktalne metrike kompleksnosti pri avtomatskem programiranju, Zbornik devete Elektrotehniške in računalniške konference ERK, 2000, str. 133-136. [13] Schenkel, A., Zhang, J., Zhang, Y.: Long range correlations in human writings, Fractals 1(1), 1993, pp. 47-55. [14] Tucker, A.B. (ed.), "The Computer Science and Engineering Handbook", CRC Press, 1997, [15] http://sourceforge.net/projects/pureftpd/ Dr. Peter Kokol ¡r na Univerzi v Manhnru diplomiral s področja elektrotehnike in doktoriral s področja računalništva. Njegovo raziskovalna področja so inteligentni sistemi, teorija sistemov, teorija kaosa in kvaliteta programske opreme. Je vodja nacionalnih in mednarodnih projektov ¡2 imenovanih področij. Njegova bibliografija obsega več kot 500 enot, od tega več kot 60 originalnih znanstvenih člankov Bil je predsednik organizacijskih in programskih odborov več svetovnih konferenc. Je predsednik IEEE tehničnega komiteja za računsko medicino. ■ Dr. Milan Zorman je diplomiral m doktoriral s področja računalništva in informatike na Fakulteti za elektrotehniko, računalništvo in informatiko Univerze v Mariboru, kjer je tudi zaposlen. Raziskovalno deluje na področjih umetne inteligence, hibridnih metod strojnega učenja, inteligentnih sistemov ter medicinske in zdravstvene informatike. Sodeluje pri izvajanju več domačih in mednarodnih projektov z omenjenih področij. m Dr Mitja Lenič je na Univerzi v Mariboru diplomiral in doktoriral s področja računalništva in informatike. Njegova raziskovalna področja so teorija programskih jezikov, inteligentni sistami, tenri|a sistemov, teorija kaosa in kvaliteta programske opreme. Njegova bibliografija obsega več kot sto enot, objavljenih doma in v tujini. ■ Alojz Tapajner je diplomiral s področja računalništva in informatike na Univerzi v Mariboru, Njegova raziskovalna področja so inteligentni sistemi in posebno njihova uporaba na finančnih področjih. Sodeluje pri raziskovalnih projektih Laboratorija za načrtovanje sistemov. 112 upooadhft INFORMATIKA 2004 - številka 2 - letnik XII