You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »


Soveltamisprofiilin tarkoituksena on kuvata yksittäisen tietojärjestelmän (tai sen osan) tietosisältö ja tietoon liittyviä vaatimuksia ja rajoituksia. Tarkoituksena on vähentää tietojärjestelmän kehitys ja ylläpitokustannuksia hyvällä suunnittelulla ja dokumentoinnilla. Tietosisällön dokumentointi tukee tietojärjestelmän ymmärrettävyyttä, tiedon uudelleenkäyttöä, soveltamista ja vähentää uudelleenmäärittelyn tarvetta. 

Tietorakenteet kuvataan soveltamisprofiilissa siten, että niiden perusteella voidaan muodostaa fyysinen tietomalli eri tekniikoilla tai syntaksilla. Tietomallit.suomi.fi sovelluksella toteutetun soveltamisprofiilin tietorakenteet ovat määritelty rakenteisesti linkitettynä datana ja siitä voidaan suoraan johtaa XML tai JSON skeema.

Soveltamisprofiili voi kuvata tietosisältöjä eri tarkkuustasoilla

Soveltamisprofiilin tietosisältö kuvataan aina tietojärjestelmän kannalta olennaisella tarkkuudella, joka määrittyy käyttötarpeen mukaan. Sisällöllisesti soveltamisprofiili on sopimus siitä miten yhteisesti sovittua kieltä ja rakenteita käytetään tietyssä käyttötarkoituksessa. Käyttötarkoitus voidaan jakaa karkealla tasolla kolmeen eri ryhmään:

  1. Tiedonsiirtorajapinnan tietosisältö - Miten tietoa siirretään?
  2. Sovellusrajapinnan tai tietojärjestelmän tietosisältö - Miten tietoa käsitellään?
  3. Tietovaraston tietosisältö - Miten tietoa säilytetään?
  4. Yleinen tietosisällön kuvaus - Mitä tietoja tarvitaan?

Tarkemmin eri käyttötarkoituksia tukevia mallinnustapoja ja hyviä käytäntöjä on listattu tämän ohjeen lopussa.

Yleisiä mallinnusperiaatteita

  1. Määrittele soveltamisprofiilille ja mallinnettavalle tietosisällölle selkeä käyttötarkoitus
  2. Kun määrittelet uuden tietosisällön, käytä tietoalueen sanastoa
    1. Ehdota uusia käsitteitä, jos tietosisältöä kuvaavaa käsitettä ei ole määritelty sanastossa
  3. Uudelleenkäytä luokkia, attribuutteja ja assosiaatioita julkisen hallinnon tietokomponenttikirjastosta
    1. Ennen uuden tietosisällön määrittelyä, tutki onko vastaava tietosisältö määritelty aiheeseen liittyvillä tietoalueilla
    2. Jos luokkaan joudutaan tekemään usein tietoaluekohtaisia lisäyksiä, määrittele luokasta alaluokka tietoalueelle

Nimeämiskäytännöt

Tietosisältöjen nimeäminen tehdään selkokielisesti hyödyntäen tietoalueen vakiintunutta sanastoa. Luokat, attribuutit ja assosiaatiot nimetään kieliversioituna ihmisluettavasti sekä teknisellä nimellä.

Sisältö lokalisoidaan käyttötarpeen mukaan eri kielillä, yleensä suomi, englanti ja ruotsi. Ihmisluettavissa nimissä ei saa olla kyseiseen kieleen kuulumattomia erikoismerkkejä.

Tekninen nimi määritellään aina alphanumeerisesti ja ainoat sallitut merkit ovat pienet ja isot kirjaimet, numerot, sekä alaviiva ja väliviiva. Teknisen nimen lisäksi resurssille voidaan määritellä paikallinen tunnus, joka kertoo millä nimellä resurssia kutsutaan paikallisessa toteutuksessa. Paikallisen nimen avulla voidaan myös tuottaa XML tai JSON skeema erilaisten teknisten nimeämiskäytäntöjen mukaisesti.

Tietomallin nimeäminen

Tietomallille määritellään ihmisluettava nimi ja etuliite. Tietomallin nimen tulee olla mahdollisimman hyvin käyttötarkoitusta kuvaava, esimerkiksi: "Tutkimusinfrastruktuurien tiedonsiirtomääritys". Lisäksi käyttötarkoitusta on hyvä tarkentaa tietomallin kuvauksessa.

Etuliite on yksilöllinen lyhyt tunniste josta muodostetaan tietomallin tekninen nimi, eli nimiavaruus. Tietomallin nimiavaruus on URI-tunnus, jonka avulla tietomallissa määriteltäviin resursseihin voidaan viitata.

Etuliitteen valinta

