450 likes | 727 Views
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:
E N D
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 (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
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
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
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.
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)
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; }; …………………………..
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; }
UML-kieli • UML kaavioita (diagram) on määritetty kahdeksan
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?
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
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)
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,...
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
UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf
UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf
UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf
UML-kieli http://ta.ramk.fi/~aku.kesti/ohjelmistotekniikka/teoria+harkat/5-Johdanto_UMLaan/UML.pdf
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ä)
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
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
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
UML-kieli • Use Case Yhteystyypit
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)
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.
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
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)
UML-kieli Esimerkki käyttötapauksen määrittelystä
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
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)
UML-kieli • ClassDiagram • Periytymisrakenteella (hierarkia) kuvataan yliluokkia ja niistä periytettyjä aliluokkia • Aliluokat perivät kaikki yliluokan ominaisuudet ja toiminnot
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)
UML-kieli • Tilakaavio alkutila tila siirtymä ehto, päätös lopputila
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
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
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
UML-kieli • Sequence-diagram Olio Aikajana Viesti Paluuviesti
UML-kieli • Sequence-diagram Esimerkki uuden asiakkaan tallentamisesta
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
UML-kieli • Deployment-diagram Laite Sovelluksen osa Yhteys
UML-kieli • Deployment-diagram
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ä.