Autoriõigus © 2001 Paul Hensgen
Autoriõigus © 2002, 2003 Umbrello autorid
Umbrello aitab tarkvara arendamisel, kasutades standardiks muutunud ühtlustatud modelleerimiskeelt (Unified Modelling Language, UML), mis võimaldab luua diagramme süsteemide kujundamiseks ja dokumenteerimiseks.
Sisukord
Umbrello on UML-skeemide loomise vahend, mis aitab eriti analüüsi- ja disainifaasides toetada tarkvara arendamise protsessi ja nii luua kõrgekvaliteedilist tarkvara. UMLi kasutatakse ka tarkvara disaini dokumenteerimiseks.
Loodava tarkvara hea mudeli omamine on parim vahend projekti teiste arendajate ja klientidega suhtlemiseks. Hea mudel on äärmiselt tähtis keskmise suurusega ja suurte projektide loomisel, kuid kasulik ka väikeste puhul. Isegi siis, kui töötad väikese ühemeheprojekti kallal, on heast mudelist kasu, sest see annab projektist ülevaate, mis võimaldab luua tarkvara õigesti kohe esimesel korral.
UML on mudeleid kirjeldavate skeemide ülesmärkimise keel. UMLis on oma ideede ülesmärkimiseks võimalik kasutada mitmeid erinevaid skeemitüüpe. Umbrello 1.2 toetab järgnevaid skeemitüüpe:
klassiskeem
järgnevusskeem
koostööskeem
kasutusklassiskeem
olekuskeem
tegevusskeem
komponentskeem
evitusskeem
Täpsema info saamiseks UMLi kohta vaata UML standardi looja OMG kodulehte http://www.omg.org
Loodame, et naudid Umbrelloga töötamist ja et see aitab sul luua kõrgekvaliteedilist tarkvara. Umbrello on vaba tarkvara ja saadaval tasuta. Ainus, mida sult palume, on teatamine leitud vigadest ja probleemidest Umbrello arendajate postiloendisse aadressil (uml-devel AT lists.sourceforge.net)
või http://bugs.kde.org
See peatükk annab sulle kiire ülevaate UMLi põhitõdedest. Ära unusta, et see pole põhjalik UMLi õpik, vaid pigem lühike sissejuhatus UMLi, mida on võimalik lugeda õpikuna. Kui soovid UMLi või üldse tarkvara analüüsi ja disaini kohta rohkem teada saada, siis kasuta mõnda paljudest samal teemal saadaolevatest raamatutest. Lisaks on paljud alustuseks sobivad õpikud saadaval Internetis.
UML on skeemide loomise keel või täpsemalt öeldes ülesmärkimise keel objektorienteeritud tarkvarasüsteemide kirjeldamiseks, visualiseerimiseks ja dokumenteerimiseks. UML ei ole arendusmeetod, mis tähendab, et see ei ütle sulle, mida teha esimesena ja mida järgmisena või kuidas süsteemi disainida, kuid aitab disaini visualiseerida ja teistega edukalt suhelda. UML on Object Management Group'i (OMG) kontrolli all olev tarkvara graafiliseks kirjeldamiseks mõeldud tööstusstandard.
UML on mõeldud objektorienteeritud tarkvara disainiks ja toetab seepärast piiratult teisi programmeerimisparadigmasid.
UML koosneb paljudest mudeli elementidest, mis esindavad tarkvarasüsteemi erinevaid osi. UMLi elementide abil luuakse skeeme, mis esindavad kindlaid süsteemi osi või vaatepunkte. Umbrello toetab järgmisi skeemitüüpe:
kasutusklassiskeemid kujutavad tegijaid (inimesed või teised süsteemi kasutajad), kasutusklasse (süsteemi kasutamise võimalused) ja nendevahelisi relatsioone
klassiskeemid kujutavad klasse ja nendevahelisi relatsioone
järgnevusskeemid kujutavad objekte ja nende poolt sooritatavate meetodite väljakutsete järgnevusi
koostööskeemid kujutavad objekte ja nendevahelisi relatsioone, pannes rõhu objektidele, mis osalevad teadete vahetamises
olekuskeemid kujutavad olekuid, olekute muutusi ja sündmusi objektis või süsteemi osas
tegevusskeemid kujutavad tegevusi ja muutusi ühest tegevusest teise seoses mõnes süsteemi osas toimuvate sündmustega
komponentskeemid kujutavad kõrgetasemelisi programmeerimiskomponente (nt. KParts või JavaBeans)
Evitusskeemid kujutavad komponentide eksemplare ja nendevahelisi relatsioone
Kasutusklassiskeemid kirjeldavad protsessis osalevate kasutusklasside ja tegijate vahelisi relatsioone ja sõltuvusi.
Tähtis on tähele panna, et kasutusklassiskeemid pole mõeldud disaini kujutamiseks ja süsteemi sisestruktuuride kirjeldamiseks. Kasutusklassiskeemid on mõeldud kergendama suhtlemist kliendi ja süsteemi tulevaste kasutajate vahel ning on eriti kasulikud süsteemi funktsionaalsuse väljaselgitamisel. Kasutusklassiskeemid peaksid ütlema, mida süsteem peab tegema, mitte aga — ja ei tohigi öelda —, kuidas tehtu saavutatakse.
Kasutusklassiskeem Umbrellos
Kasutusklass kirjeldab tegijate vaatenurgast süsteemi tegevuste gruppi, mis tagastab konkreetse ja käegakatsutava tulemuse.
Kasutusklassid on tüüpilised süsteemi kasutajate ja süsteemi enda vaheliste interaktsioonide kirjeldused. Nad esindavad süsteemi välist liidest ja määravad nõuete kogu selle kohta, mida süsteem peab tegema (ära unusta: ainult mida, mitte kuidas).
Kasutusklassidega töötades on tähtis meeles pidada mõned lihtsad reeglid:
iga kasutusklass on seotud vähemalt ühe tegijaga
igal kasutusklassil on olemas algataja (st. tegija)
Iga kasutusklass juhatab kindla tulemuseni (“ärilise väärtusega” tulemuseni)
Ka kasutusklassidel võivad teiste kasutusklassidega relatsioonid olla. Kolm tüüpilisemat kasutusklasside vaheliste relatsioonide tüüpi on:
<<include>> määrab, kas kasutusklass leiab aset teise kasutusklassi sees
<<extends>> määrab, et kindlates situatsioonides või mingis punktis (mida kutsutakse laienduspunktiks) laiendab üks kasutusklass teist
üldistus määrab, et kasutusklass pärib eellasest kasutusklassi omadused ja võib mõnesid omadusi üle kirjeldada või lisada uusi sarnaselt klassidevahelise pärilusega
Tegija on väline olem (süsteemiväline), mis suhtleb süsteemiga, võttes osa (ja sageli algatades) kasutusklassist. Tegijad võivad olla reaalsed inimesed (näiteks infosüsteemi kasutajad), teised arvutisüsteemid või välised sündmused.
Tegijad ei esinda mitte füüsilisi isikuid või süsteeme, vaid nende rolle. See tähendab, et kui isik suhtleb süsteemiga erinevatel viisidel (võttes endale erinevaid rolle), siis kujutatakse teda erinevate tegijatena. Näiteks isikut, kes tegeleb telefoni kaudu kasutajatoeteenuse jagamisega ja võtab klientidelt ka süsteemi kasutamiseks tellimusi, peaks kujutama tegijatena “Kasutajatugi” ja “Müügimees”.
Klassiskeemid kujutavad süsteemi moodustavaid klasse ja nendevahelisi suhteid. Öeldakse, et klassiskeemid on “staatilised” skeemid, sest nad kujutavad klasse, nende meetodeid ja atribuute ning nendevahelisi suhteid: millised klassid “teavad” millistest klassidest või millised klassid “on teiste klasside osadeks”, kuid ei kujuta meetodite väljakutseid nende vahel.
Klassiskeemi kuvamine Umbrellos
Klass defineerib objektide hulga atribuudid ja meetodid. Kõik klassi objektid (klassi eksemplarid) jagavad ühist käitumist ja omavad samasugust hulka atribuute (igal objektil on isiklikud atribuudid). Vahel kasutatakse klassi asemel terminit “tüüp”, kuid tähtis on märkida, et need kaks ei ole samad ja tüüp on üldisem termin.
UMLis kujutatakse klasse nelinurkadena, millel on klassi nimi ja mis võivad sisaldada ka klassi atribuutide ja operatsioonide nimesid nelinurga kahes eraldi osas.
Klassi visuaalne esitus UMLis
UMLis kuvatakse vähemalt atribuudi nimi ja võib-olla ka selle tüüp, algväärtus ja muud omadused. Lisaks on võimalik kuvada atribuudi nähtavust:
+
tähistab public atribuuti
#
tähistab protected atribuuti
-
tähistab private atribuuti
Operatsioonide (meetodite) puhul kuvatakse samuti vähemalt nime ja võib-olla ka parameetreid ja tagastustüüpi. Nagu atribuutide puhulgi, saab ka operatsioonide juures näidata nende nähtavust:
+
tähistab public operatsiooni
#
tähistab protected operatsiooni
-
tähistab private operatsiooni
Klassid võivad olla omavahel seotud mitmel moel:
Pärilus on üks objektorienteeritud programmeerimise baaskontseptsioone, kus klass “saab” kõik atribuudid ja operatsioonid kaasa sellelt eellasklassilt, millest ta pärineb, ning tohib neid üle kirjeldada ja muuta, aga ka lisada uusi atribuute ja operatsioone.
UMLis seab üldistuse tüüpi side kahe klassi vahel nad hierarhiasse, mis esindab tuletatud klassi baasklassist pärinemise kontseptsiooni. UMLis tähistab üldistust kaht klassi ühendav sirge, millel on nool baasklassi poolses otsas.
Üldistuse visuaalne esitus UMLis
Side esindab klasside seoseid ning võtab endas kokku paljude objektidevahelist “ühenduse” tüüpide semantika ja struktuuri.
Side on mehhanism, mis võimaldab objektidel üksteisega suhelda. See kirjeldab ühendust erinevate klasside vahel (ühendust tegelike objektide vahel nimetatakse objektiühenduseks ehk lingiks).
Sidemel võib olla roll, mis määrab sideme eesmärgi ja võib olla ühe- või kahesuunaline (märgib, kas kaks seotud objekti võivad teineteisele teateid saata või teab ainult üks teise olemasolu). Sideme mõlemal otsal on ka oma mitmesusväärtus, mis sätestab, mitu objekti sideme antud otsas võib olla seotud ühe objektiga sideme teises otsas.
UMLis tähistavad sidemeid sirged, mis ühendavad seotud klasse, need võivad ka näidata rolli ja mõlema osapoole mitmesusväärtust. Mitmesust esitatakse mittenegatiivsete väärtuste vahemikuna [min...maks], kusjuures tärn (*
) maksimumväärtuse asemel tähendab lõpmatust.
Sideme visuaalne esitus UMLis
Agregatsioon on spetsiaalne side, milles kaks klassi pole mitte võrdväärse staatusega, vaid moodustavad “tervik-osa” seose. Agregatsioon kirjeldab, kuidas osa, millel on terviku roll, koosneb teistest klassidest (omab teisi klasse), millel on osade roll. Agregatsiooni korral on terviku rollis klassi mitmesus alatu üks.
UMLis tähistab agregatsiooni side, millel on tervikupoolses otsas romb.
Agregatsiooniseose visuaalne esitus UMLis
Kompositsioonid on sidemed, mis esindavad väga tugevat sidet. See tähendab, et ka kompositsioon kujutab endast tervik-osa seost, kuid see seos on nii tugev, et osad ei saagi omaette eksisteerida. Nad eksisteerivad ainult terviku koosseisus ja kui kaob tervik, kaovad ka osad.
UMLis tähistab kompositsiooni täidetud romb sideme tervikupoolses otsas.
Klassiskeemid võivad lisaks klassidele sisaldada veel mitmeid elemente.
Liidesed on abstraktsed klassid, mis tähendab, et neist ei saa otseselt eksemplare luua. Nad võivad sisaldada operatsioone, aga mitte atribuute. Klassid võivad olla liideste järglased (realisatsioonisideme kaudu) ning neist skeemidest saab siis luua eksemplare.
Andmetüübid on primitiivid, mis on tavaliselt lisatud juba programmeerimiskeelde. Tüüpnäiteks on täisarvud ja tõeväärtused. Neil ei saa olla seoseid klassidega, kuid klassidel võivad olla seosed nendega.
Väärtustikud on lihtsad väärtuste nimekirjad. Tüüpnäide on nädalapäevade väärtustik. Väärtustiku võtmeid nimetatakse literaalideks. Nagu andmetüüpidel, ei saa ka neil olla seoseid klassidega, küll aga klassidel nendega.
Järgnevusskeemid näitavad teadetevahetust (st. meetodi väljakutset) mitme objekti vahel teatud ajaliselt piiratud situatsioonis. Objektid on klasside eksemplarid. Järgnevusskeemid rõhutavad erilist teadete objektidele saatmise järjekorda ja aega.
Järjestusskeemidel esindavad objekte püstised punktiirjooned, mille ülemises otsas seisab objekti nimi. Ka ajatelg on vertikaalne, suurenedes allapoole, ning ühelt objektilt teisele saadetud teateid näidatakse nooltena, millele on lisatud operatsiooni ja parameetrite nimed.
Umbrello UML Modeller järgnevusskeemiga
Teated võivad olla sünkroonsed (tavaline teatetüüp, mille korral kontroll läheb väljakutsutavale objektile, kuni meetod on töö lõpetanud) või asünkroonsed (kontroll läheb otse tagasi väljakutsuvale objektile). Sünkroonsetel teadetel on väljakutsutud otjekti poolses otsas püstkast, mis näitab programmi kontrolli kulgu.
Koostööskeemid näitavad teatud situatsioonis osalevate objektide interaktsiooni. See on enam-vähem sama info, mida leiab järgnevusskeemilt, kuid viimaste korral on rõhk asetatud sellele, kuidas interaktsioon toimub, koostööskeemi korral aga objektidevahelistele seostele ja nende topoloogiale.
Koostööskeemides esindavad ühelt objektilt teisele saadetavaid teateid nooled, mis näitavad teate nime, parameetreid ja teate järgnevust. Koostööskeemid sobivad eriti hästi esitama spetsiifilist programmikulgu või situatsiooni ning need on parim skeemitüüp konkreetse protsessi kiireks demonstreerimiseks või seletamiseks programmiloogikas.
Umbrello UML Modeller koostööskeemiga
Olekuskeemid näitavad objekti erinevaid olekuid selle eluea kestel ning stiimuleid, mis põhjustavad objekti oleku muutumise.
Olekuskeemid käsitlevad objekte olekumasinatena ehk lõplike automaatidena, mis võivad olla ühes lõplike olekute kogumis ning muuta oma olekut lõpliku stiimulikogumi vahendusel. Nii võib näiteks objekt tüübiga NetServer olla oma eluea kestel ühes järgmistest olekutest:
valmis
jälgimine
töötamine
peatatud
ning sündmused, mis põhjustavad objekti oleku muutuse, on järgmised:
objekt luuakse
objekt saab teate jälgida
klient soovib võrguühendust
klient katkestab soovi
soov täidetakse ja lõpetatakse
objekt saab teate peatuda
jne
Umbrello UML Modeller olekuskeemiga
Olekud on olekuskeemide ehituskivid. Olek kuulub täpselt ühte klassi ning esindab väärtuste kokkuvõtet, mida klassi atribuudid võivad omada. UMLi olek kirjeldab konkreetse klassi objekti seesmist olekut.
Pane tähele, et mitte kõiki objekti mõne atribuudi muutusi ei esinda olek, vaid ainult neid muutusi, mis mõjutavad märgatavalt objekti käitumist.
Kaks olekutüüpi on erilised: algus ja lõpp. Need on erilised selle poolest, et ükski sündmus ei saa põhjustada objekti tagasipöördumist algusolekusse ning mitte ükski sündmus ei saa viia objekti välja lõppolekust, kui objekt on sellesse olekusse kord juba jõudnud.
Tegevusskeemid kirjeldavad tegevuste järgnevust süsteemis tegevuste abil. Tegevusskeemid on olekuskeemide erivorm, mis sisaldavad ainult või peamiselt tegevusi.
Umbrello UML Modeller tegevusskeemiga
Tegevusskeemid on sarnased protseduuride vooskeemidega, ainult et kõik tegevused on alati selgelt seotud objektidega.
Tegevusskeemid on alati seotud klassi, operatsiooni või kasutusklassiga.
Tegevusskeemid toetavad nii järgnevaid kui ka paralleelseid tegevusi. Paralleelset täitmist esindavad harunemise/ootamise ikoonid ning paralleelselt kulgevate tegevuste korral pole oluline, millises järjekorras need sooritatakse (neid võib sooritata nii ühel ja samal ajal kui ka üksteise järel).
Tegevus on protsessi üks konkreetne samm. Üks tegevus on üks olek seesmise tegevusega ja vähemalt ühe väljuva siirdega süsteemis. Tegevustel võib olla ka enam kui üks väljuv siire, kui neil on erinevad tingimused.
Tegevused võivad moodustada hierarhia, mis tähendab, et tegevus võib koosneda mitmest “alamtegevusest”, mille korral sisenevad ja väljuvad siirded peavad sobima kokku alamtegevuste skeemi sisenevate ja väljuvate siiretega.
UMLis on mõned elemendid, millel pole mudelis reaalset semantilist väärtust, kuid mis aitavad selgitada skeemi osi. Need elemendid on järgmised:
Tekstiread
Tekstimärkused ja ankrud
Kastid
Tekstiread on abiks skeemile lühikese tekstilise info lisamisel. See on vabalt asetsev tekst, millel ei ole mingit mõju mudelile endale.
Märkused on abiks põhjalikuma info esitamisel objekti või konkreetse situatsiooni kohta. Nende suureks eeliseks on see, et märkusi saab ankurdada UMLi elementide külge ning sel moel näidata, et märkus “kuulub” konkreetse objekti või situatsiooni juurde.
Kastid on vabalt asetsevad nelinurgad, millega võib elemente ühte koondada, et skeem oleks selgem ja arusaadavam. Mudelile endas pole neil mingit tähendust.
Komponentskeemid näitavad tarkvarakomponente (kas komponenttehnoloogiat nagu KParts, CORBA komponendid või Java Beans või siis lihtsalt süsteemi selgesti eristatavaid sektsioone) ning artefakte, mis on tekkinud näiteks lähtekoodifailidest, programmi teekidest või relatsioonilistest andmebaasidest.
Komponentidel võivad olla liidesed (st. abstraktsed klassid operatsioonidega), mis võimaldavad komponentidevahelisi sidemeid.
See peatükk tutvustab Umbrello kasutajaliidest ja selgitab kõike, mida vaja modelleerimise alustamiseks. Kõik Umbrello toimingud on kättesaadavad nii menüü kui tööriistaribade kaudu, lisaks pakub Umbrello laialdast kontekstimenüüde kasutamise võimalust. Klõpsates parema hiirenupuga ükskõik millisel Umbrello tööalal või puuvaates asuval elemendil avaneb kõiki selle elemendi kasulikke käske sisaldav menüü. Mõne kasutaja jaoks on see alguses pisut segadusttekitav, sest nad on harjunud kasutama rohkem menüüd või tööriistaribasid, kuid pärast parema hiireklõpsuga harjumist kiirendab see sinu tööd tublisti.
Umbrello põhiaken on jagatud kolmeks alaks, mis aitavad anda sulle mudeliga töötades ülevaate kogu süsteemist ja kiire juurdepääsu erinevatele skeemidele.
Neid alasid nimetatakse:
puuvaade
tööala
dokumentatsiooniaken
Umbrello kasutajaliides
Puuvaade asub põhiakna ülemises vasakus osas ja kuvab kõiki skeeme, klasse, tegijaid ja kasutusklasse, millest mudel koosneb. Puuvaade võimaldab saada kiire ülevaate mudelis sisalduvatest elementidest. Samuti võimaldab puuvaade lülituda kiirelt erinevate mudeli skeemide vahel ja lisada mudeli elemente skeemi.
Kui töötad mudeliga, mis sisaldab rohkem kui paari klassi ja skeemi, siis aitab puuvaate elementide kaustadesse jagamise võimalus sul asjade üle kontrolli hoida. Kaustu saab luua valides kontekstimenüüst sobiva käsu ja lohistades vajalikud elemendid õigetesse kaustadesse.
Dokumentatsiooniaken on pisike aken, mis asub Umbrello põhiakna alumises vasakus osas ja annab kiire ülevaate valitud elemendi dokumentatsioonist. Dokumentatsiooniaken on väike seepärast, et see on mõeldud elemendi dokumentatsioonile pilgu peale viskamiseks. Kui soovid näha elemendi dokumentatsiooni detailsemalt, siis ava elemendi omaduste dialoog.
Umbrelloga millegi kasuliku tegemiseks on esimese asjana vaja luua või avada mudel. Umbrello käivitamisel laaditakse viimati kasutatud mudel või luuakse uus tühi mudel (vastavalt seadistustedialoogis määratud eelistustele).
Kui soovid mingil hetkel luua uut mudelit, siis saad seda teha valides menüüst käsu või klõpsates tööriistaribal nuppu Uus. Kui töötad hetkel mudeliga, mida on muudetud, siis küsib Umbrello, kas sa soovid enne uue mudeli laadimist eelmise mudeli muudatusi salvestada.
Mudelit on võimalik igal hetkel salvestada valides menüüst käsu või klõpsates tööriistaribal nuppu Salvesta. Kui soovid salvestada mudelit mõne teise nimega, siis kasuta menüüs asuvat käsku
Ohutuse tagamiseks võimaldab Umbrello salvestada tööd ka kindla ajaintervalli tagant. Kui soovid seda kasutada, siis saad seadista see Umbrello menüüs .
Olemasoleva mudeli laadimiseks võid valida menüüst käsu või klõpsata tööriistaribal nuppu Ava. Tihtikasutatavatele mudelitele juurdepääsu kiirendamiseks on hiljuti kasutatud mudelite nimekiri saadaval menüü alammenüüs .
Umbrello võimaldab töötada korraga vaid ühe mudeliga, nii et kui käsid rakendusel avada järgmise mudeli ja juba avatud mudelit on pärast viimast salvestamist muudetud, siis küsib Umbrello, kas soovid tehtud muudatusi salvestada. Siiski saab alati käivitada kaks Umbrello protsessi ning nende vahel andmeid kopeerida ja asetada.
Mudeli elementide redigeerimiseks Umbrellos on kaks põhimoodust.
mudeli elementide redigeerimine puuvaate kaudu
mudeli elementide redigeerimine skeemi kaudu
Puuvaates saab erinevate elementide kontekstimenüüga peaaegu kõiki mudeli elemente lisada, eemaldada ja muuta. Puuvaates kataloogidele hiire parema nupuga klõpsates näed valikuid, mis lubavad luua erinevat laadi skeeme ning sõltuvalt sellest, kas tegemist on kasutusklassivaate või loogilise vaatega, ka tegijaid, kasutusklasse, klasse jne.
Kui oled oma mudelisse elemente lisanud, saad neid redigeerida ka nende omaduste dialoogis, mille avamiseks klõpsa puuvaates elementidele hiire parema nupuga ja vali kontekstimenüüst Omadused.
Mudelit saab redigeerida ka elemente skeemidel luues või muutes. Sellest räägitakse lähemalt järgmistes osades.
Sinu UML mudel koosneb reast UMLi elementidest ja nendevahelistest sidemetest. Mudelit ei saa siiski otseselt näha, selle vaatamiseks tuleb kasutada skeeme.
Mudeli uue skeemi loomiseks vali lihtsalt vajalik skeemitüüp kirje alt menüüs ja anna sellele nimi. Skeem luuakse ja muudetakse aktiivseks ning sa näed seda kohe puuvaates.
Pane tähele, et Umbrello kasutab ohtralt ka kontekstimenüü võimalusi: sa võid klõpsata hiire . Arvesta sealjuures seda, et kasutusklassiskeeme saab luua ainult kasutusklassikataloogides, teisi skeemitüüpe aga ainult loogilise vaate kataloogides.
nuppga kataloogile puuvaates ja valida vajaliku skeemitüübi kontekstimenüü alammenüüstKui soovid mudelist skeemi eemaldada, muuda see aktiivseks ja vali käsk menüüst . Sama tulemuse saavutab puuvaate skeemide kontekstimenüü käsuga .
Et skeemi kustutamine on üsna ohtlik tegevus, mis võib kaasa tuua suure töö kaotsimineku, kui teed seda kuidagi kogemata, küsib Umbrello enne skeemi tegelikku eemaldamist sinu käest üle, kas oled oma otsuses kindel. Pärast seda, kui skeem on kustutatud ja fail uuesti salvestatud, ei saa kustutamist enam kuidagi tagasi võtta.
Kui soovid olemasolevale skeemile teist nime anda, klõpsa puuvaates hiire
nuppga ja vali kontekstimenüüst ümbernimetamiskäsk.Teine viis skeemile uut nime anda käib omaduste dialoogi vahendusel, mille saab avada kontekstimenüüst käsku Omadused valides või puuvaates topeltklõpsu tehes.
Skeemi kallal töötamise ajal üritab Umbrello sind aidata, rakendades mõningaid lihtsaid reegleid: millised elemendid sobivad millist tüüpi skeemi ja millist laadi seosed saavad nende vahel eksisteerida. Kui oled UMLi asjatundja, ei pane sa seda tõenäoliselt tähelegi, kuid UMLi maailma uustulnukatel aitavad need reeglid luua standardile vastavaid skeeme.
Kui oled skeemi loonud, on aeg asuda seda redigeerima. Kindlasti märkad (ehkki algajatele on see vähemärgatav) erinevust skeemi ja mudeli redigeerimise vahel. Nagu juba selgitatud, on skeem ainult sinu mudeli vaade. Kui näiteks lood klassiskeemi redigeerides klassi, muudad tegelikult nii skeemi kui ka mudelit. Kui aga muudad oma klassiskeemis klassi värvi või muid esitusvalikuid, siis muudad ainult skeemi, kuid mudelis ei muutu midagi.
Üks esimesi asju uut skeemi redigeerima asudes on neisse elementide (klassid, tegijad, kasutusklassid jne.) lisamine. Seda saab teha kahel viisil:
Lohistades olemasolevad elemendid puuvaatest oma mudelisse
Luues uued elemendid mudelis ja lisades nad samal ajal skeemile mõnda diagrammiriba redigeerimistööriista kasutades
Mudelis juba eksisteerivate elementide lisamiseks lohista need lihtsalt puuvaatest sinna, kuhu soovid neid oma skeemis asetada. Valikutööriistaga saad alati liigutada oma skeemi elemente.
Teine skeemile elementide lisamise viis on diagrammiriba redigeerimistööriistade kasutamine (pane tähele, et see lisab ka elemendid sinu mudelisse).
Diagrammiriba asus varem vaikimisi rakenduse akna paremas servas, kuid Umbrello 1.2 viis selle akna ülaserva. Soovi korral võid selle muidugi paigutada ka igasse muusse akna serva või üldse lahti haakida. Ribal saadaolevad tööriistad (nupud) muutuvad sõltuvalt sellest, millist tüüpi skeemiga on tegemist. Parajasti valitud tööriista nupp on ribal aktiveeritud. Valikutööriistale saab alati naasta klahvile Esc vajutades.
Kui valid diagrammiribal tööriista (näiteks klassi lisamise tööriista), võtab hiirekursor risti kuju ning sa võid vastava elemendi lisada mudelisse skeemis klõpsates. Arvesta, et UMLi elementidel peab olema unikaalne nimi. See tähendab, et kui sul on ühel skeemil klass nimega “KlassA” ja sa lisad seejärel klassi lisamise tööriistaga klassi mõnele teisele skeemile, ei saa selle nimeks olla samuti “KlassA”. Kui nad peavad olema erinevad elemendid, peab neil olema ka unikaalne nimi. Kui aga soovid skeemile lisada sama elemendi, ei ole klassi lisamise tööriist sugugi õige vahend. Selleks tuleks klass hoopis vajalikku kohta puuvaatest lohistada.
Kõiki elemente saab kustutada kontekstimenüüst valides.
Taas tasub märkida suurt erinevust objekti eemaldamise vahel skeemilt ja objekti kustutamise vahel mudelist: kui kustutad objekti skeemilt, eemaldad ainult objekti konkreetselt skeemilt, element ise aga on endiselt sinu mudeli osa ja kui seda elementi kasutab mõni muu skeem, ei mõjuta kustutamine neid kuidagi. Kui aga kustutad elemendi puuvaatest, siis kustutad selle ka oma mudelist. Et nüüd pole enam elementi mudelis olemas, eemaldatakse see automaatselt kõigilt skeemidelt, kus see varem oli.
Enamikku oma mudeli ja skeemide UML elemente saab redigeerida nende omaduste dialoogi avades ja seal vajalikke valikuid langetades. Objekti omaduste redigeerimiseks vali selle kontekstimenüüst (klõps hiire nuppga) . Igal elemendil on mitmest kaardist koosnev dialoog, kus antud elemendi valikuid rakendada või muuta. Mõne elemendi, näiteks tegija korral, on valikuid vaid paar tükki (objekti nimi ja dokumentatsioon), mõne elemendi, näiteks klassi korral, saab aga muuta selle atribuute ja operatsioone, määrata, mida skeemil näidata (tervet operatsiooni signatuuri või ainult operatsioonide nime jne.), ning panna paika isegi värvid, mida kasutada antud klassi joonte ja täidise esitamisel skeemil.
Enamiku UML elementide omaduste dialoogi saab avada ka neil topeltkõpsu tehes, kui kasutad valikutööriista (nool). Erandiks on sidemed, mille korral topeltklõps loob ankurpunkti. Sidemete korral tuleb klõpsata hiire nuppga ja avada omaduste dialoog kontekstimenüüst.
Pane tähele, et omaduste dialoogi saab avada ka elementide kontekstimenüüst puuvaates. See võimaldab redigeerida ka skeemide enda omadusi, näiteks seda, kas alusvõrku näidata või mitte.
Ehkki me juba kajastasime kõigi objektide omaduste redigeerimist, väärivad klassid omaette osa, sest nad on mõnevõrra keerukamad ja neil on rohkem valikuid kui ülejäänud UMLi elementidel.
Klassi omaduste dialoogis saab määrata kõike alates selle värvidest kuni operatsioonide ja atribuutideni.
Omaduste dialoogi üldseadistuste kaart ei vaja ilmselt selgitamist: siin saab muuta klassi nime, nähtavust, dokumentatsiooni jne. See kaart on alati olemas.
Atribuutide kaardil saab lisada, redigeerida ja kustutada klassi atribuute (muutujaid). Atribuute saad nimekirjas üles- ja allapoole liigutada kasti kõrval paiknevaid noolenuppe kasutades. See kaart on alati olemas.
Sarnaselt atribuutide kaardile saab operatsioonide kaardil lisada, redigeerida ja eemaldada oma klassi operatsioone. Operatsiooni lisades või muutes tuleb põhiandmed sisestada operatsiooni omaduste dialoogi. Kui soovid operatsioonile parameetreid lisada, tuleb klõpsata nupule , mis avab parameetri omaduste dialoogi. See kaart on alati olemas.
Sellel kaardil saab lisada klassimalle, mis on määratlemata klassid või andmetüübid. Java 1.5 nimetab neid geneerikuteks.
Kaardil Klassi sidemed näeb kõiki antud klassi sidemeid aktiivsel skeemil. Topeltklõps sidemel avab selle omaduste dialoogi ning sõltuvalt sideme tüübist saab seal muuta teatud parameetreid, näiteks määrata mitmesuse ja rolli nime. Kui side ei võimalda midagi muuta, on omaduste dialoog kirjutuskaitstud ning sa saad muuta ainult antud sidemega seotud dokumentatsiooni.
See kaart on saadaval ainult siis, kui avad klassi omaduste dialoogi skeemilt. Avades selle puuvaate kontekstimenüüst, ei ole kaarti näha.
Kaardil Kuvamise seadistused saab määrata, mida skeemil näidatakse. Klassi võib näidata ainult ühe nelinurgana, milles on klassi nimi (see on kasuks, kui sul on skeemil palju klasse või kui sind parajasti ei huvita klasside üksikasjad) või ka täielikult kujul koos pakettide, stereotüüpide ning atribuutide ja operatsioonide, operatsioonide signatuuride ja nähtavusega.
Langeta oma valikud sõltuvalt sellest, kui palju infot soovid skeemil näha. Siin tehtud muudatused mõjutavad ainult skeemi kuvamist. See tähendab, et klassi operatsioonide “peitmine” ei näita neid lihtsalt skeemil, kuid operatsioon ise kuulub endiselt mudeli koosseisu. See kaart on saadaval ainult siis, kui avad klassi omaduste dialoogi skeemilt. Avades selle puuvaate kontekstimenüüst, ei ole kaarti näha, sest seal ei ole kuvamise seadistustel mingit mõtet.
Side seob üksteisega kaks UMLi objekti. Tavaliselt eksisteerib side kahe klassi vahel, kuid teatud tüüpi sidemed võivad olla ka kasutusklasside ja tegijate vahel.
Sideme loomiseks vali vajalik tööriist diagrammiribalt (tavaline side, üldistus, agregatsioon jne.) ning klõpsa algul esimesel sidemes osaleval elemendil ja seejärel teisel. Pane tähele, et vaja on kaht klõpsu, üks ühel ja teine teisel sidemega ühendataval objektil, aga mitte lohistamist ühe objekti juurest teise juurde.
Kui üritad luua sideme, mis ei vasta UMLi spetsifikatsioonile, keeldub Umbrello seda tegemast ja sa näed veateadet. Nii juhtub näiteks siis, kui klassist A on juba olemas üldistus klassini B ja sa proovid siis luua veel ühe üldistuse klassist B klassini A.
Hiire parema nupu klõpsuga sidemel ilmub kontekstimenüü, kust saab valida mitmesuguseid toiminguid. Kui soovid sideme kustutada, valigi kontekstimenüüst . Samuti võib sealt valida ning sõltuvalt sideme tüübist võib seejärel olla võimalik redigeerida sideme atribuute, näiteks rolli ja mitmesust.
Vaikimisi luuakse sidemed sirgjoonena, mis ühendab skeemil kaht objekti.
Sideme kuju muutmiseks tuleb sellel vajalikus kohas teha topeltklõps. Sellega lisatakse ankurpunkt (seda näidatakse sideme valimisel sinise punktina), mida liigutades saabki muuta sideme kuju.
Kui soovid ankurpunkti eemaldada, tee selle peal hiirega topeltklõps.
Pane tähele, et ainus viis sideme omadusi muuta käib läbi kontekstimenüü. Kui teed sellel topeltklõpsu, siis erinevalt teistest UMLi objektidest lisab see vaid sidemel ankurpunkti.
Märkused, tekstid ja kastid on elemendid, mis võivad eksisteerida mis tahes tüüpi skeemil ja millel pole tegelikku semantilist väärtust, kuid millest on abi lisakommentaaride või selgituste pakkumiseks, mis muudab skeemid paremini arusaadavaks.
Märkuse või teksti lisamiseks vali diagrammiribalt vastav tööriist ja klõpsa skeemil kohas, kuhu soovid kommentaari lisada. Teksti saab redigeerida elementi kontekstimenüü abil avades või märkuste puhul ka neil topeltklõpsu tehes.
Ankruid kasutatakse märkuse ja UMLi elemendi kokkusidumiseks. Tavaliselt tehakse märkus mõne klassi või sideme selgitamiseks või kommenteerimiseks ning sel juhul on väga kasulik lisada ankur, mis näitab, et see märkus “kuulub” just konkreetse elemendi juurde.
Ankru lisamiseks märkuse ja UMLi elemendi vahele vali diagrammiribal ankrutööriist. Seejärel klõpsa kõigepealt märkusele ja seejärel UMLi elemendile, millega soovid märkust ühendada.
Umbrello on UMLi modelleerimisvahend ja seepärast on selle põhiülesandeks abistada süsteemi analüüsi ja disaini loomisel. Disainist teostusse liikumise lihtsustamiseks võimaldab Umbrello genereerida lähtekoodi erinevatesse programmeerimiskeeltesse. Kui soovid alustada UMLi kasutamist olemasoleva C++ projekti juures, siis aitab Umbrello luua süsteemi mudelit olemasolevast lähtetekstist, analüüsides lähteteksti ja importides sellest leitud klassid.
Umbrello võimaldab UMLi mudeli põhjal genereerida lähtekoodi erinevate programmeerimiskeeltes. Genereeritud kood koosneb klasside kirjeldustest koos meetodite ja atribuutidega, nii et saad “täita lüngad”, kirjutades juurde klasside operatsioonide funktsionaalsuse.
Umbrello 1.2 toetab lähtekoodi genereerimist järgmistesse keeltesse: ActionScript, Ada, C++, CORBA IDL, Java™, JavaScript, PHP, Perl, Python, SQL ja XMLSchema.
Koodi genereerimiseks Umbrello abil pead kõigepealt looma või laadima vähemalt ühte klassi sisaldava mudeli. Kui oled koodikirjutamiseks valmis, siis vali abimehe käivitamiseks menüüst käsk , mis juhatab sind läbi koodigenereerimise protsessi.
Esimene samm on nende klasside valimine, mille jaoks soovid koodi genereerida. Vaikimisi on kõik mudeli klassid valitud ja sul on võimalik eemaldada mittevajalikud klassid parempoolses nimekirjas olevast valikust vasakpoolsesse nimekirja.
Järgmisel sammul võimaldab abimees muuta koodi genereerimiseks kasutatavaid parameetreid. Saadaval on järgmised parameetrid:
Koodi genereerimise seadistused Umbrellos
Säte Dokumentatsiooni kommentaarid lisatakse isegi siis, kui need on tühjad käseb koodigeneraatoril lisada /** blah */ stiilis kommentaarid isegi siis, kui kommentaariplokid on tühjad. Kui lisasid mudeli klassidele, meetoditele või atribuutidele dokumentatsiooni, siis kirjutab koodigeneraator need, arvestades rakenduse Doxygen reegleid. Selle sätte märgistamisel lisatakse kõigile klassidele, meetoditele ja atribuutidele kommentaariplokid isegi siis, kui neil puudub mudelis dokumentatsioon. Sellisel juhul pead ise hiljem dokumentatsiooni otse koodi kirjutama.
Sektsioonide kommentaarid lisatakse isegi siis, kui need on tühjad käseb Umbrellol lisada lähtekoodi kommentaarid, mis eraldavad erinevaid klassi sektsioone, näiteks “public methods” või “Attributes” enne vastava sektsiooni algust. Selle sätte märgistamisel lisatakse kõik sektsioone märgistavad kommentaarid isegi siis, kui klassi vastavad sektsioonid on tühjad. Näiteks lisatakse kommentaar “protected methods” isegi siis, kui klassis pole ühtegi kaitstud meetodit.
Kõik genereeritud failid kirjutatakse kataloogi: siin pead valima kataloogi, millesse Umbrello paneks genereeritud lähtekoodi failid.
Säte Kaasatakse päisefailid kataloogist võimaldab lisada iga genereeritud faili algusse päiseid. Päisefailid võivad sisaldada näiteks teavet autoriõiguse ja litsenseerimise kohta ning muutujaid, mis asendatakse genereerimise käigus. Täpsema info saamiseks muutujate kasutamise kohta päisefailides vaata Umbrelloga kaasatulevaid näidismalle.
See säte ütleb Umbrellole, mida teha siis, kui loodav fail on sihtkataloogis juba olemas. Umbrello ei oska muuta olemasolevaid koodifaile, seega pead valima, kas kirjutada olemasolev fail üle, jätta selle konkreetse faili genereerimine vahele või käskida Umbrellol kasutada uut nime. Kui valid uue nime kasutamise, siis lisab Umbrello failinimele järelliite.
Kolmandas ja viimases sammus näitab abimees koodi genereerimise protsessi olekut. Klasside failide genereerimiseks pead klõpsama vaid nuppu "Genereeri".
Pane tähele, et koodi genereerimise abimehes valitud seadistused kehtivad vaid selle genereerimise ajal. Koodi genereerimise abimeest järgmine kord käivitades pead valima kõik seadistused uuesti (päisefailide kataloog, ülekirjutamise poliitika jne). Koodi genereerimise vaikeväärtusi saab sättida menüü käsu valimise järel avaneva seadistustedialoogi kaardil Koodi genereerimine.
Kui oled seadistustest kõik parameetrid paika pannud ja soovid genereerida koodi ilma abimeest kasutamata, siis vali menüüst käsk . See käsk genereerib koodi kõigile mudelis olevatele klassidele.
Umbrello oskab olemasoleva projekti lähtekoodist klasse importida, aidates nii sul süsteemi mudelit luua. Umbrello 1.2 toetab ainult C++ lähtekoodist importimist, kuid uuematesse versioonidesse peaks lisanduma ka teiste keelte toetus.
Klasside mudelisse importimiseks vali menüüst käsk . Vali failidialoogist C++ klasside kirjeldusi sisaldavad failid (tavaliselt laiend .h või .hxx) ja klõpsa nuppu OK. Klassid imporditakse mudelisse ja leiad nad mudeli puuvaatest. Pane tähele, et Umbrello ei loo ise ühtegi skeemi klasside näitamiseks, klassid imporditakse vaid skeemi, et saaksid neid hiljem kasutada sobivates skeemides.
Lähtekoodi importimise menüükäsk Umbrellos
See peatükk annab lühiülevaate mõningatest Umbrello lisafunktsioonidest.
Lisaks tavalisele objektide lõikamisele ja erinevate skeemide vahel kopeerimisele ning asetamisele toetab Umbrello ka objektide kopeerimist PNG-piltidena, mis võimaldab lisada neid ükskõik millist teist tüüpi dokumenti. Selle funktsiooni kasutamiseks ei pea spetsiaalselt midagi tegema, lihtsalt vali skeemilt objekt (klass, tegija vms) ja kopeeri see (Ctrl-C või kasutades menüüd), seejärel ava näiteks KWordi dokument (või mõni teine rakendus, millesse saab pilte asetada) ja vali . See on suurepärane funktsioon skeemi osade eksportimiseks lihtsate piltidena.
Ka tervet skeemi on võimalik pildina eksportida. Selleks vali lihtsalt eksporditav skeem ja seejärel menüüst käsk .
Umbrello võimaldab skeeme eraldi trükkida. Vajuta rakenduse tööriistaribal nuppu Trüki või vali menüüst käsk . Menüükäsku kasutades avatakse standardne KDE trükkimisdialoog, millest saad siis skeeme trükkida.
Projekti alustas Paul Hensgen ühena oma ülikooliprojektidest, rakenduse algseks nimeks oli UML Modeller. Paul tegi kogu arendustöö kuni 2001. aasta lõpuni, mil ilmus rakenduse versioon 1.0.
Versioon 1.0 sisaldas mahukat funktsionaalsust ja pärast seda, kui Pauli ülikool oli projekti üle vaadanud, said ka teised arendajad projektiga ühineda, alustades UML Modellerile hinnalise kaastöö tegemist. Näiteks vahetati binaarne failivorming XML™ põhise vastu, lisati uusi UML-skeemide tüüpe, koodi genereerimine ja koodi importimine.
2002. aasta suvel lahkus Paul projektist, kuid nagu vabale ja avatud lähtekoodiga tarkvarale kombeks, jätkati rakenduse paremaks muutmist erinevatest maailma paikadest pärit arendajate abiga. 2002. aasta septembris sai projekti uueks nimeks Umbrello. Põhjuseid selleks oli mitu, tähtsaimaks neist oli, et “uml” — nagu rakendust tavaliselt tunti — oli liiga üldine ja põhjustas mõnedes distributsioonides probleeme. Teiseks tähtsaks põhjuseks oli, et arendajate arvates oli Umbrello palju lahedam nimi.
Umbrello arendus ja ka arutlused selle üle, millistes suundades peaks rakendus tulevikus liikuma, on avatud ja leiavad aset Internetis. Kui sa soovid projektile kaastööd teha, siis ära karda võtta arendajatega ühendust. Umbrello arendamisele on võimalik erinevatel viisidel kaasa aidata:
teatades vigadest ja andes nõu, kuidas rakendust paremaks teha
parandades vigu ja lisades uut funktsionaalsust
kirjutades head dokumentatsiooni või tõlkides seda teistesse keeltesse
ja loomulikult...meiega koos programmeerides!
Nagu näed, saab kaastööd teha väga erineval viisil. Kõik viisid on väga tähtsad ja igaüks on oodatud osalema.
Umbrello arendajatega on võimalik ühendust võtta e-posti aadressil (uml-devel AT lists.sourceforge.net)
.
Autoriõigus 2001: Paul Hensgen
Autoriõigus 2002, 2003: Umbrello autorid. Täpsem info aadressil http://uml.sf.net/developers.php.
Käesolev dokumentatsioon on litsenseeritud vastavalt GNU Vaba Dokumentatsiooni Litsentsi tingimustele.
Käesolev programm on litsenseeritud vastavalt GNU Üldise Avaliku Litsentsi tingimustele.
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team