Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Ohjelmistotekniikka ja projektinhallinta, 4 op

Samankaltaiset esitykset


Esitys aiheesta: "Ohjelmistotekniikka ja projektinhallinta, 4 op"— Esityksen transkriptio:

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ä.


Lataa ppt "Ohjelmistotekniikka ja projektinhallinta, 4 op"

Samankaltaiset esitykset


Iklan oleh Google