PC Press
O nama
O nama
Pretplata
O nama
Postanite saradnik PC-ja
Kontakt sa redakcijom
PC Press
Novi broj
Novi broj   
Pretrazivanje
Arhiva
Arhiva   
PC Online
PC Plus   
Specijalna izdanja
Softver Softver
PC #80 : Jul/Avgust 2002 TehnoGuru

 Naslovna  Sadržaj 
Branko Nikitović  

Solista u UML orkestru

U velikom orkestru UML alata jedan domaći proizvod u nekim arijama zaslužuje poziciju soliste...

UML je objektno-orijentisani vizuelni jezik za modelovanje opšte namene koji se najčešće koristi pri projektovanju informacionih sistema. Mnogi alati podržavaju modelovanje softvera na UML-u, što najčešće podrazumeva vizuelizaciju sistema formiranjem dijagrama. Iz tako formiranog modela, alati generišu kod na ciljnom programskom jeziku (npr. C++ ili Java) koji se najčešće mora „ručno“ dopunjavati kako bi se dobila izvršna forma aplikacije. To je možda i najveći nedostatak današnje tehnologije razvoja OO softvera.

Jedan od problema leži u tome što UML kao jezik nije finalizovan – njegova semantika nije precizno definisana. Alati za modelovanje koji podržavaju UML najčešće su opšte namene, dakle nisu specijalizovani za poseban domen aplikacija. Konačno, teorija i praksa transformisanja apstraktnih modela u izvršne forme, kakvom se (uslovno) može smatrati i kod na ciljnom programskom jeziku, još uvek nisu dovoljno razvijene. Primena široko rasprostranjenih alata za modelovanje, kakav je Rose firme Rational, zahteva veliki trud u postupku finalne implementacije aplikacije. Ukoliko ona treba da poseduje moderan i udoban grafički interfejs ili da obezbedi čuvanje objekata u bazi, taj trud dalje značajno raste. A upravo takve zahteve postavljaju informacioni sistemi i njihovi naručioci.

Solista

(kliknite za veću sliku)

Srećom, postoji i lakši način, na koji ukazuje SOLoist (SOL Object-oriented Information System Technology) domaće firme SOL. Namenjen je brzom i jednostavnom razvoju OO informacionih sistema, odnosno interaktivnih distribuiranih aplikacija koje poseduju atraktivne korisničke interfejse i zahtevaju rukovanje objektima u bazama podataka. SOLoist nije zamena za Rational Rose, niti je u pitanju integrisano razvojno okruženje za programiranje na nekom OO jeziku. Najzad, to nije ni sistem za upravljanje bazama podataka. SOLoist je paket koji spaja i dopunjuje tri pomenute vrste sistema. Odgovornost za svaki od ovih poslova SOLoist prepušta odgovarajućem alatu, a on sam „popunjava“ prazninu koju bi inače programer morao da rešava „ručno“.

SOLoist čine razvojni i izvršni deo. Razvojni deo sastoji se od automatizacionih alata, koji se koriste kao dodaci alatima za UML modelovanje kakav je Rational Rose. Oni pomažu da se iz apstraktnog UML modela aplikacije dobije kod gotove aplikacije koja podržava i rad sa objektima u relacionoj bazi i GUI. Izvršni deo čini okruženje koje omogućuje da dobijeni prevedeni kod funkcioniše kao i svaki drugi program na koji smo navikli. Izvršavanje najvećeg dela funkcionalnosti tipične aplikacije podržano je generički, bez intervencije programera. Zbog mogućnosti brzog razvoja sistema koji odmah po OO modeliranju dobijaju atraktivan GUI i obezbeđuju rad sa objektima u relacionoj bazi podataka, može se reći da ovaj paket predstavlja okruženje za brzo pravljenje prototipova složenih aplikacija.

Paket menja način posmatranja informacionih sistema iz dva aspekta. Prvo, GUI koji on pruža, zajedno sa objektnom orijentacijom koju podržava, menjaju pogled koji na aplikaciju imaju korisnici. Drugo, zbog značajne pomoći u razvoju koju SOLoist-om dobijaju, programeri menjaju ulogu i način rada u odnosu na dosadašnju praksu.

Iz perspektive korisnika

Aplikacija razvijena paketom SOLoist poseduje interesantan i intuitivan GUI – korisnik radi kao što je navikao u modernim interaktivnim aplikacijama poput Windows Explorer-a. Umesto da se kreće kroz maske zamorno popunjavajući podatke, dobija pogled na prostor objekata u sistemu spojenih odgovarajućim vezama. Na primer, polaznike kursa predavač može pregledati ne samo u maski, nego i u stablu koje se proteže preko objekata i njihovih veza. U tom stablu je kurs prikazan ikonom, a njegovi polaznici su vezani za „kukicu“ Students ispod njega, kao što se vidi na slici.

Čak i korisnik koji nije čuo za objekte „oseća“ OO semantiku UML-a. Na primer, da bi se polaznik pridružio kursu, nije potrebno popunjavati maske, već samo prevući (Drag and Drop) ikonu osobe na „kukicu“ Students; semantička veza između ova dva objekta biće automatski uspostavljena. Da bi se objekat obrisao iz sistema, dovoljno je prevući ikonu odgovarajuće komande Delete Object na njega. Važno je napomenuti da se sve ovakve operacije automatski reflektuju na slogove u bazi podataka.

Svaki objekat ponaša se onako kako je to definisano njegovom klasom. Recimo, reakcija na dvostruki klik na ikonu objekta zavisi od vrste objekta. Podrazumevano ponašanje sistema (koje se lako može promeniti) jeste da se pri tom pojavljuje maska za unos svih vrednosti atributa objekta, kao i za manipulaciju nad vezama sa drugim objektima. GUI aplikacije poseduje i druge korisne funkcije koje olakšavaju manipulacije složenim prostorom objekata. Tu je pretraživač, koji omogućuje i pretragu po izrazima formiranim nad vrednostima atributa objekta kao i mogućnost da se objekti organizuju u kataloge.

