97
Tadej Avsec PRIMERJAVA ODPRTOKODNIH ORODIJ ZA MODELIRANJE INFORMACIJSKIH SISTEMOV Z NOTACIJO UML Diplomsko delo Maribor, maj 2012

PRIMERJAVA ODPRTOKODNIH ORODIJ ZA MODELIRANJE ... · licenses are explained and analyzed. Modeling tools like ArgoUML, StarUML, Umbrello UML Modeller, Payrus, NetBeans UML and Open

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

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

III

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.

Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML

83

Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML

84

Primerjava odprtokodnih orodij za modeliranje informacijskih sistemov z notacijo UML

85