**UML-mallinnus** (engl. *Unified Modeling Language*) on Object Management Groupin (OMG) vuonna 1997 standardoima graafinen mallinnuskieli, joka sisältää 13 erilaista kaaviota. Kaavioista kuudella kuvataan rakennetta, kolmella käyttäytymistä ja neljällä vuorovaikutusta. UML on alun perin kehitetty järjestelmä- ja ohjelmistokehitystä varten. Se syntyi yhdistämällä kolme johtavaa oliomallinnustekniikkaa (OMT, Booch, OOSE). Uusin UML-standardi on 2.5.1 joulukuulta vuodelta 2017.

UML:n tausta
------------

UML on kehittynyt vähitellen oliokeskeisen suunnittelu- ja ohjelmistokehitystyön menetelmätarpeiden pohjalta. Fowler ja Kendall (2002) esittävät eri osa-alueiden keskeisiksi varhaisiksi toimijoiksi Portlandissa toimineen Smalltalk-ohjelmointikielen kehittäjäyhteisön, Object Management Groupin sekä Association for Computing Machineryn (ACM) järjestämät oliomenetelmien OOPSLA-konferenssit. Henkilöistä he nimeävät merkittäviksi kehittäjiksi ja julkaisijoiksi mm. seuraavia: Grady Booch, Peter Coad, Ivar Jacobson, James Martin, Steve Mellor, Jim Odell, James Rumbaugh, Sally Shlaer ja Edward Yourdon. Monet heistä esittivät nimillään tunnetuksi tulevia menetelmiä ja kuvaustekniikoita. 

Kehitystyötä leimasivat sekä yhtenäistämispyrkimykset että koulukuntariidat. Jonkinlainen käännekohta oli vuosi 1994, jolloin Booch, Rumbaugh ja Jacobson liittyivät yhteen Rational Software Corporation -yrityksen palveluksessa ja alkoivat yhteistyön Boochin vuonna 1991 julkaiseman Object Modeling Technique -menetelmän (OMT) parissa. Heidät tunnettiin oliomenetelmien kehittäjäyhteisössä myöhemmin nimellä *Three Amigos* ("Kolme kaverusta").

Lyhenne UML merkityksessä **Unified Modelling Language** otettiin laajemmin käyttöön vuonna 1996. Ensimmäisissä julkisissa kuvauksissa (OOPSLA 95) menetelmän nimenä oli ollut **Unified Method**.

Kaaviotyypit
------------

UML:n pääkaaviotyyppejä ovat rakennekaaviot ja käyttäytymiskaaviot.

UML:n kaaviohierarkia**Rakennekaavio**

Rakennekaavioilla voidaan kuvata rakennettavan ohjelmistojärjestelmän ohjelmistoarkkitehtuuria, sillä se kuvaa ohjelmistojärjestelmän staattisia osia. Rakennekaavio kuvaa ohjelmistojärjestelmän rakennetta ja siinä esitetään ne osat, jotka on oltava mallinnettavassa järjestelmässä.  Luokkakaavio on esimerkki ohjelmistojärjestelmän rakennetta kuvaavasta kaaviosta. Luokkakaavio (Class diagram) sisältää ohjelmistojärjestelmään kuuluvat luokat, luokkien ominaisuudet (attribuutit), niiden toiminnot, sekä luokkien väliset suhteet. 

**Käyttäytymiskaavio**

Käyttäytymiskaaviolla voidaan kuvata rakennettavan ohjelmistojärjestelmän toimivuutta, sillä se kuvaa ohjelmistojärjestelmän dynaamisia osia. Käyttäytymiskaviolla kuvataan ohjelmistojärjestelmän käyttäytymistä ja se mallintaa järjestelmässä toteutuvia tapahtumia.  Yksi käyttäytymiskaavion esimerkki on käyttötapauskaavio (Use case diagram), jolla kuvataan järjestelmän erityyppisiä käyttäjiä ja niiden vuorovaikutuksia järjestelmän kanssa. 

**Vuorovaikutuskaavio**

Vuorovaikutuskaaviolla kuvataan ohjelmistojärjestelmän osien välillä kulkevaa dataa, sekä käskyjen ja kutsujen suoritusjärjestystä. Esimerkki vuorovaikutuskaaviosta on sekvenssikaavio (Sequence diagram), joka kuvaa objektien välistä vuorovaikutusta ja niiden järjestystä. 

* 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)

Käyttötarkoituksia
------------------

* Ohjelmistosuunnittelu
* Ajettavan koodin luominen
* Järjestelmien arkkitehtuurit
* Prosessitekniikka
* Internet-portaalien rakenteet
* Työvirtojen kuvaus
* Liiketoimintaprosessien mallintaminen

Lähteet
-------

* Fowler, Martin & Scott, Kendall: *UML*. Suomentanut Eero Sarkkinen. Jyväskylä: Docendo, 2002. ISBN 951-846-168-6.
* Object Management Group: OMG Unified Modeling Language® (OMG UML): Version 2.5.1 (with change bars)  6.12.2017. Object Management Group. Viitattu 18.9.2020.

### Viitteet

1. ↑  Object Management Group: About the Unified Modeling Language Specification Version 2.5. Object Management Group. Viitattu 18.9.2020.
2. ↑  OOPSLA = Object-Oriented Programming, Systems, Languages & Applications
3. 1 2 3  Fowler & Kendall 2002, 1-5
4. ↑  Unified Modeling Language - UML *Virtual Exhibitions in Informatics*. Universität Klagenfurt.  Arkistoitu 4.4.2020. Viitattu 18.9.2020.
5. ↑  OMG® Unified Modeling Language® (OMG UML®): Version 2.5.1 (with change bars), 691
6. 1 2 3  Unified Modeling Language.  *Wikipedia*, 26.3.2023. Artikkelin verkkoversio.  en
7. ↑  Class diagram.  *Wikipedia*, 4.2.2023. Artikkelin verkkoversio.  en
8. ↑  Use case diagram.  *Wikipedia*, 19.1.2023. Artikkelin verkkoversio.  en

Aiheesta muualla
----------------

CommonsCommons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta **UML-mallinnus**.
* Unified Modeling Languagen kotisivu (englanniksi)
* Object Management Groupin kotisivu (englanniksi)