Sve u svemu, SOLoist menja uobičajeni način korišćenja informacionih sistema. Osim toga što je korisnički interfejs atraktivan, on korisniku stvara potpuno drugačiji utisak rada sa „živim“ objektima umesto „mrtvim“ podacima. Objekti imaju identitet, tip (svaki objekat je instanca klase iz konceptualnog modela aplikacije), stanje (predstavljeno vrednostima atributa), veze prema drugim objektima, kao i ponašanje (operacije koje se nad njim mogu izvršiti).

Operacije nad prostorom objekata izvršavaju se intuitivno, prevlačenjem ikona. Semantičke veze objekata manifestuju se neposredno, a ne preko šifara i ključeva, kao u tradicionalnim sistemima.

Iz perspektive programera

(kliknite za veću sliku)

Sve što smo opisali moglo bi se uspešno realizovati i bez paketa SOLoist, korišćenjem uobičajenih programerskih tehnika. Svakom programeru je jasno da bi trud uložen da se ovakva funkcionalnost realizuje, i to za svaki pojedinačni slučaj poput navedenog primera, bio ogroman, pa samim tim i teško isplativ. Najveću vrednost ovog paketa predstavlja činjenica da se opisana funkcionalnost može dobiti za petnaestak minuta, bez i jedne linije koda.

Na slici je prikazan jednostavan model za dati primer, koji paketu SOLoist sasvim dovoljno govori o potrebnoj funkcionalnosti aplikacije. Na primer, u njemu postoje klase Kurs (Course), Osoba (Person) i Nastavnik (Teacher). Klase Kurs i Osoba povezane su asocijacijom pohađa (attends), koja označava da se objekti ovih klasa mogu povezivati vezama kardinalnosti više-sa-više.

Iz ovakvog modela definisanog pomoću Rational Rose-a, SOLoist alati generišu kod na jeziku C++ koji se zatim prevodi i povezuje sa izvršnim okruženjem. Tako se dobija izvršna aplikacija koja obezbeđuje, potpuno generički, sve navedene funkcije.

OQL editor

Posebno interesantan modul paketa SOLoist je OQL (Object Query Language) editor. OQL je standardni jezik za postavljanje upita u objektnom prostoru i predstavlja jednostavnu nadgradnju SQL-a. OQL podržan u paketu SOLoist je moćan i dozvoljava da se nad prostorom objekata formiraju upiti značajno kraći i jasniji od SQL ekvivalenata. Na primer, za dati konceptualni model i odgovarajuću šemu relacione baze, SQL upit koji bi vraćao sve kurseve koje pohađa nastavnik John Smith bio bi složen i uključivao bi nekoliko izjednačavanja spoljnih ključeva, odnosno spajanja tabela. OQL upit koji ovo realizuje je kratak i jasan: SELECT c FROM Teacher AS t, t.attendedCourses AS c WHERE t.name = ‘John Smith’.

Potpuno u saglasnosti sa OO filozofijom, upit ne vraća slogove sa podacima nego objekte sa kojima se mogu raditi sve opisane operacije: oni se mogu prevlačiti, brisati, za njih se mogu otvarati maske itd.

Paket obezbeđuje i potpunu otvorenost koda za proizvoljna prilagođavanja. Naime, aplikacija koja se generiše iz modela dobija se na jeziku C++ i može se proizvoljno menjati. Za pristup do prostora objekata programeru je na raspolaganju API koji ga oslobađa brige o preslikavanju objektnog u relacioni model. API pruža koncepte transakcija, zaključavanja i svega što je potrebno za distribuirani, višekorisnički rad.

Svi aspekti korisničkog interfejsa mogu se potpuno proizvoljno menjati. Izvestan stepen prilagođavanja pružaju SOLoist automatizacioni alati, ali se korisnički interfejs može dodatno podešavati u okruženju koje je za to namenjeno, u ovom slučaju paketu Microsoft Developer Studio.

Postoje, naravno, i ograničenja. Paket u ovoj verziji podržava samo klijent/server arhitekturu i Windows operativni sistem na klijentu, pa nedostaje podrška za druge platforme, a naročito Web interfejs. Za sada su podržani nekoliko RDBMS, kao što su Oracle, Microsoft Access i Postgre. Ciljni programski jezik je samo C++, a u skladu sa trendovima mnogi korisnici bi koristili Javu. IDE za programiranje korisničkog interfejsa je Microsoft Visual C++, ali bi vredelo podržati i neke druge, naročito na Unix/Linux platformama. Proizvođač najavljuje da će buduće verzije paketa imati rešene navedene nedostatke.

Zaključak

Za mnoge moje poznanike koji se bave programiranjem OOP i dalje predstavlja nepoznanica. U svakom slučaju, preporučujemo preuzimanje i pregled odlično pripremljenih tutorijala i demoa, koji će vas za samo nekoliko sati upoznati sa osnovama jezika UML, rada u alatu Rational Rose, kao i brojnim značajnim osobinama paketa SOLoist. Radi se o ambicioznom razvojnom alatu najvišeg nivoa, koje predstavlja potpuno domaći proizvod. Ostaje da vidimo koliko je naša softverska industrija spremna da se uhvati u koštac sa modernim trendovima, ali se iskreno nadamo da ćemo ovog solistu slušati u mnogim orkestrima!

Korisne adrese:

SOL
Kosovska 28, Beograd
tel: 011/3231-310