
Uslužno orijentirano računalstvo
Obrazac za daljnji razvoj
PIŠE TIHANA GALINAC GRBAC
Uslužno orijentirano računalstvo je najnoviji obrazac za razvoj softvera kojim se pokušava doskočiti nemogućnosti postojećih tehnologija da se nose s daljnjim razvojem. Naime, razvoj softvera nailazi na niz problema poput potrebe za znatno širim spektrom specijalističkih znanja i vještina, problematike intelektualnog vlasništva i mnoge druge.

Tihana Galinac Grbac je docentica na Zavodu za računalstvo Tehničkog fakulteta u Rijeci. Voditeljica je SEIP Laba koji je ustrojila 2011. godine te pokrenula niz projekata i istraživanja. Prije dolaska na Tehnički fakultet, stekla je osmogodišnje iskustvo u istraživačko-razvojnom centru Ericsson Nikole Tesle u Zagrebu. Sudjelovala je na nizu međunarodnih projekata razvoja Ericssonovih mrežnih rješenja. Gostovala je u mnogim istraživačko-razvojnim centrima globalne Ericsson korporacije diljem svijeta. Fokus njenog znanstvenog istraživanja je razvoj inovativnih metoda i tehnologija za razvoj velikih i kompleksnih programskih sustava i za pametno upravljanje njihovim razvojem. Bila je voditeljica ili sudionica u nizu europskih i domaćih znanstvenih projekata.
Softver je jedan od glavnih pokretača suvremenog gospodarstva jer osim što je njegov razvoj važan dio gospodarske djelatnosti, njegova primjena omogućuje razvoj drugih gospodarskih grana. Uz istodobnu evoluciju telekomunikacijske mreže u mrežu nove generacije gdje se integriraju razni uređaji, tehnologije, aplikacije i usluge, uz neograničene procesorske i spremničke kapacitete u distribuiranoj mreži, otvorio se niz novih izazova - kako za računalstvo tako i za druge znanstvene i gospodarske grane u kojima se budući razvoj temelji na uvođenju softvera uz primjenu informacijsko-komunikacijskih tehnologija.
Zbog značaja funkcionalnosti koje softver nadomješta u životu društva, treba ga stalno razvijati što je dovelo do toga da softverski sustavi postanu kompleksni, nepredvidljivi i teško održivi. Osim nemogućnosti da se postojeće tehnologije nose s njegovim daljnjim razvojem nailazimo na niz drugih problema poput potrebe za znatno širim spektrom specijalističkih znanja i vještina u njegovom razvoju, na problematiku intelektualnog vlasništva i drugo. Programsko, odnosno softversko inženjerstvo relativno je mlada disciplina gdje se još traže najbolja rješenja i novi obrasci za razvoj softvera i to ne samo tehnologije, nego i inovacije i efikasnost razvojnog procesa uz jamstvo kvalitete. Uslužno orijentirano računalstvo je najnoviji obrazac softverskog razvoja kojim se pokušalo doskočiti nekim od tih problema.
Veliki se napori ulažu u definiranje inovativnih pristupa čime bi se omogućio nesmetan razvoj softverskih sustava, mehanizmi za osiguravanje njihove kvalitete i jednostavnija evolucija. U europskom istraživačkom prostoru na to je usmjereno puno inicijativa i projekata. Primjerice, to je jedan od glavnih ciljeva inicijative NESSI (Networked European Software and Services Initiative, NESSI 2013) za strategiju financiranja u sljedećem desetljeću Obzor 2020 (Horizon 2020). Brojni europski projekti već su u tijeku, a rješenje se nazire kroz pronalaženje novih načina za široku primjenu uslužno orijentiranog računalstva čime se otvaraju mogućnosti i u drugim gospodarskim granama što je prepoznano kao ključ budućeg razvoja cjelokupnog društva.
Programsko inženjerstvo relativno je mlada disciplina gdje se još traže najbolja rješenja za razvoj softvera i to ne samo tehnologije, nego i inovacije i efikasnost razvojnog procesa uz jamstvo kvalitete. Uslužno orijentirano računalstvo je najnoviji obrazac softverskog razvoja kojim se pokušava doskočiti nekim od tih problema.
Problemi tradicijskog pristupa
Mnogo softvera i programskih rješenja već je prilagođeno specifičnoj primjeni. Na slici 1 softverske aplikacije za pojedina područja primjene predstavljene su vertikalnim elipsama. Specifičnosti su određene opremom koja se koristi u tim područjima, a opisane su industrijskim normama koje su često nedostupne široj javnosti ili su zaštićene kao intelektualno vlasništvo pojedinih proizvođača opreme. Specijalistička znanja (crveni krugovi na slici 1) u obliku softvera ostala su začahurena u vertikalnim granama područja primjene.
Veliki dio tog znanja-softvera potreban je za obavljanje istih funkcija i u ostalim područjima. Međutim, zbog strogo vertikalnog pristupa razvoju i premale modularnosti softvera ta znanja, odnosno gotove dijelove softvera nije moguće ponovno iskoristiti. Problemi su višestruki. Pojedina znanja teško je izdvojiti u zasebne softverske funkcije no, čak i kad bi to bilo moguće teško bi se integrirala u softverskim aplikacijama iz drugih područja primjene zbog različitosti tehnologija, industrijskih normi, programskih jezika te platformi na kojima su izgrađena. Osim toga, vertikalni softverski sustavi postali su prekompleksni da bi ih ljudi mogli sagledati, njima upravljati i dalje ih razvijati jer obuhvaćaju širok spektar specijalističkih znanja koja često nije moguće objediniti u razvojnim projektima.
Tradicionalno, to podrazumijeva da korisnik kupi proizvedeni softver, instalira ga na računalu i održava u pogonu, a eventualne pogreške rješava zakrpom (patch) ili je prisiljen kupiti novu verziju. Takav pristup podrazumijeva vlasništvo nad softverom, brigu o novim verzijama i evolucijom što znatno otežava održavanje.
Prema novom obrascu uslužno orijentiranog računalstva dijelovi softvera su pohranjeni u distribuiranoj mreži iz koje se dinamički, prema potrebama korisnika, pozivaju na izvedbu s osobnog računala. Pri pozivu takvih funkcija ne upisuje se točno ime i prezime, broj ili adresa te funkcije već na osnovi opisa što korisniku treba mreža ponudi funkciju koja u tom trenutku najviše odgovara opisu. Takva dostava softvera podsjeća na posluživanje korisnika i zato te softverske funkcije nazivamo uslugama.
Modularna arhitektura i ponovna iskoristivost napisanog i testiranog softvera znatno je unaprijeđena u objektno-orijentiranoj paradigmi razvoja. Primjerice, kompanije iz jednog od najvećih područja softverske industrije koje se bave razvojem aplikacija za zabavu - softverskih igrica, uz pomoć objektno-orijentiranog pristupa postižu značajnu uštedu. Neki lik iz jedne igrice predstavljen je objektom. Karakteristike lika opisane su atributima tog objekta dok je ponašanje opisano u njegovim funkcijama. Taj se lik može prenamijeniti i u nizu drugih igrica. Time se ostvaruje ušteda jer se cjelokupni softveri (kod i pripadajuća dokumentacija) ne moraju razvijati otpočetka i što je još važnije - već su testirani. Međutim, sučelja nisu normirana i ti se objekti teško mogu prenamijeniti na drugim platformama i drugim programskim jezicima.
Korak dalje bio je komponentni razvoj čiji je najveći doprinos normizacija sučelja. Ideja jest razviti softverske komponente kao zasebne proizvode koji implementiraju određene funkcije, a mogu se ponuditi na policama u dućanima. Slaganjem takvih komponenti mogu se graditi kompleksniji softverski proizvodi. Međutim, još postoji problem zatvorenih industrijskih normi što je onemogućavalo miješanje takvih gotovih komponenti na heterogenim tehnologijama. Također, mada se pretpostavlja da su komponente zamjenjive briga o održavanju i unapređivanju takvih sustava još je veliko ograničenje.
Prikaz odnosa vertikalne i horizontalne ravnine razvoja softvera
Uslužno orijentirani obrazac razvoja i uslužno orijentirana arhitektura
Uslužno orijentirano računalstvo je obrazac razvoja složenih softverskih aplikacija kako bi se računalstvo pomaknulo iz industrijskog zatvorenog svijeta proizvodnje softvera u otvoreni svijet primjene softverskih usluga neovisno o vlasničkim tehnologijama. Pritom se posebno naglašava:
• prijelaz iz svijeta industrijski zatvorenih u svijet otvorenih normi
• pomak iz proizvodnje proizvoda prema korištenju softverskih usluga.
Uslužno orijentirana arhitektura (SOA)
Vertikalni softverski sustavi postali su prekompleksni jer obuhvaćaju širok spektar specijalističkih znanja koja često nije moguće objediniti u razvojnim projektima
Prema tradicionalnom razvojnom obrascu cjelokupan softver se pohranjuje na osobno računalo s kojega se pokreću radne operacije. Ili se tijekom izvedbe neke softverske aplikacije pojedini paketi dodatno pohranjuju i pokreću unutar već instalirane aplikacije. U novom uslužno orijentiranom obrascu dijelovi softvera su pohranjeni u distribuiranoj mreži iz koje se dinamički prema potrebi korisnika pozivaju na rad s osobnog računala. Pri pozivu takvih funkcija ne koristi se točno ime i prezime, broj ili adresa već na osnovi opisa potrebe mreža ponudi funkciju koja najviše odgovara tom opisu. Kako takva dostava softvera podsjeća na posluživanje korisnika te softverske funkcije nazivamo uslugama. Pritom je svaka jednostavna softverska usluga zamišljena kao realizacija neke određene funkcije koja je pakirana tako da ima formalno i dokumentirano sučelje koje je autonomno i slabo povezano i ne ovisi o načinu izvođenja drugih softverskih usluga i njihove softverske realizacije. Također, svaka jednostavna softverska usluga može se locirati i dohvatiti na osnovi otvorenih komunikacijskih normi i mehanizama implementiranih u telekomunikacijskoj mreži.
Radna atmosfera u SEIP Labu Tehničkog fakulteta u Rijeci
Prizor s radnog sastanka o projektu BETTY
Prema tom novom razvojnom obrascu osnovna je razlika što cjelokupan softver nije na računalu prije izvedbe već se tijekom nje pozivaju pojedini dijelovi, a mreža brine da korisnik bude najbolje poslužen u svakom trenutku. Korisnik više ne mora brinuti ni o održavanju ni o novim verzijama softvera. S obzirom na to da se poslužuje na dinamičkoj osnovi, mreža mu prema potrebama nudi najbolju dostupnu uslugu. Isto tako, u opisu usluga mogu biti i ostale informacije o kvaliteti. I naplata softvera postaje dinamička prema korištenju mrežnih usluga.
Osnovni zahtjev je na mreži koja poslužuje korisnika i na interakciji korisnika i mreže. Kako je veći dio posla, kao što je skladištenje, pronalazak, povezivanje i integracija softvera u stvarnom vremenu, prebačen na mrežu trebalo je osmisliti novi koncept koji su predložili OASIS (Organization for Advancement of Structured Information Standards) i W3C grupe (World Wide Web Consortium). Taj novi koncept definiran je pomoću poznate uslužno orijentirane arhitekture (Service Oriented Architecture, SOA) koja je predstavljena na slici 2.
Ericsson Summer Camp 2011.
Ta je arhitektura zasnovana na javno dostupnim i otvorenim normama internetskog protokola pa je u primjeni sve jednostavnije i jeftinije. Osnova te paradigme je web-usluga (Web service) i otvorene norme poput XML jezika (eXtension Markup Language) i SOAP protokola (Simple Object Access Protokol) jednostavnog za pristup objektima koji služe za izmjenu poruka među uslugama. Za opis usluga služi WSDL jezik (Web Services Description Language) kojim se definiraju sučelja za pristup uslugama i norma kojom se propisuje slaganje i organizacija registra usluga UDDI (Universal Description, Discovery and Integration). Za izgradnju softverskih aplikacija na osnovi slaganja web-usluga definiran je formalni jezik WS - BPEL (Web Services – Business Process Execution Language).
Ovaj razvojni obrazac nije potpuno saživio jer još treba riješiti niz problema pri njegovoj primjeni. Međutim, vodeće svjetske organizacije i kompanije snažno podupiru takav razvoj (Google, Microsoft, IBM, i drugi). Svjetski lideri u području interneta već nude obilje alata i usluga kojima se olakšava primjena tog razvojnog obrasca, a softver koji nude zasniva se na web-uslugama.
SEIP Lab - Laboratorij za programsko inženjerstvo i obradu informacija
Laboratorij za programsko inženjerstvo i obradu informacija Tehničkog fakulteta u Rijeci - SEIP Lab (Software Engineering and Information Processing Laboratory) osnovan je 2011. godine - uz veliku podršku i pomoć Ericsson Nikole Tesle, Sveučilišta u Rijeci i Tehničkog fakulteta i na temelju sporazuma o suradnji Sveučilišta i Ericsson Nikole Tesle brzo je opremljen i osposobljen za obavljanje svojih aktivnosti.
Osnivanjem SEIP Laba popunjena je praznina u području koje se bavi razvojem i održavanjem softverskih sustava te osiguravanjem kvalitete, pouzdanosti i sigurnosti kompleksnih softverskih sustava, što je ne samo osnova za razvoj novih informacijsko-komunikacijskih tehnologija u regiji već ima važnu ulogu i u ostvarivanju strategije Sveučilišta i Tehničkog fakulteta. Osim znanstvenog istraživanja SEIP Lab je posvećen i industrijskoj primjeni te edukaciji studenata, budućih stručnjaka koji će biti nositelji gospodarskog razvoja regije.
Članovi Laboratorija uključeni su u niz znanstvenih, industrijskih i studentskih projekata koji se bave problematikom razvoja velikih i kompleksnih softverskih sustava posebno za primjenu uslužno orijentiranog računalstva. Predstavljamo vam neke od tih projekata uz pregled o mjestu SEIP Laba i zastupljenosti Hrvatske u tom istraživanju (više detalja možete naći na web-stranici www.seiplab.riteh.uniri.hr).
Projekt BETTY
Znanstveni projekt BETTY (Behavioural Types for Large Scale Reliable Systems) koji financira COST (European Cooperation in Science and Technology) bavi se problemima formalnog matematičkog opisa svih vrsta kompleksnih sustava i njihove komunikacije. Takav opis potreban je za efikasnu kontrolu, rano otkrivanje pogrešaka, osiguravanje pouzdanosti i sigurnosti sustava. Primjerice, omogućuje provjeru sigurnosti sustava od nekih hakerskih napada ili slučajnog curenja informacija. U projektu se razvijaju nove teorije, novi programski jezici i nove metode razvoja softvera orijentirane na distribuirane sustave s visokom razinom komunikacije, pogotovo one zasnovane na obrascu uslužno orijentiranog računarstva. U sklopu tog projekta je i organizacija ljetne škole za mlade istraživače koja će se održati u Lovranu 2014. godine.
Sustav koji su razvili studenti računalstva koristeći universAAL tehnologiju
Projekt ACROSS
Drugi znanstveni COST-ov projekt ACROSS (Autonomous Control for Reliable Internet of Services) tek je započeo, a bavi se analizom ponuđenih usluga te procjenjivanjem kvalitete, pouzdanosti i sigurnosti velikih i distribuiranih sustava baziranih na uslužno orijentiranom računalstvu. Naime, kod uslužno orijentiranog računalstva jako je važno znati procijeniti kolika će biti kvaliteta, pouzdanost i sigurnost usluge, odnosno kako će pojedina web-usluga utjecati na složeni softverski sustav u cjelini. Cilj tog projekta jest razviti nove mehanizme i autonomne metode nadzora i algoritme kojima će se u mreži pametno upravljati kako bi sustav usluga bio pouzdan, siguran i kvalitetan. Krajnji cilj je potpuna automatizacija, što znači da će u budućnosti pri slaganju softverskih sustava od dostupnih usluga mreža moći sama odrediti koja je verzija pojednine usluge najpodobnija te procijeniti svojstva cjelokupnog sustava.
U projekt Nove arhitekture i protokoli znanstvenih projekata hrvatskog Ministarstva znanosti, obrazovanja i sporta uključen je i SEIP Lab. Taj projekt koji vodi prof.dr.sc. Darko Huljenić, menadžer za odnose s akademskom zajednicom u Ericsson Nikoli Tesli, okuplja znanstvenike i stručnjake iz raznih dijelova Hrvatske te industrijske partnere iz Ericsson Nikole Tesle. Bavi se telekomunikacijskom mrežom koja predstavlja jedan od prvih kompleksnih softverskih sustava uopće. U sklopu tog projekta napravljen je niz empirijskih istraživanja koja su publicirana u vodećim svjetskim znanstvenim časopisima iz područja programskog inženjerstva.
U novom uslužno orijentiranom obrascu dijelovi softvera su pohranjeni u distribuiranoj mreži iz koje se dinamički prema potrebi korisnika pozivaju na rad s osobnog računala
Projekt Laboratorijska i nastavna podrška u ICT-u
Jedan od zanimljivih SEIP Labovih projekata Laboratorijska i nastavna podrška u informacijsko-komunikacijskim tehnologijama (ICT) kombinira suradnju s Ericsson Nikolom Teslom i edukaciju studenata Tehničkog fakulteta s ciljem transfera znanja i tehnologija. U sklopu tog projekta studenti računalstva Tehničkog fakulteta sudjeluju u međunarodnoj ljetnoj školi Ericsson Summer Camp (slika 5), a stečena znanja dalje produbljuju tijekom cijele godine kroz izborne projekte, završne i diplomske radove. Primjer studentskog projekta je razvoj ICT-a za pametnu kuću koristeći najnoviju tehnologiju koja je razvijena u sklopu europskog projekta FP7 - universAAL (www.universaal.org). Projekt FP7 ujedinio je vodeće industrijske lidere u tom području, uključujući i kompaniju Ericsson Nikola Tesla, s ciljem zajedničkog razvoja otvorene i normirane universAAL platforme bazirane na uslužno orijentiranom računalstvu, za razvoj aplikacija u domeni Život potpomognut okolinom (e-Ambient Assisted Living AAL). Platforma universAAL primjer je europskog projekta koji je nastao kao odgovor na nedostatak jedinstvenih industrijskih standarda koji se koriste u pametnoj kući te na poteškoće koje zbog toga nastaju pri pokušajima integracije u jedinstven sustav. Studentski zadatak bio je povezati universAAL platformu s različitim komercijalnim proizvodima (slika 6) čime su zapravo prvi u svijetu testirali tu platformu u primjeni s Ericssonovim proizvodima te došli do zapažanja važnih za njen razvoj. Demonstraciju tog studentskog projekta možete vidjeti na www.seiplab.riteh.uniri.hr/?page_id=193&lang=en.
Studentski projekti
Na kraju spomenimo i studentske projekte iz kolegija Programsko inženjerstvo i Upravljanje u programskom inženjerstvu na studiju računalstva Tehničkog fakulteta u Rijeci koji se odvijaju u SEIP Labu. Ti su projekti vjerojatno najvažniji za budućnost našeg računalstva jer studentima, nositeljima budućeg razvoja, prenose recentna znanja i iskustva svih drugih SEIP Labovih projekata. Tako budući stručnjaci spoznaju glavne pravce razvoja računalstva i navrijeme stječu specifična kompetitivna znanja koja će im sutra omogućiti uspješno uključivanje u europsku tržišnu utakmicu. Posebno je važno da studenti steknu vrijedna znanja o kompleksnim sustavima, uslužno orijentiranom računalstvu i drugim najmodernijim temama jer to je kompetitivna prednost pri dobivanju poslova nad možda čak i jeftinijim konkurentima u svijetu. Projekt na kojem su radili studenti kroz nekoliko godina je razvoj alata Student Project Tool (SPtool) koji im omogućuje simulaciju stvarnog industrijskog okruženja i timsku izradu kompleksnih softverskih sustava.