Ohjelmistokehityksen menetelmät
  • Ohjelmistokehityksen menetelmät ja käytänteet
  • Tavoitteet
  • Työkalut
  • Toimeksiannot
    • Projektityön rajaukset ja toimeksiannot
    • Palkanlaskenta
    • Kilometrikorvaus
    • Laskutus
    • Laskun perintä
  • Ketterä ohjelmistokehitys
    • Agile esimerkki, sykli
    • Agile, Tuotteen tehtävälista
    • Agile, Käyttäjätarina ja käyttötapaus
    • Agile muu materiaali ja lähteitä
    • Agile termit (scrum)
  • Versionhallinta
    • Sanasto Git
    • Opas Gitin perusteisiin
    • Git perusteet 101
    • Git perusteet 102
    • Git perusteet 103
    • Git perusteet 104
    • Git perusteet 105
    • Git perusteet 106
    • Git perusteet 107
    • Git perusteet 108
    • Git muu materiaali ja lähteet
  • Yksikkötestaus
    • Ohjelmistotestauksen periaateet
    • NUnit lisääminen VS2019
    • NUnit perusteet 101
    • NUnit perusteet 102
    • NUnit perusteet 103
    • NUnit perusteet 104
    • NUnit perusteet 105
    • NUnit perusteet 106
    • NUnit muu materiaali ja lähteitä
    • TDD perusteet 101
    • TDD perusteet 102
    • TDD perusteet 103
    • TDD muu materiaali ja lähteitä
  • UML mallinnuskieli
    • Johdanto
  • Relaatiotietokannat
    • Johdanto
    • Sanasto
    • Mysql perusteet -videosarja
    • Pää- ja viiteavaimet
    • ER kaaviot
    • Viite-eheys ja ACID
    • SQL JOIN -lauseke
    • Normalisointi
    • SQL View
    • Tehtävä 001 Tietokannan suunnittelu
    • Indeksointi
      • Hitaat hakukyselyt
  • SQL harjoitukset ja esimerkit
    • Esimerkkitietokannan käyttöönotto
    • Mysql perusteet 101
    • Mysql perusteet 102
      • mysql-perusteet-102-vastaukset
    • Mysql perusteet 103
      • mysql-perusteet-103-vastaukset
    • Mysql perusteet 104
      • mysql-perusteet-104-vastaukset
    • Mysql perusteet 105
      • mysql-perusteet-105-vastaukset
    • Mysql perusteet 106
      • mysql-perusteet-106-vastaukset
    • SQL hakukyselyjä (VANHAT)
    • SQL harjoitukset syksy 2021
      • Vastaukset SQL harjoitukset syksy 2021
  • Miten yrittäjänä voin hyötyä ohjelmistokehityksen ostamisesta?
    • TL;DR
  • Toimeksiannot (2019/01)
    • Toimeksianto 2019/01
    • Käytänteet ja menetelmät
    • Konsoliohjelman refaktorointia
  • SCRUM harjoitustyö (2020/01)
    • Harjoitustyön sisältö
    • Harjoitustyö: Matkalasku
  • Toimeksiannot (2019/02)
    • Toimeksianto 2019/02
  • Toimeksiannot (2018/01)
    • Projekti 2018/01
    • Projekti 2018/01 Perjantaille 14.9
    • Projekti 2018/01 Käyttötapauksesta työtehtäviin
    • Projekti 2018/01 Ohjelmoinnin aloittaminen
    • Projekti 2018/01 TDD esimerkki
  • Harjoitteet (keskeneräiset)
    • Käyttäjätarinat
    • Pariohjelmointi
    • Versionhallinta
    • Testivetoinen kehitys
    • Jatkuva integraatio
    • Inkrementaalinen dokumentointi
Powered by GitBook
On this page
  • Kaaviotyypit
  • Kuvauskieli
  • Luokkakaaviot
  • Aktiviteettikaaviot
  • Käyttötapauskaaviot
  • Lähteet
  1. UML mallinnuskieli

Johdanto

UML (Unified Modeling Language) -kaavioiden perusteet.

UML on lyhenne termeistä Unified Modelin Language. Kyseessä on tapa mallintaa ohjelmiston komponentteja, rakenteita ja suoritusvaiheita. UML sisältää useita erilaisia kaaviotyyppejä mallintamiseen ja antaa täten valmiita, sekä standardoituja tapoja, kuvata ohjelmistojen suunnitteluun liittyviä asioita.

