1 / 45

Ohjelmistotekniikka ja projektinhallinta, 4 op

Ohjelmistotekniikka ja projektinhallinta, 4 op. UML-kieli Seppo Räsänen Savonia-ammattikorkeakoulu Terveysala, kuopio 29.8.2008. UML-kieli. UML on oliokeskeisen ohjelmistotuotannon mallinnukseen liittyvä kuvauskieli UML ( Unified Modeling Language ) on standardoitu mallinnuskieli:

eugene
Download Presentation

Ohjelmistotekniikka ja projektinhallinta, 4 op

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ohjelmistotekniikka ja projektinhallinta, 4 op UML-kieli Seppo Räsänen Savonia-ammattikorkeakoulu Terveysala, kuopio 29.8.2008

  2. UML-kieli • UML on oliokeskeisen ohjelmistotuotannon mallinnukseen liittyvä kuvauskieli • UML (UnifiedModelingLanguage) on standardoitu mallinnuskieli: • alunperin mm. ohjelmistojen kuvaamiseen ja dokumentointiin • sitten käyttöalue laajentunut mm. liiketoimintaprosessien mallinnukseen • Mallinnusohjelmia on runsaasti tarjolla • RationalRose (www.rational.com) • System Architect (www.popkin.com) • Visual UML (www.visualobject.com) • Poseidon (www.download.com/Poseidon-for-UML-Community-Edition/3000-2212_4-10342659.html) • Prosa (http://www.prosa.fi/) • 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, 1980 -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). • http://www.uml.org/ osoitteessa tarkat kuvaukset ja standartointi

  5. UML-kieli • Olio (object) • 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 { public: 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

  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 arkkitehtuurinnäkökulmasta • Liitäntä tietojenkäsittelyresursseihin • Tekniikkanäkökulma • Kuvaukset toteutustekniikan ja testauksennä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) • Luokkakaaviot (Class Diagram) • Tilakaaviot (State Chart Diagram) • Sekvenssikaaviot (Message Sequence Diagram) • 3. Mallinnuskierros -> ohjelmiston toteutusta (v. 0.3) • Käyttötapaukset (Use Case Diagram) • Luokkakaaviot (Class Diagram) • Sekvenssikaaviot (Message Sequence Diagram) • 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 Ohjelmisto- kehitys Korkean tason toiminnalisuus Käyttö- tapauskaaviot Yhteistyö- kaaviot Oliokaaviot Sekvenssi- kaaviot Tilakaaviot Aktiviteetti- kaaviot Luokka- kaaviot Sijoittelu- kaaviot Komponentti- kaaviot Rakenne Staattinen malli Käyttäytyminen Dynaaminen malli

  15. UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf

  16. UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf

  17. UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf

  18. UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf

  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 • Use Case • Käyttäjä, rooli – Actor: • 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 • Use Case • Käyttötapaus – 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 • 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ä

  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 • ClassDiagram • 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 http://www.stm.fi/Resource.phx/vastt/tietoh/reseptikilpailutus.htx.i1077.pdf (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ä.

More Related