Etuliitteen määrittely voi tuntua vaikealta uutta tietomallia tehtäessä. Etuliite muodostetaan yleensä tietoalueella tai projektissa yleisesti käytössä olevasta akronyymistä. Etuliitteen määrittelyssä kuitenkin olennaisinta on se, että se on yksilöivä merkkijono. Esimerkiksi "abc" on yhtä hyvä etuliite kuin "henkilo" tai "personinfo". Lyhyt etuliite kuitenkin helpottaa tunnisteen kirjoittamista lyhennetyssä muodossa, esim: abc:Person.  Etuliitettä voi jatkossa vaihtaa tietomallin versioinnin yhteydessä. Etuliitettä vaihtaessa uusi sekä vanha malli voivat jatkaa omaa elämäänsä. 

Luokan nimeäminen

Luokka nimetään yleensä yksikkömuodossa.

Luokan tekninen nimi määritellään ns. CamelCase kirjoitusasulla:

Attribuutin nimeäminen

Attribuutit nimetään yleensä yksikkömuodossa. Poikkeustapauksissa attribuutti voidaan nimetä monikossa, jos attribuuttiin tallennetaan useampi tieto, esim. Etunimet.

Nimessä ei kannata toistaa luokan nimeä, esim. "Nimi" ennemmin kuin "Henkilön nimi". Säännöstä saa poiketa jos ei ole selvää mikä "Nimi" on kyseessä esim. jos luokka on denormalisoitu kokoelma Henkilön ja Organisaation tietoja.

Attribuutin tekninen nimi määritellään ns. CamelCase kirjoitusasulla:

  • Alkaa pienellä alkukirjaimella, esim: numberOfPages

Assosiaation nimeäminen

Assosiaatiot nimetään yleensä verbimuodossa tai roolin nimellä, esim. purchaced tai customer

Assosiaation tekinen nimi määritellaan CamelCase kirjoitusasulla:

  • Alkaa pienellä alkukirjaimella, esim: relatedProduct

Tietosisältöjen tietomallinnus eri käyttötarpeisiin

Tietomalleja voidaan tehdä eri käyttötarkoituksiin, jolloin myös tietosisältöjen karkeus (abstraktiotaso) vaihtelee käyttötarpeen mukaan. Tietomallin tietorakenteet kuvataan myös eri tavoin, esimerkiksi riippuen siitä, määritelläänkö tiedonsiirtomääritystä vai tietokannan kuvausta. Relaatiotietokannan määrittelyssä suositaan yleensä joustavaa tiedon tyypitystä ja roolistusta, jolloin tietokannan rakennetta ei tarvitse muuttaa vaikka tietokantaan haluttaisiin tallentaa uuden tyyppistä tietoa. Tiedonsiirtomäärityksissä suositaan taas usein yksiselitteisempiä tietorakenteita, jolloin tietosisällön ymmärtämiseen ei tarvita niin paljon erillisiä lisätietoja, kuten tyyppikoodistoja.  

Yksiselitteinen vs. joustava tietomalli

Joustava tietomalli ottaa huomioon tietojärjestelmän muutostarpeen nostamalla tietomallin abstraktiotasoa tyypityksen ja roolituksen avulla. Yksiselitteinen tietomalli määrittelee tietorakenteet ilman tyypityksiä ja rooleja mahdollisimman tarkalla tasolla. Yleensä tietomallinnus on tasapainoilua joustavuuden ja yksiselitteisyyden välillä.

Tiedon tyypitys

Tyypittäminen on tiedon yleistämistä ja luokittelemista tiedon ominaisuuksien avulla. Tietomallissa voidaan kuvata esimerkiksi luokka Auto, mutta sama tieto voidaan yleistää Liikenneväline luokaksi lisäämällä luokalle liikennevälineen tyyppi niminen attribuutti. Tyypittävälle attribuutille voidaan määritellä sallitut arvot koodiston avulla, esimerkiksi tässä tapauksessa arvot 1=Henkilöauto ja 2=Kuorma-auto. Sallitut arvot määritellään yleensä koodistona, jolloin tiedonsiirrossa siirrettävä tietomäärä on vähäisempi ja koodien ihmisluettavat termit ja kuvaukset voivat täydentyä kehityksen edetessä ilman tietojärjestelmien muutostarpeita. Joissain tapauksissa tyypit voivat olla myös tietojärjestelmän sisäisiä referenssitietoja, jotka kertyvät sovellusta käytettäessä.

Tiedon roolitus

Roolittaminen on tiedon tyypittämistä jonkin toisen asian suhteen. Rooliin liittyy siis aina jokin assosiaatio kahden luokan välillä. Rooleja tietomalleissa voi olla esimerkiksi Henkilön rooli Projektissa tai Osoitteen rooli Henkilön yhteystiedoissa. 

Myös rooli voidaan määritellä joustavasti tai yksiselitteisesti. Joustavia roolimäärittelyjä ovat esimerkiksi Rooli-luokka tai roolikoodi-attribuutti. Yksiselitteisiä roolimäärittelyjä ovat taas rooli-assosiaatio tai rooliKytkin-attribuutti.

