1 Uvod Podjetja, ki se ukvarjajo z razvojem programske opreme, se dandanes pogosto srečujejo s kadrovskimi težavami, ki so med drugim posledica hitrega tehnološkega napredka in nenehno spreminjajočih se zahtev pri izvajanju različnih projektov. Znanje kadrov v podjetju hitro zastareva, v praksi pa tudi najboljši ne morejo obvladovati vseh najnovejših pristopov in Prejet 10. marec, 2009 Odobren 19. junij, 2009 Šibko povezane virtualne razvojne skupine kot alternativa tradicionalnim razvojnim skupinam 183 tehnologij s svojega področja. Posledično ostajajo v uporabi starejši pristopi in tehnologije. Dodatna težava je, da se potrebe po kadrih v nekem podjetju razlikujejo od projekta do projekta. Tako so ob začetku novega projekta pogosto potrebni dodatni kadri, ki pa jih po končanem projektu podjetje ne potrebuje več. Običajna rešitev je lahko dodatno (začasno) zaposlovanje in dodatno izobraževanje obstoječih kadrov. Pri dodatnem zaposlovanju se pogosto izkaže, da je na lokalnem področju težko pridobiti zadostno število ljudi z ustreznimi znanji, zato je pogosto potrebno tudi obsežnejše dodatno izobraževanje slednjih. Če nove kadre zaposlimo le začasno oz. posebna znanja potrebujemo le za potrebe enega projekta, je taka rešitev draga in pogosto nesmotrna. Druga pogosto uporabljena možnost je oddajanje del podizvajalcem (outsourcing), ki pa pri uporabi posebnih tehnologij zahteva ustrezno usposobljenega podizvajalca in je prav tako relativno draga rešitev. Alternativa je oblikovanje virtualne skupine. Bistvena prednost takšne skupine je, da člane izbiramo iz velike množice ljudi, ki lahko sodelujejo po internetu in že imajo ustrezna tehnološka znanja in izkušnje [3]. Vendar pri tem ne smemo zanemariti težav v povezavi s komunikacijo in človeškimi dejavniki, specifičnih za virtualne skupine [6, 5, 9]. Raziskovalci tako ugotavljajo, da ljudje za delo v virtualnih skupinah potrebujejo posebne socialne in komunikacijske lastnosti in da jih je na tako delo trebe pripraviti z ustreznim izobraževanjem [4]. Posledično postane uporaba virtualnih skupin draga, hkrati pa obstaja relativno veliko tveganje, da projekt, voden z uporabo klasičnih pristopov in metodologij, v virtualnem okolju ne bo uspešen. Poleg tega je vzpostavitev klasično zasnovanih virtualnih skupin časovno zahtevna, člani skupine pa se med projektom tipično ne menjajo, kar pomeni, da že začetna izbira članov pomembno vpliva na uspešnost projekta. 2 Opis pristopa Cilj raziskave je bil izdelati pristop, ki bi podjetjem omogočil izkoristiti prednosti množice kadrov s tehnološkimi znanji, dostopni po internetu, hkrati pa bi čim bolj zmanjšal tipične težave, ki nastajajo v virtualnih skupinah. Tako pristop predvideva, da analiza in načrtovanje sistema poteka v okviru osrednje skupine, ki dobro pozna zahteve naročnika, izvedba pa v virtualni skupini. S tem dosežemo, da ključno domensko znanje ostaja v osrednji skupini, ki tudi koordinira delo dislociranih članov, hkrati pa imamo na voljo tehnična znanja in izkušnje članov virtualne skupine. Da bi dosegli čim višjo stopnjo prilagodljivosti, izmenljivost članov virtualne skupine in olajšali komunikacijske težave med člani virtualne skupine, morajo biti opravila, ki so dodeljena posameznim članom virtualne skupine, relativno preprosta in nedvoumno opredeljena. Zato je ena ključnih nalog pristopa ustrezno oblikovanje navodil za izvedbo posameznih opravil. Pri oblikovanju navodil smo se oprli na lastne raziskave s področja situacijskega konstruiranja metodologij. Pomemben vidik pristopa je tudi razbitje sistema v majhne obvladljive dele, ki so primerni za realizacijo v okviru posameznega opravila. Pri oblikovanju pristopa smo sledili naslednjim zahtevam: • Pristop mora omogočati iskanje kadrov tj. članov virtualne skupine, ki imajo ustrezna tehnična znanja. Kadre naj bo mogoče iskati na podlagi njihovih znanj in na podlagi izkušenj z njimi pri predhodnih projektih. Predhodne izkušnje so za iskanje kadrov dobrodošle, vendar niso obvezne. • Pristop mora omogočiti sodelovanje kadrov, ki tipično ne poznajo obravnavane problemske domene, a imajo ustrezna tehnična znanja (npr. znanje programskih jezikov, razvojnih okolij, podatkovnih baz itd.). Pristop mora omogočati, da člani virtualne skupine svoje delo opravijo le z upoštevanjem podanih navodil, brez potrebe po predhodnem poznavanju problemske domene. • Pristop mora omogočiti, da je čas uvajanja novih kadrov v delo minimalen in da je uvajanje mogoče učinkovito izvesti po internetu oz. z elektronsko dokumentacijo in le izjemoma z elektronskimi sporočili. • Pristop mora omogočiti sočasen razvoj neodvisnih delov sistema. Pri tem članu virtualne skupine, ki razvija določen del sistema, ni treba poznati podrobnosti drugih delov sistema, ki se razvijajo sočasno. Vse odvisnosti med odvisnimi deli sistema se morajo izraziti prek vmesnikov. Deli sistema morajo biti zasnovani po načelu »črne škatle«. • Pristop mora omogočiti, da je rezultate dela posameznih članov virtualne skupine, ki v veliki meri nastajajo neodvisno, mogoče združiti v enoten delujoč sistem. • Pristop naj ne predpisuje uporabe konkretnih tehnologij oz. razvojnih okolij. Pristop naj poda le ključne značilnosti, ki jih morajo imeti tehnologije in okolja, ki so primerni za takšen razvoj. Hrbtenico pristopa sestavljajo štiri ključne komponente: skupna sistemska arhitektura, postopek vodenja projekta, skupni razvojni proces in postopek upravljanja kadrov. Upravljanje hrbtenice je centralizirano, njen ključni namen pa je sinhronizacija članov virtualne skupine. Skladno z zahtevami za pristop se hrbtenica ne omejuje na konkretne tehnologije in okolja, temveč podaja le zahteve za slednje. 184 Vavpotič, Zrnec • Skupna sistemska arhitektura podpira graditev sistema iz relativno majhnih in neodvisnih delov, ki jih razvijejo različni člani skupine. Za vsak del sistema se podrobno opredelijo njegove funkcije oz. vmesnik, prek katerega poteka vsa komunikacija z drugimi deli sistema. Zaradi lažje integracije je dobrodošlo, da so deli sistema zgrajeni v enotnem razvojnem okolju. Majhnost in neodvisnost delov sistema je nujni pogoj za oblikovanje majhnih opravil, ki jih je mogoče neodvisno dodeliti posameznim članom virtualne skupine z ustreznimi tehničnim znanji. Takšno arhitekturo je mogoče vzpostaviti v večini objektno usmerjenih razvojnih okolij, ki omogočajo izdelavo šibko sklopljenih delov sistema. Splošno poznan arhitekturni pristop, ki ga je mogoče uporabiti v ta namen, je SOA [2], seveda pa uporaba ni nujna. • Postopek vodenja projekta je prilagojen v smislu minimiziranja tveganj, povezanih s človeškim faktorjem v virtualni skupini. Delo je razdeljeno na neodvisna opravila, ki jih je mogoče dodeliti posameznim članom skupine. Neodvisnost opravil tudi v veliki meri odpravi potrebo po komunikaciji med člani virtualne skupine. Hkrati so opravila majhna in obvladljiva, kar pomeni, da jih člani virtualne skupine lahko opravijo v relativno kratkem času. Pri neustrezni izvedbi posledično hitro dobimo povratno informacijo in ustrezno ukrepamo (npr. posredujemo članu virtualne skupine dodatna pojasnila, dodelimo opravilo drugemu članu ipd.). Majhnost opravil omogoča tudi vzporedno dodeljevanje kritičnih opravil več članom virtualne skupine in na koncu izbiro najustreznejše izvedbe. • Skupen razvojni proces podaja podrobna navodila za izvedbo različnih tipov opravil in uporabo skupne sistemske arhitekture. Ključni smoter navodil je, da člani virtualne skupine razvijajo dele sistema na enak način oz. tako, da je mogoče posamezne dele sistema združiti v celoto. Pomemben vidik je prilagoditev konkretnih navodil tako značilnostim posameznega opravila kot tudi tehničnim znanjem člana virtualne ekipe, ki so mu namenjena. Prilagajanje je lahko izvedeno na preprostejše (npr. z izbiro delov navodil, ki so potrebni za posamezne člane virtualne skupine) ali kompleksnejše načine (npr. uporaba naprednejših oblik konstruiranja metodologij [1]). Prednost kompleksnejših načinov je, da so navodila lahko prilagojena do višje stopnje, vendar je zaradi kompleksnosti takšnih pristopov nujna uporaba ustrezne računalniške podpore. Preprostejše pristope prilagajanja je mogoče izvesti z uporabno več različic istega dokumenta (npr. za tehnično manj/bolj podkovane uporabnike). • Postopek upravljanja kadrov omogoča iskanje ustrezno tehnično podkovanih ljudi za izvedbo nekega opravila oz. potencialnih članov virtualne skupine. V okviru postopka je poleg iskanja predvideno tudi oblikovanje baze trenutnih in preteklih članov virtualnih skupin in beleženje izkušenj, ki smo jih pridobili pri trenutnem oz. preteklih projektih. Poleg izbire na podlagi podatkov o preteklih izkušnjah in na podlagi profilov, ki jih podajo potencialni člani skupine sami, so pomemben način za iskanje novih kadrov tudi priporočila obstoječih ali preteklih članov virtualnega tima. Postopek upravljanja kadrov je pri iskanju kadrov na širšem območju smiselno navezati na obstoječa omrežja profesionalcev (npr. LinkedIn). Avtomatizacija postopka bo izvedena tudi na podlagi pridobljenih izkušenj raziskovalcev virtualnih timov [7, 8]. Opisano hrbtenico in vloge ključnih komponent ponazarja slika 1. Šibko povezane virtualne razvojne skupine kot alternativa tradicionalnim razvojnim skupinam 185 za h te ve za o p ra vilo Slika 1: Hrbtenica pristopa Figure 1: Backbone of the approach Poleg razvoja komponent lahko v virtualni ekipi poteka tudi testiranje komponent. Tako se neka komponenta dodeli v testiranje članu virtualne ekipe, ki pa ne sme biti tisti, ki je komponento razvijal. Njegova naloga je, da preveri, ali komponenta deluje skladno z navodili, ki jih je prejel član, ki je komponento razvijal. Podobno kot pri razvoju je tudi pri testiranju mogoče kritične komponente v testiranje sočasno dodeliti več članom virtualne ekipe. Na podlagi rezultatov testiranja komponento sprejmemo, zahtevamo popravke ali jo zavrnemo. Integracija komponent v delujoč sistem je prepuščena osrednji ekipi. 3 Preizkušanje pristopa Namen preizkušanja pristopa je bil odgovoriti na več vprašanj v zvezi s smotrnostjo in izvedljivostjo pristopa. Naštejmo nekaj ključnih vprašanj: • ali je tako mogoče izdelati delujočo programsko opremo, • ali so rezultati dela posameznih članov virtualne skupine v povprečju dovolj dobri, da je mogoča integracija komponent v delujoč sistem brez večjih posegov s strani osrednje ekipe, • ali je čas, ki je potreben za izdelavo podrobnih navodil in koordinacijo virtualne skupine v sprejemljivih mejah, • ali je skupen čas izdelave navodil in razvoja sprejemljiv • itd. Da bi odgovorili na zgornja vprašanja, smo sestavili pilotsko virtualno skupino, v kateri je sodelovalo več študentov informatike, ki so neodvisno izdelovali komponente sistema. Načrt za izdelavo sistema je bil razvit v okviru osrednje skupine, ki je tudi koordinirala delo. V okviru pilotskega projekta smo skušali razviti manjši IS, sestavljen iz več neodvisno izdelanih komponent. Vsi člani virtualne skupine so beležili čas, ki so ga porabili za delo na komponenti oz. komunikacijo. Skupaj je razvoj potekal približno tri mesece. Za pilotni projekt smo izbrali relativno preprosto arhitekturo. Komponente so bile organizirane kot paketi v Visual Studiu, izmenjava sporočil pa je potekala po vnaprej določenih vmesnikih. Zaradi dobro opredeljenih vmesnikov je končna integracija večinoma pomenila le združevanje paketov, izdelanih v virtualni skupini. Naštejmo nekaj pomembnejših sklepov do katerih smo prišli po analizi rezultatov: 186 Vavpotič, Zrnec • Virtualna skupina je razvila delujoč sistem, ki ga je bilo mogoče z minimalnimi popravki brez težav integrirati. Integracija komponent v enoten sistem je potekala presenetljivo gladko. • Skupen čas, ki je bil porabljen za razvoj sistema, je bil 1,5x do 2x večji, kot če bi izdelek razvijala povprečno izkušena projektna ekipa; dodaten čas je bil potreben predvsem zaradi komunikacije in usklajevanja, ki je bilo večinoma posledica premalo dodelanih navodil. • Koordinacija virtualne skupine s strani osrednje skupine se je izkazala kot časovno precej zahtevna, kar pa je bilo v veliki meri posledica vzpostavljanja pristopa in pridobivanja izkušenj. Pri komponentah, ki so se časovno razvijale pozneje, je bil ta čas zaradi pridobljenih izkušenj osrednje ekipe in izpopolnjenih navodil manjši. • Tako razvoj kot testiranje sta se izkazala za opravili, ki ju je mogoče dodeljevati članom virtualne skupine, ki ne poznajo podrobnosti problemske domene. 4 Sklep Predlagani pristop prinaša v proces razvoja programske opreme novo razmišljanje, saj je večina današnjih procesov oblikovana ob predpostavki, da je razvojna skupina relativno stalna. Z uporabo začasnih dislociranih članov virtualne skupine bi lahko dosegli večjo učinkovitost organizacij in omilili problem pomanjkanja kadrov na področju IT. Kljub pozitivnim rezultatom pilotskega projekta se je treba zavedati, da je opisani pristop primeren le za določene tipe sistemov, ki omogočajo razbitje na majhne in relativno neodvisne dele. Nerešeno pa je vprašanje vzdrževanja, dokumentiranja in uvajanja tako razvitega sistema. Slednje bo poleg intenzivnejšega testiranja v večjih skupinah in pri večjih projektih tudi predmet našega nadaljnjega raziskovanja. 5 Zahvala Za sodelovanje in pomoč pri preizkusu pristopa se zahvaljujeva dr. Marku Bajcu in Štefanu Furlanu, članoma Laboratorija za informatiko na Fakulteti za računalništvo in informatiko Univerze v Ljubljani. 6 Literatura [1] BRINKKEMPER, S., LYYTINEN, K., WELKE, R. J. (Eds.): Method Engineering – Principles of method construction and tool support. Atlanta, USA, 1996, Chapman & Hall. [2] ERL, T.: Service-oriented architecture : concepts, technology, and design. Upper Saddle River, N.J., 2005, London: Prentice Hall Professional Technical Reference. [3] FURST, S. A., REEVES, M., ROSEN, B., BLACKBURN, R. S.: Managing the lifecycle of virtual teams. Academy of Management Executive, 2004, let. 18, št. 2, str. 6-20. [4] GIBSON, C. B., COHEN, S. G. (Eds.).: Virtual Teams That Work: Creating Conditions for Virtual Team Effectiveness. San Francisco: Jossey-Bass A Wiley Imprint, 2003. [5] GOULD, D.: Virtual organization, Leading Virtual Teams [Electronic Version]. Retrieved 1/4/2007 from http://www.seanet.com/~daveg/ltv.htm. [6] JOHNSON, P., HEIMANN, V., O’NEILL, K.: The “wonderland” of virtual teams. Journal of Workplace Learning, 2001, let. 13, št. 1, str. 24-30. [7] NORMAN, T. J., PREECE, A., CHALMERS, S., JENNINGS, N. R., LUCK, M., DANG, V. D., et al. Agent-based formation of virtual organisations. Knowledge-Based Systems, 2004, let. 17, št. 2-4, 103- 111. [8] SUTER, B.: The VEGA* Cooperation Platform: Providing Real Support for Virtual Enterprises. Paper presented at the International VoNet - Workshop, Zurich, 1999. [9] TOWNSEND, A., & DEMARIE, S.: Virtual teams: technology and the workplace of the future. Academy of Management Executive, 1998, let. 12, št. 3, str. 17-29. Damjan Vavpotič je magistriral in doktoriral na Fakulteti za računalništvo in informatiko Univerze v Ljubljani. Zaposlen je v Laboratoriju za informatiko na Fakulteti za računalništvo in informatiko. Njegova interesna področja med drugimi obsegajo metodologije razvoja informacijskih sistemov, objektni pristop k razvoju programske opreme in razvoj programske opreme na podlagi modelov. Je avtor ali soavtor številnih prispevkov v strokovnih in znanstvenih publikacijah. Aljaž Zrnec je magistriral leta 2002 na Fakulteti za računalništvo in informatiko Univerze v Ljubljani. Leta 2006 je doktoriral s področja konstruiranja metodologij. Zaposlen je v Laboratoriju za informatiko kot asistent za področje podatkovnih baz. Na raziskovalnem področju se ukvarja s strukturnim razvojem IS, konstruiranjem metodologij in podatkovnimi zbirkami. Je avtor ali soavtor številnih prispevkov v strokovnih in znanstvenih publikacijah.