Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuMarjatta Manninen Muutettu yli 9 vuotta sitten
1
Ohjelmistotekniikka ja projektinhallinta, 4 op
UML-kieli Seppo Räsänen Savonia-ammattikorkeakoulu Terveysala, kuopio
2
UML-kieli UML on oliokeskeisen ohjelmistotuotannon mallinnukseen liittyvä kuvauskieli UML (Unified Modeling Language) on standardoitu mallinnuskieli: alunperin mm. ohjelmistojen kuvaamiseen ja dokumentointiin sitten käyttöalue laajentunut mm. liiketoimintaprosessien mallinnukseen Mallinnusohjelmia on runsaasti tarjolla Rational Rose ( System Architect ( Visual UML ( Poseidon ( Prosa ( Jotkin piirto-ohjelmat tukevat UML-notaatiota Tässä opintojaksossa käytetään MS-Visio –nimistä ohjelmaa
3
UML-kieli Structured Analysis (SA) De Marcon mukaan
Tietovuokaavioita, luvulla Structured Analysis and Design For Real Time Systems , SA/SD/RT Coad/Yordon Ohjaus-tietomuunnokset tulivat mukaan kaavioihin Reaaliaikaisia sovelluksia 1980-luvun lopussa Object Modeling Technique, OMT Oliomallinnus 1990-luvun alussa
4
UML-kieli Unified Modeling Language, UML 1990-luvun lopussa
UML on kolmen 90-luvun alkupuolen suosituimman oliomallinnusmenetelmän pohjalta rakennettu tämän hetken suosituin oliomallinnuskieli. James Rumbaughin kehittämän OMT:n , Grady Boochin Booch-menetelmän sekä Ivar Jacobsonin OOSE:n Rumbaugh, Booch ja Jacobson johtavat UML:n kehitystä Rational Software –yrityksen palveluksessa, mutta UML:n standardoinnista vastaa nykyisin yli 800 ohjelmistoyrityksen yhteenliittymä, Object Management Group (OMG). osoitteessa tarkat kuvaukset ja standartointi
5
UML-kieli Olio (object) Luokka (class) Perintä (inheritance)
On ohjelmiston perusyksikkö sisältää joukon loogisesti yhteenkuuluvaa tietoa ja toiminnallisuutta kommunikoi keskenään lähettämällä ja vastaanottamalla viestejä. Viestin vastaanottaminen suorittaa määritellyn toiminnon vastaanottavassa oliossa käytetään ohjelmistosuunnittelussa esittämään jonkun abstraktin tai reaalimaailman käsitteen ilmentymää ohjelmistossa Luokka (class) määrittelee jonkun tietyn oliojoukon yhteiset piirteet olio on luokan ilmentymä, instanssi Perintä (inheritance) mahdollistaa uusien luokkamääritysten tekemisen vanhojen määritysten pohjalta periyttämisen ansiosta on mahdollista käyttää uudestaan jo tehtyä ohjelmakoodia uusien luokkien pohjana Moniperintä (multiple inheritance) mahdollistaa uuteen luokkaan periyttämisen useista kantaluokista. moniperintä ei ole mahdollista kaikissa oliokielissä, esimerkiksi C++-kielessä se on tuettu.
6
UML-kieli Kapselointi (encapsulation) -termiä käytetään kahdessa merkityksessä kapseloinnin ideana on datan ja käyttäytymisen kokoaminen yhteen yksikköön, olioon merkitys lisää tähän vielä tiedonpiilotuksen: olion sisäisiin muuttujiin ei (pääsääntöisesti)päästä suoraan käsiksi olion ulkopuolelta, jolloin ohjelmointivirheiden määrä vähenee Metodi (method), jäsenfunktio (member function) tai operaatio (operation) tarkoittaa luokassa määriteltyä aliohjelmaa, joka käsittelee olion tietoa Attribuutti (attribute), jäsenmuuttuja (member variable) tai kenttä (field) tarkoittaa luokassa oliolle määriteltyä muuttujaa, joka tallentaa jonkun olioon liittyvän tietoalkion Rakentaja, muodostin (constructor) on metodi, jota kutsutaan oliota luotaessa alustaa olion jäsenmuuttujien alkuarvot Hajottaja, tuhoaja tai purkaja (destructor) on metodi, jota kutsutaan olion tuhoamiseksi vapauttaa olion varaamat resurssit (keskusmuisti)
7
UML-kieli class cAsiakas //luokan määritys { public: void KysyNimi(); //metodi void KysyPuhNo(); private: //kapselointia char etunimi[20], sukunimi[20], puhNo[15]; //attribuutteja }; class cLuottoAsiakas : public cAsiakas //periytyminen cLuottoAsiakas(long, long); //muodostin ~cLuottoAsiakas(); //tuhoaja long HaeLuottoraja(); long KysyEraantyneet(); void AsetaEraantyneet(long); private: long eraantyneet, luottoraja; …………………………..
8
UML-kieli void cAsiakas::KysyNimi() //metodin toteutus { cout << "Anna asiakkaan nimi (etunimi sukunimi): "; cin >> etunimi >> sukunimi; } …………………………………….. int main(int argc, char* argv[]) // pääohjelma ……………….. cAsiakas olio1; //luokan instanssi, olio olio1.KysyNimi(); //metodikutsu // esim. olio1.nimi=”Ville”; EI TOIMI, kun attribuutti on kapseloinnin avulla piilotettu …………………………….. return 0;
9
UML-kieli UML kaavioita (diagram) on määritetty kahdeksan Use Case
Käyttötapauskaavio: kuvaa ulkoiset toimijat ja heidän yhteydet sovelluksen käyttötapauksiin Sequence Viestiyhteyskaavio: kuvaa olioiden välistä dynaamista viestinvälitystä (=mitä viestejä olioiden välillä on, kun toteutetaan eri toimintoja) Class Luokkakaavio: kuvaa järjestelmän luokkarakenteen ja luokkien väliset yhteydet (luokka=järjestelmän käsittelemä asia) State Tilakaavio: täydentää luokan kuvausta, kuvaa luokan kaikki mahdolliset tilat, joihin luokan ilmentymä (=olio) joutuu sekä kuvaa tilasiirtymän (=mikä aiheuttaa olion siirtymisen tilasta toiseen) Activity Toimintokaavio: kuvaa tapahtumien kulun aikajärjestyksessä, käytetään operaatioon liittyvien tapahtumien kuvaamisessa (vastaavanlainen kuin uimaratamallin kaavio) Collaboration Yhteistyökaavio: kuvaa luokkien välistä yhteistyötä, viestien välitystä (kuvaa samaa asiaa kuin viestiyhteyskaavio) Component Komponenttikaavio: kuvaa lähdekoodin fyysisen rakenteen (lähdekoodi muodostuu useista eri komponenteista ja niiden välisistä suhteista) Deployment Käyttöönottokaavio: kuvaa järjestelmän laitteiston ja ohjelmiston fyysisen arkkitehtuurin
10
UML-kieli Tavoitenäkökulma (Käyttötapauskaaviot)
Kuvaukset käyttäjän/asiakkaan/liiketoimintaprosessin näkökulmasta Sovelluksen suhde ympäristöönsä Toimintonäkökulma (Vuorovaikutuskaaviot) Kuvaukset ohjelmiston toiminnallisuuden ja hajautuksen näkökulmasta Informaationäkökulma (Luokka- ja tilakaaviot, er-kaaviot) : Kuvaukset ohjelmiston tietosisällön näkökulmasta. Mitä tietoa sovellus käsittelee?
11
UML-kieli Rakennenäkökulma (Komponentti- ja sijoittelukaaviot)
Kuvaukset ohjelmiston rakenteen eli arkkitehtuurin näkökulmasta Liitäntä tietojenkäsittelyresursseihin Tekniikkanäkökulma Kuvaukset toteutustekniikan ja testauksen näkökulmasta. Teknologiavalinnat, testitapaukset
12
UML-kieli Iteratiivinen prosessi
1. Mallinnuskierros -> ohjelmiston toteutusta (v. 0.1) Käyttötapaukset (Use Case Diagram) Luokkakaaviot (Class Diagram) Yhteistoimintakaaviot (Collaboration Diagram) 2. Mallinnuskierros -> ohjelmiston toteutusta (v. 0.2) Tilakaaviot (State Chart Diagram) Sekvenssikaaviot (Message Sequence Diagram) 3. Mallinnuskierros -> ohjelmiston toteutusta (v. 0.3) 4. Mallinnuskierros -> ohjelmiston toteutusta (v. 0.4) Komponenttikaaviot (Component Diagram) Sijoittelukaaviot (Deployment Diagram)
13
UML-kieli Elinkaaren vaiheet ja UML-kaaviot?
OOA (Object Oriented Analysis) - määrittely Käyttötapauskaaviot (use case diagram) Luokkakaaviot (class diagram) Tilakaaviot (statechart diagram) Yhteistoimintakaaviot (collaboration diagram) OOD (Object Oriented Design) - suunnittelu Luokkakaaviot (detailed class diagram) Tilakaaviot (detailed statechart diagram) Sekvenssikaaviot (sequence diagram) Sijoittelukaaviot (deployment diagram) Komponenttikaaviot (component diagram) OOP (Object Oriented Programming) - toteutus Rajapintakuvaukset , lähdekoodi, teknologia,...
14
UML-kieli Korkean tason toiminnalisuus Ohjelmisto- kehitys Käyttö-
tapauskaaviot Oliokaaviot Sekvenssi- kaaviot Yhteistyö- kaaviot Sijoittelu- kaaviot Luokka- kaaviot Tilakaaviot Aktiviteetti- kaaviot Komponentti- kaaviot Rakenne Staattinen malli Käyttäytyminen Dynaaminen malli
15
UML-kieli
16
UML-kieli
17
UML-kieli
18
UML-kieli
19
UML-kieli Miten olion tai luokan tunnistaa? Oliot ovat ohjelman osia
Oliot ovat luokan ilmentymiä Luokat muodostuvat käsitteistä (substantiivit) ”Miesasiakas ostaa ruusukimpun. Asiakkaan nimi on Ville. Ruusukimppu sisältää 4 punaista ruusua… Asiakkaita ovat yksittäiset henkilöt ja yritykset….” Luokkia: asiakas, henkilö, yritys, ruusukimppu Periytyminen: henkilö ja yritys periytyvät asiakkaasta Attribuutteja: sukupuoli, nimi, ruusujen määrä, ruusujen väri Olioita: Ville (henkilöluokasta) Metodeja: ostaa(kukka, määrä)
20
UML-kieli Use Case diagram, käyttötapauskaavio
Koostuu käyttäjistä sekä käyttötapauksista käyttäjien ja järjestelmän välillä Suunnittelun lähtökohtana käyttäjän näkökulma ( käyttäjän rooli erittäin tärkeä) Selkeä ja helppo ymmärtää suunnittelija, asiakas ja järjestelmän käyttäjät ymmärtävät yhteinen työväline asioiden tarkentamiseksi (iterointi) Kuvaus toimii toteutuksen rajauksena!!!! Jäsentää ja pilkkoo toteutusta
21
UML-kieli
22
UML-kieli Käyttäjä, rooli – Actor: Use Case Kuvataan ”tikku-ukkona”
Käyttäjät eivät ole tietojärjestelmän osia Käyttäjä voi syöttää tietoa järjestelmään / vastaanottaa tietoa järjestelmästä Voi olla henkilö, laite tai toinen sovellus Käyttäjä on aina sovelluksen ulkopuolinen olio, joka käyttää kohdesovelluksen palveluja
23
UML-kieli Käyttötapaus – Use Case: Use Case Kuvataan ovaalina
Käyttötapaus kuvaa toimintaa tai toiminnan osaa Käyttötapaus voi olla myös tapahtuma, johon tulee reagoida Kuvaa käyttäjän ja tietojärjestelmän välistä vuorovaikutusta Käyttötapaus voi olla laaja kokonaisuus tai pieni yksityiskohta Käyttötapaus on kerralla suoritettava toimintoketju alusta loppuun (työnkulku) Käyttötapauksella on määritelty lopputulos
24
UML-kieli Use Case Yhteystyypit
25
UML-kieli Use Case Yksisuuntainen kommunikointisuhde käyttäjän ja käyttötapauksen välillä kuvataan siis yksisuuntaisella nuolella Kaksisuuntainen kommunikointisuhde kuvataan joko pelkällä viivalla tai sitten kaksisuuntaisella nuolella Nuolen suunta kertoo, kumpi osapuoli käynnistää kommunikoinnin (käynnistäjästä poispäin)
26
UML-kieli Use Case Hyvän käyttötapauksen ominaisuuksia:
Käyttötapaus alkaa jonkun käyttäjän aloitteesta ja päättyy, kun järjestelmä on tuottanut lisäarvoa käyttäjälleen Hyvän käyttötapauksen ominaisuuksia: ymmärrettävyys: asiakkaan ja järjestelmän tulevien käyttäjien tulee ymmärtää ne. Kuvausten oltava mahdollisimman konkreettisia kuvaa asiakasvaatimuksia: vältetään ottamasta kantaa toteutukseen. ”käyttäjä identifioi itsensä” on parempi kuin ”käyttäjä identifioi itsensä syöttämällä kuusi kirjaamisen käyttäjätunnuksen ja nelinumeroisen salasanan. testattavuus: käyttötapaukset muodostavat perustan järjestelmätestaukselle. Käyttötapauksen oltava kokonaisuus, joka voidaan testata testausvaiheessa koko: ei saa olla liian laaja. A4-arkillinen on riittävä koko. Käyttötapausten määrä 5-9; ihmissilmä havainnoi vielä tämän määrän kerralla sopiva tarkkuus: kattavat tärkeimmät osat toteutuksesta. Kaikkia yksityiskohtia ei voi ottaa mukaan. Lisäksi käyttötapausten tarkkuuden oltava samalla tasolla.
27
UML-kieli Use Case Käyttötapausten tarkoitus on siis toimia asiakasvaatimusten kartoittamisen apuvälineenä Käyttötapaukset eivät korvaa toiminnallisessa määrittelyssä esitettäviä järjestelmän toiminnan kuvauksia käyttötapausten ei tarvitse kattaa järjestelmän koko toiminnallisuutta kaikista ominaisuuksista ei kannata edes tehdä käyttötapauksia yhden käyttötapauksen suorittaminen voi vaatia useamman järjestelmän tarjoaman toiminnon suorittamisen
28
UML-kieli Use Case Valitse käyttötapaukset
tehtäväkokonaisuudet (esim. laskun maksu) Valitse roolit käyttäjät (esim. kassan hoitaja) Yhdistä roolit, käyttötapaukset ja kuvaukset Vain keskeiset toiminnot 5-9 käyttötapausta per kaavio Määrittele käyttötapaukset (taulukko, sanallinen kuvaus)
29
UML-kieli
30
UML-kieli Esimerkki käyttötapauksen määrittelystä Nimi:
Hoitojen informointi, versio 1.0 Suorittajat: Asiakas Esiehdot: Informoija on kirjannut eri hoidoista tietoja. Kuvaus: 1. Asiakas siirtyy www-osoitteeseen xxxx.fi 2. Asiakas selaa eri hoitoja 3. Asiakas lisää sopivan hoidon / hoidot ostoskoriin Poikkeukset: Hoito-organisaation www-palvelin ei toimi. Hoidosta ei ole kirjoitettu informaatiotietoja Lopputulos: Asiakas saa tiedot eri hoidoista. Asiakas lisää sopivat hoidot ostoskoriin. Muut vaatimukset WWW-sivujen toimittava IE, Opera ja FireFox selaimilla 1024x768 resoluutiolla. Esimerkki käyttötapauksen määrittelystä
31
UML-kieli Class diagram, luokkakaavio
Luokkakaavio on UML-kaavioista laajin ja monipuolisin, yleisimmin käytetty Kaaviossa esitetään luokkien välisiä suhteita (relaatiot) ja luokkien ominasuuksia (attribuutit) ja operaatioita (metodit) tietosisältö ja toiminnot Kuvaa siis ohjelmiston staattista rakennetta Käytetään myös tietokannan kuvaamiseen (luokka=taulu) Luokkakaaviossa on erilaisia rakenteita: yhteysrakenne eli assosiaatio koosterakenne eli aggregaatti periytymisrakenne eli hierarkia
32
UML-kieli Class Diagram
Yhteysrakenteella (assosiaatio) kuvataan kahden olion välisiä suhteita Koosterakenteella (aggregaatti) kuvataan olioita, jotka koostuvat toisista olioista. Jos olion olemassaolo riippuu toisesta oliosta, maalataan vinoneliö mustaksi, muodoste (komposiitti)
33
UML-kieli Class Diagram
Periytymisrakenteella (hierarkia) kuvataan yliluokkia ja niistä periytettyjä aliluokkia Aliluokat perivät kaikki yliluokan ominaisuudet ja toiminnot
34
UML-kieli State Chart diagram, tilakaavio
Kuvaa olioiden, järjestelmien ja alijärjestelmien elinkaaret Kuvaa missä tiloissa oli voi olla ja mikä tapahtuma aiheuttaa tilan vaihtumisen Lasku (olio) on maksettu (tila) tai maksamatta (tila) Olio vaihtaa tilaansa, kun jotain tapahtuu; tähän liittyy kaksi tasoa: Ulkoiset vuorovaikutukset: Ulkoiset vuorovaikutukset kuvailevat olion ulkoista toimintaa ja sen yhteistyötä muiden olioiden kanssa Sisäiset tilasiirtymät: Sisäiset siirtymät kuvaavat olioiden vaihtelevia tiloja (esim. olion attribuuttien arvojen muuttumista)
35
UML-kieli Tilakaavio alkutila tila siirtymä ehto, päätös lopputila
36
UML-kieli Tilakaavio Esimerkki tilakaaviosta (sähköinen lääkemääräys vaatimusmäärittely
37
UML-kieli Collaboration diagram, yhteistoimintakaavio
Näyttää kommunikoivien olioiden suhteet kuvaa olioiden välistä vuorovaikutusta Kertoo olioiden roolit vuorovaikutusketjussa Kertoo palvelupyynnöt olioiden välillä Ei näytä aikaulottuvuutta Luokkataso, instanssitaso Esitetään kuten luokkakaavio lisättynä palvelupyyntö- ja roolimäärityksillä Olioiden yhteydet kuvataan viivoilla Kontrollin kulun suunta ilmaistaan nuolella Sanomien ajallinen järjestys kuvataan numeroina monitasoinen numerointi: sisäkkäiset operaatiokutsut
38
UML-kieli
39
UML-kieli Sequence-diagram, viestiyhteyskaavio, sekvenssikaavio
Kuvaa joidenkin olioiden välistä viestiliikennettä (olioiden välistä yhteyttä) Kuvaa olion elinkaarta (milloin muodostuu ja milloin tuhoutuu) Kuvaa, mitä viestiä kutsutaan miltäkin oliolta Tämän kuvauksen pohjalta on jo helppo kirjoittaa ohjelmakoodi. Tätä harjoitellaan sitten ohjelmointi-opintojaksolla enemmän
40
UML-kieli Sequence-diagram Olio Aikajana Viesti Paluuviesti
41
UML-kieli Sequence-diagram Esimerkki uuden asiakkaan tallentamisesta
42
UML-kieli Deployment-diagram
Kuvaa järjestelmän laitteistojen ja ohjelmien osien (komponentti) väliset suhteet Kuvaa tietojärjestelmää fyysisenä kuvauksena Kuvauksen perusteella saadaan kokonaiskuva tietojärjestelmän toteutuksesta
43
UML-kieli Deployment-diagram Laite Sovelluksen osa Yhteys
44
UML-kieli Deployment-diagram
45
UML-kieli Kysymyksiä Kommentteja
UML-kaavioiden piirtäminen MS-Visiolla Use Case UML-käyttötapaus Class diagram UML-staattinen rakenne Tilakaavio UML-tilakaavio (Sequence diagram UML-sarja) (Deployment diagram UML-käyttöönotto Pakettikaavio UML-staattinen rakenne Aktiviteettikaavio UML-tilakaavio Yhteistoimintakaavio UML-vuorovaikutuskaavio Komponenttikaavio UML-käyttöönottokaavio) Kiitokset Kalevi Kolehmaiselle materiaaliin liittyvästä yhteistyöstä.
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.