Rooli voi olla myös ajan suhteen muuttuva, jolloin roolitieto kertoo myös millä ajanhetkellä kyseisellä tiedolla on ollut kyseinen rooli.

Esimerkkejä tyypeistä ja rooleista

Sama tietosisältö voidaan kuvata monesta eri näkökulmasta käyttäen erilaisia tietorakenteita. Esimerkiksi Projektiin liittyvät Henkilöt voidaan kuvata Henkilön tai Projektin näkökulmasta (Esimerkki 1 ja 2). Esimerkeissä on käytetty tiedon tyypittämistä ja roolittamista eri tavoin. Projektiin liittyvien henkilöiden rooli voidaan kuvata yksiselitteisesti Projektin ja Henkilön välisenä assosiaationa (Esimerkki 1) tai Henkilön ominaisuutena (Esimerkki 2). Roolitus ja tyypitys ovat yksiselitteisiä kun niiden arvojen esittämiseen ei tarvita koodistoja.

Esimerkki 1: Projektin henkilöt

Esimerkki 2: Henkilön projektit


Rooli voidaan kuvata myös joustavasti koodiston avulla. Tilanteesta riippuen tietomallissa voidaan määritellä Rooli niminen attribuutti tai assosiaatio Rooli nimiseen luokkaan (Esimerkki 3 ja 4). Erillisen tyyppi/rooli koodistojen avulla tietomallista tulee joustavampi, jolloin koodiston arvoja voidaan muuttaa myöhemmin muuttamatta itse tietomallia. 

Esimerkki 3: Henkilön rooli attribuutti

Esimerkki 4: Henkilön rooli luokkana


Rooli voidaan kuvata tarpeen mukaan myös ajallisenä ilmiönä, jolloin tietty henkilö voidaan määritellä olevan tietyssä roolissa tiettyyn aikaan (Esimerkki 5).


Esimerkki 5: Rooli ajallisena ilmiönä


Rooliin liittyviä tehtäviä voidaan kuvata myös ilman varsinaista roolimäärittelyä assosiaatioiden avulla (Esimerkki 6). Tämä tietomalli kuvaa saman asian kuin aiempi esimerkki, mutta sen tietosisältöä ei voida laajentaa ilman tietomallimuutosta.  

Esimerkki 6: Rooli ajallisena ilmiönä kuvattuna assosiaatioilla 


Roolia ja vastuuta voidaan kuvata myös tarkemmin määrittelemällä rooleille omat luokat (Esimerkki 7). Tässä esimerkissä voidaan tarkemmin määritellä minkälaisia lisätietoja kullakin roolilla on.

Esimerkki 7: Rooliluokkien määrittely


Joissain tapauksissa mallinnettavasta toimijasta halutaan määritellä abstrakti "kuori"-luokka (Esimerkki 8). Tässä esimerkissä projektitoimija voi olla joko henkilö tai organisaatio. Kyseinen mallinnustapa vastaa XML skeemoissa choice tai JSON skeemoissa oneOf -määrityksiä.


Esimerkki 8: Vaihtoehtoinen luokka


Vaihtoehtoinen luokka voidaan määritellä myös yksiselitteisesti assosiaatiolla ilman roolia ja kuori-luokkaa (Esimerkki 9). Tällöin kuvataan erilliset assosiaatiot eri tyyppisille tietosisällöille.


Esimerkki 9: Vaihtoehtoinen luokka erillisinä assosiaatioina


Tiedonsiirtomäärityksen kuvaaminen

Tiedonsiirtomääritys kuvataan tietojärjestelmien välisen tiedonsiirron toteuttamiseksi. Tiedonsiirtomääritys kuvaa tietosisällön rakenteisena asiakirjana, jonka avulla tietosisältö voidaan validoida ja siirtää tietojärjestelmien välillä. Tiedonsiirron kohteena on yleensä yksittäinen tietokokonaisuus suuremmasta tietojoukosta. Tietoa siirrettäessä suositaan yleensä yksiselitteistä tietomallia, jolloin tietosisältö on paremmin tulkittavissa ilman erillisiä koodistoja.

Soveltamisprofiilin avulla voidaan määritellä ja dokumentoida siirrettävät tietosisällöt ja tuottaa XML tai JSON skeema jota voidaan hyödyntää tiedonsiirron toteutuksessa. Soveltamisprofiilissa rakenteisen asiakirjan voi määritellä kuvaamalla tietomallille juurisolmun. Juurisolmu (Root element) on rakenteisen asiakirjan ensimmäinen elementti, jonka alle siirrettävä tietosisältö on kuvattu hierarkkisena tietorakenteena. 

Sovellusrajapinnan tai tietojärjestelmän kuvaaminen

  • Tarkennettujen luokkien käyttö
  • Base skeeman kuvaaminen

Tietovaraston tai tietokannan kuvaaminen

  • Looginen tietomallinnus

Tietosisällön yleinen kuvaaminen

  • Yleinen tietosisällön kuvaus
  • Käsitemallinnus


  • No labels