UML keel Keel visuaalseks modelleerimiseks. Ajalugu ja skeemide nimekiri
Mudel Mudel on tegelikkuse lihtsustatud, üldistatud esitus. Mudel peab aitama nähtust paremini mõista; tegevusi planeerida. Mudel on kvaliteetne, kui ta: kirjeldab täpselt uuritavat süsteemi; on arusaadav teistele inimestele (mitte ainult modelleerijale).
Modelleerimiskeel Modelleerimiskeel (modeling language) on (graafiline) vahend, mida kasutatakse erinevate mudelite ja kavandite loomiseks. Modelleerimine on mudelite loomine. Tarkvara kavandamisel luuakse erinevaid mudeleid nii tarkvarast kui valdkonnast. Luua struktuur probleemi lahendamiseks. Mõelda läbi erinevad lahendused, leida neist sobivaim. Suhelda teistega inimestega.
Objekt-orienteeritud modelleerimismeetodid Tekkisid 1980-te aastate keskel peale OO-keelte tulekut (varem struktuursed meetodid). Aastatel 1988 1994 palju OOA (analüüs) ja OOD (disain/kavandamine) raamatuid. Kasutati erinevaid meetodeid ja tähistusi: Booch'i meetod; Rumbaugh meetod (object modeling technique OMT); Jacobson'i meetod (object-oriented software engineering OOSE); Coad'i and Yourdon'i meetod; Wirfs-Brock'i meetod;...
Standardiseerimine Mis on üldisemalt vaja standardeid? Konkreetse kontekstis: meetodite paljusus, erinevate meetodite pooldajate omavaheline leppimatus ja vastastikune mittemõistmine. Q: What is the difference between a methodologist and a terrorist? A: You can negotiate with a terrorist.
UML UML (Unified Modeling Language) on graafiline modelleerimiskeel, millega saab OO-tehnikas kirjeldada süsteemi elemente, mõisteid ja seoseid; kirjeldada, visualiseerida ja dokumenteerida tarkvarasüsteemi detaile. UML on 1997 a OMG (Object Modeling Group) poolt tunnustatud tehnoloogia ning 2005 a kinnitatud ISO poolt standardina. Arendusprotsess ei olnud UML-i loojate eesmärk ja UML ei ole seotud ühegi arendusprotsessiga.
Vaated süsteemile Nii tarkvarasüsteemile kui reaalelule saab vaadata erinevatest vaatenurkadest. Üks võimalik jaotus: Staatiline ehk struktuurivaade: Keskendub süsteemi struktuurile, milest koosneb, kuidas osad seotud, kasutab objekte, atribuute, seoseid. Dünaamiline ehk käitumisvaade: Keskendub süsteemi ja tema osade käitumisele ja dünaamikale, süsteemis toimuvatele protsessidele, objektide olekute muutumisele.
UML-i skeemid UML-i skeemid (ingl diagram) võib sarnaselt jaotada kaheks: struktuuriskeemid struktuurimudelite koostamiseks; käitumisskeemid käitumismudelite koostamiseks. Järgneval slaidil on skeem UML skeemide jaotuse kohta, allikas: http://commons.wikimedia.org/wiki/file:uml_diagram2.png
UML-i skeemid
Klassiskeem. Skeemi elemendid ja nende tähendus. Valdkonnamudel.
Üldist klassiskeemist Klassiskeem (class diagram) on staatiline skeem ehk struktuuriskeem. Klassiskeem kirjeldab süsteemis olevate objektide tüüpe ja mitmesuguseid struktuurseid seoseid nende vahel. Klassiskeem näitab klassi omadusi, klassi operatsioone ja piiranguid objektide vahelistele seostele. Klassi omadusi ja operatsioone nimetatakse ka erisus (feature).
Skeemi elemendid Klassiskeem on elementide poolest väga rikas. Kõiki elemente ma ei käsitle. Olulisemad osad, milleta ei saa: Klass (class) pideva joonega ristkülik, mis on jaotatud kolmeks osaks: klassi nimi klassi atribuudid (omadused) klassi operatsioonid (meetodid) Seos (relationship) joon, millega ühendatakse klassid ja millel võib olla nimi ning suund (>).
Nimi Klassile antav nimi kirjutatakse UML-is soovituslikult suure algustähega. Nimeks tuleb valida nimisõna, ei sobi tegevusnini (nt registreerimine ). Nimi peab pärinema modelleeritavast keskkonnast (eriti valdkonnamudelil). Nimi ei tohi olla mitmeti mõistetav. Hästi valitud nimi lihtsustab mudeli mõistmist.
Omadused Omadused (properties) iseloomustavad klassi mingil viisil. Nad on klassi struktuursed erisused. Ingl keeles kasutatakse sõna feature Erisusi on kahte liiki: atribuudid (attributes) sidemed (associations) Ehkki skeemil on nad kujutatud erinevalt, võib nende abil esitada/kirjeldada samu asju. Atribuudid on kirjas klassi sees. Sidemed on teiste klassidega, kuid ka läbi sideme saab klassi kohta midagi öelda. Teine kord kasutatakse mõisteid atribuut ja omadus ka samas tähenduses.
Atribuudi kirjeldus (1) Atribuuti esitatakse tekstina klassi ristküliku keskmises osas. Atribuudi üldkuju: visibility name: type multiplicity = default {property-string} nähtavus nimi: tüüp võimsustik = vaikeväärtus {omaduse-string} Ainus kohustuslik osa sellest on atribuudi nimi. Tihti lisatakse ka (andme)tüüp.
Atribuudi kirjeldus (2) nähtavus kas atribuut on nähtav väljaspool klassi; + avalik (public), # kaitstud (protected), - privaatne (private); nimi - kuidas klass saab atribuudile viidata; tüüp - piirangud atribuudile omistatavate väärtuste osas, sisuliselt andmetüüp; võimsustik mitu atribuudi eksemplari saab olla; vaikeväärtus atribuudi võimalik algväärtus;
Operatsioonid e meetodid on klassi poolt tehtavad tegevused. Klassil peavad olema operatsioonid tööks oma atribuutidega (nn get ja set). Skeemile neid tavaliselt ei lisata. Operatsioonid kirjeldatakse väljundtüübi (return-type), nime ja argumentide kaudu Operatsiooni signatuuri süntaks: nähtavus nimi(argumentide-loetelu): väljundtüüp {omaduse string} Ainsana on nendest kohustuslik operatsiooni nimi.
Operatsiooni kirjeldus nähtavus saab olla + (public), # (protected), - (private) nimi on tavaliselt string (NB - sisukas) argumentide loetelu koosneb enamasti argumentide nimedest ja tüüpidest; väljundtüüp tulemuse andmetüüp, mis sõltub realisatsioonikeelest. omaduse string täiendav iseloomustus
Seosed Seosed (relationships) kirjeldavad klassiskeemil seda, millised klassid ja kuidas omavahel seotud on. Mõned klassiskeemil kasutatavaid seoseid on: side (association) vastavate klasside objektide vahel on ühendus üldistus (generalization) seos üldisema ja spetsiifilisema klassi vahel sõltuvus (dependency) üks klass sõltub teisest klassist
Side (1) Side (association) on seos kahe klassi vahel. Side on enamasti kahesuunaline, st kumbki klass on teise olemasolust ja nende vahelisest seosest teadlik. Sidet tähistatakse skeemil pideva joonega kahe klassi vahel. Sidemel (kui erisusel) võib olla: nimi; rollinimi; võimsustik. Võivad eksisteerida ka ühesuunalised sidemed, siis on kasutusel nool, mis näitab tuttava klassi poole.
Nimi Sidemele on võimalik nime anda kahel viisil: määrates rollid ühele või mõlemale sideme otsale (nimisõnana) nimi koosneb rollinimedest lisades sidemele nimeks tegusõna
Võimsustik Võimsustik (multiplicity) mitu ühe klassi isendit on seotud teise klassi ühe isendiga. üks number (1, 13) täpne objektide arv klassis; vahemik objektide arv jääb näidatud piiridesse: 1.. * - üks või rohkem; 0.. *, * - null või rohkem; 0.. 1 null või üks; Võimsustik on seose mõlemas otsas (st teises otsas on vastuseks 1).
Roll Roll (role) on nimi ühes või teises sidemeotsas, mis selgitab, millist osa klass teise klassi elus etendab. Roll ei pruugi alati olla sama kui klassi ametlik nimi. Üks ja sama klass võib erinevatele klassidele erinevaid rolle etendada. Rolli lisamine võib (aga ei pruugi alati) aidata mudelit paremini mõista. Rolli pole vaja alati lisada. Samas võib ta tuua mudelisse juurde olulise mõiste.
Üldistuse seos Üldistuse (generalization) abil saadakse ülemklassid ja alamklassid. Klasside sarnasused paigutatakse ühte ülemklassi (superclass), alamklassideks (subclass) on konkreetsed klassid. Ülemklass on mitme klassi üldistus, nende ühisosa. Alamklasside abil määratakse vastavate klasside erilised omadused. Seost tähistatakse skeemil suure tühja kolmnurkse noolega. Sellel seosel on alati suund. Realisatsioonisvaates vastab sellele pärimine.
Sõltuvuse seos Kahe klassi vahel on sõltuvus (dependency), kui ühe klassi kirjelduse muutus võib põhjustada muudatust teises klassis. Sõltuvusi näidatakse katkendjoonega, millel nool otsas. Seni kirjeldatu pole kaugeltki kõik. Klassiskeemi elementide hulgas on veel mitmeid spetsiifilisi seoseid, nagu ka eritüüpi klasse.
Vaated Klassiskeeme on võimalik kasutada arenduse erinevatel etappidel ja esitada sellega: Mõiste- või valdkonnavaadet näidatakse kasutatavaid valdkonna mõisteid ja seoseid (nn valdkonnamudel domain model). Spetsifikatsioonivaadet näidatakse klasside liideseid ehk seda, mis väljapoole nähtav. Realisatsioonivaadet klassid, atribuudid, meetodid, mis tegelikult realiseeritakse. Enim kasutatavad on 1. ja 3. Kuid nende ideed ei tohiks segi ajada ja ühele skeemile panna!
Kasutajanõuded. Kasutusmalliskeem.
Kasutusmalliskeem UML-i üks käitumisskeemidest on kasutusmalliskeem (use-case diagram) Kasutusmalliskeemi abil saab luua üldise pildi sellest, kes süsteemi kasutavad ja millist funktsionaalsust vajavad. Kasutusmalliskeem annab väga üldise pildi ja ei sobi ainukeseks nõuete esitamisvormiks.
Kasutusmalliskeemi osad Olulisemad skeemi elemendid on: Tegija e roll (actor) tarkvarasüsteemi kasutaja. Tegija ei pea olema inimene, võib olla teine süsteem, mis antud süsteemilt midagi tahab. Skeemil: kriipsujuku nimega (nimisõna). Kasutusmall (use case) - funktsioon, mida tegija süsteemis teha saab. Skeemil: ellips, sees nimi (tegusõna, tegevusnimi). Link (link) - seos tegija ja kasutusmalli vahel ning kasutusmallide vahel (vt järgmine slaid).
Erinevad seosed Side (associoation) tegija ja kasutusmalli vahel. Skeemil: pidev joon. Üldistus (generalization) seos spetsiifilisema ja üldisema kasutusmalli või tegija vahel. Skeemil: joon, suur seest tühi nool otsas. Pigem ei soovitata kasutada. Sisaldab (include) põhikasutusmalli käitumisse lisatakse teise kasutusmalli tegevused. Skeemil: katkendjoon lahtise noolega + <<include>>, suund lisatava malli poole. Pigem ei soovitata kasutada. Laiendab (extends) laiendav kasutusmall täiendab põhikasutusmallis olevat käitumist. Skeemil: Katkendjoon lahtise noolega + <<extends>>, suund baasmalli poole. Pigem ei soovitata kasutada.
Kasutusmalliskeem