Historia ulottuu 80-luvun lopulle mutta ensimmäinen UML 1.0 julkaistiin vuonna 1997. Voidaan ajatella tämän olevan lähtökohta UML -mallinnuskielelle. Kyseessä on siis mallinnuskieli, ei menetelmä. Kuvaustapoja on olemassa erilaisia ja mikään ei ole varsinaisesti väärin. UML on yksi tunnetuimpia tapoja ja täten tarjoaa yhtenäisen tavan kuvata ja suunnitella ohjelmistoja.

Artikkelissa tuon esille asioita mitkä ovat hyvä tuntea ohjelmoijan näkökulmasta. Moni asia perustuu lähteissä mainittuihin teoksiin tai Internet lähteisiin. Kaikkia eri kaaviotyyppejä ei käsitellä vaan esille nostetaan niitä, jotka kirjoittaja on kokenut toimivammaksi.

On hyvä muistaa, että UML ei kovin usein tule tänä päivänä ilmi. Ketterän ohjelmistokehityksen toimintamallit ovat muuttaneet työtapoja ja moni ennestään olemassa oleva asia unohtuu. UML historia on kuitenkin hyvin paljon olio-ohjelmoinnin suosion alkupäässä ja sisältää paljon oliokeskeisiä mallinnustapoja. Ohjelmistokehityksessä on usein suunnitteluun ja analyysiin keskittyvä vaihe missä tehdään etukäteen suunnitelmia ohjelmiston rakenteesta. Näihin tilanteisiin UML -mallinnuskieli on tehty.

Vaikka ohjelmistojen tuottaminen on muuttunut 80- ja 90-luvusta lähtien valtavasti, sekä myös 2000 -luvun alusta niin UML -mallinnuskielelle on silti paikka ohjelmistokehityksessä. Tänä päivänä suositaan lyhyempiä suunnitteluvaiheita ja keskittymistä toteutusvaiheeseen. UML -kuitenkin tarjoaa hyvän "kirjaston" erilaisia mallinnustapoja, jotka auttava ajatusten hahmottamisessa ja viestimisessä.

Dokumentointi on tärkeässä osassa ohjelmistotuotantoa. Dokumentoinnin haasteet ovat lähinnä nopeasti muuttuvissa vaatimuksisa ja vaarana sen vanheneminen. UML -kaavioita käsin piirtäen ei ole tehokkain dokumentointitapa muuttuvien vaatimusten vuoksi. Mukaan on tullut paljon kaavioiden piirtämiseen tarkoitettuja ohjelmistoja sekä työkaluja, jotka luovat olemassa olevasta lähdekoodista halutunlaisia kaavioita.

Aloitetaan tutustuminen muutamiin tärkeimpiin kaaviotyyppeihin. Sen kautta pyrimme tutustumaan miten UML -mallinnuskielestä voi olla hyötyä ohjelmistoja suunnitellessa.

Kaaviotyypit

UML -mallinnuskieli sisältää useita kaaviotyyppejä ja ne voidaan karkeasti jakaa kolmeen erilaiseen päätyyppiin.

Rakennekaavio (Structure diagram)

  • Komponenttikaavio (Component diagram)

  • Koostekaavio (Composite structure diagram)

  • Luokkakaavio (Class diagram)

  • Oliokaavio (Object diagram)

  • Pakkauskaavio (Package diagram)

  • Sijoittelukaavio (Deployment diagram)

Käyttäytymiskaavio (Behavior diagram)

  • Aktiviteettikaavio (Activity diagram)

  • Käyttötapauskaavio (Use case diagram)

  • Tilakaavio (State (machine) diagram)

Vuorovaikutuskaavio (Interaction diagram)

  • Ajoituskaavio (Timing diagram)

  • Kokoava vuorovaikutuskaavio (Interaction overview diagram)

  • Kommunikointikaavio (Communication diagram)

  • Sekvenssikaavio (Sequence diagram)

Kaaviot voidaan karkeasti jakaa kolmeen erilaiseen päätyyppiin.

Rakennekaaviot kuvaavat ohjelmiston rakenteita, joiden täytyy olla mallinnettavassa järjestelmässä. Tämä voi tarkoittaa esimerkiksi ohjelmiston eri komponenttien osittamista toisiinsa nähden.

Käyttäytymiskaaviot korostavat ohjelmsiton käyttäytymistä eri tilanteissa. Esimerkiksi miten ohjelman logiikan tulisi toimia kuvatussa tilanteessa.

