PRIMERJAVA ODPRTOKODNIH ORODIJ ZA MODELIRANJE ... · licenses are explained and analyzed. Modeling...
Transcript of PRIMERJAVA ODPRTOKODNIH ORODIJ ZA MODELIRANJE ... · licenses are explained and analyzed. Modeling...
Tadej Avsec
PRIMERJAVA ODPRTOKODNIH ORODIJ ZA
MODELIRANJE INFORMACIJSKIH SISTEMOV
Z NOTACIJO UML
Diplomsko delo
Maribor, maj 2012
II
Diplomsko delo univerzitetnega študijskega programa
PRIMERJAVA ODPRTOKODNIH ORODIJ ZA MODELIRANJE
INFORMACIJSKIH SISTEMOV Z NOTACIJO UML
Študent: Tadej Avsec
Študijski program: Univerzitetni študijski program
Računalništvo in informatika
Smer: Informatika
Mentor: Izr. prof. dr. Aleš Ţivkovič
Somentor: Kristjan Košič, univ. dipl. inţ. rač. in inf.
Maribor, maj 2012
IV
ZAHVALA
Zahvaljujem se staršem, ki so mi omogočili
študij in mi vedno stali ob strani.
Posebna zahvala gre mentorju dr. Alešu
Ţivkoviču in somentorju Kristjanu Košiču za
mentorstvo, veliko pomoč in usmerjanje pri
izdelavi diplomskega dela.
V
PRIMERJAVA ODPRTOKODNIH ORODIJ ZA MODELIRANJE
INFORMACIJSKIH SISTEMOV Z NOTACIJO UML
Ključne besede : UML, odprta koda, licence, modelirno orodje, vrednotenje,
primerjava
UDK: 004.439(043.2)
Povzetek
Diplomsko delo obsega predstavitev in primerjavo odprtokodnih orodij za modeliranje
informacijskih sistemov z jezikom UML. Predstavljeni so osnovni gradniki in zgodovina
jezika UML, ter podani razlogi za njegovo uporabo. Delo je osredotočeno na odprtokodna
orodja, zato je predstavljena definicija odprte kode in najpogosteje uporabljene odprto
kodne licence. Podrobneje so opisana modelirna orodja ArgoUML, StarUML, Umbrello
UML Modeller, Payrus, NetBeans UML, ter Open ModelSphere. V praktičnem delu
definiramo seznam funkcionalnosti, ki jih od orodij zahtevamo in na podlagi stopnje
implementiranosti ovrednotimo izbrana modelirna orodja, ter jih med sabo primerjamo.
VI
COMPARISON OF OPEN SOURCE TOOLS FOR MODELING
INFORMATION SYSTEMS USING UML
Key words: UML, open source, license, modeling tool, evaluation, comparison
UDK: 004.439(043.2)
Abstract
This thesis includes a presentation and comparison of open source tool for modeling
information systems using UML. Presented are the basic building blocks and brief history
of UML and also the reasons of its use. The work is focused on open source tools,
therefore the definition of open source is presented and some widely used open source
licenses are explained and analyzed. Modeling tools like ArgoUML, StarUML, Umbrello
UML Modeller, Payrus, NetBeans UML and Open ModelSphere are described in detail. In
the practical part we define a list of functionalitys which are required from each modeling
tool and depending from the degree of implementation, we evaluate each tool and compare
them with each other.
VII
VSEBINA
1 UVOD ............................................................................................................................ 1
2 POENOTENI JEZIK ZA MODELIRANJE – UML ..................................................... 2
2.1 ZGODOVINA ........................................................................................................ 2
2.2 NAMEN MODELIRANJA Z JEZIKOM UML ..................................................... 4
2.3 CILJI JEZIKA UML ............................................................................................... 5
2.4 GRADNIKI UML ................................................................................................... 8
2.4.1 ELEMENTI ..................................................................................................... 8
2.4.1.1 STRUKTURNI ELEMENTI ................................................................... 9
2.4.1.2 ELEMENTI OBNAŠANJA ................................................................... 11
2.4.1.3 ELEMENTI ZDRUŢEVANJA .............................................................. 12
2.4.1.4 ELEMENTI OPOMB ............................................................................. 12
2.4.2 POVEZAVE .................................................................................................. 12
2.4.3 DIAGRAMI ................................................................................................... 14
3 DEFINICIJA ODPRTE KODE ................................................................................... 19
3.1 ZGODOVINSKO OZADJE ................................................................................. 19
3.2 DEFINICIJA ......................................................................................................... 22
3.3 POSTOPEK PRIDOBITVE ODPRTOKODNE LICENCE ................................. 25
3.4 ODPRTOKODNE LICENCE ............................................................................... 27
3.4.1 GNU General Public Licence (GPL) ............................................................. 28
3.4.2 GNU Lesser General Public Licence (LGPL) ............................................... 29
3.4.3 Berkley Software Distribution Licence (BSD) .............................................. 30
3.4.4 Mozilla Public Licence (MPL) ...................................................................... 31
3.4.5 Apache License Version 2.0 .......................................................................... 33
4 ODPRTOKODNA ORODJA ZA MODELIRANJE Z UML ..................................... 34
4.1 ArgoUML ............................................................................................................. 38
VIII
4.2 StarUML ............................................................................................................... 40
4.3 Umbrello UML Modeller ...................................................................................... 43
4.4 Papyrus .................................................................................................................. 44
4.5 NetBeans UML ..................................................................................................... 47
4.6 Open ModelSphere ............................................................................................... 48
5 PRIMERJAVA MODELIRNIH ORODIJ................................................................... 51
5.1 Kriteriji ocenjevanja ............................................................................................. 51
5.1.1 Zaţeljene funkcionalnosti .............................................................................. 51
5.1.2 Ostale funkcionalnosti ................................................................................... 56
5.2 Proces ocenjevanja ................................................................................................ 56
5.2.1 Ocenjevalna metoda ...................................................................................... 57
5.2.2 Ocenjevalna tabela ......................................................................................... 58
5.3 Učni primer informacijskega sistema Spletna trgovina ........................................ 61
5.4 Rezultati primerjave .............................................................................................. 63
5.4.1 ArgoUML ...................................................................................................... 64
5.4.2 StarUML ........................................................................................................ 65
5.4.3 Umbrello UML Modeller .............................................................................. 66
5.4.4 Papyrus .......................................................................................................... 68
5.4.5 NetBeans UML .............................................................................................. 69
5.4.6 Open ModelSphere ........................................................................................ 71
5.5 Primerjava rezultatov ............................................................................................ 73
6 SKLEP ......................................................................................................................... 75
7 LITERATURA IN VIRI .............................................................................................. 76
8 PRILOGE .................................................................................................................... 79
8.1 Priloga 1: Rezultati primerjave ............................................................................. 79
8.2 Priloga 2: Nivoji skladnosti UML ........................................................................ 82
IX
KAZALO SLIK
Slika 2.1: Zgodovinski razvoj specifikacije poenotenega modelnega jezika UML .............. 3
Slika 2.2: Razred ................................................................................................................... 9
Slika 2.3: Vmesnik .............................................................................................................. 10
Slika 2.4: Sodelovanje ......................................................................................................... 10
Slika 2.5: Primer uporabe .................................................................................................... 10
Slika 2.6: Komponenta ........................................................................................................ 11
Slika 2.7: Vozlišče ............................................................................................................... 11
Slika 2.8: Odvisnost ............................................................................................................. 13
Slika 2.9: Asociacija ............................................................................................................ 13
Slika 2.10: Agregacija ......................................................................................................... 13
Slika 2.11: Kompozicija ...................................................................................................... 13
Slika 2.12: Generalizacija .................................................................................................... 14
Slika 2.13: Realizacija ......................................................................................................... 14
Slika 3.1: Trţni deleţ streţnikov na spletu od Avgust 1995 - Maj 2012 [33] ..................... 21
Slika 4.1: Uporabniški vmesnik orodja ArgoUML ............................................................. 39
Slika 4.2: Uporabniški vmesnik orodja StarUML ............................................................... 42
Slika 4.3: Uporabniški vmesnik orodja Umbrello UML Modeller ..................................... 44
Slika 4.4: Uporaba modulov v Acceleo [30] ....................................................................... 46
Slika 4.5: Uporabniški vmesnik orodja Papyrus ................................................................. 46
Slika 4.6: Uporabniški vmesnik orodja NetBeans UML ..................................................... 48
Slika 4.7: Uporabniški vmesnik orodja Open ModelSphere ............................................... 50
X
KAZALO TABEL
Tabela 3.1: Licenca GPL [24] ............................................................................................. 28
Tabela 3.2: Licenca LGPL [24] ........................................................................................... 30
Tabela 3.3: Licenca BSD [24] ............................................................................................. 31
Tabela 3.4: Licenca MPL [24] ............................................................................................. 32
Tabela 3.5: Licenca Apache Licesne [24] ........................................................................... 33
Tabela 5.1: Delitev funkcionalnosti na podfunkcionalnosti ................................................ 57
Tabela 5.2: Uteţi za funkcionalnosti ................................................................................... 57
Tabela 5.3: Vrednosti za stopnje implementiranosti ........................................................... 58
Tabela 5.4: Ocenjevalna tabela ............................................................................................ 58
KAZALO GRAFOV
Graf 5.1: Doseţene točke posameznega orodja ................................................................... 63
Graf 5.2: Odstkovna implementiranost posamezne funkcionalnosti za orodje ArgoUML . 64
Graf 5.3: Odstkovna implementiranost posamezne funkcionalnosti za orodje StarUML ... 65
Graf 5.4: Odstkovna implementiranost posamezne funkcionalnosti za orodje UML
Modeller .............................................................................................................................. 66
Graf 5.5: Odstkovna implementiranost posamezne funkcionalnosti za orodje Papyrus ..... 68
Graf 5.6: Odstkovna implementiranost posamezne funkcionalnosti za orodje NetBeans
UML .................................................................................................................................... 69
Graf 5.7: Odstkovna implementiranost posamezne funkcionalnosti za orodje Open
ModelSphere ........................................................................................................................ 71
Graf 5.8: Odstkovna implementiranost posamezne funkcionalnosti za vsa modelirna orodja
............................................................................................................................................. 74
XI
SEZNAM UPORABLJENIH KRATIC
CDDL - Common Development and Distribution License
DTD - Document Type Definition
EPL - Eclipse Public License
GPL - GNU Public License
LGPL - GNU Lesser Public License
MDA - Model Driven Architecture
OCL - Object Constraint Language
OMG - Object Management Group
UML - Unified Modeling Language
XMI - XML Metadata Interchange
XML - Extended Markup Language
RUP - Rational Unified Process
BSD - Berkeley Software Distribution
KDE - K Desktop Environment
GNOME - GNU Object Model Environment
LAMP - Linux, Apache, MySQL, PHP
IIS - Internet Information Server
CSRG - Computer Systems Research Group
MPL - Mozilla Public License
GMF - Graphical Modeling Framework
EMF - Eclipse Modeling Framework
OOSE - Object-Oriented Software Engineering
OMT - Object Modeling Technique
HTML - Hyper Text Markup Language
XII
XHTML - eXtensible Hyper Text Markup Language
FSF - Free Software Foundation
OSD - The Open Source Definition
OSI - Open Source Initiative
SVG - Scalable Vector Graphics
GIF - Graphics Interchange Format
JPEG - Joint Photographic Experts Group
PDF – Portable Document Format
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
1
1 UVOD
V zadnjem desetletju je bil poenoteni jezik za modeliranje (UML) na široko sprejet v
industriji razvoja programske opreme in informacijskih sistemov. Za potrebe modeliranja
je bilo razvitih veliko različnih lastniških in odprtokodnih orodij. Zaradi kompleksnosti
specifikacije jezika UML, je malo verjetno, da bi eno modelirno orodje nudilo popolno
skladnost s celo vrsto zahtev, ki jih specifikacija jezika UML predpisuje. V praksi se
orodja bistveno razlikujejo glede na katere dele UML specifikacije podpirajo, ter
funkcionalnosti, ki jih nudijo.
Odločitev za izbor pravega modelirnega orodja je za razvijalce informacijskih sistemov
velikega pomena, njihova odločitev pa ponavadi temelji na podlagi cene licence za
modelirno orodje, stroškov usposabljanja osebja in funkcionalnosti, ki jih orodje nudi, zato
je potrebno modelirno orodje izbrati razumno in preudarno.
V diplomskem delu bomo predstavili in primerjali odprtokodna orodja za modeliranje
informacijskega sistema z jezikom UML, glede na funkcionalnosti, katerih stopnjo
implementiranosti bomo ocenili na praktičnem primeru modeliranja informacijskega
sistema spletne trgovine. Ob tem smo predstavili še poenoteni jezik za modeliranje,
najpopularnejše odprtokodne licence, ter zgodovino in definicijo odprte kode.
V drugem poglavju podrobneje opišemo zgodovino in nastanek jezika UML, ter
predstavimo namen modeliranja z jezikom UML. Sledi opis ciljev jezika UML in
predstavitev osnovnih gradnikov. Tretje poglavje obravnava zgodovino in definicijo odprte
kode, opis postopkov za pridobitev odprtokodne licence, ter podrobnejši opis pogosto
uporabljenih odprtokodnih licenc. V četrtem poglavju predstavimo odprtokodna orodja za
modeliranje z jezikom UML, ter podrobneje opišemo šest orodij, katera se največkrat
uporabijo za modeliranje informacijskega sistema. Peto poglavje je namenjeno primerjavi
modelirnih orodij glede na zastavljene kriterije in definiranju procesa ocenjevanja
posameznega modelirnega orodja, kateremu sledijo rezultati primerjave, ter primerjava
rezultatov.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
2
2 POENOTENI JEZIK ZA MODELIRANJE – UML
Poenoten jezik za modeliranje UML je grafični jezik, ki nam omogoča vizualizacijo,
specifikacijo, konstruiranje in dokumentiranje programske opreme, predvsem programske
opreme zgrajene z uporabo objektno orientiranih programskih jezikov. UML ponuja
vzorce za načrtovanje sistema, hkrati pa nudi konceptualni načrt, ki zajema funkcije
sistema ter, konkretni načrt v katerega spadajo sheme baz podatkov, razredi, vgrajeni
stavki programskega jezika in ponovno uporabne programske komponente.
UML predstavlja uskladitev najboljših postopkov v praktičnem objektno orientiranem
modeliranju, saj je rezultat skoraj dvajsetletnega dela, katerega cilj je bil poenotenje metod,
ki so bile najpogosteje v uporabi pri razvoju informacijskih sistemov in programske
opreme. Največ truda pa je bilo vloţenega v poenostavitve modeliranja in povečanje
uporabnosti. UML ni orodje za razvoj informacijskega sistema, ampak standardni jezik za
modeliranje, ter skupek tehnik, ki ji lahko uporabljamo skupaj s poenotenim procesom
(ang. IBM Rational Unified Process) ali katero drugo metodologijo.
2.1 ZGODOVINA
V dokaj kratkem časovnem obdobju je poenoten jezik za modeliranje postal glavni
modelni jezik za razvoj objektno orientiranih programskih sistemov. Poenoten jezik za
modeliranje je nastal kot produkt zdruţitve več objektno orientiranih metodologij. V
začetku 90-tih let je število objektno orientiranih metod narastlo na 50, številne izmed njih
pa teţko najdejo ustrezen modelni jezik, ki bi ustrezal njihovim specifičnim zahtevam.
Med vsemi metodami so najbolj izstopale Boochova metoda [34], Jacobsonova metoda
OOSE (Object-Oriented Software Engineering) [35] in Rambaughtova metoda OMT
(Object Modeling Technique) [36]. Boochova metoda je bila zelo učinkovita v fazi
načrtovanja in implementacije, OOSE je odlično podpirala diagrame primerov uporabe,
analizo in visokonivojsko načrtovanje, OMT pa je bila najuporabnejša pri analizi in pri
sistemih z veliko količino podatkov [2].
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
3
Booch, Rumbaugh, in Jacobson so si pri pri snovanju poenotenega jezika za modeliranje
UML zadali naslednje štiri cilje:
1. Omogočiti modeliranje sistemov (ne samo programske opreme), z uporabo
objektno orientiranih konceptov.
2. Vzpostaviti jasne sklope konceptualnih in izvršljivih elementov.
3. Nasloviti probleme stopnje dedovanja v kompleksnih in kritičnih sistemih.
4. Ustvariti jezik za modeliranje, ki je uporaben tako za ljudi kot tudi za računalnike.
Po zgornjih načelih so v sredini 90-tih let avtorji vseh treh metod, Boochove, OOSE in
OMT odločijo za snovanje novega modelnega jezika, ki je bil podprt v vseh treh metodah –
poenoteni jezik za modeliranje [2]. UML je bil kasneje v okviru OMG (Object
Management Groop) [37] standardiziran in je trenutno standardni jezik za modeliranje
sistemov.
Slika 2.1: Zgodovinski razvoj specifikacije poenotenega modelnega jezika UML
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
4
Prva večja sprememba specifikacije jezika UML se je zgodila leta 2005, ko so izdali novo
verzijo jezika UML 2.0, ki je vsebovala precej posodobitev starih diagramov, dodali pa
nekatere nove, med katere spadajo časovni diagram (ang. timing diagram), pregledni
diagram interakcije (ang. interaction overview diagram), diagram paketov (ang. packet
diagram), ter delno spremenjen diagram komponent (ang. component diagram). Z novo
različico pa je bilo potrebno zagotoviti, da so spremembe na diagramih še vedno zdruţljive
s starejšimi verzijami diagramov..
2.2 NAMEN MODELIRANJA Z JEZIKOM UML
Namen modeliranja z jezikom UML je grajenje modelov, ki nam pripomorejo k boljšemu
razumevanju delovanja sistema, ki ga načrtujemo [2]. Z modeliranjem ţelimo doseči:
1. Boljšo vizualizacijo obstoječega sistema ali sistema v razvoju. Konceptualni model
omogoča laţje razumevanje sistema tako za tistega, ki ta sisem razvija, kakor tudi
za nekoga, ki ţeli le razumeti delovanje le tega. Model ne pripomore samo k
razumevanju sistema kot takega, ampak tudi k razumevanju koncepta njegovega
načrtovanja.
2. Natančnejšo določitev strukture ali obnašanja sistema. V tem okviru določanje
pomeni gradnjo modelov, ki so natančni, nedvoumni in popolni, zgrajen model pa
mora biti natančna kopija modeliranega sistema, ki je jasno definiran.
3. Izdelava šablone, ki nas vodi pri načrtovanju sistema. UML modelni jezik omogoča
generiranje programske kode v številne programske jezike kot so Java, C++, C#
Visual Basic ali celo tabel v relacijski podatkovni bazi.
4. Dokumentiranje procesa načrtovanja. UML omogoča dokumentiranje celotne
arhitekture sistema, njegovih zahtev in izgleda, ter testnih procedur. Hkrati pa UML
nudi tudi jezik za modeliranje aktivnosti pri načrtovanju projekta in upravljanju z
izdanimi verzijami.
Modeliranje ni namenjeno samo načrtovanju velikih sistemov, uspešno se lahko uporabi
tudi pri načrtovanju majhnih sistemov. Vsekakor pa velja omeniti, da večji in bolj
kompleksen je sistem, bolj pomembno postane modeliranje in to iz čisto preprostega
razloga:
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
5
Kompleksne sisteme modeliramo zato, ker ne moremo razumeti sistema kot celoto.
[2]
2.3 CILJI JEZIKA UML
Organizacija OMG ve, da je uspeh jezika UML odvisen od njegove sposobnosti reševanja
raznolikih in realnih potreb razvijalcev programske opreme. Omenjen standard bi propadel,
če bi bil preveč tog in ohlapen, preveč ozko področno orientiran ali preveč obseţen, preveč
vezan na določeno tehnologijo ali tako nejasen, da ne bi bil uporaben za realne tehnologije.
Zaradi zagotavljanja praktičnosti in trajnosti standarda je organizacija OGM uvedla
naslednji seznam ciljev.
Cilji jezika UML [5]:
1. Razvijalcem zagotoviti uporaben, izrazen in vizualen modelirni jezik za razvoj in
izmenjavo smiselnih modelov.
2. Priskrbeti mehanizme razširjanja in specializacije za razširitev temeljnih
konceptov.
3. Zagotoviti specifikacije, ki so neodvisne od programskega jezika in procesa
razvoja.
4. Zagotoviti dokumentacijo za jezik UML.
5. Spodbujanje rasti trga objektnih orodij.
6. Zagotoviti podporo višjenivojskim konceptom razvoja.
Cilj 1: Razvijalcem zagotoviti uporaben, izrazen in vizualen modelirni jezik za
razvoj in izmenjavo smiselnih modelov.
UML bi moral biti definiran na način, ki bi razvijalcem omogočal preprosto uporabo.
Razvijalcem naj bi bilo omogočeno grajenje diagramov, ne da bi morali prilagajati notacijo
njihovemu razvojnemu okolju, programskemu jeziku ali aplikaciji. Jezik za modeliranje
naj bi deloval enako dobro za Javo in C++, kot za računovodstvo in letalstvo.
Za dosego tega cilja je morala biti opredeljena semantika za modelirni jezik, prav tako pa
tudi za njegovo vizualno predstavitev. S semantiko je zagotovljena raven, ki zagotavlja
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
6
dosledno uporabo modelov in modelirnih elementov. Dosledna vizualna predstavitev
elementov pa omogoča posvojitev in uporabo teh modelirnih tehnik.
Standard naj bi bil celovit vendar ne preveč obseţen. Vključevati mora vse ključne
modelirne elemente, ki so skupni večini, a ne vsem projektom programske opreme. V
primeru da standard ne bi bil popoln, ga razvijalci ne bi mogli uporabljati brez prilagajanja.
Popolnosti pa ni mogoče doseči, zato je na podlagi tega dejstva organizacija OGM sprejela
drugi cilj.
Cilj 2: Priskrbeti mehanizme razširjanja in specializacije za razširitev temeljnih
konceptov.
Temeljni koncepti naj bi predstavljali staro pravilo 80/20, ki pravi da bi bili v 80-ih
odstotkih primerov zmoţni zgraditi sisteme z uporabo 20-ih odstotkov razpoloţljivih
konceptov. V primeru da temeljni koncepti ne bi zadostovali našim zahtevam, potem mora
obstajati način, kako graditi na njih, da bi dosegli to kar potrebujemo.
Kadarkoli bi bilo mogoče naj bi razvijalci uporabljali ţe definirane koncepte UML. Na
razpolago so najmanj trije načini, ki jih jezik UML omogoča razvijalcem, za ustvarjanje
novih modelirnih elementov:
Jedro definira število temeljnih konceptov, ki so lahko uporabljeni za kreiranje
novega koncepta.
Jedro zagotavlja več definicij za posamezen koncept.
Jezik UML podpira sposobnost prilagoditve koncepta s specializiranjem ene ali več
definicij. Specializirati pomeni uporabiti obstoječe definicije in nato preglasiti in/ali
dodati nove elemente.
Z UML definirana rešitev za razširjanje se imenuje profil. Profil je v osnovi
implementacija jezika UML za posebno področje, kot so naprimer namenske tehnološke
platforme ali posebna področja delovanja. Profil določa mnoţico elementov modela, ki so
edinstveni ali preprosto skupni ciljnemu okolju. Profili prilagodijo modelirne elemente
tako, da lahko razvijalci predstavijo svoje okolje bolj točno, kot bi jih z generičnim
jezikom UML, vendar brez izgube semantične jasnosti konceptov UML.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
7
Cilj 3: Zagotoviti specifikacije, ki so neodvisne od programskega jezika in procesa
razvoja.
Eden izmed poglavitnih razlogov za modeliranje je ločevanje zahtev od implementacije.
Vezava jezika UML na en programski jezik bi odvrnila vse, ki tega jezika ne uporabljajo,
od uporabe jezika UML. V primeru, da se programski jezik spremeni, postane jezik UML
zastarel vse dokler se ga ne posodobi.
Jezik UML mora kazati na skupne objektno orientirane načrtovalske konstrukte, ki so
definirani v večini objektno orientiranih programskih jezikih. To usklajevanje bo podpiralo
generiranje kode in povratno inţenirstvo (ang. reverse engineering), ter vključevanje
modelnega in kodnega okolja. Namesto da bi prilagodili jezik UML programskemu jeziku,
se preslikava izvede s pomočjo profilov, ki določajo razmerja med modelirnimi elementi in
implementacijskimi konstrukti. Uporaba ločene plasti preslikave, učinkovito prekine
povezavo oziroma loči UML od jezika implementacije, ki omogoča da se vsak razvija
neodvisno drug od drugega.
Cilj 4: Zagotoviti dokumentacijo za jezik UML
Jezik mora biti definiran na takem nivoju, da je natančen vendar dostopen. Brez
natančnosti modeli ne pomagajo definirati prave rešitve, brez dostopnosti pa jih nihče ne bi
uporabljal. UML standard uporablja razredne diagrame za predstavljanje formalnih
definicij objektov in njihovih relacij. Vsak razredni diagram je dopolnjen z besedilom, ki
opisuje semantiko in notacijske moţnosti. Omejitve, ki definirajo integriteto modelirnih
elementov so izraţene z uporabo objektno omejitvenega jezika (Object Constraint
Language - OCL).
Cilj 5: Spodbujanje rasti trga objektnih orodij
Trg razvojnih okolij je odvisen od enotnega standarda za modeliranje, odlagališča modela
in izmenjave modelov. Ponudniki se lahko zanesejo na stabilen standard, ki jim omogoča
hitro in učinkovito implementacijo vseh treh poglavitnih funkcij orodja. Z zagotavljanjem
osnovne funkcionalnosti, se stroški ponudnikov zmanjšujejo, hkrati pa stremijo za
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
8
izboljšavami modelirnega okolja z integracijo s kodirnim okoljem, orodji za upravljanje z
bazami podatkov, preverjanju sintakse, preverjanju modela ter še veliko več.
Učinkom standarda smo lahko priča ţe danes, saj se je na trgu pojavilo veliko orodij,
sklopi moţnosti, ki jih ponujajo ta orodja, pa so naravnost ekplodirali. Orodja, ki so bila
prvotno namenjena samo risanju diagramov, danes preverjajo sintakstno pravilnost OCL
izjav, sinhronizacijo diagramov, generiranjo programsko kodo in omogočajo povratno
inţenirstvo, podpirajo uvaţanje iz različnih orodij, izvaţajo HTML ali XML poročila,
podpirajo integracijo z enim ali več kodirnim okoljem in še veliko več.
Cilj 6: Zagotoviti podporo višjenivojskim konceptom razvoja
Standard mora podpirati modeliranje višje nivojskih konceptov kot so ogrodja, vzorci in
sodelovanja s katerimi povdari prednosti modeliranja in razvoja sistemov. Na podlagi teh
lastnosti lahko UML postane sredstvo, ki pospešuje tehnološki razvoj.
2.4 GRADNIKI UML
Da bi razumeli UML, si moramo najprej ustvariti konceptualni model jezika, to pa zahteva
poznavanje treh glavnih elementov: osnovni gradniki UML, pravila ki narekujejo, kako te
gradnike povezujemo skupaj in nekaj osnovih mehanizmov, ki se uporabljajo v UML.
Besednjak jezika UML zajema tri vrste osnovnih gradnikov:
1. Elementi
2. Povezave
3. Diagrami
2.4.1 ELEMENTI
V UML se pojavljajo štiri vrste elementov, ki so v osnovi objektno orientirani gradniki:
1. Strukturni elementi,
2. elementi obnašanja,
3. elementi zdruţevanja in
4. elementi opomb.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
9
2.4.1.1 STRUKTURNI ELEMENTI
Strukturni elementi so temelji UML modelov in so največkrat statični deli modela, ki
predstavljajo elemente konceptualno ali fizično, mednje pa spadajo:
1. Razredi (ang. class)
2. Vmesniki (ang. interface)
3. Sodelovanja (ang. collaborations)
4. Primeri uporabe (ang. use case)
5. Aktivni razred (ang. active class)
6. Komponente (ang. components)
7. Vozlišča (ang. nodes)
Razred je opis mnoţice objektov, ki si delijo enake atribute, operacije, povezave in
semantiko. Grafično je razred predstavljen kot pravokotnik, ki vsebuje ime, atribute in
operacije, kot prikazuje slika 2.2.
Slika 2.2: Razred
Vmesnik predstavlja nabor operacij, ki definirajo storitev razreda ali komponente, torej
opisuje vidno obnašanje elementa. Lahko predstavlja celotno obnašanje razreda ali
komponente ali pa le delno. Vmesnik definira nabor specifikacij za operacije (ang.
operation specifications), nikoli pa njihove implementacije. Vmesnik definira povezavo
med specifikacijo, ki nam pove kaj abstrakcija počne in implementacijo, ki pove, kako to
počne. Največkrat so vmesniki povezani z razredom ali komponento, ki realizira vmesnik.
Dobro strukturiran vmesnik zagotavlja jasno ločitev med zunanjim pogledom in notranjim
pogledom abstrakcije, zaradi česar je mogoče razumeti delovanje abstrakcije, brez da bi se
morali poglabljati v podrobnosti implementacije. Grafično je vmesnik predstavljen s
krogom in imenom vmesnika, kot prikazuje slika 2.3.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
10
Slika 2.3: Vmesnik
Sodelovanje predstavlja skupino razredov, vmesnikov in ostalih elementov, ki delujejo
skupaj in zagotavljajo skupno obnašanje. Zbirka razredov (strukturni del), skupaj z
njihovimi interakcijami (vedenjski del), tvorijo mehanizem, ki ga lahko v UML
predstavimo kot sodelovanje. Grafično je sodelovanje predstavljeno kot elipsa s črtkano
črto in imenom, kot prikazuje slika 2.4.
Slika 2.4: Sodelovanje
Primer uporabe je opis mnoţice zaporednih dejanj, ki jih opravlja sistem z namenom,
pridobivanja rezultata, ki ga lahko opazujemo, za določenega akterja. Primer uporabe se
uporablja za konstrukcijo vedenjskih stvari v modelu, realiziran pa je s pomočjo
sodelovanja. Grafično je primer uporabe predstavljen kot elipsa s polno črto in imenom,
kot prikazuje slika 2.5.
Slika 2.5: Primer uporabe
Aktivni razred je razred katerega objekti imajo enega ali več programskih procesov ali
programskih niti in lahko sam nadzoruje svojo aktivnost, njegove instance pa so aktivni
objekti. Grafično je aktiven razred predstavljen enako kot navaden razred z odebeljeno
obrobo pravokotnika.
Komponenta je fizični in zamenljivi del sistema, ki ustreza in zagotavlja realizacijo nabora
vmesnikov. S komponentami modeliramo fizične stvari, ki so lahko del vozliša, kot so
izvedljive datoteke, knjiţnice, tabele, datoteke in dokumenti. Komponente običajno
predstavljajo fizični paket logičnih elementov, kot so razredi, vmesniki in sodelovanja.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
11
Dobra komponenta je definirana z jasno abstrakcijo in dobro definiranimi vmesniki, s tem
pa se zagotovi lahka zamenjava starejše komponente z novejšo. Grafično je komponenta
predstavljena kot pravokotnik z jezički, kot prikazuje slika 2.6.
Slika 2.6: Komponenta
Vozlišče je fizični element, ki obstaja v času izvajanja in predstavlja programski vir, z
lastnim pomnilnikom in ponavadi tudi zmoţnost procesiranja. Z vozlišči modeliramo
topologijo strojne opreme, na kateri teče naš sistem. Vozlišče običajno predstavlja procesor
ali napravo na kateri se lahko uporabljajo komponente. Grafično je vozlišče predstavljeno s
kocko, kot prikazuje slika 2.7.
Slika 2.7: Vozlišče
2.4.1.2 ELEMENTI OBNAŠANJA
Elementi obnašanja so dinamični deli UML modelov, ki prikazujejo časovno in prostorsko
obnašanje modela.
Elemente obnašanja delimo na dva dela:
interakcije in
diagrame stanj.
Interakcija je vedenje, ki vključuje nabor sporočil, izmenjanih med naborom objektov
znotraj določenega konteksta za dosego določenega namena. Z interakcijo lahko
predstavimo obnašanje mnoţice objektov ali posameznih operacij. Interakcija vsebuje
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
12
različne elemente, ki vključujejo sporočila, obnašanje, ki ga sporočilo sproţi, in povezave
med objekti. Grafično predstavljamo sporočilo kot usmerjeno daljico, ki skoraj vedno
vsebuje ime operacije, ki jo proţi.
Diagram stanj predstavlja obnašanje, ki opredeljuje zaporedje stanj objekta, ali interakcij
med objekti, kot odgovor na dogodke. Z njimi lahko prikaţemo obnašanje posameznega
razreda ali sodelovanja med razredi. Vključuje stanja, prehajanje stanja, dogodke, ki
proţijo spremembo stanja in aktivnosti, ki se proţijo pri spremembi stanja. Grafično je
stanje predstavljeno kot pravokotnik z zaobljenimi koti, ki vsebuje ime in podstanja, če ta
obstajajo.
2.4.1.3 ELEMENTI ZDRUŢEVANJA
Elementi zdruţevanja predstavljajo organizacijske dele modelov UML, glavni predstavnik
teh elementov je paket, ki omogoča zdruţevanje elementov v skupine. Obstaja na
konceptualnem nivoju (samo v fazi razvoja), za razliko od komponent, ki obstajajo v času
izvajanja. Paket nam sluţi za urejanje modelirnih elementov v medsebojno povezane dele s
katerimi lahko upravljamo kot s skupino, hkrati pa lahko z njim predstavimo različne
poglede na arhitekturo sistema. Grafično je predstavljen z mapo, ki vsebuje ima paketa,
včasih pa tudi svojo vsebino.
2.4.1.4 ELEMENTI OPOMB
Za dodajanje opomb in opisov v UML modelih uporabljamo elemente opomb, ki se
imenujejo zapiski. Zapiske lahko pripnemo na element ali skupino elementov, grafično pa
je prikazan z zavihanim listom.
2.4.2 POVEZAVE
V jeziku UML se pojavljajo štiri vrste povezav:
odvisnost,
asociacija,
generalizacija in
realizacija.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
13
Odvisnost je semantična povezava dveh elementov, pri katerem sprememba neodvisnega
elementa lahko povzroči semantično spremembo odvisnega elementa. Grafično jo
prikaţemo s črtkano puščico, kot prikazuje slika 2.8.
Slika 2.8: Odvisnost
Asociacija je strukturna povezava, ki opisuje niz povezav, ki povezujejo objekte in
predstavlja šibko sklapljanje, kjer so vpleteni razredi neodvisni. Poseben primer asociacije
je agregacija, ki predstavlja strukturni odnos med celoto in njenimi deli. Močnejšo obliko
agregacije imenujemo kompozicija (slika 2.11), uporabimo pa jo, ko neobstoj agregiranega
elementa pomeni tudi neobstoj komponent. Asociacija je predstavljena s polno črto med
dvema strukturnima elementoma, ki ponavadi vsebuje kardinalnost in imena vlog, kot
prikazuje slika 2.9. V primeru agregacije ali kompozicije je na strani elementa, ki
predstavlja celoto, črta zaključena z votlim rombom, kot prikazuje slika 2.10.
Slika 2.9: Asociacija
Slika 2.10: Agregacija
Slika 2.11: Kompozicija
Generalizacija predstavlja povezavo specializacije in generalizacije, v kateri so objekti
specializiranega elementa (otrok), nadomestljivi z elementi generaliziranega elementa
(starš), zato si otrok deli strukturo in obnašanje starša. Grafično je predstavljena s puščico,
ki ima votlo konico, ter je usmerjena proti predniku, kot prikazuje slika 2.12.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
14
Slika 2.12: Generalizacija
Realizacija je semantična povezava med elementoma, kjer prvi opredeljuje funkcijo, ki jo
drugi izvede. Realizacijo lahko uporabimo za povezovanje vmesnikov in razredov ali
komponent, ki jih realizirajo, ter med primeri uporabe in sodelovanji, ki jih realizirajo.
Grafično je predstavljena s črtkano črto in votlo konico, kot prikazuje slika 2.13.
Slika 2.13: Realizacija
2.4.3 DIAGRAMI
Diagram je grafična predstavitev, mnoţice elementov v povezan graf, kjer elementi
predstavljajo vozlišča grafa, razmerja pa povezave med njimi. Diagrami nam sluţijo za
prikaz različnih pogledov na obravnavani sistem, s tem pa doseţemo ločeno obravnavo
posameznih problemov v sistemu in poenostavimo modeliranje sistema. V UML lahko
izbiramo med devetimi diagrami, ki se delijo v dve skupini.
Diagrami, s katerimi prikazujemo statično strukturo sistema:
razredni diagram,
objektni diagram,
diagram komponent in
diagram porazdelitve.
Diagrami, s katerimi prikazujemo dinamično strukturo oziroma obnašanje sistema:
diagram primerov uporabe,
diagram zaporedja,
diagram sodelovanja,
diagram stanj in
diagram aktivnosti.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
15
Razredni diagram
Razredni diagram prikazuje mnoţico razredov, vmesnikov, sodelovanj in njihovih povezav
(odvisnost, generalizacija, asociacija in agregacija). Je najbolj pogosto uporabljen diagram
v objektno orientiranih modelirnih sistemih, opisuje statičen vidik načrtovanja sistema in
predstavlja temelje za izdelavo diagrama komponent ter diagrama porazdelitve. Razredni
diagram se poleg vizualizacije, opisovanja in dokumentiranja strukturnih modelov
uporabljajo tudi za izdelavo izvršljivih sistemov z generiranjem programske kode
neposredno iz modela UML ali s pomočjo povratnega inţenirstva, pri katerem poteka
prenos informacij iz programske kode v model UML.
Objektni diagram
Objektni diagram prikazuje mnoţico objektov in njihovih povezav v določeni točki v času.
Prikazujejo statični posnetek instanc oziroma objektov elementov razrednega diagrama,
skupaj z njihovimi stanji in povezavami v določenem trenutku. Objektni diagrami se
uporabljajo za prikaz statičnega vidika načrtovanja sistema, podobno kot razredni
diagrami, vendar z vidika realnih ali prototipnih primerov.
Diagram komponent
Diagram komponent prikazuje organizacijo in odvisnosti med naborom komponent. Z njim
prikaţemo statično impementacijski pogled ne sistem. Povezan je z razrednim diagramom,
saj komponenta tipično predstavlja enega ali več razredov, vmesnikov ali sodelovanj. Z
njim modeliramo zaključene dele programske kode, ki implementirajo funkcionalnost
izbranih razredov in povezave med njimi. Komponente lahko zdruţujemo v pakete za
razdelitev sistema v več manjših zaključenih celot.
Diagram porazdelitve
Diagram porazdelitve prikazuje namestitev komponent v vozlišča, ki predstavljajo strojno
opremo, na katerih se te komponente izvajajo. Prikazuje statično porazdelitev arhitekture
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
16
sistema. Vsebuje vozlišča in povezave med njimi, lahko pa prikazuje tudi porazdelitev
komponent med vozlišča.
Diagram primerov uporabe
Diagram primerov uporabe je eden izmed petih diagramov, ki se uporablja za modeliranje
dinamične strukture oziroma obnašanja sistema, podsistema ali razreda. Z njim določimo
vse funkcije, ki jih bo sistem podpiral, ne razkrijemo pa podrobnosti o izvedbi teh funkcij.
Vsak diagram primerov uporabe vsebuje mnoţico primerov uporabe, akterjev in povezav
med njimi. Primeri uporabe predstavljajo potek dogodkov, ki prinašajo ţelene rezultate
akterju, ki jih izzove. Akterji so osebe ali drugi sistemi, ki sodelujejo z obravnavanim
sistemom.
V diagramu primerov uporabe nastopajo naslednje povezave:
Asociacija proţi ali zgolj sodeluje s primerom uporabe.
Generalizacija – povezava med dvema akterjema ali premeroma uporabe. Če je
primerek A generaliziran iz primerka B, to pomeni, da je primer B poseben primer
primerka A.
Vključuje – v primeru, da je obnašanje primera uporabe skupno več kot enemu
primeru uporabe, takrat rečemo, da le-ta vključuje sledeče primere uporabe.
Razširja – pomeni odvisnost med primeri uporabe. Primer uporabe razširja
drugega, kadar se le-ta izvede le v določenih primerih.
Vse primere uporabe, ki opisujejo funkcionalnost sistema, dopolnimo z dokumentom, ki
vsebuje naslednje podatke:
ime primera uporabe,
kratek opis namena,
primarni akter – tisti, zaradi katerega gradimo sistem,
sekundarni akter,
začetna točka – prva aktivnost primera uporabe,
končna točka – zadnja aktivnost primera uporabe,
merljivi rezultat,
tok dogodkov, kjer opišemo pozitivni scenarij,
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
17
alternativni tok dogodkov, mo pogoji za izvedbo niso izpolnjeni,
razširjen primer uporabe,
odprte zadeve.
Na zgornji način se opišejo vsi primeri porabe, po potrebi pa lahko nabor podatkov
razširimo in prilagodimo lastnim potrebam.
Diagram zaporedja
Diagram zaporedja prikazuje časovno zaporedje izmenjave sporočil med objekti v sistemu.
Sestavljajo ga akterji, objekti, povezave in sporočila. Z njim prikaţemo scenarije iz
diagrama primerov uporabe, ki nam pomagajo razumeti povezave in medsebojne vplive
med objekti s sporočili, katera so izmenjana v nekem časovnem zaporedju.
Diagram sodelovanja
Diagram sodelovanja je podoben diagramu zaporedja, le da bolj poudarja strukturno
ogranizacijo objektov, ki pošiljajo in prejemajo sporočila. Prikazuje mnoţico objektov,
povezav med njimi in sporočila, ki si jih izmenjujejo. Sporočila, ki si jih objekti
izmenjujejo so označena z ustrezno zaporedno številko sporočila, s tem pa se doseţe večja
preglednost vseh poslanih sporočil med povezanimi objekti. Osnovna značilnost diagrama
sodelovanja je, da nima časovne komponente.
Diagrami zaporedja in sodelovanja so isomorfni, kar pomeni, da lahko pretvarjamo iz
enega v drugega brez izgube informacij.
Diagram stanj
Diagram stanj prikazuje stanja, prehode, dogodke in aktivnosti, z njim pa prikaţemo
dinamičen pogled na sistem. Z njim največkrat modeliramo obnašanje reaktivnih objektov,
za njihovo obnašanje pa je značilno, da se odzivajo na dogodke, ki so poslani izven
njihovega konteksta. Posebno pozornost si zasluţi pri modeliranju obnašanja vmesnikov,
razredov in sodelovanj. Uporablja se za prikaz spreminjanja stanja izbranega objekta glede
na dogodke, ki spremembo stanj povzročajo.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
18
Diagram aktivnosti
Diagram aktivnosti prikazuje tok prehodov iz aktivnosti na aktivnost, z njim pa prikaţemo
dinamičen pogled na sistem. Prikazuje mnoţico aktivnosti, prehode med aktivnostmi,
stičišča, tok objektov, uskladitvene črte v katerih se vzporedni tokovi izvajanja uskladijo in
se opravi prehod na naslednjo aktivnost, ko so izpolnjeni določeni pogoji ter vejitve, v
katerih se tok aktivnosti nadaljuje v smeri, ki je odvisna od izhoda odločitve. V primeru da
so v toku dogodkov vpleteni tudi pomemebni objekti, jih lahko s pomočjo objektnega toka
dodamo v diagram aktivnosti.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
19
3 DEFINICIJA ODPRTE KODE
Odprta koda je izraz, ki opisuje sredstvo za razvoj in distribucijo programske opreme, ter
zagotavlja, da je programska oprema prosto dostopna vsakomur za uporabo, spreminjanje,
popravljanje, izboljševanje, dograjevanje in distribucijo brez omejitev oziroma znotraj
pravil, ki so zapisana v odprtokodni licenci. Praksa odprte kode spodbuja zanesljivost in
kakovost programske opreme s podporo neodvisnega strokovnega pregleda in razvoja
izvorne kode. Odprto kodni programi (open source software) so programi, za katere ne
veljajo tako stroge licenčne omejitve glede načina uporabe, kopiranja, spreminjanja kode
in distribucije, ki veljajo za večino lastniške programske opreme. Posebnost odprtokodne
licence pa je v tem, da se tako spremenjene kode ne sme izdati pod stroţjimi licenčnimi
pogoji kot so tisti, pod katerimi je izdana začetna izvorna koda.
Mnogi enačijo odprto kodo s brezplačno programsko opremo, vendar je enačenje zmotno.
Odprtokodne programske rešitve omogočajo prost dostop do izvorne kode in njeno
spreminjanje, ne pomenijo pa njene brezplačne uporabe. Hkrati pa velja povdariti, da ni
nujno, da je brezplačna programska oprema zasnovana po načelih odprte kode.
3.1 ZGODOVINSKO OZADJE
V začetku šestdesetih let prejšnjega stoletja, so IBM in ostali prodali prve velike
komercialne računalnike skupaj z nekaj programske opreme, ki je bila brezplačna oziroma
prosta v tem smislu, da so si jo uporabniki med sabo prosto izmenjevali. Zraven je bila tudi
izvorna koda, katero so lahko izboljševali in spreminjali. V poznih šestdesetih, so se
razmere spremenile z ločitvijo IBM-ove programske opreme in ţe sredi sedemdesetih let je
bilo mogoče najti lastniško programsko opremo, ki je uporabniki niso smeli razširjati, prav
tako pa uporabnikom izvorna koda ni bila dostopna, s tem pa jim je bilo onemogočeno
spreminjanje programov [23].
V poznih sedemdesetih in zgodnjih osemdesetih, sta se začeli ustanavljati dve različni
skupini, ki sta osnova sedanjega odprtokodnega gibanja:
Na vzhodni obali ZDA je nekdanji programer na MIT AI Lab, Richard Stallman
odstopil in začel s projektom GNU in Free Software Foundation. Cilj projekta
GNU je bil izdelati prost oziroma odprtokoden operacijski sistem, ki bo zdruţljiv z
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
20
operacijskim sistemom Unix. GNU General Public License (GPL) je bil kot pravni
instrument razvit ne samo zato, da bi programska opreme razvita s strani GNU
ostala odprokodna, ampak da bi hkrati spobujala izdelavo odprtokodne programske
opreme. Prav tako je Stallman napisal GNU Manifest, kjer navaja, da so dostopnost
izvorne kode, prosto razširjanje in spreminjanje programske kode temeljne pravice.
Na zahodni obali ZDA (Zdruţene drţave Amerike) si je Computer Science
Research Group (CSRG) iz kalifornijske univerze Berkeley, prizadevala izboljšati
sistem Unix z novimi aplikacijami, skupaj pa so jih zdruţili v BSD Unix,
programerji s celega sveta pa so pomagali pri odpravljanju teţav, vzdrţevanju in
izboljšanju sistema. V poznih osemdesetih je bil distribuiran pod licenco BSD,
katera je ena izmed prvih odprtokodnih licenc. Na ţalost so v tem času uporabniki
še vedno potrebovali AT&T Unix licenco, saj so bili nekateri deli jedra in več
pomembnih pripomočkov, ki so bili potrebni, da je bil sistem uporaben, še vedno
lastniški.
Odprtokodne aplikacije so se v osemdesetih in zgodnjih devetdesetih še naprej razvijale,
sprva v relativno izoliranih skupinah. Pri premagovanju transnacionalnih naporov sta jim
pomagala USENET in Interenet, pričele pa so se oblikovati tudi močne skupnosti
uporabnikov. Počasi se je s povezovanjem ţe razvite programske opreme, začelo
zdruţevanje dela mnogih skupin. Rezultat tega povezovanja je bilo okolje, ki je bilo lahko
v celoti zgrajeno na Unix-ovi podlagi z odprtokodno programsko opremo.
Med leti 1991 in 1992 sta se zgodila dva dogodka znotraj dveh različnih skupnosti, ki sta
zaznamovala razvoj odprtokodne programske opreme:
V Kaliforniji je Bill Jolitz implementiral manjkajoče dele za dokončanje Net/2
distribucije, ki bi se izvajala na računalnikih i386. Net/2 je bil rezultat prizadevanja
CSRG, da bi izdelali različico BSD Unix brez avtorske kode AT&T. Svoje delo je
imenoval 386BSD, ki je kmalu postal cenjen znotraj Unix in BSD skupnosti. Vanj
ni vključil samo jedro, ampak tudi številne pripomočke. Distribucija je bila povsem
brezplačna saj je izšla pod licenco BSD.
Na Finskem je študent računalništva Linus Torvalds zaradi nezadovoljstva s
Tanenbaovim operacijskim sistemom Minix 5, pričel z razvijanjem prvih verzij
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
21
jedra Linux. Kmalu je začelo sodelovati veliko ljudi, da bi naredili jedro bolj in bolj
uporabno. Z dodajanjem pripomočkov jim je uspelo narediti pravi operacijski
sistem GNU/Linux6, izšel pa je pod licenco GPL.
V devetdesetih letih je veliko odprtokodnih projektov proizvedlo kvalitetno in uporabno
programsko opremo, kot je na primer spletni streţnik Apache [38], interpretirni programski
jezik Pearl [39], GNOME (GNU Object Model Environment) [40] in KDE (K Desktop
Environment) [41], ki sta zagotavljala usklajen niz knjiţnic in aplikacij skupaj z namizjem,
katero je bilo enostavno za uporabo in prijazno do uporabnika, brezplačni internetni
brskalnik Mozilla [42], ki ga je financiral Netscape. Od vseh teh projektov sta še najbolj
pomembna GNOME in KDE saj spodbujata uporabo s strani netehničnih ljudi.
V poznih devetdesetih so se začeli za odprtokodno programsko opremo zelo razburljivi
časi. Odprtokodni sistemi, ki so temeljili na GNU/Linux ali BSD so bili javno sprejeti, s
tem pa so postali alternativa in konkurenca lastniškim sistemom, kot je naprimer Microsoft
IIS (Internet Information Server), kateremu glavna konkurenca je odprtokodni spletni
streţnik Apache. Po zadnjih meritvah Netcraft-a je danes skoraj 70% vseh spletnih
streţnikov Apache, kakor je razvidno iz slike 3.1. Prav tako velja povdariti, da skoraj 70%
spletnih strani temelji na platformi LAMP (Linux, Apache, MySql, (Perl, PHP in/ali
Python)).
Slika 3.1: Tržni delež strežnikov na spletu od Avgust 1995 - Maj 2012 [33]
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
22
3.2 DEFINICIJA
Open Source Initiative (OSI) oziroma iniciativa za odprto kodo je neprofitna organizacija,
ki se posveča izobraţevanju in promoviranju odprte kode, ter je zagovornik prednosti
uporabe odprte kode [19]. Organizacija OSI na podlagi definicije odprte kode (Open
Source Definition - OSD) skrbi za certificiranje odprtokodnih licenc in hkrati zagotavlja
trdno osnovo za pravilno uporabo pojma odprta koda. Vzpodbuja širjenje uporabe
odprtokodnih licenc in s tem pospešuje razvoj odprtokodnih projektov. Na ta način podpira
osnovno idejo odprte kode, ki vidi v dovoljenju za prosto branje, redistribucijo in
spreminjanje programske opreme neslutene razvojne moţnosti. Prepričani so, da je prišel
čas za preboj odprte kode na komercialno področje. V najširšem smislu je odprta koda
vsaka programska oprema, za katero je omogočen dostop do izvorne kode. V smislu
definicije OSI odprte kode pa to še zdaleč ne zadošča. Z oznako OSI odprta koda se lahko
ponaša le programska oprema, pri kateri pravila distribucije oziroma licenciranja
izpolnjujejo 10 kriterijev, zapisanih v definiciji odprte kode [6]. Velja poudariti, da OSD
sama po sebi ni licenca ampak specifikacija, ki določa kaj je dopustno v licenci za
programsko opremo, ki se nanaša na odprto kodo [18].
Kriteriji definicije odprte kode so sledeči (verzija 1.8) [20]:
1. Prosto razširjanje.
Licenca ne sme prepovedovati prodaje ali posredovanja programske opreme
oziroma sestavnega dela skupne distribucije, ki vsebuje programe zbrane iz več
različnih virov. Licenca ne sme zahtevati avtorskega honorarja ali druge pristojbine
za prodajo programske opreme.
Z omejevanjem licence, da zahteva prosto razširjanje se izognemo skušnjavi, da bi
se kdo okoristil na kratki rok v zameno za dolgoročne koristi. V primeru, da tega ne
bi storili bi bilo med sodelujočimi veliko pritiska in prostora za napake.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
23
2. Izvorna koda.
Program mora vsebovati izvorno kodo, licenca pa dovoljevati distribucijo izvorne
kode. V primeru, da določen del programske opreme ni distribuiran skupaj z
izvorno kodo, potem mora biti objavljeno, kje se lahko izvorno kodo dobi, po
moţnosti brezplačno iz interneta ali se zanjo plača samo stroške razširjanja. Izvorna
koda mora predstavljati prednostno obliko s katero bi programer spremenil
program. Namero popačenje kode ni dovoljeno. Vmesne oblike, kot so izhodi
predprocesorja ali prevajalnika niso dovoljene.
Zahtevan je dostop do nepopačene izvorne kode, saj se programi ne morejo
razvijati, ne da bi jih spremenili. Namen tega je, da postane razvoj enostaven, zato
se zahteva, da se spremembe vpeljejo na preprost način.
3. Izpeljana dela.
Licenca mora omogočati spremembe in izpeljana dela, katerim se mora dovoljevati
razširjanje pod enakimi pogoji kot licenca izvirne programske opreme.
Samo moţnost branja izvorne kode ni dovolj za pridobitev podpore neodvisnega
strokovnega pregleda in hitrega evolucijskega izbora. Če ţelimo hiter razvoj potem
moramo ljudem dovoljevati, da z izvorno kodo eksperimentirajo in razširjajo njene
spremembe.
4. Intergriteta avtorjeve izvorne kode.
Licenca lahko omeji odprto izvorno kodo pri razširjanju v spremenjenni obliki
samo v primeru, da licenca dovoljuje razširjanje popravkov skupaj z izvorno kodo z
namenom spreminjanja programa v času izgradnje. Licenca mora izrecno
dovoljevati razširjanje programske opreme, zgrajene iz spremenjene izvorne kode.
Licenca lahko zahteva, da se izpeljana dela izdajajo pod drugačnim imenom ali
verzijo, kot izvorna programska oprema.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
24
Spodbujanje izbolšav je dobra stvar, vendar imajo uporabniki pravico vededeti, kdo
je odgovoren za programsko opremo, ki jo uporabljajo. Avtorji in vzdrţevalci
imajo vzajemno pravico vedeti, kaj podpirajo in čigav ugled branijo.
V skladu s tem mora odprtokodna licenca jamčiti, da je vir vedno na voljo, lahko pa
zahteva, da se ga razširja kot nedataknjene osnovne vire skupaj s popravki. Na ta
način so lahko na voljo »neuradne« spremembe, ki se jih da enostavno razločiti od
osnovega vira.
5. Licenca ne sme diskriminirati kogarkoli ali katerekoli skupine oseb.
Če ţelimo dobiti največ od procesa oblikovanja odprte kode, potem v ta proces
vključimo čim več raznolikih oseb in skupin, ki z enako pravico prispevajo k
odprtokodnim virom. Zaradi tega se prepoveduje, da bi katerakoli odprtokodna
licenca diskriminirala kogarkoli, ki ţeli sodelovati pri tem procesu.
6. Prepoved diskriminiranja področja znanosti.
Licenca ne sme nikogar omejevati pri uporabi programa na drugem področju
dejavnosti. Licenca ne sme nasprotovati uporabi programa, na primer v poslovne
namene ali vsakdanjo rabo itd.
Glavni namen te klavzule je prepoved licenčnih pasti, ki odprtokodnim programom
preprečujejo vsakdanjo uporabo. Ţelimo si, da se skupnosti pridruţijo vsakdanji
uporabniki in ne da se počutijo izključeni iz nje.
7. Distribcija licence.
Licenčne pravice se morajo nanašati na vsakogar, ki program razširja, brez potrebe
po dodatnem licenciranju.
Ta klavzula je namenjena prepovedi zapiranju programske opreme s posrednimi
sredstvi, kot naprimer zahtevanje dogovora o nerazkrivanju podatkov.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
25
8. Licenca ne sme biti specifična za produkt.
Pravice, vezane na program, ne smejo biti odvisne od tega, ali je program del
določene programske distribucije. Če je program odstranjen iz distribucije in
uporabljen ali distribuiran naprej pod pogoji licence programa, morajo vse stranke,
katerim je bil program distribuiran, imeti enake pravice kot tiste, ki so jim bile
dodeljene za izvirno programsko distribucijo.
9. Licenca ne sme omejevati druge programske opreme.
Licenca ne sme omejevati ostale programske opreme, ki se razširja skupaj z
licenčno programsko opremo. Na primer, licenca ne sme zahtevati, da mora biti vsa
programska oprema, ki je distribuirana na istem mediju prav tako odprto kodna
programska oprema.
Razširjevalci odprtokodne programske opreme imajo pravico, da sami odločajo o
svoji programski opremi.
10. Licenca mora biti nevtralna do tehnologije.
Prevzemanje licenc ne sme biti omejeno na posamezne tehnološke rešitve ali
vmesnike.
3.3 POSTOPEK PRIDOBITVE ODPRTOKODNE LICENCE
Cilj OSI postopkov pregleda licence je zagotoviti, da so licence in programska oprema, ki
je označena kot odprtokodna, v skladu z obstoječimi normami in pričakovanji skupnosti.
Zaradi tega morajo vse licence iti skozi postopek javnega pregleda, ki je opisan v
nadaljevanju. Odbor OSI se v naprej posvetuje z vlagatelji, pomaga jim pri usmerjanju
skozi proces pridobitve licence in izboljšavi njihove licence, kljub temu pa mora vsaka
licenca, ki ţeli uradno odobritev, prestati licenčni pregled [22].
Namen OSI pregleda licence je [22]:
zagotavljanje, da so odobrene licence v skladu z definicijo odprte kode,
določitev ustrezne kategorije širjenja licence,
preprečevanje nečimernosti in podvajanja licenc,
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
26
zagotavljanje temeljitega, preglednega in pravočasnega pregleda.
Prošnjo za odobritev vloţimo po naslednjih korakih [22]:
Identificiramo vrsto vloge,
zagotovimo upravičene razloge za oddajo vloge ,
naročimo licenčni pregled,
predloţimo uradno zahtevo za licenčni pregled,
prošnja mora v polju zadeva vključevati vrsto vloţitve in ime licence,
vključiti moramo povezavo do HTML ali tekstovne kopije licence,
vključiti moramo druge podporne podatke, ki so navedeni spodaj,
kategorijo za širjenje licence vprašamo za odobrene licence,
pojasnimo razloge za rekategorizacijo, v skladu z opredeljenimi kategorijami,
naveţemo se na starejše javne razprave, če obstajajo.
Vrste vlog [22]:
Ukinitev licence – vlogo zanjo lahko vloţi samo lastnik licence za katero mora
navesti verzijo, ki se ukinja in določiti naslednika licence, če ta obstaja.
Odobritev obstoječe licence – vlogo zanjo lahko vloţi samo lastnik licence ali tisti,
ki je zainteresiran za licenco, vloga pa je namenjena tistim licencam, ki so jih
obstoječe skupnosti ţe uporabljale, vendar niso bile odobrene.
Za odobritev nove licence – vlogo zanjo lahko odda samo bodoči lastnik licence
Obravnava vloge poteka po naslednjih korakih [22]:
Skupnost zadolţena za pregled licenc, bo razpravljala največ 30 dni.
Predsedujoči v skupnosti za pregled licence bo povzel in predstavil svoje predloge
odboru OSI.
Odbor OSI bo sprejel končno odločitev glede odobritve, po potrebi pa zahteval še
dodatne informacije na naslednjem mesečnem srečanju.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
27
Predsedujoči v skupnosti za pregled licence bo sporočil skupnosti, odgovor odbora
OSI.
V primeru, da se licenca odobri, bo organizacija OSI licenco dodala na spletno
stran.
3.4 ODPRTOKODNE LICENCE
Vsak avtor računalniškega programa ima samodejno avtorske pravice nad programom in
ima moţnost omejiti pravice kopiranja, uporabe ali spreminjanja programa. Uporabnik
pridobi pravico do uporabe programa v skladu z dovoljenji avtorja. Licenca natančno
določa, kaj uporabnik lahko počne s programsko opremo, kakšne pogoje mora izpolnjevati
in kakšne so njegove pravice. Glavni pogoj je seveda plačilo kupnine za programsko
opremo. Odprta koda uporablja drugačen pristop, saj je programska oprema na voljo
brezplačno, licenca, ki ureja pravice uporabnika, pa dovoljuje tudi spreminjanje
programske kode. To dovoljuje vsem, da dodajo drugo funkcionalnost, popravijo napake v
kodi ali naredijo program bolj učinkovit. Vsakdo lahko torej popravlja in spreminja
programsko kodo in pravzaprav veliko ljudi to tudi počne. Število ljudi, ki prispevajo k
rešitvi, se tako zelo poveča. Dovoljeno je tudi prodajati spremenjeno programsko opremo,
ne da bi s prvim avtorjem delili dobiček. Prav tu je tudi ena od nevarnosti za programerska
podjetja, saj licenca ponavadi jasno zahteva, da je v primeru uporabe odprte kode potrebno
tudi lastno rešitev, ki temelji na tej odprti kodi, ponuditi skupaj z izvorno kodo. Marsikateri
ponudnik programske opreme se, razumljivo, s tem teţko sprijazni [25].
Licenc, pod katerimi je na voljo odprta koda je vse več, danes pa jih obstaja ţe skoraj
sedemdeset. Med seboj se precej razlikujejo, nekatere silijo v prosto distribucijo narejenih
sprememb, druge omogočajo večjo zasebnost.
Med najbolj znane in uporabljene licence sodijo:
GNU General Public Licence (GPL),
GNU Lesser General Public Licence (LGPL),
Berkley Software Distribution Licence (BSD),
Mozilla Public Licence (MPL),
Apache Licence Version 2.0,
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
28
MIT Licence
3.4.1 GNU General Public Licence (GPL)
Licenca GPL je ena izmed temeljnih licenc odprte kode. Ustanovljena je bila s strani Free
Software Foundation (FSF), ki je veliko prispevala h kodiranju odprte kode. Pod to licenco
je izšlo veliko odprtokodnih projektov, med najbolj znane pa sodijo urejevalnik GNU
Emacs, prevajalnik GNU C in jedro GNU/Linux. Licenca GPL omogoča uporabo,
kopiranje, spreminjanje in razširjanje programske opreme ali izvorne kode, vendar licenca
GPL izrecno zahteva, da se izpeljana dela razširjajo pod enakimi pogoji kot original
oziroma pod licenco GPL, kar pomeni, da izpeljanih del ni mogoče prodajati ali omejevati
njihove uporabe. Glavni namen licence GPL je, da se programsko opremo ohranja prosto v
smislu, da se jo razširja in spreminja brez dodatnih dovoljenj lastnika licence, sprememb
pa ni potrebno javno objaviti. Drugi namen licence GPL je zagotoviti, da se imetniki licenc
zavedajo, da se programska oprema, ki se razširja pod to licenco, razširja taka »kot je«,
brez jamstva [7]. Pri licenci GPL velja omeniti še koncept »copyleft« pri katerem gre za
uporabo pravil intelektualne lastnine za ohranjanje prostega programja in obrambo
svobode njegovih uporabnikov. Načela prostega programja dopuščajo, da licence
postavljajo določene omejitve glede načina distribuiranja programja. Ideja copylefta je v
tem, da se v licenci določi, da nihče, ki distribuira prost program, ne sme nadaljnjim
uporabnikom programa omejiti pravice, da ga tudi oni prosto razmnoţujejo, spremninjajo
in distribuirajo pod enakimi pogoji [8]. Licenčne pogoje licence GPL prikazuje tabela 3.1.
Tabela 3.1: Licenca GPL [24]
GNU General Public License (GPL Verzija 2)
Uporaba licence Licenco se lahko uporabi za katerokoli programsko opremo, vendar se je ne
sme spreminjati.
Plačilo Licenca lahko zahteva plačilo za fizično dejanje, ki stranki zagotovi kopijo,
hkrati pa lahko zaračuna plačilo za vsako jamstveno zaščito, ki jo ponuja.
Razširjanje Razširjanje mora biti v skladu s pogoji GPL, vključno z vsemi spremembami.
Razpoloţljivost
izvorne kode
Pri vsakem razširjanju je potrebno priloţiti izvorno kodo, ali pa mora licenca
ponuditi izvorno kodo na zahtevo za obdobje vsaj treh let.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
29
Uporaba z drugo
programsko
opremo
Vsako delo, ki v celoti ali deloma vsebuje, ali je izpeljano iz licenčnega
programa, mora biti razširjeno pod licenco GPL. Za neodvisna in neizpeljana
dela, ki ne izhajajo iz licenčnega programa, zgornja trditev ne velja. Okrilja
licence GPL ne doseţemo zgolj s povezovanjem ločene programske opreme
znotraj istega medija razširjanja.
Jamstvo in
odgovornost
Licenca ne ponuja nobenega jamstva, ter popolnoma izključuje odgovornosti
v obsegu, ki ga dovoljuje zakonodaja. Licenca lahko ponudi jamstvo svojim
strankam, če se za to odloči.
Prenehanje Licenca samodejno preneha veljati ob kršitvi pogojev uporabe s strani
imetnika licence.
3.4.2 GNU Lesser General Public Licence (LGPL)
LGPL licenca je še ena izmed licenc ustvarjena s strani FSF, njen namen pa je dovoliti
določenim kategorijam programov, večinoma knjiţnicam podprogramov, da se lahko
uporabijo v programski opremi, ki ni pod okriljem licence GPL. Knjiţnice podprogramov
zagotavljajo različne funkcije drugim programom in ker je del njihove funkcije povezan z
drugimi programi, se lahko določen program v povezavi s podprogramsko knjiţnico šteje
za izpeljano delo. Do neskladja z licenco GPL pride takrat, ko program, ki je izdan pod
lastniško licenco, uporablja knjiţnico izdano pod licenco GPL, skupaj pa se razširjata pod
lastniško licenco. Spremembe knjiţnice se lahko razširjajo samo v skladu z licenco LGPL,
v tem pogledu pa je enaka licenci GPL, kar pomeni, da mora biti pri razširjanju podana
izvorna koda, katera nima omejitve uporabe. Licenca LGPL slabše sčiti uporabnikovo
svobodo, kakor licenca GPL, saj odprtokodnim razvijalcem ponuja manj prednosti pred
plačljivimi konkurenčnimi programi. Zaradi teh pomankljivosti v veliko primerih za
licenciranje podprogramskih knjiţnic, rajši uporabimo licenco GPL. Licenčne pogoje
LGPL licence prikazuje tabela 3.2.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
30
Tabela 3.2: Licenca LGPL [24]
GNU General Public License (GPL Verzija 2.1)
Uporaba licence Licenco se lahko uporabi za katerokoli programsko opremo, vendar je
prvotno namenjena programskim knjiţnjicam. Licence se ne sme spreminjati.
Plačilo Licenca lahko zahteva plačilo za fizično dejanje, ki stranki zagotovi kopijo,
hkrati pa lahko zaračuna plačilo za vsako jamstveno zaščito, ki jo ponuja.
Razširjanje Razširjanje mora biti v skladu s pogoji LGPL ali GPL, vključno z vsemi
spremembami.
Razpoloţljivost
izvorne kode
Pri vsakem razširjanju je potrebno priloţiti izvorno kodo, ali pa mora biti
izvorna koda dostopna na istem mestu kot objektna koda.
Uporaba z drugo
programsko
opremo
Delo, ki v uporablja knjiţnico, s tem da jo prevaja ali je povezan z njo in ne
vsebuje nobenih izpeljank knjiţnice, je izvzeto iz licence. Vendar, v primeru
da program vsebuje dele knjiţnice, ki so posledica takih prevajanj in
povezovanj, potem se lahko ta programska oprema razširja pod katerimikoli
licenčnimi pogoji, ki omogočajo spremembe in povratni inţeniring za lastne
potrebe stranke.
Jamstvo in
odgovornost
Licenca ne ponuja nobenega jamstva, ter popolnoma izključuje odgovornosti
v obsegu, ki ga dovoljuje zakonodaja. Licenca lahko ponudi jamstvo svojim
strankam, če se za to odloči.
Prenehanje Licenca samodejno preneha veljati ob kršitvi pogojev uporabe s strani
imetnika licence.
3.4.3 Berkley Software Distribution Licence (BSD)
BSD licenca spada v razred zelo preprostih in liberalnih licenc za programsko opremo, ki
je bila prvotno razvita na kalifornijski univerzi Barkeley (University of California at
Berkeley - UCB). Prvič je bila uporabljena leta 1980 za operacijski sistem BSD UNIX,
izboljšano različico prvotnega operacijskega sistema UNIX, ki ga je leta 1969 napisal Ken
Thompson v laboratoriju Bell [26]. Programska oprema, ki je distribuirana pod licenco
BSD se lahko poljubno spreminja, razmnoţuje in razširja, njena izvorna koda pa se lahko
brez omejitev uporablja v drugi programski opremi. Zaradi izjemno majhnih omejitev
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
31
licence BSD in ker licenca ne vsebuje zahteve »copyleft«, se pri izpeljanih delih ne
zahteva, da se razširjajo pod licenco BSD, ampak se lahko razširjajo pod poljubno licenco,
to pa je tudi največja razlika med licenco GPL in BSD. Izpeljana dela se lahko razširjajo
tudi pod lastniško licenco pri katerih pa je izvorna koda varovana skrivnost in ni na voljo
uporabnikom. Licenčne pogoje licence BSD prikazuje tabela 3.3.
Tabela 3.3: Licenca BSD [24]
BSD Licenca (julij 1999)
Uporaba licence Licenco se lahko uporabi za katerokoli programsko opremo.
Plačilo Nobenih posebnih predpisov.
Razširjanje Razširjanje mora biti v skladu s pogoji licence BSD.
Razpoloţljivost
izvorne kode Ni zahtev za razpoloţljivost izvorne kode.
Uporaba z drugo
programsko
opremo
Nobenih posebnih predpisov.
Jamstvo in
odgovornost Nobenega jamstva in popolna izključitev odgovornosti.
Prenehanje Nobenih posebnih predpisov.
3.4.4 Mozilla Public Licence (MPL)
Januarja 1998 je druţba Netscape Communications javno objavila izvorno kodo njihovega
internetnega brskalnika Netscape Navigator in jo zastonj ponudila širši javnosti. Rezultat
tega dejanja sta bili licenci Netscape Public License (NLP) in Mozilla Public License
(MPL). NLP licenca je bila precej podobna licenci MPL, vendar pa je bila Netscape-u
pridrţana pravica, da lahko izvorno kodo, ki je izpeljana iz Communicatorjeve kode in bila
razvita s strani tretjih oseb, ponovno licencira pod lastniško ali katerokoli drugo licenco.
Zaradi tega so lahko razvijalci programske opreme, ki je izhajala pod licenco NPL, izgubili
vse koristi, ki bi lahko izhajale iz njihovih prispevkov in brez jamstva, da bo njihova koda
dostopna skupnosti programerjev. Licenca MPL ne vsebuje nobene posebne določbe, ki
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
32
omogoča podelitev teh pravic Netscape-u [7]. MPL je nakakšen hibrid med licenco GPL in
licenco BSD, ki zahteva da je zajeta koda (Covered Code) na voljo v odprtokodni obliki,
hkrati pa se lahko MPL licencirana izvorna koda uporablja skupaj z izvorno kodo, ki je
licencirana pod drugimi licencami. Licenčne pogoje MPL licence prikazuje tabela 3.4.
Tabela 3.4: Licenca MPL [24]
MPL Licenca (Verzija 1.1)
Uporaba licence
Licenco se lahko speminja in uporabi za drugo programsko opremo, pod
pogojem, da se jo preimenuje in jasno prikaţe, da nova licenca vsebuje
drugačne pogoje.
Plačilo Licenca lahko zahteva plačilo za vsako dodatno jamstvo, podporo,
odškodnino ali odgovornosti ki jih ponuja.
Razširjanje
Spremembe se morajo licencirati pod MPL. Zajeta koda (izvirna licenčna
programska oprema in vse spremembe), ki ni izdana kot izvorna koda se
lahko razširja pod drugačnimi licenčnimi pogoji, pod pogojem da so le ti v
skladu z licenco MPL.
Razpoloţljivost
izvorne kode
Vse spremembe morajo biti dostopne v izvorni kodi, bodisi na istem mediju
ali ločeno. Za slednje velja, da morajo spremembe ostati na voljo vsaj 12
mesecev, ali vsaj 6 mesecev po tem, ko je bila izdana naslednja verzija.
Uporaba z drugo
programsko
opremo
Licenca lahko zdruţuje programsko opremo z drugimi programi, v tem
primeru, drugi programi ne smejo biti pod vplivom MPL. Vendar pa mora
pridobitelj licence še vedno izpolnjevati pogoje licence MPL za vso zajeto
kodo.
Jamstvo in
odgovornost
Licenca ne ponuja nobenega jamstva, ter popolnoma izključuje odgovornosti,
razen odgovornosti za smrt ali telesne poškodbe iz malomarnosti v kolikor
veljana zakonodaja prepoveduje take omejitve.
Prenehanje
Licenca samodejno preneha veljati, če so pogoji licence kršeni in pridobitelj
licence v roku 30 dni od kršitve, kršitve ne odpravi. Licenca prav tako
preneha veljati v primeru, da pridobitelj licence vloţi prijavo za kršitev
patenta zoper vlagatelja.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
33
3.4.5 Apache License Version 2.0
Izdana je bila januarja 2004, kot posledica temeljite revizije licence Apache Licence.
Medtem, ko je licenca Apache verzija 1.1 zelo podobna licenci BSD in MIT, je licenca
Apache verzije 2.0 polnejša in bolj kompleksna licenca, ki podrobneje določa specifične
pravice. Verzija 2.0 se predvsem razlikuje v tem, da se izrecno nanaša tako na patentne
pravice, ki jih dopušča licenca, kakor tudi na uporabo drugih licenc za izpeljana dela, ki
izhajajo iz del licenciranih pod licenco Apache verzija 2.0 [7]. Licenčne pogoje licence
Apache prikazuje tabela 3.5.
Tabela 3.5: Licenca Apache Licesne [24]
Apache Licenca (Verzija 2.0)
Uporaba licence
Licenco se lahko uporabi za katerokoli programsko opremo, vendar pa morajo
projekti Apache Software Foundation uporabljati to licenco, hkrati pa za njih
ne obstaja dvojni licenčni model.
Plačilo Licenca lahko nudi plačilo za vsako jamstvo, podporo, odškodnino ali
odgovornostne obveznosti svojim strankam.
Razširjanje
Razširjanje mora biti v skladu s pogoji licence, vključno s spoštovanjem
obvestila zahtev, ter pravico do spreminjanja licence z drugačnimi vendar
doslednimi izrazi in pogoji.
Razpoloţljivost
izvorne kode Ni zahtev za razpoloţljivost izvorne kode.
Uporaba z drugo
programsko
opremo
Nobenih posebnih predpisov.
Jamstvo in
odgovornost
Licenca ne ponuja nobenega jamstva, ter popolnoma izključuje odgovornosti
za posredno ali posledično povzročeno škodo v obsegu, ki ga dovoljuje
zakonodaja.
Prenehanje
Licenca ne vsebuje nobenih posebnih predpisov, glede prenehanja veljavnosti
licence, vendar licenca samodejno preneha veljati, v primeru, ko pridobitelj
licence prične s postopkom za ugotavljanje kršitve patenta proti kateri koli
osebi.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
34
4 ODPRTOKODNA ORODJA ZA MODELIRANJE Z UML
Slabo načrtovanje je eden izmed glavnih razlogov, zaradi česar so projekti razvoja
programske opreme izvedeni prepozno, izven zastavljenega proračuna ali v najslabšem
primeru, ostanejo nedokončani, zato je ključno, da se dobro organiziramo in zastavimo
cilje razvoja projekta še preden začnemo s kodiranjem. Programerji so se desetletja trudili
in preizkušali različne vrste diagramov poteka ter diagramov za definiranje obsega
specifikacij z namenom, da bi v celoti razumeli programsko kodo, ki jo ţelijo pisati,
vendar so se te metode pogosto izkazale za neučinkovite in časovno potratne. Danes lahko
programerji izbirajo med širokim izborom orodij za modeliranje informacijskih sistemov
katera jim omogočajo relativno enostavno definirati funkcionalnosti in primere uporabe
novega projekta.
Za modeliranje informacijski sistemov z UML se uporabljajo naslednja odprtokodna
orodja, ki jih bomo v nadaljevanju na kratko predstavili.
ArgoUML,
Dia,
Fujaba,
Gaphor,
NetBeans UML,
Papyrus,
StarUML,
Umbrello UML Modeler,
Violet,
Open ModelSphere
ArgoUML
ArgoUML je vodilno odprtokodno orodje za modeliranje informacijskih sistemov z
jezikom UML. Z njim lahko modeliramo vse diagrame UML 1.4, zadnje verzije orodja pa
dodatno podpirajo tudi nakatere diagrame UML 2.0. Deluje na katerikoli platformi Java 5
ali Java 6 in je na voljo v desetih jezikih. ArgoUML podpira tudi povratno inţenirstvo
izvorne kode v Javi, s pomočjo katerega iz izvorne kode generiramo diagrame UML.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
35
ArgoUML je na voljo pod licenco Eclipse Public License v1.0, pred tem pa je bil dolga
leta na voljo pod licenco BSD Open Source License.
StarUML
Orodje StarUML je namenjeno hitremu, prilagodljivemu in razširljivemu razvoju
programske opreme. Orodje je skoraj v celoti napisano v programskem jeziku Delphi,
namenjen pa je uporabi na Win32 platformi. Namen projekta StarUML je ustvariti
programsko modelirno orodje, ki bi lahko nadomestilo komercialna lastniška orodja kot je
Rational Rose ali Together [27]. Orodje StarUML je na voljo pod licenco GNU General
Public License.
Umbrello UML Modeler
Orodje Umbrello UML Modeler je izdano pod licenco GNU General Public License in
namenjeno uporabi na operacijskem sistemu Linux, vendar ga lahko s pomočjo emulatorja
za KDE uporabljamo tudi na operacijskih sistemih Windows in MAC OS X. Orodje je v
celoti napisano v programskem jeziku C++, kar mu omogoča večjo odzivnost in manjšo
porabo sistemskih virov, kot jo imajo aplikacije napisane v Javi ali Pythonu.
Papyrus
Papyrus je orodje, ki bazira na okolju Eclipse in je skladno z UML 2.0. Podpira standard za
izmenjavo diagramov XMI, razširljiva arhitektura pa uporabnikom omogoča dodajanje in
urejanje diagramov, dodajanje novih generatorjev kode, hkrati pa nudi tudi moţnost
razvoja z uporabo UML profilov. Modelirno orodje Papyrus je izdano pod licenco Eclipse
Public License. Generiranje programske kode v več jezikih se izvaja v navezavi z
vtičnikom Acceleo.
NetBeans UML
Orodje NetBeans uporablja vtičnik UML za modeliranje sistema z UML. Za generiranje
programske kode iz UML modela so na voljo predloge, ki nam omogočajo prilagajanje
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
36
izgleda generirane programske kode oziroma določitev pravil za pretvorbo. Dokumentacija
orodja je dobro razdelana, na voljo so tudi vodiči, ki pokrivajo osnovne koncepte razvoja
programske opreme z UML in same uporabe orodja [31]. Orodje NetBeans UML je
izdano pod licenco Common Development and Distribution License (CDDL).
Dia
Orodje Dia se zgleduje po komercialnem orodju Microsoft Visio, čeprav je bolj usmerjeno
v neformalne diagrame za priloţnostno uporabo. Uporabi se lahko za pripravo veliko vrst
diagramov med katere spadajo relacijski diagrami, UML diagrami, diagrami toka podatkov
in mnogo drugih. Diagrame lahko uvozimo in izvozimo v prirejenem formatu XML ali kot
sliko. Narisane diagrame lahko natisnemo vključno s tistimi, ki se raztezajo na več straneh.
Orodje Dia je na voljo pod licenco GNU General Public License.
Gaphor
Modelirno orodje Gaphor je enostavno za uporabo, primarno pa je namenjen ustvarjanju
diagramov UML za potrebe dokumentacije ali kot pomoč pri načrtovalskih odločitvah.
Skladen je s podatkovnim modelom UML 2.0, kar mu zagotavlja zdruţljivost z drugimi
modelirnimi orodji. Prvotno je bil razvit za operacijski sistem Linux, sedaj pa je na voljo
tudi za Mac OS X, FreeBSD in Windows. Z njim lahko modeliramo diagrame primerov
uporabe, razredne diagrame, komponentne diagrame, diagrame zaporedja, diagrame
aktivnosti in diagrame stanj. Diagrame lahko izvozimo v format SVG, PNG, PDF in XMI,
ne podpira pa generiranja kode. Modelirno orodje Gaphor je izdano pod licenco GNU
General Public License.
Fujaba
Fujaba je UML modelirno orodje, ki se uporablja kot vtičnik za razvijalsko orodje Eclipse.
Fujaba je akronim za From UML to Java And Back Again, kar pomeni iz UML v Javo in
nazaj, posebnost orodja so prirejeni diagrami aktivnosti imenovani diagrami zgodbe, ki
temeljijo na preoblikovanju grafa. Ena izmed glavnih funkcionalnosti tega orodja je
generiranje Javanske kode, ki temelji na formalnih specifikacijah strukture in obnašanja
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
37
sistema v izvršljiv sistemski prototip. Modelirno orodje Fujaba je na voljo pod licenco
GNU Lesser General Public License.
Violet
Violet je preprost UML diagramski urejevalnik, ki ni namenjen modeliranju sistemov
ampak učencem, učiteljem in tistim, ki ţelijo hitro narisati preproste diagrame UML.
Deluje na vseh platformah, ki podpirajo Javo saj se orodje lahko zaţene kot Javanski
applet ali vtičnik za Eclipse. Ne podpira generiranja kode, izvoza diagramov v XMI ali
semantičnega preverjanja modelov. Največji adut tega orodja je preprostost in enostavnost
za uporabo. Orodje Violet je izdano pod licenco GNU General Public License.
Open ModelSphere
Orodje Open ModelSphere je preprosto orodje za UML modeliranje, hkrati pa omogoča
tudi podatkovno in procesno modeliranje. Zasnovano je neodvisno od platforme saj je v
celoti napisano v Javi. Na začetku je bilo razvito kot komercialno orodje, leta 2008 pa je
bilo izdano pod licenco GPL (GNU Public License). Sistem lahko modeliramo s pomočjo
diagrama primerov uporabe, diagrama zaporedja, diagrama aktivnosti, razrednega
diagrama, komponentnega diagrama, diagrama stanj, diagrama sodelovanja, paketnega
diagrama ter diagrama namestitve. Omogoča generiranje Java kode in povratno inţenirstvo
iz Java kode, ter Java validacijo. S soţitjem relacijskih in objektnih pristopov, lahko
razredni model poveţemo s podatkovnim modelom, oziroma lahko iz podatkovnega
modela generiramo razredni model in obratno. Diagrame lahko izvozimo kot slike v
formatu JPEG in PNG ali ustvarimo poročilo HTML.
V nadaljevanju bomo podrobneje predstavili šest modelirnih orodi, katera smo primerjali
glede na funkcionalnosti, ki jih nudijo, njihov izgled, uporabniški vmesnik, prijaznost in
enostavnost za uporabo, ter kako so orodja podprta z vodiči in dokumentacijo.
Funkcionalnosti, ki jih od orodja zahtevamo, smo preverili na učnem primeru modeliranja
informacijskega sistema spletne trgovine.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
38
Modelirna orodja, ki smo jih primerjali smo izbrali na podlagi obstoječih seznamov najbolj
priljubljenih oziroma največkrat uporabljenimi orodji za modeliranje informacijskega
sistema z UML, ter subjektivnih mnenj uporabnikov teh orodij iz spletnih forumov.
4.1 ArgoUML
ArgoUML je odprtokodni projekt, zanj pa je značilno naslednje:
Programsko opremo nudijo brezplačno.
Skupaj s programsko opremo nudijo izvorno kodo.
Spodobujajo uporabnike, ne le, da poročajo o teţavah, temveč tudi k prispevanju
rešitev, izboljševanju in implementaciji novih funkcionalnosti.
Projekt ArgoUML deluje brez financiranja, kar pomeni da:
Za delo na projektu ne izplačujejo plač ali nagrad.
Uporabnike se spodbuja, da postanejo razvijalci ArgoUML, to je njihova strategija
zaposlovanja.
Zanašamo se na osebe, da s svoji delom prispevajo k napredovanju ArgoUML.
Univerze in podjetja so vabljena, da svoje zaposlene vključijo v projekt razvoja
ArgoUML.
Zanašajo se na organizacije, kot je Tigris, ki jim zagotavlja centralno infrastrukturo,
brez denarnega nadomestila.
Zanašajo se na vsakega razvijalca ArgoUML, da bo zagotovil strojno opremo in
internetno povezavo, ki jo potrebuje za svoje delo brez denarnega nadomestila.
Zanašajo se na organizacije, kot je Gentleware in na posameznike, ki preko
intereneta pomagajo promovirati ArgoUML brez denarnega nadomestila.
Značilnosti orodja ArgoUML
ArgoUML je v celoti napisan v Javi in uporablja Java Foundation Classes, kar mu
omogoča, da dela praktično na katerikoli platformi. Orodje je v skladu z OMG standardom
UML 1.4 podpira pa tudi UML profile, ki so na voljo v UML 2.0 specifikaciji. Za risanje
in urejanje diagramov UML uporablja odprtokodno javansko ogrodje GEF (Graph Editing
Framework) ter podpira modeliranje z naslednjimi diagrami UML [10]:
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
39
Razredni diagram,
diagram stanj,
diagram aktivnosti,
diagram primerov uporabe,
diagram sodelovanja,
diagram namestitve
diagram zaporedja.
V vseh diagramih se lahko nastavlja velikost pisave, nekaterim diagramom se lahko
nastavlja stereotipe in tipe podatkov, v razrednem diagramu podpira risanje signalov in
izjem, ter nastavlajnje puščic med uporabljenima asociacijama. Uporabniški vmesnik
prikazuje slika 4.1.
Slika 4.1: Uporabniški vmesnik orodja ArgoUML
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
40
Za zagotavljanje skladnosti z odprtimi standardi in laţjo izmenjavo diagramov UML z
drugimi UML modelirnimi orodji, ArgoUML uporablja standardni shranjevalni
mehanizem XML Metadata Interchange v nadaljevanju XMI, ki temelji na zapisu XML.
Diagrame lahko prav tako shranimo v grafični obliki GIF, PNG, PostScript, Encapsulated
PS, PGML in SVG.
Orodje zagotavlja omejitve pri modeliranju UML razredov in funkcij s pomočjo vgrajene
podpore OCL, ki opravlja preverjanje sintakse in tipov na teh omejitvah. OCL podpora je
bila razvita na tehnični univerzi Dresden.
ArgoUML omogoča generiranje kode v programske jezike Java, C++, C#, PHP4 in PHP5,
hkrati pa zagotavlja tudi ogrodje za modularno povratno inţinirstvo za programski jezik
Java.
Kontrolni seznami se pogosto uporabljajo na sestankih za pregled načrtovanja, z njimi pa
ţelijo načrtovalci zajeti vse načrtovalske podrobnosti ter se izogniti pogostim
načrtovalskim napakam. ArgoUML zagotavlja kontolne sezname, ki sluţijo temu namenu,
vendar imajo naslednje prednosti pred pasivnimi tiskanimi seznami:
Argo kontrolni seznami so narejeni posebej za izbrani načrtovalski element. Vsaka
vrsta načrtovalskega elementa (npr. razred, atribut, operacija, asociacija) ima svoj
kontrolni seznam.
Nepomembni predmeti kontrolnega seznama so samodejno odstranjeni iz seznama.
V kontrolnih seznamih se uporabljajo imena elementov namesto zaimkov, ki bi bili
uporabljeni v tiskani verziji seznama.
V prihodnosti bi lahko kontrolni seznami vsebovali čarovnike, ki bi načrtovalcem
pomagali pri dokončanju določenih sprememb v načrtovanju. Na primer, da bi
kontrolni seznam vseboval vnos:«Ali naj premaknemo atribut starost v katerega od
nadrazredov razreda Oseba?«, potem bi preko čarovnika izvedli premik atributa
navzgor po razredni hierarhiji.
4.2 StarUML
Orodje StarUML se je v začetku svojega razvoja imenovalo Plastic oziroma Agora Plastic,
prva rezličica pa je bila izdana leta 1996 pod lastniško licenco. Uporabljal se je predvsem
za risanje programskih modulov in njihovih odvisnosti, kasneje so mu dodali
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
41
funkcionalnost za modeliranje razrednega diagrama. Leta 2003 je bil v celoti prenovljen,
podpiral je vse diagrame UML 1.4, generiranje Java kode in povratno inţenirstvo. Dve leti
pozneje se je orodje preimenovalo v StarUML 5.0 in spremenilo v odprtokodni projekt
izdan pod licenco GNU General Public License.
Orodje StarUML je izdano pod pogoji licence GNU General Public License z naslednjima
izjemama:
1. Dovoljujejo se povezave na več specifičnih komercialnih knjiţnjic in komponent.
Ta izjema je neizogibna odločitev, da se StarUML, ki je bil prvotno lastniški
proizvod, pretvori v odprtokodno programsko opermo.
2. Dovoljujejo se povezave na lastniške modularne vtičnike. Ta izjema je za ljudi, ki
ţelijo prodati lastniške modularne vtičnike, ki delujejo na platformi StarUML.
Izvorna koda generirana z orodjem StarUML ni predmet te licence, zato se jo lahko
uporabi za lastniško programsko opremo ali za programsko opremo, ki ni izdana pod
liceno GNU General Public License.
Značilnosti orodja StarUML
Orodje StarUML podpira notacijo UML 2.0, ter tehnologijo MDA (Model Driven
Architecture), ki ponuja veliko spremenljivk in prilagoditev, kot so UML profili,
Approach, Model Framework, NX (notation extention), MDA kodo in predloge
dokumentov. Uporabniki od orodja zahtevajo vse več funkcionalnost. Za izpolnitev teh
zahtev, StarUML ponuja enostavno in zmogljivo vtičniško arhitekturo, tako da lahko
vsakdo pomaga pri razvoju vtičnikov v COM zdruţljivih jezikih (C++, Delphi, C#, VB,
idr.).
Orodje podpira naslednje diagrame UML:
Diagram primerov uporabe,
razredni diagram,
diagram zaporedja,
diagram sodelovanja,
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
42
diagram stanj,
diagram aktivnosti,
diagram komponent,
diagram namestitve,
strukturni diagram.
Omogoča generiranje izvorne kode, povratno inţenirstvo in ustvarjanje profilov za
programske jezike Java, C++, ter C#. Ustvarimo lahko predloge in dokumente Microsoft
Word, Excel in PowerPoint, poleg tega pa ponuja še razširljivost diagramov, kar pomeni,
da lahko ustvarimo lastne tipe diagramov. Diagrame UML si lahko izmenjujemo preko
standarda XMI poleg tega pa podpira tudi uvoz diagramov iz lastniškega orodja Rational
Rose. Uporabniški vmesnik orodja StarUML prikazuje slika 4.2.
Slika 4.2: Uporabniški vmesnik orodja StarUML
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
43
4.3 Umbrello UML Modeller
Orodje Umbrello UML Modeller je začel razvijati Paul Hensgen, kot projekt zadnjega
letnika študija na univerzi. Do leta 2001, ko je bila uradno izdana različica 1.0 je bil Paul
edini razvijalec tega orodja. Poleti leta 2002 se je Paul Hengsen umaknil iz razvojne ekipe,
ter vse pravice do razvoja projekta prepustil Jonathanu Riddellu, ki do danes ostaja glavni
razvijalec tega odprtokodnega orodja. Pri izboljšavanju, razvoju in vzdrţevanju orodja mu
pomagajo skupine razvijalcev z različnih koncev sveta. Leta 2008 je bila izdana verzija 2.0
kot del modula kdesdk v KDE 4 (K Desktop Environment), ki uporabnikom sistema Linux
nudi podoben izgled namizja kot ga ima operacijski sistem Windows. Orodje je izdano pod
licenco GNU General Public License in namenjeno uporabi na operacijskem sistemu
Linux, vendar ga lahko s pomočjo emulatorja za KDE uporabljamo tudi na operacijskih
sistemih Windows in MAC OS X [28].
Značilnosti orodja Umbrello UML Modeller
Orodje Umbrello UML Modeller je v celoti napisano v programskem jeziku C++, kar mu
omogoča večjo odzivnost in manjšo potrebo po sistemskih virih, kot jo imajo aplikacije
napisane v Javi ali Pythonu. Narisane modele shranjuje v standardu XMI, kar mu omogoča
izmenjavo podatkov z drugimi orodji, ki podpirajo ta standard, izvozi pa jih lahko tudi v
obliko DocBook ali XHTML.
Informacijski sistem lahko modeliramo s pomočjo entitetno relacijskega diagrama in osmih
diagramov UML:
Diagram primerov uporabe,
razredni diagram,
diagram zaporedja,
diagram sodelovanja,
diagram stanj,
diagram aktivnosti,
diagram komponent
diagram namestitve.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
44
Umbrello UML Modeller lahko iz UML modela ustvari izvorno kodo za programske jezike
C++, Java, C#, ActionScript, Ada, D, CORBA IDL, JavaScript, Pascal, Perl, PHP, PHP5,
Phyton, Ruby, Tcl, Vala in XML Schema, povratni inţeniring pa podpira samo za jezik
C++. Entitetno relacijski model sistema lahko pretvorimo v skripte, katere lahko uvozimo
v MySQL, PostgreSQL in SQL. Uporabniški vmesnik orodja Umbrello UML Modeller, ki
deluje preko KDE emulatorja, prikazuje slika 4.3.
Slika 4.3: Uporabniški vmesnik orodja Umbrello UML Modeller
4.4 Papyrus
Papyrus je orodje, ki bazira na okolju Eclipse in je bil primarno razvit s strani ekipe LISE v
sklopu projekta Eclipse UML2. Njegov namen je nuditi podporo razvoju realno-časovnih
vgrajenih sistemov, ter sistemov modeliranih z jezikom UML. Glavni principi, ki
narekujejo razvoj tega orodja so prilagodljivost, razširljivost, uporabnost, interoperabilnost,
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
45
in interaktivnost. Orodje je skladno s specifikacijo UML 2.0 izdano pa je pod licenco
Eclipse Public License (EPL) [29].
Značilnosti orodja Papyrus
Orodje uporablja ogrodje GMF (Graphical Modeling Project) za shranjevanje in izmenjavo
diagramov. To ogrodje za serializacijo diagramov uporablja notacijski metamodel, ki
temelji na ogrodju EMF (Eclipse Modeling Framework) in je zelo podoben standardu za
izmenjavo diagramov XMI. Diagrame lahko hkrati izvozimo v grafično obliko PNG, GIF,
BMP, JPEG, JPG, SVG ali v obliko PDF dokumenta. Razširljiva arhitektura uporabnikom
omogoča dodajanje in urejanje diagramov, dodajanje novih generatorjev kode, hkrati pa
nudi tudi moţnost razvoja z uporabo UML profilov.
Informacijski sistem lahko modeliramo s pomočjo desetih UML diagramov:
Diagram primerov uporabe,
razredni diagram,
diagram zaporedja,
diagram komunikacije,
diagram stanj,
diagram aktivnosti,
diagram komponent
diagram namestitve,
diagram sestavljenih struktur,
paketni diagram.
Generiranje programske kode v več jezikih se izvaja v navezavi z vtičnikom Acceleo s
katerim lahko generiramo kodo v programskih jezikih C, Fortran, Java, Smalltalk, PHP in
C# oziroma za katerikoli opisni jezik. To se doseţe z uporabo modulov, katere v osnovi
sestavljajo skupine predlog, ki opisujejo informacije, katere so potrebne za generiranje
izvorne kode [30], kot prikazuje slika 4.4.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
46
Slika 4.4: Uporaba modulov v Acceleo [30]
Vtičnik Acceleo omogoča tudi zaznavo napak in predogled generirane kode v realnem
času, v kateri lahko definiramo odseke kamor vstavimo lastno kodo, ki se ohranja v
bodočih iteracijah in generacijah izvorne kode. Uporabniški vmesnik orodja Papyrus
prikazuje slika 4.5.
Slika 4.5: Uporabniški vmesnik orodja Papyrus
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
47
4.5 NetBeans UML
Razvoj orodja NetBeans (prvotno Xelfi) se je pričel leta 1996 na Fakulteti za matematiko
in fiziko v Pragi. Leta 1997 je Roman Stanek okoli tega projekta zgradil podjetje, ki je
trţilo lastniško verzijo NetBeans IDE. Dve leti pozneje je NetBeans IDE kupilo podjetje
Sun Microsystems in še istega leta projekt Netbeans IDE spremenilo v odprtokodnega.
NetBeans platforma je ogrodje za enostaven razvoj Java Swing namiznih aplikacij, spletnih
aplikacij in aplikacij za mobilne telefone. Za modeliranje informacijskega sistema z
jezikom UML je na voljo UML vtičnik. Orodje je izdano pod licenco Common
Development and Distribution License (CDDL), ki temelji na licenci Mozilla Public
License (MPL), verzija 1.1 [31].
Značilnosti orodja NetBeans UML
Orodje podpira izvoz UML diagramov v grafično obliko PNG ali JPG, ne podpira pa
uvoza ali izvoza diagramov v obliko XMI. Ima prijazen uporabniški vmesnik (slika 4.6),
podpira apliciranje vzorcev in kroţno inţenirstvo (ang. Round-trip engineering).
Orodje podpira pet UML diagramov, med katere spadajo:
Diagram aktivnosti,
razredni diagram,
diagram zaporedja,
diagram stanj in
diagram primerov uporabe.
Orodje podpira povratno inţenirstvo in v primeru, da sta UML projekt in Java projekt med
sabo povezana, se vse spremembe narejene v kodi odraţajo v UML modelu in obratno.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
48
Slika 4.6: Uporabniški vmesnik orodja NetBeans UML
4.6 Open ModelSphere
Predhodnik orodja Open ModelSphere je lastniško orodje PerfectO, katero je bilo leta 1996
izdano v sklopu modelirnih orodij paketa SILVERRUN. Leta 1998 je bil PerfectO
preveden v Javo in kasneje preimenovan v SILVERRUN ModelSphere. Do leta 2008 so
orodju dodali podporo za modeliranje poslovnih procesov, konceptualno podatkovno
modeliranje in UML modeliranje in ga še istega leta spremenili v odprtokodni projekt
izdanega pod odprtokodno licenco GPL (GNU Public License Verzija 3), ter orodje
preimenovali v Open ModelSphere. Orodje je zasnovano neodvisno od platforme saj je v
celoti napisano v Javi, zato ga lahko uporabljamo v operacijskih sistemih Windows, Linux
in Unix. Uporabniki lahko svoje modele ustvarijo s pomočjo diagramskih tehnik ali
povratnega inţenirstva Java razredov [32].
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
49
Značilnosti orodja Open ModelSphere
Orodje lahko narisane diagrame izvozi v grafično obliko JPG ali PNG, ter XML datoteko,
ki je namenjena uporabi samo v orodju Open ModelSphere in ne izmenjavi narisanih
diagramov z drugimi modelirnimi orodji, ki podpirajo standard XMI. Za modeliran sistem
lahko generiramo HTML poročilo, ki razvijalcem omogoča hiter pregled modeliranega
sistema, brez zagona modelirnega orodja.
Sistem lahko modeliramo s pomočjo naslednjih diagramov:
Diagrama primerov uporabe,
diagrama zaporedja,
diagrama aktivnosti,
razrednega diagrama,
komponentnega diagrama,
diagrama stanj,
diagrama sodelovanja,
paketnega diagrama,
diagrama namestitve.
Omogoča generiranje Java in C# kode, povratno inţenirstvo iz Java kode, Java validacijo,
ter apliciranje vzorcev na razredni diagram. S soţitjem relacijskih in objektnih pristopov,
lahko razredni model poveţemo s podatkovnim modelom, oziroma lahko iz podatkovnega
modela generiramo razredni model in obratno. Orodje odlikuje do uporabnika prijazen
uporabniški vmesnik (slika 4.7), ter podrobno razdelana dokumentacija, kjer so na primerih
razloţene funkcionalnosti orodja, ki uporabniku pomagajo pri spoznavanju uporabe orodja
in s tem pripomorejo k laţji in prijetnejši rabi orodja.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
50
Slika 4.7: Uporabniški vmesnik orodja Open ModelSphere
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
51
5 PRIMERJAVA MODELIRNIH ORODIJ
Modelirna orodja smo ovrednotili s pomočjo definiranih kriterijev in ocenjevalne metode
na podlagi katerih smo pridobili število točk, ki jih je doseglo posamezno modelirno
orodje. Funkcionalnosti, ki jih od orodja zahtevamo, smo preverili na učnem primeru
modeliranja informacijskega sistema spletne trgovine.
5.1 Kriteriji ocenjevanja
Ocenjevalne kriterije smo izbrali, da bi z njimi ocenili funkcionalnosti in uporabnost orodij
kot celote, ne le površinsko oziroma glede na uporabniški vmesnik orodja. Bistveno je, da
se orodje kot celota oceni od skladnosti orodja s standardom UML, povezanosti informacij
med diagrami, vse do enostavnosti uporabe. Namen ocenjevalnih kriterijev je izpostaviti
osnovne in spreminjajoče zahteve idealnega UML modelirnega orodja.
Ocenjevalni kriteriji so razdeljeni na zaţeljene funkcionalnosti in ostale funkcionalnosti. V
zaţeljene funkcionalnosti spadajo vse funkcionalnosti, ki bi jih imelo idealno modelirno
orodje in so del ocenjevalne tabele tabela 5.4. Med ostale funkcionalnosti pa spadajo
funkcionalnosti, ki se pogosto uporabljajo v modelirnih orodjih, zato je dobro, da tudi njih
vključimo v ocenjevanje.
5.1.1 Zaželjene funkcionalnosti
Odlagališče
Za velike projekte je odlagališče potrebno za delitev dela med razvijalce. Dva ali več
razvijalcev si lahko delijo elemente modela ali sodelujejo pri razvoju posameznega modela
z opredelitvijo lastništva in deljenjem pravic na ustrezni ravni. Pri modelirnemu orodju, ki
podpira odlagališče, morajo biti spremembe, ki so narejene na elementih, avtomatsko vidne
na vseh komponentah, ki uporabljajo te elemente.
Prilagoditev
Za razvijalca je koristno, da si lahko modelirno orodje prilagodi posebnim standardom, ki
jih zahteva naročnik ali osebnim nastavitvam, kot so bliţnjice, različni pogledi in
prilagoditev orodij.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
52
HTML dokumentacija
UML modelirno orodje bi moralo zagotoviti generiranje DOC, PDF ali HTML
dokumentacije, ki vsebuje statični pogled objektnega modela, ki razvijalcu omogoča
pregled modela, brez potrebe po zagonu modelirnega orodja. Ta dokumentacija je
namenjena predvsem tistim, ki imajo dostop samo do informacij o modelu, pri razvoju pa
neposredno ne sodelujejo. HTML dokumentacija bi morala vsebovati sliko vsakega
diagrama v modelu in navigacijo s pomočjo hiperpovezav.
Uporabnost
Prvi vtis
Uporabnikova prva izkušnja z orodjem mora biti taka, da dobi uporabnik vtis, da bo
gradnja in modeliranje sistema enostavna. To funkcionalnost smo analizirali na
podlagi prve uporabnikove izkušnje z orodjem, brez kakršnegakoli vpogleda do
dokumentacije orodja.
Enostavnost uporabe
Orodje mora biti enostavno za uporabo tudi pri modeliranju zahtevnejših
diagramov in objektov. Tukaj smo se usmerili predvsem na skrivanje in
prikazovanje informacij, ki uporabniku omogočajo osredotočanje na specifične
podrobnosti.
Uporabniški vmesnik
Uporabniški vmesnik mora imeti dosleden in prijeten izgled. Tukaj smo
obravnavali področja kot so pisave, oznake na diagramih, pogledi diagramov in
vidljivost različnih stanj modela.
Dokumentacija orodja in Pomoč
Dobra dokumentacija in zmogljivost iskanja pomagajo uporabniku pri spoznavanju
uporabe orodja in s tem pripomorejo k prijetnejši rabi orodja. Delitev menujev in
podmenujev omogoča laţjo berljivost. Zmoţnost samodejnega dokončanja imena
in tukaj smo določili kako hitro lahko uporabnik izvede naloge z uporabo orodja.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
53
Podpora tiskanju
Modelirno orodje mora omogočati natančno in prilagodljivo tiskanje velikih diagramov, ki
se lahko raztezajo na več strani. Orodje bi moralo podpirati tudi predogled tiskanja in
skaliranje. Zelo pomembna funkcionalnost je prilagajanje diagrama na eno stran.
Izvoz diagramov
Ena izmed ključnih funkcionalnosti, ki jo mora orodje podpirati je izvoz diagramov v
obliko, katero se lahko uporabi v urejevalniku besedil ali spletni strani. Najbolj popularni
grafični formati, ki se uporabljajo za izvoz so GIF, PNG in JPEG, pri katerih moramo imeti
moţnost nastaviti ločljivost in velikost.
Pomembna funkcionalnost orodja je zmoţnost izvoza diagrama v obliko XMI, ki omogoča
izmenjavo modelov med modelirnimi orodji.
Robustnost
UML modelirno orodje mora biti zanesljivo in dosledno, da se uporabnike obvaruje pred
morebitno izgubo večurnega dela v primeru, ko orodje sredi modeliranja preneha delovati
ali pokvari model, ki ni bil predhodno shranjen. Orodje, ki povzroči izgubo večurnega dela
zaradi prenehanja delovanja ali okvarjene datoteke je nezadovoljivo. Orodje bi moralo
podpirati samodejno shranjevanje modela v ozadju v rednih časovnih intervalih.
Izdajanje novih verzij
Modelirno orodje bi se moralo stalno izboljševati z izdajanjem popravkov in dodajanjem
novih funkcionalnosti. S podrobnim pregledom zgodovine izdajanja verzij orodja lahko
ocenimo kako hitro se je orodje razvijalo in katere funkcionalnosti so bile izboljšane.
Krožno inženirstvo
Kroţno inţenirstvo definirata dve operaciji:
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
54
Generiranje izvorne kode je proces pretvarjanja komponent modeliranega sistema v
izvorno kodo izbranega programskega jezika. Orodje ustvari ogrodje za modeliran
sistem, programer pa mora implementirati logiko vsake operacije. Preverili smo
tudi ali orodja v svojemu repozitoriju vsebujejo primere GoF vzorcev in moţnost
uporabe le teh na razrednem diagramu.
Povratno inţenirstvo je zmoţnost orodja, da prepozna nove razrede, metode in
atribute, ki jih je programer dodal modeliranemu sistemu. Povratno inţenirstvo je
zelo uporabno pri pretvarjanju izvorne kode v model sistema v primeru, da model
še ne obstaja ali pri ponovni sinhronizaciji modela sistema z izvorno kodo. Med
bolj aktualne lastnosti povratnega inţenirstva pa spada generiranje diagrama
zaporedja iz izvorne kode. Pozorni smo bili na sledljivost; torej ali se orodje zaveda
za kateri razred in metodo so se uvozile spremembe.
Preverjanje napak in validiranje modela po diagramski tehniki
Modelirno orodje bi moralo ponujati preverjanje napak v modeliranemu sistemu in
validiranje modela po diagramski tehniki, ter nas opozoriti na nastale napake.
Pregled modela sistema
Modelirno orodje bi moralo razvijalcu ponujati pregleden pogled nad vsemi diagrami in
razredi v modeliranemu sistemu. Zaţeljena je moţnost urejanja razredov po imenu, pri
velikih diagramih pa moţnost povečevanja in sprehajanja po diagramih.
Vidnost podrobnosti na diagramih
Modelirno orodje bi moralo zagotoviti prilagajanje prikaza podrobnosti v razredu, kot na
primer skrivanje get/set metod ter nastavljanje vidnosti atributov in metod.
Skladnost z UML
Veliko orodij zagotavljaja skladnost z UML 2.0 v realnosti pa je to dokaj kompleksna
zahteva, katero nekatera orodja ne izpolnujejo. Modelirno orodje bi moralo biti skladno
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
55
vsaj temeljnim nivojem skladnosti, brez objektnega diagrama, diagrama paketov in
časovnega diagrama. Od orodij pričakujemo podprtost diagramov primerov uporabe,
razrednega diagrama, diagrama komunikacije, diagrama zaporedja, diagrama aktivnosti ter
diagrama stanj in diagrama namestitve, ki spadata v vmesni nivo skladnosti.
Opis nivojev skladnosti UML je podan v prilogi 2.
Podpora programskim jezikom
Tu se bomo osredotočili na programske jezike v katerih lahko modelirna orodja generirajo
ogrodje sistema. Med najbolj razširjenimi jeziki, ki jih podpirajo orodja sodijo: JAVA,
C++, CORBA, ADA, C#, Visual Basic.
Namestitev
Namestitev kateregakoli orodja mora biti enostavna, orodje pa mora delovati brez
problemov.
Funkcionalnosti pri razrednemu diagramu
Pri modeliranju razrednega diagrama bi moralo orodje podpirati:
Prilagodljivost velikosti okvirja za razred,
prilagodljivost povezav,
neodvisna postavitev imena asociacij,
ohranitev poloţaja, končnih imen in mnogoterosti oznak,
zmerno spajanje povezav,
razlikovanje med odstranitvijo iz diagrama in izbrisom iz modela,
funkcija razveljavi,
UML profili (stereotipi in označene vrednosti).
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
56
5.1.2 Ostale funkcionalnosti
Funkcionalnosti pri diagramu zaporedja
Diagrami zaporedja so najbolj priljubljeni UML diagrami za dinamično modeliranje, ki se
osredotočajo na prikaz obnašanja sistema, zato morajo biti del UML modelirnih orodij.
Pri modeliranju diagrama zaporedja bi moralo orodje podpirati:
Prilagodljivost velikosti okvirja za objekt,
prilagodljivost sporočil,
brisanje objekta,
povratne zanke,
nastavljanje dolţine aktivacije,
razlikovanje med odstranitvijo iz diagrama in izbrisom iz modela,
nastavljanje zaporedne številke sporočila,
navezovanje na primere uporabe,
uporaba objektov in njihovih metod iz razrednega diagrama,
definiranje zdruţenih delov.
Funkcionalnosti pri diagramu primerov uporabe
Modelirno orodje bi moralo podpirati osnovno notacijo diagrama primerov uporabe, kot so
akterji, primeri uporabe, povezave vključuje in razširja.
Pri modeliranju diagrama primerov uporabe bi moralo orodje podpirati:
Prilagodljivost velikosti primerov uporabe in akterjev,
prilagodljivost povezav,
razlikovanje med odstranitvijo iz diagrama in izbrisom iz modela,
definiranje meje sistema.
5.2 Proces ocenjevanja
Mnoţico ţeljenih in ostalih funkcionalnosti smo definirali. Vsaka funkcionalnost je jasno
definirana, zato da se izognemo podvajanju, postavili pa smo tudi omejitve vsake
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
57
funkcionalnosti. Vsako funkcionalnost lahko razdelimo na podfunkcionalnosti, kot
prikazuje tabela 5.1.
Tabela 5.1: Delitev funkcionalnosti na podfunkcionalnosti
Funkcionalnost Podfunkcionalnost
Uporabnost
Prvi vtis
Enostavnost uporabe
Uporabniški vmesnik
Dokumentacija orodja in Pomoč
Primerjavo bomo izvedli s pomočjo ocenjevalnega sistema, kjer bomo vsaki
funkcionalnosti priredili uteţ pomembnosti te funkcionalnosti in za vsako orodje podali
vrednost kako dobro to funkcionalnost izpoljnjuje.
5.2.1 Ocenjevalna metoda
Uteţ za vsako izmed podfunkcionalnosti je določena na podlagi pomembnosti
funkcionalnosti v primerjavi z ostalimi. S tem preprečimo, da bi bilo orodje z dobro
implementirano vendar manj pomembno funkcionalnostjo predobro ovrednoteno. V
primeru, da je določena funkcionalnost bistvenega pomena jo ovrednotimo s 3, če pa ni
pomembna jo ovrednotimo z 1. V primeru, da je funkcionalnost izredno zaţeljena oziroma
imajo to funkcionalnost lastniška orodja jo bomo ovrednotili s 4. Uteţi so bile
funkcionalnostim dodeljene na podlagi osebne presoje, pripomb s forumov in pogovorov z
uporabniki. Tabelo uteţi prikazuje tabela 5.2.
Tabela 5.2: Uteži za funkcionalnosti
Funkcionalnost Ni pomembna Dobra Bistvena Izredno
zaţeljena
Uteţ 1 2 3 4
Vsako funkcionalnost smo ovrednotili na podlagi kako dobro je v posameznem orodju
implementirana. V primeru, da je funkcionalnost slabo implementirana oziroma sploh ni,
smo jo ovrednotili z 1, če pa je dobro implementirana smo jo ovrednotili s 3. Vrednosti
stopnje implementiranosti prikazuje tabela 5.3.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
58
Tabela 5.3: Vrednosti za stopnje implementiranosti
Stopnja
implementiranosti Slaba Sprejemljiva Dobra
Vrednost 1 2 3
Zmnoţek uteţi in vrednosti je izračunan za vsako funkcionalnost, skupna vsota produktov
pa nam predstavlja končni rezultat za vsako orodje, kar lahko strnemo v naslednjo enačbo:
Če UF predstavlja uteţ funkcionalnosti in VSI predstavlja vrednost stopnje
implementiranosti, potem se lahko rezultat za orodje 1 (O1) izračuna po enačbi:
5.2.2 Ocenjevalna tabela
Tabela 5.4: Ocenjevalna tabela
Osnovne funkcionalnosti Podfunkcionalnosti Utež
Odlagališče Podatkovna baza 2
Prilagoditev Komponente in orodja 2
HTML dokumentacija Generiranje poročil 3
Izvoz diagramov v poročila 3
Uporabnost
Prvi vtis 3
Enostavnost uporabe 3
Uporabniški vmesnik
Pregled razredov modela
med risanjem 2
Drevesna struktura, kjer se
lahko vidi vse razrede 3
Primi in spusti 3
Oznake na diagramih 2
Stanja modela so vidno
različna 2
Dokumentacija in pomoč Razčlenjena dokumentacija 4
Pomoč preko interneta 2
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
59
Iskanje ključnih besed 3
Bliţnjice 1
Podpora tiskanju
Prilagajanje diagrama na eno stran 4
Predogled tiskanja 3
Skaliranje 3
Izvoz diagramov Izvoz diagramov v grafični obliko 4
Izvoz diagramov v obliki XMI 4
Robustnost Orodje deluje stabilno in ne kvari zgrajenega modela 3
Samodejno shranjevanje v časovnih intervalih 2
Izdajanje novih verzij Ali so najavljene nove verzije orodja 3
Krožno inženirstvo
Generiranje kode
Podpora programskim
jezikom 3
Podpora za modeliranje
vzorcev 4
Povratno inženirstvo
Generiranje razrednega
diagrama iz kode 3
Generiranje diagrama
zaporedja iz kode 4
Sledljivost 4
Sinhronizacija z urejevalnikom kode 2
Preverjanje napak Preverjanje napak 3
Validiranje modela po diagramski tehniki 3
Pregled modela sistema Povečevanje in sprehajanje po diagramih 3
Preklapljanje med diagrami in izvorno kodo 2
Vidnost podrobnosti na
diagramih
Prilagajanje prikaza podrobnosti v razredu 3
Prikazovanje in skrivanje get/set metod 3
Prilagajanje vidnosti atributov in metod 2
Skladnost z UML Podprtost diagramov
Diagram primerov uporabe 3
Razredni diagram 3
Diagram zaporedja 3
Diagram komunikacije 3
Diagram stanj 3
Diagram aktivnosti 3
Diagram komponent 3
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
60
Diagram namestitve 3
Funkcionalnosti pri
razrednemu diagramu
Prilagodljivost velikosti
okvirja za razred 3
Prilagodljivost povezav 2
Neodvisna postavitev imena
asociacij 2
Ohranitev poloţaja,
končnih imen in
mnogoterosti oznak
3
Zmerno spajanje povezav 2
Razlikovanje med
odstranitvijo iz diagrama in
izbrisom iz modela
3
Funkcija razveljavi 4
UML profili (stereotipi in
označene vrednosti) 2
Funkcionalnosti pri
diagramu primerov
uporabe
Prilagodljivost velikosti
primerov uporabe in
akterjev
3
Prilagodljivost povezav 2
Razlikovanje med
odstranitvijo iz diagrama in
izbrisom iz modela
3
Definiranje meje sistema 3
Funkcionalnosti pri
diagramu zaporedja
Prilagodljivost velikosti
okvirja za objekt 3
Prilagodljivost sporočil 3
Brisanje objekta 3
Povratne zanke 3
Nastavljanje dolţine
aktivacije 3
Razlikovanje med
odstranitvijo iz diagrama in
izbrisom iz modela
3
Nastavljanje zaporedne
številke sporočila 2
Navezovanje na primere
uporabe 3
Uporaba objektov in
njihovih metod iz
razrednega diagrama
3
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
61
Definiranje zdruţenih delov 2
Nakaterih funkcionalnosti modelirnih orodij ne moremo primerjati glede na to kako dobro
so v nekem orodju implementirane, zato bojo izvzete iz ocenjevalne tabele.
5.3 Učni primer informacijskega sistema Spletna trgovina
Za ovrednotenje funkcionalnosti modelirnih orodij samo si izbrali informacijski sistem
Spletne trgovine, ki bo stranki oziroma kupcu nudila prijetno nakupovalno izkušnjo.
Sistem bo v sklopu izbire končnega produkta omogočal pregled več kategorij in različnih
znamk.
Scenarij
Stranka obišče spletno trgovino, kjer lahko izdelke kupi ali samo pregleda ponudbo.
Stranka lahko izbere kategorijo in znamko, znotraj katere izbira med različnimi izdelki. V
košarico lahko stranka doda več izdelkov, katere lahko po zaključku nakupovanja pregleda
in ureja.
Za končno plačilo se mora stranka prijaviti v sistem. V primeru, da stranka spletno
trgovino obiskuje prvič, se mora najprej registrirati, v nasprotnem primeru pa se stranka
samo prijavi v sistem.
Preden se naročilo zaključi mora stranka izbrati vrsto plačila in potrditi naslov kamor se
bojo izdelki poslali. Po zaključku naročila se stranki posreduje identifikacijsko številko
njenega naročila.
Omejitve, ki niso zajete v sklop učnega primera:
Dostava kupljenih izdelkov.
Pritoţbe strank.
Akterji:
Stranka
Administrator
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
62
Funkcionalnosti:
1. Spletna trgovina:
Omogoča strankam pregled izdelkov, ki so razdeljeni na kategorije in
znamke.
Stranki nudi račun in identifikacijsko številko naročila, katera ji omogoča
sledenje pošiljki.
2. Stranka:
Ko stranka obišče spletno trgovino vidi raznolike produkte v različnih
kategorijah.
Stranka lahko izbira med izdelki, ki so na voljo v trgovini in izbrane doda v
košarico.
Stranka lahko kadarkoli pogleda in spremeni vsebino košarice. Po zaključku
nakupovanja, odda košarico in opravi plačilo.
3. Administrator:
Posodablja in dodaja nove izdelke, znamke in kategorije.
Preveri strankine podatke o plačilu in dostavi.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
63
5.4 Rezultati primerjave
Funkcionalnosti modelirnih orodij smo preučili na učnem primeru spletne trgovine. Točke,
ki jih je posamezno orodje doseglo, smo izračunali po zgoraj omenjeni enačbi. Doseţene
točke prikazuje graf 5.1, od skupno 561 moţnih točk.
Graf 5.1: Dosežene točke posameznega orodja
ArgoUML StarUML Umbrello
UML Modeller
Papyrus NetBeans
UML Open
ModelShere
Dosežene točke 401 438 391 455 470 416
401 438
391
455 470
416
0
100
200
300
400
500
Dosežene točke
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
64
5.4.1 ArgoUML
Graf 5.2: Odstkovna implementiranost posamezne funkcionalnosti za orodje ArgoUML
Orodje ArgoUML ima prijazen uporabniški vmesnik, vendar je njegov izgled, ter izgled
diagramskih elementov nekako zastarel. Risanje diagramov je enostavno, prav tako
generiranje izvorne kode. Modeliran sistem lahko izvozimo v XMI verzije 1.2, orodju pa
se zatakne pri uvozu XMI, saj mu uspe uvoziti samo lastno izvoţen sistem. Izvoz
diagramov v grafično obliko mu ne predstavlja teţav. Orodje ne omogoča nikakršnega
generiranja poročil oziroma HTML dokumentacije ali prilagajanja komponent. Slabo
podporo nudi kroţnemu inţenirstvu, saj podpira samo generiranje kode in generiranje
razrednega diagrama iz kode. Sinhronizacije z urejevalnikom kode ne podpira, zato se
spremembe narejene v programski kodi ne odraţajo v modelu sistema. Orodje ne podpira
funkcionalnosti razveljavi, kar nam oteţuje delo z modeliranjem, zato v primeru, ko se
33,3 33,3 33,3
71,4
60,0
100,0
53,3
66,7
48,3 50,0
86,7
75,0
87,5
74,6
84,8 81,0
0
10
20
30
40
50
60
70
80
90
100
Odstotki
Stopnja implementiranosti
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
65
zmotimo ne moremo povrniti modela v prejšnje stanje. Zaradi navedenih pomankljivosti se
je orodje ArgoUML uvrstilo na predzadnje mesto.
5.4.2 StarUML
Graf 5.3: Odstkovna implementiranost posamezne funkcionalnosti za orodje StarUML
Modelirno orodje StarUML nudi dobro podporo tiskanju in je eno redkih orodjih, ki
podpira predogled tiskanja modeliranih diagramov. Risanje diagramov ni zahtevno,
funkcionalnosti pri diagramih so dobro podprte, narisane diagrame pa lahko validiramo po
diagramski tehniki. K prijetni rabi orodja pripomore dobro zasnovan uporabniški vmesnik
s smiselnimi menuji, zadovoljiv nabor orodij, ter dobro implementirana funkcionalnost
funkcije razveljavi. Orodje uspešno uvozi XMI model orodij ArgoUML in UmbrelloUML
Modeller, slabše pa je odrezalo pri izvozu diagramov, saj jih lahko izvozimo samo v
grafični obliki, pri izvozu v XMI, podpira namreč samo verzijo XMI 1.1, pa je orodje
33,3
66,7
33,3
78,6 80,0
66,7
53,3
33,3
51,7
66,7 73,3 75,0
95,8
81,0
100,0 100,0
0
10
20
30
40
50
60
70
80
90
100
Odstotki
Stopnja implementiranosti
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
66
vedno javilo napako. Od funkcionalnosti v kroţnem inţenirstvu dobro implementira samo
generiranje izvorne kode in apliciranje vzorcev. Sinhronizacija z urejevalnikom kode ni
moţna, pri uvozu razredov iz izvorne kode v razredni diagram se nepravilno generirajo
vidljivosti atributov in metod, včasih orodje med tem opravilom tudi zamrzne. Modelirno
orodje StarUML ni bilo posodobljeno ţe od leta 2005, vendar se je kljub temu uvrstilo na
tretje mesto.
5.4.3 Umbrello UML Modeller
Graf 5.4: Odstkovna implementiranost posamezne funkcionalnosti za orodje UML Modeller
Umbrello UML Modeller je edino orodje v naši primerjavi, katero ponuja samodejno
shranjevanje modeliranega sistema v izbranih intervalih. Orodje podpira večino
diagramov, ki so bili vključeni v našo primerjavo, dobrodošlo funkcionalnost je orodje
implementiralo pri gradnji razrednega diagrama, kjer nam ponuja uporabo čarovnika za
33,3
66,7
33,3
70,2 66,7 66,7
60,0
33,3
43,3
33,3
73,3 75,0
95,8 90,5
75,8 71,4
0
10
20
30
40
50
60
70
80
90
100
Odstotki
Stopnja implementiranosti
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
67
dodajanje razreda s pomočjo katerega, razredu dodamo atribute, operacije in nastavimo
njihove vidljivosti. Diagrame lahko natisnemo, prilagajamo na stran, ter si pred tem
ogledamo kaj se bo natisnilo. Orodje shranjuje modeliran sistem v standardu XMI 1.2, z
nekaj pomankljivosti pa uspe uvoziti XMI model orodja ArgoUML. Podpira generiranje
XHTML dokumentacije, vendar je generiran dokument prazen in neberljiv. Dokumentacija
orodja je na voljo za verzijo 1.2 iz leta 2003, sedaj je na voljo verzija 2.8.0, ki izvira iz leta
2008. Orodje ponuja generiranje kode za širok nabor programskih jezikov, ne uspe pa mu
uvoziti razredov iz generirane kode, ker pri tem vedno zamrzne. Ne ponuja sinhronizacije z
urejevalnikom kode niti kakršnega koli preverjanja napak ali uporabe vzorcev. Pri primerih
uporabe se ne da izbrati povezave vključuje ali razširja, pri diagramih zaporedja ni mogoče
definirati imena povratnih sporočil. Pri nobenemu diagramu ne podpira zaznačenja in
premikanja več elementov hkrati, ampak samo enega. Orodje je pri ocenjevanju
funkcionalnosti izredno velikokrat zamrznilo, vendar naj poudarim, da smo orodje
preizkusili na okolju Windows 7 s pomočjo KDE emulatorja. Zaradi navedenih razlogov je
orodje zasedlo zadnje mesto.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
68
5.4.4 Papyrus
Graf 5.5: Odstkovna implementiranost posamezne funkcionalnosti za orodje Papyrus
Modelirno orodje Papyrus v navezavi z vtičnikom za generiranje kode Acceleo
implementira kakovostno orodje za modeliranje informacijskih sistemov z UML. Je eno
redkih orodij v naši primerjavi, ki nudi verzioniranje modeliranega sistema oziroma
omogoča, da več razvijalcev hkrati dela na istem projektu. Uporabniški vmesnik temelji na
razvijalskem okolju Eclipse, zato so menuji dobro in smiselno razdelani, kar omogoča
preprosto risanje diagramov in dober pregled nad modeliranim sistemom. Odlikuje ga
podprtost diagramov in njihovih funkcionalnosti, izvoz diagramov, ter uporabnost. Za
orodje je na voljo veliko vodičev, dobro razdelana dokumentacija, ter aţurna pomoč
uporabnikov in razvijalcev iz forumov. Papyrus je edino izmed orodji, ki nudi preverjanje
napak ter validiranje modela po diagramski tehniki. Odlično je podprta sinhronizacija z
66,7 66,7
33,3
81,0
70,0 66,6
73,3 66,7
51,7
100,0 100,0
75,0
95,8 96,8
81,8
95,2
0
10
20
30
40
50
60
70
80
90
100
Odstotki
Stopnja implementiranosti
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
69
urejevalnikom kode, saj se vse spremembe narejene v kodi odraţajo v modelu in obratno,
dobro je podprta tudi sledljivost. Orodje ţal ne podpira generiranje nobene dokumentacije,
uvoza modeliranih sistemov shranjenih v XMI, generiranja razrednega diagrama iz izvorne
kode ali moţnosti apliciranja načrtovalskih vzorcev. Zaradi veliko dobro implementiranih
funkcionalnosti je modelirno orodje Papyrus v navezavi z vtičnikom Acceleo zasedlo
drugo mesto.
5.4.5 NetBeans UML
Graf 5.6: Odstkovna implementiranost posamezne funkcionalnosti za orodje NetBeans UML
Modelirno orodje NetBeans UML je edino izmed preizkušenih orodij, ki je osvojilo vse
moţne točke pri podpori tiskanju, saj omogoča poljubno prilagajnje in skaliranje izpisa, s
pomočjo predogleda tiskanja pa lahko pogledamo kako se bo izbran diagram natisnil.
Orodje učinkovito generira HTML poročilo v katerega se izvozijo vsi diagrami
66,7 66,7
100,0 97,6 100,0
66,7 73,3
66,7
88,3
33,3
100,0
62,5
75,0 77,8
81,8
95,2
0
10
20
30
40
50
60
70
80
90
100
Odstotki
Stopnja implementiranosti
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
70
modeliranega sistema, lastnosti diagramskih elementov in njihove povezave. Pohvalo si
zasluţi uporabniški vmesnik, ki je sodobno oblikovan in prijetnega izgleda, zato je
modeliranje sistema preprosto, hitro in učinkovito. Dokumentacija je dobro in pregledno
razdelana, na voljo je veliko vodičev, ki na primerih prikazujejo uporabo pomembnejših
funkcionalnosti, ter osnovne modeliranja z jezikom UML. Orodje NetBeans odlikuje
predvsem moţnost sinhronizacije med modelom in generirano programsko kodo, zato se
vse spremembe narejene v kodi odraţajo v modeliranemu sistemu in obratno. Edino od
preizkušenih modelirnih orodij omogoča generiranje diagrama zaporedja iz izvorne kode,
ter nudi poravnavo diagramskih elementov ţe v času grajenja diagrama. V nasprotju z
večino ostalih orodij dobro podpira tudi sledljivost in načrtovalske vzorce, ki jih lahko
apliciramo na razrednemu diagramu. Orodju lahko očitamo nepodprtost nekaterih
diagramov, ter preveč podroben prikaz razreda v razrednemu diagramu, kjer ne moremo
skriti get ali set metod, zato je razred z veliko atributi dokaj nepregleden. Prav tako smo pri
modeliranju pogrešali funkcijo razveljavi. Orodje ţal ne ponuja izvoza ali uvoza
modeliranega sistema v XMI ali validiranja modela po diagramski tehniki. Na ţalost,
vtičnik za modeliranje z UML ni na voljo za novejše različice orodja NetBeans, zato smo v
naši primerjavi uporabili verzijo NetBeans 6.7, kjer je vtičnik še podprt. Za novejše
različice se pripravlja prenovljen vtičnik, ki v času primerjave še ni bil dostopen. Kljub
navedenim pomanjkljivostim se je orodje NetBeans v navezavi z vtičnikom UML uvrstilo
na prvo mesto.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
71
5.4.6 Open ModelSphere
Graf 5.7: Odstkovna implementiranost posamezne funkcionalnosti za orodje Open ModelSphere
Open ModelSphere je eno redkih orodij, ki omogoča generiranje HTML dokumentacije, v
katero se izvozijo vsi diagrami in opisi njihovih elementov. Uporabniški vmesnik je zelo
preprost, razporeditev oken smiselna in prilagodljiva kar omogoča hitro, učinkovito in
pregledno modeliranje. Dokumentacija je podrobno razdela, ter zajema vse
funkcionalnosti, ki jih orodje implementira. Narisane diagrame lahko izvozimo samo v
grafični obliki, saj orodje ne podpira izvoza ali uvoza modeliranega sistema v XMI. Z
orodjem lahko modeliramo skoraj vse diagrame, ki jih zajema naša primerjava, razen
diagrama komponent. Edino od preizkušenih orodij omogoča prilagajanje stila izgleda
razrednega diagrama, kjer lahko izbiramo med UML stilom, Java stilom ali stilom ključev
in ključavnic za prikaz podrobnosti ter vidljivosti atributov in metod v razredu. Odlično
33,3
66,7
100,0
89,3
33,3
66,7
53,3
66,7
51,7 50,0
86,7
33,3
87,5
96,8 100,0
70,2
0
10
20
30
40
50
60
70
80
90
100
Odstotki
Stopnja implementiranosti
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
72
implementira funkcionalnost funkcije razveljavi. Orodje zadovoljivo podpira generiranje
izvorne kode iz razrednega diagrama, ter apliciranje načrtovalskih vzorcev, pri povratnem
inţenirstvu pa orodje vedno javi napako, zato ni moţno ustvariti razrednega diagrama iz
izvorne kode. Sinhronizacijo z urejevalnikom kode, orodje ne podpira, pomankljivo je
implementirana sledljivost, zato se spremembe, ki jih naredimo v izvorni kodi ne odraţajo
v modelu sistema. Open ModelSphere je edino orodje, ki ne ponuja prilagajanja prikaza
podrobnosti v razredu, saj ne moremo skriti nobenega dela razreda, zato lahko postane
razred z veliko atributi in metodami nepregleden. V orodju je izredno slabo
implementirana podpora tiskanju saj orodje ne nudi prilagajanja diagrama na eno stran, niti
predogleda tiskanja ali skaliranja. Modeliranje diagrama zaporedja je nerodno in časovno
zahtevno, ker se pri vsakem dodajanju sporočila na aktivacijo puščica postavi na sredino
aktivacije, prav tako se spremeni poloţaj sporočila pri vsaki spremembi dolţine aktivacije,
kar je zelo moteče. Orodje Open ModelSphere je kljub naštetim pomanjkljivostim zasedlo
četrto mesto.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
73
5.5 Primerjava rezultatov
Stopnje implementiranosti posamezne funkcionalnosti vseh orodij smo strnili v grafu 5.8 iz
katerega lahko razberemo, kako dobro modelirna orodja implementirajo posamezno
funkcionalnost. Edini orodji, ki nudita podporo verzioniranju oziroma odlagališču sta
Papyrus in NetBeansUML. Pri prilagajanju komponent in orodij so si orodja večinoma
enaka, najmanj prilaganjaja pa nudi orodje ArgoUML. Pri generiranju HTML
dokumentacije izstopata orodji NetBeans UML in Open ModelSphere, saj sta oba dosegla
vse moţne točke. Najboljšo podporo tiskanju nudi orodje NetBeans UML, sledi mu orodje
StarUML z 80% moţnih točk, najslabše pa se je odrezalo orodje Open ModelSphere,
katero ne nudi prilagajanja, skaliranja ali predogleda tiskanja. Pri izvozu diagramov velja
izpostaviti orodje ArgoUML, ki je edino dobro in brez teţav izvozilo diagrame v grafično
obliko in hkrati tudi v format XMI. Najbolj gladko sta delovali orodji Papyrus in NetBeans
UML, ki med modeliranjem sistema nista nikoli prenehali delovati. Nove verzije orodij
StarUML in Umbrello UML Modeller niso napovedane, saj orodji ostajata neposodobljeni
ţe več let. Pri kroţnem inţinirstvu je daleč pred vsemi orodje Netbeans UML, ki je
izpolnjevalo več kot 88% podfunkcionalnosti. Orodje Papyrus je je zelo izstopalo pri
preverjanju napak, saj je nudilo validiranje modela po diagramski tehniki. Najboljšo
preglednost nad modelom sistema sta nudili orodji Papyrus in NetBeansUML, vendar tudi
ostala orodja nudijo zadovoljivo mero preglednosti. Orodje Open ModelSphere ni nudilo
skoraj nobenega prilagajanja vidnosti podrobnosti na diagramih. Najmanj diagramov
podpira orodje NetBeans UML, ostala orodja pa so si na tem področju enakovredna.
Podfunkcionalnosti, ki smo jih od orodij zahtevali pri razrednem diagramu slabše
implementirata orodji ArgoUML in Netbeans UML, predvsem smo pri njiju pogrešali
funkcijo razveljavi, najbolje pa sta se odrezali orodji Papyrus in Open ModelSphere.
Diagrame primerov uporabe najbolje implementirata orodji StarUML in Open
ModelSphere, saj sta edini dosegli vse moţne točke. Najslabšo podporo diagramom
zaporedja nudita orodji Umbrello UML Modeller in Open ModelSphere s katerima je
modeliranje teh diagramov zelo omejeno in zamudno. Pri modeliranju diagramih zaporedja
se je najbolje odrezalo orodje StarUML, sledita pa mu orodji Papyrus in NetBeans UML.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
74
Graf 5.8: Odstkovna implementiranost posamezne funkcionalnosti za vsa modelirna orodja
0 20 40 60 80 100
Odlagališče
Prilagoditev
HTML dokumentacija
Uporabnost
Podpora tiskanju
Izvoz diagramov
Robustnost
Izdajanje novih verzij
Krožno inženirstvo
Preverjanje napak
Pregled modela sistema
Vidnost podrobnosti na diagramih
Podprtost diagramov
Funkcionalnosti pri razrednem diagramu
Funkcionalnosti pri diagramu primerov uporabe
Funkcionalnosti pri diagramu zaporedja
Stopnja implementiranosti funkcionalnosti za vsa orodja v odstotkih
ArgoUML StarUML Umbrello UML Modeller
Papyrus NetBeans UML Open ModelSphere
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
75
6 SKLEP
Modeliranje z jezikom UML je pogosto uporabljen pristop za razvoj informacijskih
sistemov in programske opreme, zato je izbira modelirnega orodja, ki ne nudi potrebnih
funkcionalnosti za modeliranje, lahko usodna za uspešno implementacijo projekta.
Razvijalci lahko naletijo na resne probleme in omejitve pri načrtovanju, dokumentiranju in
vizualiziranju modela informacijskega sistema. Pri izbiri ustreznega modelirnega orodja
jim je lahko v pomoč podroben opis zmogljivosti in primerjava funkcionalnosti, ki jih ta
orodja implementirajo.
V diplomskem delu smo podrobno predstavili in primerjali odprtokodna modelirna orodja,
ki so trenutno največkrat uporabljena za razvoj in modeliranje informacijski sistemov z
jezikom UML. Spoznali smo zgodovino in nastanek jezika UML, ter namen uporabe jezika
UML pri modeliranju informacijskih sistemov. Raziskal smo definicijo odprte kode in
njeno zgodovino, ter opisal priljubljene odprtokodne licence.
Tehnika ocenjevanja implementiranosti posameznih funkcionalnosti nudi učinkovito
osamitev negativnih in pozitivnih značilnosti UML modelirnih orodij. S poslovnega vidika
sta čas in denar ena od glavnih faktorjev v industriji razvoja informacijskih sistemov.
Modelirna orodja igrajo pomembno vlogo pri razvoju časovno in stroškovno učinkovite
programske opreme. Orodja se uporabljajo zato, da nam olajšajo delo, zato je vredno
vloţiti čas in trud za njihovo ocenitev, preden se dokončno odločimo za orodje. Orodja
smo primerjali glede na funkcionalnosti, ter njihovo stopnjo implementiranosti ocenili na
podlagi lastne izkušnje uporabe posameznega orodja, pri modeliranju učnega primera
informacijskega sistema spletne trgovine.
Ocenjevane funkcionalnosti in pripadujoče uteţi, bi lahko uporabili za ovrednotenje
poljubnega nabora modelirnih orodij UML, saj so naštete funkcionalnosti nepogrešljive v
katerem koli orodju. Pripadajoče uteţi se lahko prilagodijo ţeljam posameznega
uporabnika, na podlagi njegovega prednostnega seznama funkcionalnosti.
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
76
7 LITERATURA IN VIRI
[1] Avison, D. E. in Fitzgerald, G. (2003). Information systems development:
methodologies, techniques and tools, McGraw-Hill, London
[2] G. Booch, J. Rumbaugh, I. Jacobson, The Unified Language User Guide,
Addison-Wesley, Reading, MA, 1999.
[3] Addison Wesley: UML Distilled: A Brief Guide to the Standard Object
Modeling Language, Third Edition 2003
[4] Thomas A. Pender (2002). UML Weekend Crash Course. Wiley Publishing
[5] Tom Pender: UML Bible, 1 izdaja - John Wiley & Sons 2003
[6] J. Benčina, V pričakovanju hitre rasti uveljavljanja odprte kode, INDO
2003: Posvetovanje informatikov v drţavni upravi, Zbornik referatov,
september 2003, str. 456-458
[7] Andrew M. St. Laurent, Understanding Open Source and Free Software
Licensing, Avgust 2004
[8] Matija Damjan, Pravni temelj prostega programja, revija Pravnik letn. 59, št.
4/6 (2004), str. 280-296
[9] David Braun, Jeff Sivils, Alex Shapiro, Jerry Versteegh: UML Tutorial
http://atlas.kennesaw.edu/~dbraun/csis4650/A&D/UML_tutorial/index.htm
[10] ArgoUML Open Source Software Engineering Tool
http://argouml.tigris.org/features.html
[11] Cestnik, B. Modeliranje z UML
http://www.temida.si/~bojan/IPIT/
[12] ArgoUWE: A CASE Tool for Web Applications
http://www.pst.informatik.uni-muenchen.de/veroeffentlichungen/knapp-et-
al:2003.pdf
[13] UML Products by Price
http://www.objectsbydesign.com/tools/umltools_byPrice.html
[14] UML modelling tools
http://modeling-languages.com/uml-tools/
[15] Seznam orodij UML
http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools
http://www.devcurry.com/2010/06/free-open-source-uml-tools.html
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
77
http://open-tube.com/top-5-open-source-uml-tools/
[16] Unified modeling language
http://www.uml.org
[17] UML Diagrami
http://www.smartdraw.com/resources/tutorials/uml-diagrams/
[18] Bruce Perens, The Open Source Definition
www.oreilly.com/catalog/opensources/book/perens.html
[19] Open Source Initiative OSI, Open Source Initiative
http://www.opensource.org/index.php
[20] Open Source Definition
http://www.opensource.org/docs/osd
[21] Open Source Initiative OSI, The MIT License
www.opensource.org/licenses/mit-license.php
[22] OSI Licence Review Process
http://www.opensource.org/approval
[23] http://eu.conecta.it/paper/brief_history_open_source.html
[24] Open Source: Open for Business
http://assets1.csc.com/lef/downloads/LEF_2004Open_Source.pdf
[25] Odprta koda - priloţnost ali nevarnost
http://www.okinformatika.si/svetovanje/11-odprta-koda-prilonost-ali-
nevarnost.html
[26] The Linux Information Project - BSD License Definition
http://www.linfo.org/bsdlicense.html
[27] StarUML - The Open Source UML/MDA Platform
http://staruml.sourceforge.net/en/
[28] Umbrello UML Modeller
http://uml.sourceforge.net/
[29] Papyrus
http://www.eclipse.org/modeling/mdt/papyrus/
[30] Acceleo MDA Code Generator
http://www.acceleo.org/pages/home/en
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
78
[31] NetBeans UML
http://en.wikipedia.org/wiki/NetBeans
http://netbeans.org/features/uml/
[32] Open ModelSphere
http://www.modelsphere.org/
[33] Market Share for Top Servers Across All Domains
http://news.netcraft.com/archives/2012/
[34] The Booch Method of Object-Oriented Analysis & Design
http://www.slac.stanford.edu/BFROOT/www/doc/workbook_kiwi/coding/b
ooch/method.html
[35] Object-Oriented Software Engineering - OOSE
http://cs-exhibitions.uni-klu.ac.at/index.php?id=448
[36] Object Modeling Technique - OMT
http://www.idi.ntnu.no/grupper/su/publ/html/totland/ch0527.htm
[37] Object Management Group - OMG
http://www.omg.org/
[38] The Apache Software Foundation
http://www.apache.org/
[39] The Perl Programming Language
http://www.perl.org/
[40] GNU Object Model Environment - GNOME
http://www.gnome.org/
[41] K Desktop Environment - KDE
http://www.kde.org/
[42] Mozilla
http://www.mozilla.org/en-US/
[43] Tim Weilkiens and Bernd Oestereich, UML 2 Certification Guide:
Fundamental & Intermediate Exams, December 2006
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
79
8 PRILOGE
8.1 Priloga 1: Rezultati primerjave
Osnovne
funkcionalnosti Podfunkcionalnosti
Utež
Arg
oU
ML
Pap
yru
s
NetB
ean
s UM
L
Sta
rUM
L
Op
en
Mod
elSp
here
Um
brello
UM
L
Mod
eller
Odlagališče Podatkovna baza 2 1 2 2 1 1 1
Prilagoditev Komponente in orodja 2 1 2 2 2 2 2
HTML
dokumentacija
Generiranje poročil 3 1 1 3 1 3 1
Izvoz diagramov v poročila 3 1 1 3 1 3 1
Uporabnost
Prvi vtis 3 2 2 3 2 3 2
Enostavnost uporabe 3 2 2 3 2 2 2
Uporabniški
vmesnik
Pregled razredov
modela med
risanjem
2 1 3 3 3 3 3
Drevesna
struktura, kjer se
lahko vidi vse
razrede
3 3 3 3 3 3 3
Primi in spusti 3 3 3 3 3 3 2 Oznake na
diagramih 2 3 3 3 3 3 2
Stanja modela so
vidno različna 2 2 3 3 3 3 2
Dokumentacija
in pomoč
Razčlenjena
dokumentacija 4 2 2 3 2 3 2
Pomoč preko
interneta 2 2 2 2 1 2 2
Iskanje ključnih
besed 3 1 2 3 2 2 1
Bližnjice 1 3 2 3 2 2 3
Podpora
tiskanju
Prilagajanje diagrama na eno stran 4 3 3 3 3 1 2
Predogled tiskanja 3 1 1 3 3 1 3
Skaliranje 3 1 2 3 1 1 1
Izvoz
diagramov Izvoz diagramov v grafični obliko 4 3 3 3 3 3 2
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
80
Izvoz diagramov v obliki XMI 4 3 1 1 1 1 2
Robustnost
Orodje deluje stabilno in ne kvari
zgrajenega modela 3 2 3 3 2 2 1
Samodejno shranjevanje v časovnih
intervalih 2 1 1 1 1 1 3
Izdajanje novih
verzij Ali so najavljene nove verzije orodja 3 2 2 2 1 2 1
Krožno
inženirstvo
Generiranje
kode
Podpora programskim
jezikom 3 3 2 2 2 2 3
Podpora za
modeliranje vzorcev 4 1 1 3 3 3 1
Povratno
inženirstvo
Generiranje
razrednega diagrama
iz kode
3 2 1 3 1 1 1
Generiranje diagrama
zaporedja iz kode 4 1 1 3 1 1 1
Sledljivost 4 1 2 2 1 1 1
Sinhronizacija z urejevalnikom kode 2 1 3 3 1 1 1
Preverjanje
napak
Preverjanje napak 3 1 3 1 2 2 1
Validiranje modela po diagramski
tehniki 3 2 3 1 2 1 1
Pregled modela
sistema
Povečevanje in sprehajanje po
diagramih 3 3 3 3 3 3 3
Preklapljanje med diagrami in
izvorno kodo 2 2 3 3 1 2 1
Vidnost
podrobnosti na
diagramih
Prilagajanje prikaza podrobnosti v
razredu 3 3 3 2 3 1 3
Prikazovanje in skrivanje get/set
metod 3 1 1 1 1 1 1
Prilagajanje vidnosti atributov in
metod 2 3 3 3 3 1 3
Skladnost z
UML Podprtost
diagramov
Diagram primerov
uporabe 3 3 3 3 3 3 3
Razredni diagram 3 3 3 3 3 3 3
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
81
Diagram zaporedja 3 3 3 3 3 3 3 Diagram
komunikacije 3 2 2 1 2 2 2
Diagram stanj 3 3 3 3 3 3 3
Diagram aktivnosti 3 3 3 3 3 3 3 Diagram
komponent 3 1 3 1 3 1 3
Diagram
namestitve 3 3 3 1 3 3 3
Funkcionalnosti
pri razrednemu
diagramu
Prilagodljivost
velikosti okvirja za
razred
3 3 3 3 3 3 3
Prilagodljivost
povezav 2 2 3 2 2 3 3
Neodvisna
postavitev imena
asociacij
2 3 3 3 3 3 3
Ohranitev položaja,
končnih imen in
mnogoterosti oznak
3 3 3 3 3 3 3
Zmerno spajanje
povezav 2 1 3 2 1 2 1
Razlikovanje med
odstranitvijo iz
diagrama in
izbrisom iz modela
3 3 3 3 3 3 3
Funkcija razveljavi 4 1 3 1 2 3 3 UML profili
(stereotipi in
označene vrednosti)
2 2 2 2 2 3 2
Funkcionalnosti
pri diagramu
primerov
uporabe
Prilagodljivost
velikosti primerov
uporabe in akterjev
3 3 3 3 3 3 3
Prilagodljivost
povezav 2 2 3 3 3 3 2
Razlikovanje med
odstranitvijo iz
diagrama in
izbrisom iz modela
3 3 3 3 3 3 3
Definiranje meje
sistema 3 2 1 1 3 3 1
Funkcionalnosti
pri diagramu
zaporedja
Prilagodljivost
velikosti okvirja za
objekt
3 2 3 3 3 3 2
Prilagodljivost
sporočil 3 3 3 3 3 2 1
Brisanje objekta 3 3 3 3 3 1 1
Povratne zanke 3 2 3 3 3 2 3 Nastavljanje
dolžine aktivacije 3 3 3 3 3 2 2
Razlikovanje med
odstranitvijo iz
diagrama in
3 3 3 3 3 3 3
Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML
82
izbrisom iz modela
Nastavljanje
zaporedne številke
sporočila
2 3 1 1 3 3 3
Navezovanje na
primere uporabe 3 2 3 3 3 3 1
Uporaba objektov
in njihovih metod
iz razrednega
diagrama
3 2 3 3 3 1 3
Definiranje
združenih delov 2 1 3 3 3 1 3
Dosežene točke: 401 455 470 438 416 391
8.2 Priloga 2: Nivoji skladnosti UML
Nivo Zahteve
Temeljni
Prva raven obravnava temeljno znanje UML, vključno z osnovnimi pojmi o
razrednemu diagramu, diagramu primerov uporabe, diagramu aktivnosti,
diagramu zaporedja, diagramu komunikacije, časovnemu diagramu,
objektnemu diagramu in diagramu paketov, kakor tudi različni elementi kot
so stereotipi in primitivni tipi [43].
Ta nivo je primeren za redne uporabnike UML.
Vmesni
Druga raven zahteva globje poznavanje diagramov aktivnosti in diagramov
interakcije. Poleg tega se zahtevajo diagrami sestavljenih struktur, diagrami
komponent, diagrami namestitve, diagrami stanj in mehanizmi razširjanja
profilov [43].
Ta nivo je primern za uporabnike, ki obseţno uporabljajo UML.
Napredni
Tretja raven zahteva napredno poznavanje razrednih diagramov, ki zajema
asociacijske razrede in metatipe. Prav tako se zahteva napredno poznavanje
diagramov sestavljenih struktur, diagramov komponent, diagramov aktivnosti,
diagramov namestitve in protokolne avtomatizacije [43].
Ta raven je primerna za napredne uporabnike UML, kot so oblikovalci
izvršljivih modelov, MDA arhitekti, oblikovalci profilov in razvijalci
modelirnih orodij UML.