Ohjelmistojen mallintaminen - Mallit - Ohjelmiston kuvaaminen malleilla 31.10.2008 Harri Laine 1
Malli: abstraktio jostain kohteesta Abstrahointi: asian ilmaiseminen tavalla, joka tuo esiin tietystä näkökulmasta katsottuna oleellisen ja kätkee tarpeettomat yksityiskohdat abstraktio on abstrahoinnin tulos, siis tietystä näkökulmasta katsottuna oleellisia asioita sisältävä kuvaus kohteesta Ohjelmiston malli: abstraktio ohjelmistosta (näkemys, kuvaus) 31.10.2008 Harri Laine 2
Ohjelma itsessään on malli tietojenkäsittelytehtävän suorituksen malli ohjelmointikielen käsittein esitettynä suoritettava malli: ohjelman tulee sisältää kaikki suorituksen kannalta tarpeellinen ohjelmakoodiin (=mallin esitys) voi sisältyä myös suorituksen kannalta tarpeetonta informaatiota, kommentteja kuvaavat (mallintavat) ohjelmaa tai sen suoritusta ja ollakseen hyödyllisiä ovat korkeammalla abstraktiotasolla kuin ohjelmakoodi 31.10.2008 Harri Laine 3
Esim. i=1; // i saa arvon 1 -- hyödytön kommentti, sama abstraktiotaso // muunnetaan eurohinnat dollareiksi for (int i=0; i<euros.length; i++) { dollars[i]= ExchangeRate*euros[i]; } 31.10.2008 Harri Laine 4
Ohjelmakommenttien tarjoamat abstraktiot ohjelmasta eivät perustu mihinkään yhtenäiseen käsitteistöön, vaan ovat ohjelmoijan vapaasti muodostettavissa eritasoisia taso ei mitenkään näy esitetään luonnollisella kielellä, dokumentointijärjestelmä (esim. JavaDoc) voi asettaa jotain syntaktisia ehtoja 31.10.2008 Harri Laine 5
Tietojenkäsittelytieteessä puhutaan usein abstraktiotasoista (levels of abstraction) eri tasoilla on oma kiinnitetty käsitteistönsä, johon kyseisen tason mallit perustuvat sama kohde mallinnetaan kullakin tasolla eri käsittein 'ylempi' taso suhteellisesti abstraktimpi ja 'alempi' konkreettisempi 31.10.2008 Harri Laine 6
Ohjelman mallinnustasoja vaatimukset ohjelmaspesifikaatio lausekielinen ohjelma taso voi jakautua useammaksi alitasoksi esim. konekielitaso virtuaalikone ja todellinen kone -tasoiksi konekielinen ohjelma 31.10.2008 Harri Laine 7
Abstraktiotasoon liittyvä käsitteistö muodostaa perustan tason mukaisen abstraktion muodostamiselle. Käsitteistö on suunnittelun ja ajattelun apuväline Ohjelmat ovat keinotekoisia kuten myös niiden mallinnuksessa käytettävät käsitteet. Uusia käsitejärjestelmiä syntyy jatkuvasti. Ei voida yleisesti osoittaa, että jokin kattava käsitteistö olisi toista parempi - joitain puutteita käsitejärjestelmissä toki on osoitettavissa. 31.10.2008 Harri Laine 8
Ajatellaan ohjelmointikielen rakenteita mallinnuskäsitteistöinä. Ei voida esim. osoittaa, että Javan perustana oleva käsitys ohjelmasta olisi yleisesti parempi kuin esimerkiksi funktionaalisen Haskell kielen tai päinvastoin. Mallit ovat ajattelun väline, mutta myös dokumentoinnin väline. Mallit on siten kyettävä myös esittämään Mallinnuskieli (modeling language) = käsitteistö + esitystapa. 31.10.2008 Harri Laine 9
Mallinnuskieliä on graafisia ja tekstuaalisia, jopa molemmat esitysmuodot tarjoavia. Graafiset esitykset on ensisijaisesti tarkoitettu ihmisille tekstuaaliset ihmisille ja/tai koneille. Ohjelmistosta laaditut mallit vastaavat laitteiden ja rakennusten piirustuksia 31.10.2008 Harri Laine 10
Olioperustaisen ohjelmistonäkemyksen keskeinen mallinnuskieli on graafinen UML (unified modeling language) Hierarkkiseen tiedonmuokkausprosessiin perustuvan ohjelmistonäkemyksen keskeinen mallinnustekniikka on tietovuokaavio (data flow diagram) 31.10.2008 Harri Laine 11
(UML-kaaviot) 31.10.2008 Harri Laine 12
(UML-kaaviot) Kehitetty Rational Software Corp. toimesta 1996 -> OMG:n (Object Management Group) valinta kuvaustekniikaksi, standardointi OMG on olioteknologian kehittämiseen tähtäävä yritysten perustama organisaatio - tuotoksia mm. CORBA-teknologia Useat CASE- välineet (Computer Aided Software Engineering) tukevat UML-tekniikkoja 31.10.2008 Harri Laine 13