Vuorovaikutuskaaviot korostavat yksittäisten ohjelmiston osien yhteistyötä. Esimerkiksi voidaan kuvata kahden eri järjestelmän välistä viestimistä ja käyttäytymistä.

Kuvauskieli

UML -kaaviot sisältävät standardoidun kuvauskielen eli notaation. Kirjallisuudessa puhutaan siis notaatiosta millä tarkoitetaan eri kaavioille luotuja merkintätapoja. Yhteenveto näistä notaatioista löytyy alla olevasta liitetiedostosta.

Tutustu myös Tutorials Point sivuston notaatioiden yhteenvetoon.

Luokkakaaviot

Luokkakaavioista on tullut oliosuuntautuneiden menetelmien keskeinen osa. Näihin liittyy erittäin laaja joukko mallinnuskäsitteitä. Materiaalissa esittellään ns. peruskäsitteet, joita tarvitaan useammin.

Luokkakaavio tarkoitus on kuvata järjestelmässä olevia oliotyyppejä ja niiden välillä esiintyviä erilaisia staattisia suhteita. Nämä suhteet jakautuvat kahteen päätyppiin:

  • Assosisaatiot - esimerkiksi asiakas voi vuokrata joukon videoita.

  • Alityypit - sairaanhoitaja on yksi henkilölaji.

Suhteiden lisäksi luokkakaavioissa voidaan esittää operaatioita, jotka ovat niitä prosesseja mitkä luokka osaa toteuttaa. Tällainen voi olla luokkakaavion esimerkissä oleva Tilaus-luokan lähetä()-operaatio.

Tutustu myös Tutorials Point sivuston tarjoamaan materiaaliin luokkakaavioihin liittyen.

Aktiviteettikaaviot

Aktiviteettikaavioita käytetään järjestelmän työkulun mallintamiseen. Toiselta nimeltä nämä tunnetaan myös toimintakaavioina. Toimintakaavio kuvaa tehtävien tapahtumajärjestystä. Siinä voidaan esitellä ehdollista, että rinnakkaista toimintaa. Aktiviteettikaaivo muistuttaa tilakaaviota mutta niiden sisällössä on pieniä eroja. Notaatiot muistuttavat toisiaan.

Tutustu myös Tutorials Point sivuston yhteenvetoon aktiviteettikaavioista.

Käyttötapauskaaviot

Käyttötapauskaaviot puolestaan ovat tapa mallintaa näitä vaatimuksia suhteellisen yksinkertaisella tavalla. Kaavioihin liittyy lähinnä toimijoiden, käyttötapausten ja niiden välisten suhteiden kuvaamista.

Tutustu myös Tutorials Point sivuston yhteenvetoon käyttötapauskaavioista.

Lähteet

PreviousTDD muu materiaali ja lähteitäNextJohdanto

Last updated 3 years ago

Käyttötapaukset (use cases) ovat tapa kuvata järjestelmän ominaisuuksia sekä niiden tavoitteita. Nämä ovat usein tekstipohjaisia kevyitä kuvauksia siitä miten järjestelmän tulisi toimia tietyssä tissa. Käyttötapauksista on puhuttu erikseen tämän sivuston .

UML, Martin Fowler & Kendal Scott, Docendo, 2. painos 2004 (alkuperäinen teos Martin Fowler, Kendal Scott: UML Distilled, )

Wikipedia, Unified Modeling Language,

Wikipedia, UML -mallinnus,

https://www.pearson.com/uk/educators/higher-education-educators/program/Fowler-UML-Distilled-A-Brief-Guide-to-the-Standard-Object-Modeling-Language-2nd-Edition/PGM454835.html
https://en.wikipedia.org/wiki/Unified_Modeling_Language
https://fi.wikipedia.org/wiki/UML-mallinnus
UML - Basic Notations
Logo
UML - Class Diagram
Logo
LuokkakaavioWikipedia
UML - Activity Diagrams
Logo
AktiviteettikaavioWikipedia
UML - Use Case Diagrams
Logo
KäyttötapauskaavioWikipedia
2MB
uml notaatiot.pdf
pdf
Tiedosto sisältää lähdeteoksesta skannatun yhteenvedon notaatioista.
317KB
uml luokkakaavio esimerkki.pdf
pdf
356KB
uml aktiviteettikaavio esimerkki.pdf
pdf
376KB
uml kayttotapauskaavio esimerkki.pdf
pdf
Esimerkki luokkakaaviosta
Esimerkki aktiviteettikaaviosta
Esimerkki sekvenssikaaviosta
Logo
Logo
Logo
materiaaleissa