OLIOKESKEINEN TIETOJÄRJESTELMIEN KEHITTÄMINEN Versio

Koko: px
Aloita esitys sivulta:

Download "OLIOKESKEINEN TIETOJÄRJESTELMIEN KEHITTÄMINEN Versio 10.10.2006"

Transkriptio

1 1 OLIOKESKEINEN TIETOJÄRJESTELMIEN KEHITTÄMINEN Versio Mauri Leppänen ja Timo Käkölä Tietojenkäsittelytieteiden laitos Jyväskylän yliopisto Syksy 2006

2 2 Tervetuloa opiskelemaan oliokeskeistä tietojärjestelmien kehittämistä! Tätä monistetta ei ole tarkoitettu varsinaiseksi itseopiskelumateriaaliksi vaan luentojen tukimateriaaliksi. Luennoilla käsitellään useita luentomonisteessa kuvattuja esimerkkejä, joiden merkitys avautuu helpoiten seuraamalla luentoja. Esimerkit ovat yksinkertaistettuja eivätkä ne näin voi olla kovin kattavia tai huomioida kaikkia poikkeustilanteita. Opiskelijan onkin hyvä perehtyä esimerkkeihin kriittisesti etukäteen. Luennoilla tuodaan esille esimerkkeihin liittyviä rajoituksia ja lisäesimerkkejä, jotka syventävät opiskelijan teoreettista ymmärrystä huomattavasti. Kurssin suoritukseen kuuluu olennaisena osana harjoitustyö, jonka tekemisen kautta tämä teoriatieto muuttuu kokemukselliseksi tietotaidoksi. Oliokeskeistä tietojärjestelmien kehittämistä ei voi opiskella kirjasta lukemalla vaan learning-by-doing - menetelmällä. Kannattaa siis panostaa teoriatiedon opiskeluun ja sen käytännön soveltamiseen. Myös taustatiedot auttavat. Tämän kurssin suorittamista edesauttavat mm. Ohjelmointi 1-, Ohjelmointi 2-, ja Tietojärjestelmien kehittäminen-kursseilla hankkimasi osaaminen. Käytännössä kaikista kurssilla käsiteltävistä asioista löytyy lisätietoa internetistä. Erityisen suositeltavaa on käyttää Wikipediaa, joka tyypillisesti tarjoaa ytimekkäät, kattavat, ja ajantasaiset kuvaukset esimerkiksi kurssilla käsiteltävistä englanninkielisistä termeistä ( Luennoilla perehdymme aluksi yleisellä tasolla tietojärjestelmien kehittämiseen (liite 4), minkä jälkeen aloitamme perehtymisen oliokeskeiseen kehitystyöhön tämän monisteen 1. luvusta alkaen. Moniste koostuu kolmesta pääosasta: oliolähestymistavan ja oliomenetelmän kuvauksesta sekä joistakin oliolähestymistavan erillisaiheista. Oliomenetelmäosuuden pohjana on UML, jota on joiltakin kohdin laajennettu OMTja OMT++- menetelmien osuuksilla. Tämä luentomonisteen 1. version on kehittänyt ja kirjoittanut Mauri Leppänen vuosituhannen vaihteessa. Timo Käkölä on keväällä ja syksyllä 2006 kehittänyt monisteen sisältöä ja kieliasua edelleen, jotta ne paremmin heijastavat alan kehitystä. Pekka Makkonen on kirjoittanut liitteen 4. Työtä luentomonisteen kehittämisen suhteen riittää edelleen paljon, joten kommentit ovat enemmän kuin tervetulleita. Opiskelijat voivat halutessaan osallistua edelleen kehittämiseen esimerkiksi pienten kehitysprojektien kautta. Antoisaa kurssia! Timo Käkölä

3 3 1. OLIOLÄHESTYMISTAPA Oliolähestymistapa (eli oliokeskeisyys 1 ) tarkoittaa kehittämis- ja ohjelmointiparadigmaa, jonka mukaan todellisuus nähdään joukkona toisiinsa vuorovaikutuksessa olevia olioita (Koskimies, 1995). Kuva 1.1. havainnollistaa oliolähestymistavan maailmankuvaa. Muita paradigmoja ohjelmoinnin puolella ovat proseduraalinen, funktionaalinen ja logiikkaohjelmointi. Tietojärjestelmien kehittämisessä tunnistetaan seuraavia paradigmoja: tietokeskeinen, toimintokeskeinen, protoilu ja osallistuva tietojärjestelmän suunnittelu. Seuraavaksi pyritään tarkentamaan kuvaa oliolähestymistavasta luomalla silmäys sen historiaan, määrittelemällä sen keskeiset käsitteet ja periaatteet sekä rinnastamalla sitä perinteiseen tietojärjestelmien kehittämiseen Historiaa Seuraavat viitteet oliolähestymistavan historiasta voidaan kirjata (vrt. Berard, 1993): 1963: Sutherlandin Sketchpad (object-oriented graphics). 1966: Simula (Dahl, Nygaard) (object-oriented programming language). 1972: Smalltalk (Kay, Xerox); object-oriented -termiä käytetään. 1980: Boochin menetelmä : object-oriented design luvun alkupuoli: oliopohjaisia laitteistoarkkitehtuureja: iapx 432 (Intel) ja Rekursiv; Parnas julkaisi ohjelmistoperheistä (program families) ja hänen ajatuksiaan otettiin laajasti käyttöön tietoliikenneteollisuudessa luvun puolivälistä alkaen: kehitettiin uusia olio-ohjelmointikieliä, kuten Objective-C, C++, Self, Beta, Eiffel, Flavors, Trellis/Owl, Oberon luvun puolivälissä ensimmäiset kaupalliset oliotietokannat tulivat markkinoille ja useita konferenssisarjoja (esimerkiksi OOPSLA, ECOOP) käynnistettiin luvun lopussa kehitettiin menetelmiä, jotka kattavat myös analyysin: OOA, OORA, OOSE luvulla: object-oriented domain analysis, olio-ohjelmistojen testaus ja metriikat, oliopohjaiset CASE-välineet. 1998: OMG (Object Management Group) hyväksyi UML:n (Unified Modeling Language) standardiksi; useita UML-perusteisia kirjoja, menetelmiä ja CASEvälineitä julkaistiin. 2005: UML versio julkaistiin ja hyväksyttiin kansainväliseksi ISO standardiksi. UML 2.0 julkaistiin. 1 Olioterminologia on vielä vakiintumaton. Tässä yhteydessä näkee käytettävän myös termejä oliosuuntautunut, oliokeskeinen ja oliopohjainen lähestymistapa. Englanninkielessä vastaavat termit ovat object-oriented, object-centered ja object-based. Edellä mainituille käsitteille on joskus määritelty eksplisiittisesti käsitteellisiä eroja. Tässä niihin ei oteta kantaa.

4 4 Kuva 1.1. Oliolähestymistapa ja olioiden vuorovaikutus Oliolähestymistapa on levinnyt ohjelmointikielistä ohjelmointiin, tietojärjestelmien analyysiin ja suunnitteluun, liiketoiminnan (prosessien) analyysiin ja suunnitteluun, ja jopa strategiseen suunnitteluun Peruskäsitteitä Oliolähestymistapa määrittyy seuraavilla peruskäsitteillä ja -periaatteilla. Olio on rajattavissa ja yksilöitävissä oleva asia tai käsite, joka on merkityksellinen käsillä olevan tarkastelun kannalta ja kattaa sekä rakenteen (tilan) että käyttäytymisen. 2 Siitä voidaan käyttää myös nimitystä olioilmentymä (object instance). Se voi olla esimerkiksi: liiketoimintaolio (business object, application-domain object), joka vastaa liiketoiminnan käsitettä tai asiaa; esim. Matti Mainio, Markkinointiosasto. tekninen olio (computer-domain object), joka on toteutettavan järjestelmän tekninen komponentti; esim. tietty Ikkuna, Painike tai Anturi, ohjausolio (control object), jonka vastuulla on ohjata ja koordinoida muiden olioiden toimintaa. 2 "A discrete entity with a well-defined boundary and identity that encapsulates state and behavior" (UML, 1999)

5 5 (Olio)luokka (Kuva 1.1) kuvaa joukkoa, joka muodostuu rakenteeltaan ja käyttäytymiseltään (lyh. ominaisuuksiltaan) samanlaisista olioista. Se on eräänlainen malli tai muotti. Työntekijä ja Osasto Kuvassa 1.1 ovat tyypillisiä luokkia. Olioiden luokittelun perustana käytetään näkemystä niiden todellisesta luonteesta eikä pelkästään niiden ilmituotuja ominaisuuksia (vrt. Lato ja Hevonen). Olioluokat muodostavat hierarkian, jossa on yliluokka (esim. Henkilö) ja sen aliluokkia (esim. Sihteeri ja Sorvari; Työntekijä, Ohjelmoija). Attribuutti kuvaa luokkaan kuuluvien olioiden rakenteellista ominaisuutta (esim. Henkilön nimi, ikä ja paino). Attribuuttiarvo yksilöi ominaisuuden (esim. Ville, 30, 75). Arvoilla ei ole identiteettiä (vrt. 30) toisin kuin olioilla. Operaatio on olion käyttäytymisen aikaansaama toimenpiteen määritys (esim. laskekust(), haetunnit()). Se voidaan ymmärtää myös määritykseksi palvelusta, jonka olio tarjoaa. Luokan olioilla on samat operaatiot. Joskus sama operaatio voidaan kohdistaa eri luokkiin kuuluviin olioihin (vrt. monimuotoisuus, polymorfismi). Metodi on luokan olioihin sovitettu operaation toteutus (esim. tulosta). Operaatioon voi liittyä parametreja (esim. muutapalkka(muutos)). Viesti (message) voidaan ymmärtää palvelupyynnöksi. Sen vastaanottaminen saa aikaan olion aktivoitumisen ja viestissä mainitun operaation (tarkemmin metodin) toteuttamisen. Viesti voi kantaa mukanaan arvoja parametreina. Oliot siis kommunikoivat keskenään lähettämällä viestejä toisilleen. Assosiaatio on kahden tai useamman luokan välinen rakenteellinen suhde (esim. Töissä assosiaatio Työntekijän ja Osaston välillä) Perusperiaatteita Abstrahointi (abstraction) periaatteen mukaan nostetaan esille ongelman kannalta relevantit piirteet ja jätetään huomiotta epärelevantit tarkastelukohteen yksinkertaistamiseksi ja kuvaamisen, analysoinnin ja suunnittelun suorittamiseksi ilman häiritseviä yksityiskohtia (esim. olio vs. olioluokka, aliluokka vs. yliluokka). Tietoabstrahoinnilla erotetaan luokan ulkoinen liittymä eli rajapinta (interface) sisäisestä toteutuksesta (implementation). Identiteetti (identity) periaatteen mukaan oliot ovat yksikäsitteisesti tunnistettavissa muiden kuin ominaisuuksiensa (rakenteensa tai käyttäytymisensä) avulla (vrt. relaationaalinen käsitys). Identiteettiä on verrattu käsitteelliseen "kahvaan" (handle, UML), jonka avulla muut oliot voivat tunnistaa olion ja lähettää sille viestejä. Kapselointi (encapsulation) periaatteen mukaan kootaan yhteen toisiinsa liittyvät asiat eli olion (tieto)rakenne ja käyttäytyminen (operaatiot). Tiedon suojaus (information hiding) (Kuva 1.2, Bennett ym. 1999, s. 73) periaatteen mukaan tietyt (yksityiskohtaiset) piirteet oliosta salataan sellaisilta olioilta, joiden ei

6 6 kuulu niitä tuntea, määrittelemällä olioille rajapintoja, joihin toiset oliot voivat viitata. Rajapinnan takana oleviin yksityiskohtiin (implementation) ei ole muilla pääsyä. Kuva 1.2. Kapselointi: oliota ympäröivät suojaavat kerrokset Periytyminen (inheritance) on periaate, jonka mukaan aliluokat perivät yliluokkansa ominaisuudet, jolloin aliluokkien olioilla on samantapainen rakenne ja käyttäytyminen kuin vastaavan yliluokan olioilla. Aliluokille voidaan toki määritellä lisäominaisuuksia, jotka eivät kuitenkaan saa olla täysin ristiriidassa perittyjen ominaisuuksien kanssa (Kuva 1.3). Moniperinnässä (multiple inheritance) aliluokalla on useampia yliluokkia, joilta se voi periä ominaisuuksia (esim. Asunto, Laiva Asuntolaiva). Huonosti käytettynä moniperintä johtaa luokkahierarkian rämettymiseen. 3 Kuva 1.3. Periytyminen Monimuotoisuus (polymorphism, overriding) periaatteen mukaan tietty operaatio (loogisella tasolla) voidaan toteuttaa eri tavoin (metodein) eri luokissa ja niiden olioissa riippuen luokan (ja olioiden) yksityiskohtaisesta luonteesta tai rakenteesta (esim. Luo operaation toteuttamiseksi voidaan määritellä erilainen metodi Tiedoston, Kuvakkeen ja Ikkunan yhteyteen; tai laskepalkka toteutetaan eri tavalla riippuen siitä, onko kysymyksessä kuukausi-, viikko- tai tuntipalkalla oleva Henkilö). 3 Käytännön tietojärjestelmätyössä moniperintää on kritisoitu voimakkaasti. Erityisesti seuraavan kaltainen käyttötapa on tyrmätty. Halutaan luokka A, jolla on luokkien B ja C käyttäytyminen. Toteutetaan A määrittelemällä se B:n ja C:n aliluokaksi. Tuloksena spagettia (vrt. Jakobson,1992)

7 7 Dynaaminen sidonta (dynamic binding) periaatteen mukaan vasta ajoaikana päätetään siitä metodista, joka kutsutaan toteutettavaksi. Jakaminen (sharing) periaatteen mukaan olioiden samanlaiset ominaisuudet kuvataan kootusti yhdessä paikassa, yleensä oliojoukon määrittelevässä olioluokassa. Periaate johtaa lyhyempiin kuvauksiin ja tukee luokkien uudelleen käyttöä (reuse). Kyseiset periaatteet on otettu huomioon ja toteutettu eri tavoin eri menetelmissä ja kielissä. Ei ole olemassa yhtenäistä käsitystä oliolähestymistavasta (vrt. erot ohjelmoinnin, oliokantojen ja oliosuunnittelun käsityksissä; Eckert, Golder, 1994) Olioteknologia Olioteknologialla tarkoitetaan niitä kieliä, ohjelmistoja ja arkkitehtuureja, joita on kehitetty tukemaan oliolähestymistavan mukaista analyysia, suunnittelua ja toteutusta: Arkkitehtuureja ja standardeja: Open Distributed Processing (ODP) Common Object Request Broker Architecture (CORBA), DCOM Object Management Architecture (OMA) Service-Oriented Architecture (SOA) Component Object Model (COM) Yhdistelmädokumentit (OLE, OpenDoc) ODMG-93, ODMG-97, ODMG 3.0 Oliokieliä: C++, Smalltalk, Eiffel, CLOS (the Common Lisp Object System), Beta, Modula- 3, Oberon-2, Java, Perl, C#, J# UML 2.0 Oliomenetelmiä: OOA/OOD (Coad, Yourdon, 1991), OOSE (Jacobson ym., 1992), OOAD (Martin, Odell, 1992), OMT (Rumbaugh ym., 1991), OOSA (Shlaer, Mellor, 1992), DOOS (Wirfs-Brock ym., 1990), Booch, 1991, SOOA (Putkonen, 1994), UML (Booch, Jacobson, Rumbaugh, 1997, 1999), OPEN (Graham et al., 1997) CASE-välineitä: Prosa, Excelerator II, Progress OO4GL Ipsys Toolbuilder, Object Management Workbench, OMTool, Paradigm Plus, Rational Rose, SelectOMT, Teamwork, Westmount MetaEdit+ Oliokannan hallintajärjestelmiä: Gemstone, ONTOS, ObjectStore, Objectivity, Itasca, Poet, Open ODB, Versant Oliorelaatiokannan hallintajärjestelmiä:oracle10, SQL Server, Omniscience 1.5. Järjestelmäarkkitehtuuri Oliokeskeinen järjestelmäarkkitehtuuri eriyttää erityyppiset luokat eri tasoille. Tyypillisessä kolmitasoisessa (3-tier) arkkitehtuurissa (Kuva 1.4, Bennett ym, s. 262) järjestelmän käyttöliittymän muodostamat luokat muodostavat oman tasonsa (presen-

8 8 tation), pysyväisluonteisista tiedoista huoltapitävät luokat oman tasonsa (data base) ja liiketoimintalogiikasta vastaavat luokat oman tasonsa (business logic). Kuvassa 1.5 on annettu yksityiskohtaisempi esimerkki 3-tasoisesta arkkitehtuurista. Kuva 4.13 havainnollistaa sitä, millaisena osa ko. järjestelmää (pankkiautomaatti-järjestelmä) näkyy luokkamäärityksinä. Kuva 1.4. Kolmitasoarkkitehtuuri Kuva 1.5. Esimerkki kolmitasoarkkitehtuurista MVC (Model-View-Controller)-arkkitehtuurimalli on paljon käytetty kolmitasoinen malli. Model-osa kuvaa ohjelmiston ydintä sisältäen ohjelmiston luokat suhteineen ja toimintoineen. View esittää käyttöliittymän. Controller toimii rajapintana ohjelmiston ja käyttöliittymän välillä. Controller voi esimerkiksi tehdä muunnoksia, toteuttaa tallennuksia, luoda ohjelmiston olioita ja käsitellä niitä. Mallia käsitellään luvussa 4. Web-pohjaisissa järjestelmissä käytetään nykyisin n-tasoista arkkitehtuuria, jossa n (>3) tarkoittaa tasojen määrä ja verkkoa (network). Kuvissa on havainnollistettu sitä, miten monista verkon toisiinsa kytkemistä osista järjestelmä voidaan koostaa. Oliokeskeisyys omalta osaltaan edesauttaa ko. osien yhteentoimimista (interoperability). Kuvassa 1.8 esitetään Java Platform, Enterprise Edition (Java EE, aikaisemmalta nimeltään J2EE), joka on hajautettujen monikerrosarkkitehtuuriin perustuvien Javaohjelmointikielellä toteutettavien sovellusten kehittämistä ja suorittamista tukeva ohjelmointialusta. Java EE:n mukaiset sovellukset kehitetään pääosin modulaarisia, sovelluspalvelimella suoritettavia komponentteja hyödyntäen. Sovelluskehittäjät voivat kehittää tehokkaasti skaalautuvia ja monilla alustoilla toimivia yrityssovelluksia, jotka integroituvat perinteisiin tietojärjestelmiin saumattomasti, ja keskittyä

9 9 ensisijaisesti liiketoimintalogiikan ymmärtämiseen, kuvaamiseen, ja toteuttamiseen sovelluspalvelimen tarjotessa palvelut transaktioiden hallintaan, tietoturvaan, komponenttien hallintaan ja muihin matalamman tason tehtäviin. Ohjelmointialusta ja sen määrittävä spesifikaatio kehittyvät jatkuvasti eri intressiryhmien verkostomaisena yhteistyönä (Java Community Process). Sen toteuttava lähdekoodi on verkostolta julkisesti ja ilmaiseksi saatavissa. Spesifikaatio muodostaa samalla epävirallisen standardin, jonka mukaisesti intressiryhmien on toimittava voidakseen määrittää tuotteensa ja palvelunsa Java EE yhteensopiviksi. Service-Oriented Architecture (SOA)-käsite (Kuvat 1.9 ja 1.10) kuvaa n-tasoista tietojärjestelmäarkkitehtuuria, joka auttaa organisaatioita jakamaan liiketoimintalogiikan ja -tiedon useiden sovellusten (application) välillä. Sovellukset voidaan luoda nopeasti ja joustavasti hyödyntäen löyhästi kytkettyjä mutta yhteensopivia web-palveluita, jotka ovat riippumattomia niiden toteuttamiseen käytetyistä ohjelmointikielistä ja alustoista (tai käyttöjärjestelmistä). Sovellus voi esimerkiksi hyödyntää samanaikaisesti palveluita, jotka on toteutettu C#-kielellä.Net-alustalla, ja palveluita, jotka on toteutettu Java-kielellä Java Platform, Enterprise Edition (Java EE)-alustalla. Eri alustoilla toimivat sovellukset voivat myös käyttää toistensa palveluita vapaasti, mikä edesauttaa palveluiden ja ne toteuttavien ohjelmistojen uudelleenkäyttöä. Kuva 1.6. Esimerkki internet-arkkitehtuurista ja teknisistä vaihtoehdoista Kuva 1.7. Esimerkki internet-arkkitehtuurista ja teknisistä vaihtoehdoista

10 10 Kuva 1.8. Java Platform, Enterprise Edition (Java EE) (Sun Microsystems, Inc.). Kuva 1.9. Service-Oriented Architecture (SOA) on arkkitehtuurimalli, jonka avulla liiketoimintaprosessien tarvitsemat tietojärjestelmäpalvelut voidaan toteuttaa joustavasti yhdistelemällä yhteensopivia ohjelmistokomponentteja palvelukokonaisuuksiksi, jotka ovat riippumattomia ko. komponenttien teknisestä toteutusympäristöstä Etuja ja ongelmia Oliolähestymistavan todellisia tai väitettyjä etuja ovat, että tapa: vastaa ihmisen luonnollista hahmotus- ja ajattelutapaa tukee kehittämistyötä myös uusilla sovellusalueilla (tosiaikasovellukset, CAD/CAM, animaatio, simulointi, teollisuustuotannon järjestelmät) helpottaa kokonaisuuden jakamista yhteensopiviksi osiksi (interoperability), jotka edustavat sovellusmaailman olioita pakottaa tarkastelemaan yhtä aikaa tietoja ja niiden käsittelyä olioina olioluokat tarjoavat luonnollisen lähtökohdan ohjelmiston toteutukselle takaa aidosti oliopohjaiset toteutukset (vrt. C++, CLOS, oliokannat) helpottaa jäljitettävyyttä (traceability) eli tietyn ratkaisun syiden ja seurausten selvittämistä helpottaa uudelleenkäytettävien (reusable) ohjelmaosien tuottamista, ja helpottaa ohjelmistojen laajentamista ja ylläpitoa.

11 11 Vaikeuksia oliolähestymistavan soveltamisessa: suurimman hyödyn saamiseksi lähestymistapaa on sovellettava laajassa mitassa ( to reduce a need of deobjectification and objectification ) rakenteisen lähestymistavan perinteen painolasti (osaaminen, aiemmat sovellukset (legacy systems), dokumentit, menetelmät, kehitysympäristöt, tottumukset) vaarana liian aikainen keskittyminen koodiin ja sen tuottamiseen eikä sitä edeltävään analyysiin ja suunnitteluun, käsitteiden vakiintumattomuus vaihtoehtoisten menetelmien kirjo (vaikkakin UML:n aseman vahvistuminen helpottaa tilannetta) kehittymättömät organisointimuodot Oliomenetelmät verrattuna rakenteisiin menetelmiin Menetelmällä tarkoitetaan tässä yhteydessä (deskriptiivistä ja preskriptiivistä) kuvausta organisatoristen ja teknisten muutosten suorittamisesta organisaation tietojenkäsittelyssä tehokkaasti ja laadukkaasti. Menetelmä rakentuu suuresta määrästä erilaisia osia 4, joita yhdistävät yleiset filosofiset ja paradigmaattiset olettamukset sekä määritellyt lähestymistavat. Henderson-Sellersiä (1995) mukaillen voidaan erottaa seuraavat menetelmän osat: täydellinen vaihejakomalli sovellettu prosessimalli (waterfall, prototyping, spiral, fountain, pinball) toiminnot koko elinkaaren osalta toimintojen ajalliset suhteet keskenään johdonmukaiset käsitteet ja mallit kokoelma sääntöjä ja ohjeita vaadittujen tulosten kuvaus eli mitä tulee tuottaa ja milloin (check points) mukailtava notaatio metriikat sekä laatua, standardeja, ja testausstrategioita koskevia ohjeita ohjeita projektin hallintaan ohjeita luokkakirjaston hallintaan ja uudelleenkäyttöön roolikuvaukset Menetelmää noudattamalla voidaan kehittämistyö saada määrämuotoisemmaksi ja toistettavaksi ja kokemukset aiemmista hankkeista voidaan saattaa näkyviksi ja hyödyntää uudistetun menetelmän muodossa luotettavammin ja tehokkaammin. Lähestymistapojensa mukaan menetelmät voidaan ryhmitellä: kehittämisprosessin mukaan: vaihejakoon (life cycle) perustuvat, protoiluun perustuvat, ja evolutionaariset (esim. oppimisprosessimalli, dialogiprosessimalli (Lyytinen, 1987)) menetelmät 4 Berard (1995) on esittänyt jäsennyksen menetelmän sisällöstä: käsitteet, notaatiot, prosessit, tuotteet, roolit, periaatteet ja heuristiikat, edellytykset ja soveltamisohjeet (pragmatiikka). Edelleen hän kytkee menetelmän yhteyteen koulutuksen ja tietokonetuen.

12 12 ensisijaisen mallintamiskohteen mukaan: toimintokeskeiset, tietokeskeiset, suorittajakeskeiset menetelmät osallistumisvastuun mukaan: atk-asiantuntemukseen perustuvat ja käyttäjäkeskeiset (participative design approaches, end-user computing) menetelmät määrämuotoisuuden mukaan: formaalit, ei-formaalit menetelmät. Oliolähestymistavan näkökulmasta tietojärjestelmien kehittämismenetelmät voidaan karkeasti jakaa kahteen ryhmään (Jacobson, 1992, Coleman ym s. 6): rakenteista kehittämistä tukevat menetelmät (esim. SDM, SSADM, SA/SD,SADT); perustuvat joko toimintojen ja tietovirtojen mallintamiseen (toimintoperusteiset) tai käsiteltävän tiedon sisällön ja rakenteen mallintamiseen (tietoperusteiset) toiminnot edustavat aktiivista, tieto passiivista puolta tekevät eron analyysin, suunnittelun, ja toteutuksen välillä oliopohjaista kehittämistä tukevat menetelmät (esim. OMT, OOA, OOD, OOSE, Fusion, UML, OPEN); perustuvat olioiden mallintamiseen, joissa yhdistyvät sekä tieto että toiminnot sisältävät seuraavia perustehtäviä: olioluokkien tunnistaminen, olioluokkien organisointi rakenteeksi, olioiden vuorovaikutuksen kuvaaminen, olioluokkien operaatioiden kuvaaminen, olioluokkien sisäisen rakenteen kuvaaminen ero analyysin, suunnittelun ja toteutuksen välillä hämärtynyt (Martin, Odell, 1992). Vakiintuneemman käsityksen mukaan oliomenetelmät voidaan jakaa kahteen luokkaan (Berard, 1993, Berard, 1995): revolutionaariset menetelmät: perustuvat suuressa määrin olio-ohjelmointikielten käsitteisiin ja rakenteisiin (C++, Smalltalk) korostavat monimuotoisuutta, periytymistä, ja tiedon suojausta käyttävät abstrakteja luokkia, parametrisoituja luokkia ja/tai metaluokkia, tarkastelevat kehittämistyön alusta alkaen järjestelmää yhtenäisenä kokoelmana toisiinsa kiinteästi liittyneitä olioita, tekevät selvän eron luokan ja olioilmentymän välillä; luokilla on operaatioita mm. ilmentymien luomiseen ja tuhoamiseen; oliot voivat olla aktiiveja esim. Booch, 1991, Berard, 1993, Wirfs-Brock ym., 1990 evolutionaariset menetelmät: käyttävät graafisia kuvaustekniikkoja, joista monet tunnetaan myös rakenteisissa menetelmissä (esim. tietovirtakaaviot, ER-mallit) käsittelevät olioita ikään kuin ne olisivat tietoa mallintavat olioita tiedonmallintamisperiaatteilla (vrt. normalisointi) pitävät olioita staattisina ja tiedon suojausta toisarvoisena kytkevät oliot kiinteästi tietovaraston käsitteeseen

13 13 esim. Rumbaugh (1991), Shlaer, Mellor (1988), Martin, Odell (1995), Fusion (Coleman ym., 1995), Embly, Kurtz (1992). Oliomenetelmiä on luokiteltu myös sukupolvien mukaan: 1. sukupolven menetelmiä: Booch (1991), OMT (Rumbaugh ym,., 1991), OOA/OOD (Coad, Yourdon, 1991), OOS, SOMA, OOSE. 2. sukupolven menetelmiä: Fusion (Coleman ym.), Mainstream (Yourdon ym.), UM (Unified Method, Booch, Rumbaugh, 1996). 3. sukupolven menetelmiä: UML 2.0 (Unified Modeling Language, Booch, Jacobson, Rumbaugh, 2005; Unified Modeling Process, Jacobson, Booch, Rumbaugh, 1999), OPEN (Objectoriented Process, Environment and Notation, Graham, Henderson-Sellers, Younessi, 1997) luvun alkupuoli oli voimakasta uusien oliomenetelmien esiinmarssia. 90-luvun puolivälissä alkoi kehitysvaihe, joka jätti jäljelle vain muutamia varteenotettavia menetelmiä. Tunnettujen menetelmien valikoiman suppenemiseen vaikuttivat fuusiot ja liittoutumien syntyminen (metamallintamisen tuella): kolmas osapuoli kokoaa uuden menetelmän muiden osista; esim. Fusion (Coleman ym., 1995) menetelmän kehittäjien yhteenliittymät; esim. UML (Booch, Jacobson, Rumbaugh, 1999) laaja liittoutuma: OPEN (Graham, Henderson-Sellers, Younessi, 1997) Käytettyjen menetelmien määrä on vähentynyt erityisesti siksi, että tietojärjestelmiä ja ohjelmistotuotteita kehitetään nykyään yhä verkostoituneemmassa globaalissa ympäristössä, jossa järjestelmäintegraattorit tuottavat asiakkailleen entistä kokonaisvaltaisempia, modulaarisempia, ja ketterämpiä ratkaisuja ja niiden partnerit ja alihankkijat suunnittelevat ja/tai toteuttavat järjestelmien osia ympäri maailmaa 5. Sekä ratkaisuja että niiden toteuttamiseen tarvittavia menetelmiä ja välineitä säätelevät myös yhä monimutkaisemmat ja lukuisammat sisäiset ja ulkoiset normit. Verkostoitunut järjestelmäkehitys onkin erittäin vaikeaa, mikäli eri toimijat käyttävät eri menetelmiä ja työkaluja. Menetelmien kansainvälisen standardoinnin merkitys korostuu ja yksittäisten menetelmän kehittäjien rooli vähenee tulevaisuudessa entisestään. Työkalujen on nojattava entistä enemmän avoimiin standardoituihin rajapintoihin, jotta menetelmien edellyttämän tiedon välitys, varastointi, ja käsittely työkalujen välillä helpottuu ja voidaan rakentaa integroituja kehitysympäristöjä tietojärjestelmien ja tuotteiden hallitsemiseen läpi niiden elinkaarien. 5 Katso esimerkiksi: Salo, A., & Käkölä, T. (2005). Groupware Support for Requirements Management in New Product Development. Journal of Organizational Computing and Electronic Commerce, 15(4), USA. Käkölä, T. et al (2006). A Framework for ICT-Supported International Outsourcing of Software Production Process and Management. International Journal of Cases in Electronic Commerce, 2. USA.

14 Lopuksi Olioajattelun hyötyjen on todettu kertyvän sitä varmemmin, mitä perusteellisemmin ja laaja-alaisemmin ajattelu on onnistuttu viemään läpi koko organisaatiossa, paremmin opitaan ymmärtämään oliolähestymistavan perusajatus (vrt. oppimiskäyrä), useammin päästään uudelleen käyttämään aiemmin määriteltyjä olioluokkia myöhemmissä projekteissa. Olioajattelun optimaalinen hyödyntäminen ohjelmisto- ja järjestelmäliiketoiminnassa edellyttääkin strategista muutosta yritysten toiminnassa. Hyödyntäminen edellyttää systemaattisia ja pitkäjänteisiä investointeja, joten ohjelmisto- ja järjestelmäpohjaisia palveluita tarjoavien yritysten on mahdollisuuksien mukaan siirryttävä projektiliiketoiminnasta kohti tuoteorientoitunutta liiketoimintamallia ja mahdollisimman tarkoin määriteltävä tuotteidensa ja palveluidensa ominaisuudet ja niiden kehittyminen useiden vuosien ajanjaksolla, jotta oliopohjainen tuotekehitys voidaan ohjata toiminnan, asiakashyötyjen, ja kassavirtojen kannalta kriittisille alueille. Näin olioluokkien kehittämiseen tehtyjä panostuksia päästään hyödyntämään vuosien aikana kokonaisten tuoteperheiden ja lukuisien tuotevarianttien tuottamisessa ja myymisessä 6. Kuva Esimerkki integroidusta työkaluperheestä, jonka avulla voidaan muodostaa SOA-tietojärjestelmäarkkitehtuuri liiketoimintaprosessien ja tietojärjestelmien kokonaisvaltaisen suorittamisen ja kehittämisen tukemiseksi: kehittämisprojektisal- 6 Tätä tutkimusaluetta käsittelee huomattavasti syvällisemmin esimerkiksi: Käkölä, T. & Dueñas, J.C. (Eds.) (2006). Software Product Lines: Research Issues in Engineering and Management. Springer, Heidelberg, Germany.

15 15 kun projektien riski-, kustannus-, ja tuottoanalyysit; liiketoimintastrategian linkittäminen liiketoiminnan tavoitteisiin ja vaatimuksiin; vaatimusten linkittäminen malleihin nykyisistä ja tavoitelluista liiketoimintaprosesseista sekä mittareiden luominen prosessien suorittamisen tehokkuuden ja vaikuttavuuden seuraamiseksi; ohjelmistosovellusten vaatimusten ja käyttötapausten määritteleminen ja sovellusten tarjoamien palveluiden mallintaminen, toteuttaminen, ja testaaminen; palveluiden konfigurointi ja integrointi prosessien tarvitsemiksi palvelukokonaisuuksiksi liiketoimintaprosessien suorituskielen (esimerkiksi BPEL) avulla; ja liiketoimintaprosessien suoritus, suorituskyvyn mittaaminen ja raportointi kehityskohteiden havaitsemiseksi.

16 16 2. UML-, OMT-, ja OMT++-MENETELMÄT: yleiskuvaukset 1980-luvun loppupuolella ja 1990-luvun alussa julkaistiin kymmeniä oliomenetelmiä. Myöhemmin joukosta alkoi erottua muutamia kaupallisesti menestyviä menetelmiä, kuten OMT (Rumbaugh ym, 1991). OMT:n suosiota on selitetty muiden muassa sillä, että sitä käsittelevässä kirjassa kuvattiin havainnollisesti ja selkeästi vaihejako ja se sisälsi joitakin rakenteisen lähestymistavan puolella tutuksi tulleita malleja. Konvergenssi menetelmien joukossa jatkui 1990-luvun loppupuolella; UML syntyi kolmen merkittävän menetelmän kehittäjän ("three amigos": Booch, Rumbaugh ja Jacobson) toimesta. UML:stä julkaistiin alkuvaiheessa vain mallinnuskieli. Myöhemmin on esitetty myös prosessikuvaus (Jacobson ym, 1999), mutta se ei ole yhtä (pedagogisesti) suoraviivainen kuin OMT. UML on edelleen aktiivisesti kehityksen alla ja syksyllä 2006 käytössä on jo versio 2.0. Tällä kurssilla pyritään esittelemään yhtenäinen oliomenetelmä. Sen pohjana käytetään UML-notaatioa ja OMT:n perusprosessia. Nokian joissakin yksiköissään käyttämästä OMT++-menetelmästä on otettu erityisesti käyttöliittymän suunnittelua koskevia osuuksia. Tästä syystä tässä luvussa käydään läpi kunkin kolmen menetelmän perusrakenne, UML-menetelmää painottaen UML-menetelmä OMT (Object Modeling Technique) (Rumbaugh ym, 1991) kattaa analyysin, suunnittelun ja osan toteutusta. Sen kehittivät General Electric Research and Development Center:issä James Rumbaugh, Michael Blaha, William Premerlani, Frederich Eddy, ja William Lorenson pääosin 1980-luvun lopulla. Vuosien vaihteessa Rumbaugh siirtyi Grady Boochin Rational-yritykseen ja vuonna 1996 heidän joukkoonsa liittyi myös Jacobson. Unified Method versio 0.8 (Marraskuu 1995) ja UML (Unified Modeling Language, syyskuu 1996) julkaistiin standardoinnin pohjaksi. Marraskuussa 1997 OMG (Object Management Group) hyväksyi UML 1.1:n standardiksi. Vuonna 2005 OMG julkaisi nykyisen version UML 2.0. UML-prosessi (Jacobson ym, 1999) voidaan jakaa kolmen tekijän mukaan seuraavasti (Kuva 2.1): 1. Tehtäväkokonaisuudet (disciplines): Liiketoimintaprosessien mallinnus auttaa jäsentämään kehityksen kohteena olevan prosessin nykytilan ja priorisoimaan kehityskohteet. Vaatimusten määritys (requirements engineering) kerää, kokoaa ja määrittää toiminnalliset ja ei-toiminnalliset vaatimukset järjestelmälle. Analyysi (analysis) tarkentaa ja jäsentelee edellä koottuja vaatimuksia, jotta voidaan muodostaa ymmärrettävä, kattava ja ylläpidettävä kuvaus järjestelmästä (MITÄ järjestelmän tulee tehdä?). Suunnittelu (design) tarkentaa ja edelleen työstää tuotettua analyysimallia siten, että pystytään vastaamaan kysymykseen "MITEN järjestelmä vaatimukset tyydyttää?".

17 17 Toteutus (implementation) toteuttaa suunnittelun tuottamat kuvaukset (suunnittelumalli) käyttäen komponentteja, ohjelmointikieliä, tietokanta-teknologiaa yms. Testaus (test) varmistaa jokaisen toteutetun osan toimivan vaatimusten mukaisella tavalla. Kuva 2.1. Tehtäväkokonaisuudet suoritetaan iteratiivisesti vaiheissa 2. Vaiheet: Aloitusvaihe (inception): kiinnitetään ja rajataan liiketoiminta-alue ja perusprosessit (liiketoiminnan mallintaminen), määritetään kriittiset menetystekijät ja riskit, hahmotellaan perusarkkitehtuuri, arvioidaan resurssitarve ja tehdään projektisuunnitelma, tehdään mahdollisesti prototyyppi, lopuksi päätetään, kannattaako kehittämistä jatkaa. Tarkentamisvaihe (elaboration): analysoidaan ongelma-alue, määritetään vaatimukset, tarkennetaan perusarkkitehtuuria, priorisoidaan järjestelmäosia, tehdään yksityiskohtaisempi projektisuunnitelma. Konstruointivaihe (construction): Toteutetaan ja testataan suunnitellut ratkaisut Käytetään mahdollisuuksien mukaan alpha-versiota itse laadun parantamiseksi Luovutusvaihe (transition): luovutetaan järjestelmä ensin beta-versiona ja myöhemmin tuotanto-versiona käyttäjien käyttöön, tehdään välttämättömät korjaus- ja ylläpitotehtävät,

18 18 tehdään päätös projektin päättämisestä, kootaan kokemukset ja korjataan niiden mukaisesti prosessimallia. 3. Iteraatiot (iterations): Kunkin vaiheen sisällä voi olla useampia iteraatiokierroksia, joiden aikana vaatimuksia, kuvauksia, suunnitelmia, ja toteutuksia tarkennetaan ja tarpeen mukaan muutetaan. Iteraatioiden tarve on tapauskohtainen. Kuva 2.2 näyttää, millä painoilla mallit esiintyvät eri vaiheissa (hypoteettisessa projektissa). Luovutusvaiheessa malleihin tehdään enää pieniä tarkennuksia käyttäjien työn helpottamiseksi. Kehittämisen kulun konkretisoimiseksi voidaan esittää myös ne mallit, joita eri yhteyksissä tuotetaan (Kuva 2.3, Jacobson ym, 1999 p. 10; Kuvat 2.4 ja 2.5): Liiketoimintakäyttötapausmalli (business use case model) kuvaa liiketoimintaa tekevät aktorit ja heidän tavoitteensa liiketoimintaprosessien suorittamisen ja ohjaamisen näkökulmista sekä prosessit ja niiden tuottamat palvelut asiakkaille. Yhteen malliin voi liittyä useita käyttötapausmalleja, joista kukin kuvaa yhden järjestelmän (sovelluksen) toimintaa. Käyttötapausmalli (use case model) kuvaa järjestelmän käyttäjät ja käyttötapaukset (so. toiminnot, joita järjestelmän tuella voidaan suorittaa), Analyysimalli (analysis model) tarkentaa käyttötapausmallia niin järjestelmän rakenteen (luokkakaavio, class diagram) kuin käyttäytymisenkin (sekvenssikaavio, sequence diagram; yhteistoimintakaavio, collaboration diagram) osalta, Suunnittelumalli (design model) kuvaa järjestelmän teknisen rakenteen ja toiminnan, Sijoitusmalli (deployment model) kuvaa järjestelmän solmut (laitteet) ja järjestelmän ohjelmistokomponenttien sijoittamisen niihin, Toteutusmalli (implementation model) kuvaa järjestelmän ohjelmistokomponentit ja niiden sisällön olioluokkina, Testimalli (test model) kuvaa testaukset ja niiden suhteet käyttötapauksiin. Yksityiskohtaisimmillaan prosessia voidaan havainnollistaa kuvan 2.6 (Jacobson ym p. 324) tavoin, jolloin osoitetaan myös roolihenkilöiden vastuut eri tehtäväkokonaisuuksien/kuvausten avulla.

19 19 Kuva 2.3. Kuusi mallityyppiä Unified Process-menetelmässä. Tyyppien välillä on riippuvuuksia, joista esimerkkinä esitetään Use Case-mallien liittyminen muihin mallityyppeihin. Kuva 2.4. Jäljitettävyys eri mallien välillä Unified Process-menetelmässä kokonaisvaltaisen SOA-arkkitehtuurin luomiseksi ja ylläpitämiseksi.

20 20 Kuva 2.5. UML näkymät ja kaaviot Kuva 2.6. Työntekijöiden roolit on kuvattu vasemmalla ja oikealla pystysarakkeella. Kullekin työroolille määritellään oma uimarata, johon määritellyistä tehtävistä roolin haltija on vastuussa. Työnkulut kuvataan pallukoilla. Esimerkiksi komponenttisuunnittelija analysoi luokkia ja paketteja analyysikokonaisuudessa, suunnittelee luokkia ja osajärjestelmiä suunnittelukokonaisuudessa, toteuttaa luokkia ja osajärjestelmiä toteutuskokonaisuudessa, ja tekee yksikkötestausta testauskokonaisuudessa.

21 OMT-menetelmä (Rumbaugh ym., 1991) OMT-menetelmän vaihejako koostuu seuraavista vaiheista (Kuva 2.7): Analyysi: MITÄ järjestelmän pitäisi tehdä? luodaan kuvaus rakenteista, toiminnoista ja toimintaympäristöstä keskitytään ongelma-alueeseen ollaan riippumattomia toteutusympäristöstä peruskäyttäjiltä edellytetään aktiivista osanottoa lopputuloksena: ongelman kuvaus luokkakaavio ja tietohakemisto tilakaaviot ja sekvenssikaaviot, tietovirtakaaviot Järjestelmän suunnittelu: arkkitehtuurin suunnittelua järjestelmän ositus osajärjestelmiksi luokkakirjastojen käyttö rajoitteet toteutukselle lopputuloksena: järjestelmän arkkitehtuuri ja ositus osajärjestelmiksi Oliosuunnittelu: MITEN kukin osajärjestelmä toteutetaan? sidotaan toteutusympäristön välineisiin suunnittelumalli rakennetaan lisäämällä analyysimalliin yksityiskohtia: tietorakenteiden ja algoritmien valinta teknisten eli toteutusolioiden (käyttöliittymät, etc.) käyttöönotto lopputuloksena: tarkennetut luokkakaaviot tarkennetut dynaamiset mallit tarkennetut funktionaaliset mallit Toteutus luokkien toteutus ohjelmointikielellä usein suoraviivaista koodirunkojen generointia oliomalleista keskitytään yhteen luokkaan kerrallaan rajapintamäärittelyt tulevat oliomallista lopputuloksena: luokkamääritykset (olioperustainen toteutus) ohjelmat, kaaviomääritykset (ei-olioperustainen toteutus).

22 22 Kuva 2.7. OMT-menetelmän vaihejako Mallit yhdessä kattavat järjestelmän piirteet kokonaisuudessaan. Mallien välillä on monenlaisia yhteyksiä. Esimerkiksi oliomallissa esitetään kunkin luokan yhteydessä operaatiot. Dynaamisessa mallissa esitetään, miten oliot reagoivat vastaanottaessaan viestejä. Funktionaalisessa mallissa osoitetaan, miten ko. operaatiot muodostavat prosesseja, joka vaikuttavat järjestelmän tietojenkäsittelyyn. Kukin malli tarkentuu edettäessä analyysista suunnittelun kautta toteutusvaiheeseen. Ehdottomia määrityksiä sille, mitkä piirteet otetaan malleista käyttöön missäkin vaiheessa, ei ole esitetty. Menetelmä sisältää siis tilannekohtaista liikkumavaraa eli se on kontingentti menetelmä. Kuvissa 2.8 a, b, ja c on esitetty kuvauksia pankkiautomaattijärjestelmästä staattisesta, dynaamisesta ja funktionaalisesta näkökulmasta (käyttötapausmalli on lisätty alkuperäiseen OMT-menetelmään nähden). Kuva 2.8a. OMT-menetelmän luokkakaavio sekä käyttötapausmalli

23 23 Kuva 2.8b. OMT-menetelmän tilakaavio ja sekvenssikaavio Kuva 2.8c. OMT-menetelmän tietovirtakaavio 2.3. OMT++ -menetelmä OMT++ on Nokian joissakin yksiköissä käytössä oleva oliomenetelmä. Se perustuu kolmeen tunnettuun oliomenetelmään: OMT (Rumbaugh ym., 1991) OOSE (Jacobson, 1992) Fusion (Coleman, 1994) OMT++:n rakenne on muodostettu kahden rinnakkaisen polun, staattisen mallintamisen ja dynaamisen (functional) mallintamisen varaan (Kuva 2.9, Jaaksi, 1997, 32). Polkujen lähtökohtana on vaatimusten kerääminen ja päätepisteenä

24 24 testaaminen. Kuvassa on esitetty, millaisia kehittämistehtäviä poluilla suoritetaan ja millaisin vaihein. Enemmän vaiheita korostava esitys OMT++:n rakenteesta on kuvassa Siitä nähdään menetelmän iteratiivinen luonne: oliomallintaminen ja käyttäytymisen mallintaminen tuottavat tarkentuvia kuvauksia vaihe vaiheelta. Seuraavassa on luettelo kunkin vaiheen päätuotoksista: vaatimusten keruu: käyttötapaukset ja tekstikuvaukset määrittely (analysis): määrittelyoliomalli operaatiolista käyttöliittymäkuvaus suunnittelu: suunnitteluoliomalli toimintokuvaukset ohjelmointi: koodi esim. C++:lla 2.4. Oliomenetelmä tällä kurssilla Seuraavissa luvuissa esitellään oliokeskeisen tietojärjestelmien kehittämisprosessia pääosin UML-menetelmän mukaisesti. Koska UML jättää käyttöliittymän suunnittelun hyvin vähäiselle huomiolle, laajennetaan siltä osin tarkastelua OMT++:n ja Bennettin ym (1999) mukaisesti. OMT-menetelmäkirjasta on tekstiin sisällytetty esimerkki pankkiautomaattijärjestelmästä. Kunkin vaiheen yhteydessä määritellään keskeiset käsitteet, esitellään mallit notaatioineen sekä kuvataan askeleet. Päävaiheet ovat (Kuva 2.11): 1. Vaatimusten määritys 2. Analyysi 3. Suunnittelu 4. Toteutus Kuva 2.9. Staattinen ja dynaaminen mallintaminen OMT++-menetelmässä

25 25 Kuvat 2.10 ja OMT++-menetelmän vaiheet ja tämän kurssin oliomenetelmän prosessimalli

26 26 3. VAATIMUSTEN MÄÄRITYS Vaatimusten määrittämisen (requirements engineering) tarkoituksena on tuottaa kattava ja johdonmukainen kuvaus kehitettävän tietojärjestelmän toiminnallisista (functional) ja ei-toiminnallisista (non-functional) ominaisuuksista. Viimeksi mainittu sisältää myös käytettävyys- (usability) vaatimuksia. Määrityksen tulee olla kuvaus tarpeista, ei ratkaisuista. Toteutukseen viitataan vain epäsuorasti (ehdottomat suorituskykyvaatimukset, laitteistoalusta, sovellettavat standardit, tulevaisuuden laajennustarpeet yms). Seuraavassa kerrotaan lyhyesti vaatimusten määritysstrategioista, -menetelmistä ja eräästä keskeisimmästä tekniikasta. Perusasiat vaatimusten määrittämisestä oletetaan jo tunnetuiksi Määritysstrategiat ja -tulokset Tietojärjestelmien kehittämisen olennaisimpana tavoitteena on etsiä ratkaisuja todellisiin ongelmiin ja sellaisia ratkaisuja, joita todella halutaan. Käytännössä pidetään liian usein itsestään selvänä, että käyttäjiltä saadaan helposti heti aluksi täsmälliset ja lopulliset ongelma- ja tavoitelistat suunnittelun pohjaksi. Kysymys on kuitenkin huomattavasti monimutkaisemmasta ja hankalammasta asiasta. Määrittelytyö edellyttää monipuolista kokemusta oikean psykologisen, organisatorisen ja poliittisen lähestymistavan valitsemiseksi kulloiseenkin tilanteeseen. Erityisen tärkeää on löytää kaikki järjestelmän keskeiset käyttäjä- ja muut intressiryhmät, joiden vaatimukset on huomioitava, sekä asiantuntevat edustajat näistä ryhmistä ja saada nämä ryhmät ja niiden edustajat sitoutumaan määrittelytyöhön koko järjestelmän kehittämisprojektin aikana. Näin järjestelmiä voidaan kehittää asiakasohjautuvasti suunnittelijoiden ja käyttäjäryhmien välisissä oppimisprosesseissa. Davisin and Olsonin (1985) mukaisesti voidaan erottaa neljä päästrategiaa vaatimusten määrittelylle: 1. Kyseleminen Perustuu olettamukseen, että käyttäjät pystyvät jäsentämään ongelmakentän ja ilmaisemaan tarpeensa. Soveltuu tilanteisiin, joissa on suhteellisen stabiili järjestelmä ja jäsentynyt ongelmakenttä. 2. Nykyisestä tietojärjestelmästä päättely Tarkoituksena on ottaa oppia ratkaisuista, joita on tehty aiemmin ko. sovellusalueella. Lähtökohtana voi toimia korvattava järjestelmä, samantapainen järjestelmä muualla, sovelluspaketti, käsikirjat tms. Soveltuu tilanteisiin, joissa on vakiintuneet toiminnot ja ympäristö. 3. Hyväksikäyttävän järjestelmän piirteiden selvittäminen Tarkoituksena on hyödyntävän järjestelmän piirteiden selvittämisen kautta rajata ja jäsentää ongelmakenttää, johon vaatimukset voidaan sitten johdonmukaisesti johtaen "ankkuroida".

27 27 Soveltuu tilanteisiin, joissa hyväksikäyttävä järjestelmä on muutosaltis eikä ole olemassa aikaisempaa ratkaisua. 4. Kokeilujen myötä (vrt. protoilu) vähitellen löytäminen Tarkoituksena on tuottaa jo alkuvaiheessa jotain konkreettista, jonka avulla käyttäjät voivat määrittää luotettavammin vaatimuksiaan. Soveltuu tilanteisiin, joissa käyttäjiltä ja/tai suunnittelijoilta puuttuu riittävä kokemus vaatimusmäärittelystä ja kohdealueesta ja käyttäjien tarpeet ovat muutosalttiita. Strategian valinta suoritetaan neljällä askeleella (Kuva 3.1 Davis, Olson, 1985), jotka alkavat hyväksikäyttävään järjestelmään, kehitettävään järjestelmään, käyttäjiin ja kehittäjiin liittyvien epävarmuustekijöiden tunnistamisella ja arvioinnilla ja etenevät kokonaisepävarmuuden johtamiseen. Strategian valinta ohjaa sopivan määritysmenetelmän valintaan. Käyttäjien rooli on ehdottoman tärkeä vaatimusten määrittelyn kaikissa strategioissa ja menetelmissä. UML-menetelmässä on esitetty yksinkertainen jäsennys vaatimusmäärittelylle ja sen tuotoksille (Jacobson ym. 1999, s. 117): Toiminto listaa harkinnan alaiset vaatimukset kartuta ymmärrystä järjestelmän ympäristöstä (so. hyväksikäyttävästä järjestelmästä), Määritä toiminnalliset vaatimukset Määritä ei-toiminnalliset vaatimukset Tuotos piirrelistat (feature lists) Liiketoimintamalli / kohdemaailman malli (domain model) Käyttötapausmalli Täydentävät vaatimukset (eivät ole käyttötapauskohtaisia) Vaatimusmäärittely UML-menetelmässä on tehtäväkokonaisuus, joka ulottuu vaihejaon mukaan konstruointivaiheeseen saakka. Vaatimusmäärittelyn tuloksena saaduille vaatimuksille on IEEE:n toimesta kehitetty seuraavat laatukriteerit: Oikeita: vaatimukset vastaavat käyttäjien todellisia toiveita, Yksiselitteisiä (unambiguous): vaatimukset on ilmaistu tavalla, joka ei jätä tulkinnan varaa, Kattavia: sisältävät kaikki tarpeelliset vaatimukset Johdonmukaisia (consistent): vaatimusten välillä ei ole ristiriitoja, Luokiteltuja (ranked): vaatimukset on luokiteltu: esim. pakolliset, valinnaiset, pohdinnanalaiset, mahdollisesti muuttuvat, Todennettavia (verifiable): vaatimuksen toteutumisen testaamiseksi tulee voida tehdä testitapaus, Muutettavia (modifiable): vaatimusten joukkoon on helppo lisätä uusia vaatimuksia, Jäljitettäviä (traceable): vaatimuksista käsin voidaan paikantaa vastaavat suunnittelu- ja toteutusosat ja päinvastoin.

28 28 Kuva 3.1. Neljä strategiaa vaatimusten määrittelylle 3.2. Käyttötapaukset Ivar Jacobsonin ym. (1992) esittämästä käyttötapausten (use cases) kuvaamisesta on tullut hyvin suosittu tekniikka, jolla voidaan edesauttaa järjestelmän rajaamista, toiminnallista jäsentämistä, ja vaatimusten systemaattista määrittämistä. Tämä tekniikka on osana kaikissa uusimmissa oliomenetelmissä, myös UML:ssä. Seuraavassa kuvataan sen pohjana olevan mallin käsitteet ja käyttö UML:n mukaisesti. Käyttötapauksella (use case) tarkoitetaan toimintosarjaa, jota järjestelmä toteuttaa käyttäjien (aktorien) tarpeiden tyydyttämiseksi (Booch et al., 1999). Pääperiaatteena on, että yhden käyttötapauksen tulisi muodostaa looginen kokonaisuus, jolla on selvä lähtökohta ja merkityksellinen lopputulos. Lähtökohtana eli herätteenä on tapahtuma tai tarve, joka käynnistää käyttötapauksen. Käyttötapausmalli koostuu käyttötapauskaaviosta sekä käyttötapauskuvauksista. Malli kuvaa aktorit, järjestelmän tarjoamat palvelut sekä yhteydet aktorien ja järjestelmän välillä, lyhyesti tavan käyttää järjestelmää. Käyttötapauskaaviota (use case diagram) (Kuva 3.2, Booch ym, 1999, s. 227) käytetään kuvaamaan järjestelmän tarkoitusta, rajausta, toimintoja ja käyttäjiä. Se toimii lähtökohtana analyysimallin laadinnalle ja kuvaa yleisellä tasolla ne tavat ja tilanteet, joita järjestelmä tukee, toimivat aktorit (actors) ja sen, mitkä aktorit missäkin käyttötilanteissa ovat osallisina viestien lähettäjinä, vastaanottajina, tai muulla tavalla toimijoina.

29 29 Kuva 3.2. Laskutus- ja maksatus-järjestelmän käyttötapauskaavio liiketoimintatapaukselle Myynti: Tilauksesta toimitukseen. Initiator-rooli kuvaa sitä, kuka tapauksen suorittamisen aloittaa. Semantiikka: Aktori on eräänlainen rooli, jossa käyttäjät (esim. operaattori, tietokannan hoitaja, peruskäyttäjä), laitteet (esim. tulostin) tai toiset järjestelmät (kirjanpitojärjestelmä) toimivat ollessaan yhteydessä järjestelmään. Kommunikointisuhde aktorin ja käyttötapauksen välillä osoittaa järjestelmän kytkennän ympäristöön, Yleistyssuhde käyttötapausten välillä: esimerkiksi käyttäjän tunnistaminen (validate user) voi tapahtua joko salasanan (Check password) tai silmän verkkokalvon skannaamisen (Retinal scan) avulla; merkitys on samantapainen kuin myöhemmin käsiteltävässä luokkien välisessä yleistyssuhteessa. Sisältymissuhde (include) käyttötapausten välillä: tarkoittaa, että toinen käyttötapaus (supplier) voi sisältyä toiseen käyttötapaukseen (client) viimeksi mainitun kontrollissa ja päättämässä tilanteessa. Esimerkiksi tilauksen tekeminen edellyttää aina käyttäjän tunnistamisen. Laajennossuhde (extend) käyttötapausten välillä tarkoittaa, että toinen käyttötapaus laajentaa toisen toiminta-alaa. Esimerkiksi tilausten tekemisessä noudatetaan normaalia toimintapaa, paitsi kiireellisten tilausten tekemisen

30 30 (poikkeustapaus) yhteydessä, jossa sovelletaan normaalin toimintatavan lisäksi erityistoimintoja. Edelleen laskun maksamisessa joudutaan joskus suorittamaan lisäksi tilinylitysmaksu (Kuva 3.3 Jacobson ym, 1999, 146). Kuva 3.3. Yleistys-, sisältymis-, ja laajennossuhteet Notaatio: Käyttötapaus: ellipsi, jonka sisällä on käyttötapauksen nimi, Aktori: tikku-ukko, Kommunikointisuhde: yhtenäinen viiva Yleistyssuhde: yhtenäisellä viivalla piirretty nuoli, jonka pää osoittaa yleistämisen suuntaan, Sisältymissuhde: katkoviivalla piirretty nuoli, jonka pää osoittaa sitä käyttötapausta, joka sisällytetään. Nuolen yhteydessä käytetään lisäksi merkintää <<include>> Laajennossuhde: katkoviivalla piirretty nuoli, jonka nuolenpää osoittaa sitä käyttötapausta, jota laajennetaan. Nuolen yhteydessä käytetään lisäksi merkintää <<extend>>. Kaavio on tarkoitettu antamaan yleiskuva järjestelmästä. Sen ilmaisuvoima ei riitä kuitenkaan yksityiskohtien kuvaamiseen. Tästä syystä jokainen käyttötapaus esitetään lisäksi tekstimuotoisella käyttötapauskuvauksella (use case description). Kuvassa 3.4 on annettu esimerkki kuvauksen rakenteesta. Kuvassa 3.5 (Jacobson ym, 1999 s. 143) on esitetty yksinkertainen työnkulku käyttötapausten mallintamiseksi. Siinä esitetään suoritettaviksi seuraavat askeleet: 1. Etsi aktorit ja käyttötapaukset: Hahmottele rajausta. Tunnista aktorit, jotka kommunikoivat "ilman välikäsiä" järjestelmän kanssa. Tunnista ja hahmottele pääkäyttötapaukset tekemällä skenaarioita tyypillisistä tapauksista.

31 31 Kuvaa järjestelmä käyttötapauskaaviona. Täydennä kaaviota tekstikuvauksilla. Laadi sanastoa keskeisistä asioista. 2. Priorisoi käyttötapaukset tärkeysjärjestykseen, jos niitä kaikkia ei ole resursseja tai tarvetta toteuttaa kerralla. 3. Tarkenna kuvauksia käyttötapauksista Tarkenna käyttötapausten sisäistä ja välistä rakennetta; aloitus- ja lopetuskohdat, vaihto-ehtoiset etenemispolut, poikkeustapaukset, jne. Piirrä tilakaavio edellä suunniteltujen tilojen ja tilasiirtymien selventämiseksi. Kuva 3.4. Esimerkki käyttötapauskuvauksesta

32 32 Kuva 3.5. Työnkulku käyttötapausten mallintamiseksi 4. Rakenna prototyyppi käyttöliittymien konkretisoimiseksi Järjestelmän toiminnan ymmärtämiseksi ja parempien/tarkempien vaatimusten esille saamiseksi on usein tarpeen rakentaa kevyt prototyyppi, joka simuloi lähinnä esityskerrosta (vrt. Kuva 1.4.). 5. Määritä käyttötapausten välille rakenteelliset suhteet: Ota käyttöön käyttötapauksia koskevat yleistys-, laajennos-, ja sisältymissuhteet. Huomattakoon, että neljäs askel UML-menetelmässä on tarkoitus suorittaa vasta seuraavaan vaiheen aikana. Tarkkuustaso yksittäisille käyttötapauksille tulee valita tilanteen mukaan. Käyttötapaus ei voi olla kuitenkaan liian pieni (vrt. käyttötapaus on toimintojen sarja) eikä liian laaja (jotta kuvaus pysyy hallinnassa). Keskikokoisessa järjestelmässä on muutamia kymmeniä ja isoimmissa järjestelmissä jopa satoja käyttötapauksia. Käyttötapaukset antavat järjestelmän ulkoisen kuvan (miltä järjestelmä näyttää käyttäjän näkökulmasta). Järjestelmän sisäinen rakenne (esim. osajärjestelmäjako) voi olla aivan toisenlainen. Käyttötapauskaavio ja -kuvaukset toimivat konkreettisena perustana toiminnallisten vaatimusten määrittämiselle. Kullekin käyttötapauksille erikseen tai niille yhteisesti voidaan lisäksi määritellä ei-toiminnallisia vaatimuksia (esim. tietojen tarkkuus- ja luotettavuustaso, turvallisuus, toimintahäiriöttömyys, käyttäjäystävällisyys, ja siirrettävyys). Vaatimusmäärityksiä tarkennetaan analyysin kuluessa ja myöhemmin myös muissa vaiheissa.

33 33 4. ANALYYSI Analyysivaihe ei esiinny tämännimisenä vaiheena UML:ssa (vaan tehtäväkokonaisuutena). Tässä esityksessä analyysivaiheeseen on sisällytetty seuraavat tehtävät: Staattinen mallintaminen (oliomallintaminen OMT:ssa, domain modeling UML:ssa), jonka pääasiallisena tuloksena saadaan alustava luokkakaavio. Arkkitehtuurin mallintaminen, jossa hahmotellaan järjestelmän perusarkkitehtuuri. Dynaaminen mallintaminen, jossa vuorovaikutuskaavioiden (sekvenssikaaviot ja yhteistoimintakaaviot) sekä tilakaavioiden avulla tarkennetaan järjestelmän käyttäytymistä. Käyttöliittymän suunnittelu (OMT++:n mukaan), jossa dialogikaavioiden ja näyttömallien avulla hahmotellaan käyttöliittymien rakennetta ja toimintaa Staattinen mallintaminen eli oliomallintaminen (Object modeling) tarkoituksena on rakentaa ymmärrettävä kuvaus niistä rakenteellisista ilmiöistä, joita vaatimusmäärittelyt koskevat lähtökohtina toimivat vaatimusmäärittelyt, käyttötapausmalli sekä sovellusaluetta ja sen ympäristöä koskeva asiantuntemus, tuloksena luokkakaavio + tietohakemisto Seuraavassa määritellään ensin luokkakaavion peruskäsitteet, rakenteet ja notaatio UML:n mukaan ja sen jälkeen esitetään lyhyt kuvaus mallintamisaskeleista Luokkakaavio: peruskäsitteitä Staattisessa mallintamisessa voidaan käyttää kahdenlaisia malleja: oliokaavioita ja luokkakaavioita. Oliokaaviot (object diagrams) kuvaavat yksittäisiä olioita ja niiden välisiä rakenteellisia suhteita. Näitä käytetään lähinnä monimutkaisten rakenteiden havainnollistamiseen. Varsinainen analyysi ja suunnittelu tapahtuvat luokkakaavioilla. Luokkakaavio (class diagram) kuvaa olioluokat ja niiden väliset suhteet. Luokkakaaviota voidaan pitää eräänlaisena kaavana tai mallina, joka määrittää, millaiset oliokaavat ovat mahdollisia. Kaaviot rakentuvat seuraavista käsitteistä: olio, luokka, attribuutti, operaatio, assosiaatio, linkki, kardinaalisuus, rooli, kooste, kompositio, ja yleistys. Osaa näistä on jo luvussa 1 käsitelty. Seuraavassa määritellään käsitteet ja esitetään luokkakaavion notaatio UML:n mukaisesti (joidenkin osalta myös OMT:n mukaisesti). Notaatiot on esitetty tiivistetysti myös liitteessä 1. Olio on rajattavissa ja yksilöitävissä oleva asia tai käsite, joka on merkityksellinen käsillä olevan tarkastelun kannalta ja joka kattaa sekä rakenteen (tilan) että käyttäytymisen.

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

ITKA111 OLIOSUUNTAUTUNUT ANALYYSI JA SUUNNITTELU

ITKA111 OLIOSUUNTAUTUNUT ANALYYSI JA SUUNNITTELU ITKA111 OLIOSUUNTAUTUNUT ANALYYSI JA SUUNNITTELU LUENTOMONISTE Mauri Leppänen Timo Käkölä Miika Nurminen Jyväskylän yliopisto Informaatioteknologian tiedekunta Kevät 2009 Tämä luentomoniste on tarkoitettu

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Ohjelmistotekniikan menetelmät, UML

Ohjelmistotekniikan menetelmät, UML 582101 - Ohjelmistotekniikan menetelmät, UML 1 Sisältö DFD- ja sidosryhmäkaavioiden kertaus Oliomallinnus UML:än kaaviotyypit 2 Tietovuokaaviot Data flow diagrams, DFD Historiallisesti käytetyin kuvaustekniikka

Lisätiedot

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:

Lisätiedot

Ohjelmistojen suunnittelu

Ohjelmistojen suunnittelu Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer

Lisätiedot

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Ohjelmistojen mallintaminen Unified Modeling Language (UML) 582104 Ohjelmistojen mallintaminen Unified Modeling Language (UML) 1 Olioperustaisuus Olio toimii mallinnuksen perusyksikkönä eri abstraktiotasoilla Järjestelmän rajaus, suunnittelu, ohjelmointi, suoritus..

Lisätiedot

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Arkkitehtuuriin vaikuttavat ympäristötekijät Jo kehittämisen alkuvaiheessa on tarpeellista hahmotella arkkitehtuurin perusratkaisu. Lähtökohdat

Lisätiedot

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Ohjelmistotekniikka - Luento 2 Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento 2: Prosessimallit

Lisätiedot

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet Toiminnot eli käyttäytyminen Tieto eli rakenteelliset ominaisuudet Olio (ks. määritelmä): rajattavissa ja yksilöitävissä oleva asia tai käsite, joka on merkityksellinen käsillä olevan tarkastelun kannalta

Lisätiedot

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia

Lisätiedot

UML- mallinnus: Tilakaavio

UML- mallinnus: Tilakaavio UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin 812347A Olio-ohjelmointi, 2015 syksy 2. vsk II Johdanto olio-ohjelmointiin Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden esittely 2 II.1 Abstraktiosta

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento

Lisätiedot

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus Yhteenveto Ohjelmistotuotanto vs. muut insinööritieteet Monimutkaisuus Näkymättömyys (Usein näennäinen) luotettavuus ja edullisuus Muunnettavuus Epäjatkuvuus virhetilanteissa Skaalautumattomuus Copyright

Lisätiedot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Copyright by Haikala. Ohjelmistotuotannon osa-alueet Copyright by Haikala Ohjelmistotuotannon osa-alueet Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary

Lisätiedot

UML-kielen formalisointi Object-Z:lla

UML-kielen formalisointi Object-Z:lla UML-kielen formalisointi Object-Z:lla Kalvot ja seminaarityö WWW:ssä: http://users.jyu.fi/~minurmin/opiskelu/form/ UML UML == Unified Modelling Language. OMG:n standardoima kieli ohjelmistojärjestelmien,

Lisätiedot

UML - unified modeling language

UML - unified modeling language UML - unified modeling language Lähtökohtana: Booch, Rumbaugh, Jacobsson Tavoitteena Unified Method - syntyykö? Kehittäjänä: Rational Inc. Standardointi: Object Management Group (OMG) - vaiheessa Lähteet:

Lisätiedot

UML:n yleiskatsaus. UML:n osat:

UML:n yleiskatsaus. UML:n osat: UML:n yleiskatsaus - voidaan hyödyntää hyvin laajasti. - sopii liiketoimintamallinnukseen, ohjelmistomallinnukseen sen jokaiseen vaiheeseen tai minkä tahansa pysyviä ja muuttuvia ominaisuuksia sisältävän

Lisätiedot

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma 12.11.2007 Janne J. Korhonen 12.11.2007 Agenda 1. Prosessit ja palvelut, BPM ja SOA 2. BPM-projekteista yleensä 3. Prosessin elinkaarimalli 4. Kokemuksia

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1 Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa 14.11.2008 Harri Laine 1 Oliot ohjelmiston mallinnuksessa käyttötapaus käyttää Käyttämämme oliokeskeinen perusmalli ohjelmistojen

Lisätiedot

Luokka- ja oliokaaviot

Luokka- ja oliokaaviot Luokka- ja oliokaaviot - tärkeimmät mallinnuselementit : luokat, oliot ja niiden väliset suhteet - luokat ja oliot mallintavat kuvattavan järjestelmän sisältöä ja niiden väliset suhteet näyttävät, kuinka

Lisätiedot

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen mallintaminen kertausta Harri Laine 1 kertausta 5.12.2008 Harri Laine 1 Ohjelmiston elinkaari, elinkaarimallit Yleinen puitemalli (reference model) - abstrakti kokonaiskuva ei etenemiskontrollia, ei yksityiskohtia Ohjelmistoprosessimallit

Lisätiedot

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely 582101 - Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely 1 Vaatimukset ja käyttötapaukset Vaiheittainen mallintaminen ja abstraktiotasot Järjestelmän rajaaminen sidosryhmäkaaviolla

Lisätiedot

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /

Lisätiedot

Kertaus: yleistys-erikoistus ja perintä

Kertaus: yleistys-erikoistus ja perintä Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

812341A Olio-ohjelmointi, I Johdanto

812341A Olio-ohjelmointi, I Johdanto 812341A Olio-ohjelmointi, 2016 I Johdanto Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden kertausta 812341A Olio-ohjelmointi, Johdanto 2 1 Abstraktiosta

Lisätiedot

Käyttötapausanalyysi ja testaus tsoft

Käyttötapausanalyysi ja testaus tsoft Käyttötapausanalyysi ja testaus tsoft 15.09.2004 http://cs.joensuu.fi/tsoft/ Johdanto Use Case analyysi (käyttötapausanalyysi) on yleisesti käytetty järjestelmälle asetettujen toiminnallisten vaatimusten

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

Ohjelmistojen mallintaminen

Ohjelmistojen mallintaminen 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

Lisätiedot

Analyysi on tulkkaamista

Analyysi on tulkkaamista Analyysi on tulkkaamista Petri: Pitää osata menetelmiä, arkkitehtuureja, suunnittelumalleja, eli miten [ohjelmistoja] ylipäänsä kehitetään. Pitää olla viestintätaitoja. Perttu: Pitää ymmärtää miten projekti

Lisätiedot

Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä

Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä 582104 Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä 1 Sisältö Oliomenetelmien taustaa Kirjastojärjestelmän käyttötapaukset Kirjastojärjestelmän luokkamalli 2 Oliosuuntautunut suunnittelumenetelmä

Lisätiedot

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Olio-ohjelmointi Johdanto olio-ohjelmointiin Olio-ohjelmointi Johdanto olio-ohjelmointiin Ohjelmistoa kehitettäessä voidaan tunnistaa ainakin kaksi abstraktiota: prosessiabstraktio ja dataabstraktio. Prosessiabstraktio huomattiin jo varhain, koska

Lisätiedot

Integrointi. Ohjelmistotekniikka kevät 2003

Integrointi. Ohjelmistotekniikka kevät 2003 Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri

Lisätiedot

Hieman lisää malleista ja niiden hyödyntämisestä

Hieman lisää malleista ja niiden hyödyntämisestä Hieman lisää malleista ja niiden hyödyntämisestä Ohjelmistojen mallintaminen Kesä 2012 (Avoin yliopisto) Toni Ruokolainen, 23.8.2012 Mallit Mallit ovat todellisuuden abstraktioita, jotka on muodostettu

Lisätiedot

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistotekniikan menetelmät, kesä 2008 582101 - Ohjelmistotekniikan menetelmät, kesä 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön

Lisätiedot

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1 Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

Ohjelmistojen mallintaminen. Luento 2, pe 5.11.

Ohjelmistojen mallintaminen. Luento 2, pe 5.11. Ohjelmistojen mallintaminen Luento 2, pe 5.11. Kertausta Ohjelmistotuotantoprosessin vaiheet: Vaatimusanalyysi- ja määrittely Mitä halutaan? Suunnittelu Miten tehdään? Toteutus Ohjelmointi Testaus Varmistetaan

Lisätiedot

Unified Process (UP)

Unified Process (UP) Unified Process (UP) Scott Kendall(2002) The Unified Process Explained Historia Luennon sisältö UP prosessin periaatteet Perusperiaatteet Iteraatio, inkrementti, julkaisu Unified process kuvaus Tehtäväkokonaisuudet

Lisätiedot

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistojen mallintaminen, kesä 2010 582104 Ohjelmistojen mallintaminen, kesä 2010 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin

Lisätiedot

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen, kesä 2009 582104 Ohjelmistojen mallintaminen, kesä 2009 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin

Lisätiedot

2. Olio-ohjelmoinnin perusteita 2.1

2. Olio-ohjelmoinnin perusteita 2.1 2. Olio-ohjelmoinnin perusteita 2.1 Sisällys Esitellään peruskäsitteitä yleisellä tasolla: Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. Olioperustainen

Lisätiedot

TOIMINNALLINEN MÄÄRITTELY MS

TOIMINNALLINEN MÄÄRITTELY MS TOIMINNALLINEN MÄÄRITTELY 11.11.2015 MS YLEISTÄ 1/2 jäsennelty etenee yleiskuvauksesta yksityiskohtiin kieliasultaan selkeä kuvaa myös tulevan järjestelmän ympäristöä tarpeellisella tarkkuudella kuvaa

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Ohjelmiston toteutussuunnitelma

Ohjelmiston toteutussuunnitelma Ohjelmiston toteutussuunnitelma Ryhmän nimi: Tekijä: Toimeksiantaja: Toimeksiantajan edustaja: Muutospäivämäärä: Versio: Katselmoitu (pvm.): 1 1 Johdanto Tämä luku antaa yleiskuvan koko suunnitteludokumentista,

Lisätiedot

Testaaminen ohjelmiston kehitysprosessin aikana

Testaaminen ohjelmiston kehitysprosessin aikana Testaaminen ohjelmiston kehitysprosessin aikana 04.02.2004 http://cs.joensuu.fi/tsoft/ Sisällys 1. Johdanto 2. Yksikkö- ja integrointitestaus 3. Järjestelmätestaus 4. Hyväksymistestaus http://cs.joensuu.fi/tsoft/

Lisätiedot

19/20: Ikkuna olio-ohjelmoinnin maailmaan

19/20: Ikkuna olio-ohjelmoinnin maailmaan Ohjelmointi 1 / syksy 2007 19/20: Ikkuna olio-ohjelmoinnin maailmaan Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Luokkakaavion laatiminen

Luokkakaavion laatiminen Luokkakaavion laatiminen Kartoita luokkaehdokkaita Karsi ehdokkaita Tunnista olioiden väliset yhteydet Täsmennä luokkakuvauksia määrittelemällä attribuutit Määrittele yhteyksiin liittyvät osallistumisrajoitteet.

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton 2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Yritysarkkitehtuuri. Muutostarpeet

Järjestelmäarkkitehtuuri (TK081702) Yritysarkkitehtuuri. Muutostarpeet Järjestelmäarkkitehtuuri (TK081702) Ympäristö Muutostarpeet ja niihin vastaaminen Yritysarkkitehtuuri Liiketoiminta-arkkitehtuuri Tavoitteet, Palvelut, Prosessit Informaatioarkkitehtuuri Tietotarpeet,

Lisätiedot

Tietojärjestelmän osat

Tietojärjestelmän osat Analyysi Yleistä analyysistä Mitä ohjelmiston on tehtävä? Analyysin ja suunnittelun raja on usein hämärä Ei-tekninen näkökulma asiakkaalle näkyvien pääkomponenttien tasolla Tietojärjestelmän osat Laitteisto

Lisätiedot

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot Arkkitehtuuripankki Mallintamisen metamalli ja notaatiot 21.2.2018 Sisältö Kuvaustapa (notaatio) ja standardit Mallityypit Metamalli Muuta Kuvaustavat ja hyödynnetyt standardit JHS179 template ArchiMate

Lisätiedot

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista 582101 - Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista 1 Ohjelmistotuotannon työkaluuista Projektinhallintatyökalut (ei käsitellä tällä kurssilla) CASE- ja mallinnustyökalut (esim. Poseidon)

Lisätiedot

Mitä on periytyminen?

Mitä on periytyminen? 8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Filosofinen ja käytännönläheinen näkökulma periytymiseen. Periytymisen soveltaminen. 8.2 Mitä

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot

Harjoitustehtävät ja ratkaisut viikolle 48

Harjoitustehtävät ja ratkaisut viikolle 48 Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin

Lisätiedot

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Sisäänrakennettu tietosuoja ja ohjelmistokehitys Sisäänrakennettu tietosuoja ja ohjelmistokehitys Petri Strandén 14. kesäkuuta, 2018 Petri Strandén Manager Cyber Security Services Application Technologies Petri.stranden@kpmg.fi Petri vastaa KPMG:n Technology

Lisätiedot

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1 Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue

Lisätiedot

Ohjelmistotekniikan menetelmät, kevät 2008

Ohjelmistotekniikan menetelmät, kevät 2008 582101 - Ohjelmistotekniikan menetelmät, kevät 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1 Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development 2.12.2008 Harri Laine 1 Jacobson jakaa ohjelmiston oliot kolmeen tyyppiin liittymäolioiksi (interface objects, boundary objects)

Lisätiedot

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia. Tietokantasuunnittelusta Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia toistuva tieto vie tilaa ylläpito muodostuu hankalaksi ylläpito-operaatioilla

Lisätiedot

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa luokan piirteiden

Lisätiedot

Olioperustaisuus (object oriented)

Olioperustaisuus (object oriented) DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

Lisätiedot

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented) DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Moniperintä 2 Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Delegointi 1 Moniperinnän toteuttaminen

Lisätiedot

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

Lisätiedot

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1 Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1 Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto

Lisätiedot

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia

Lisätiedot

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1. Sisällys Ratkaisumallien historia Jaakko Vuolasto 25.1.2001! Ratkaisumalli! Christopher Alexander! Ohjelmistotuotannosta arkkitehtuuriin! Henkilöhistoriaa! Ensimmäisiä käyttökokemuksia! Yhteenveto 25.1.2001

Lisätiedot

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Ohjelmistojen mallintaminen Olioperustainen ohjelmistomalli Harri Laine 1

Ohjelmistojen mallintaminen Olioperustainen ohjelmistomalli Harri Laine 1 Ohjelmistojen mallintaminen Olioperustainen ohjelmistomalli 4.11.2008 Harri Laine 1 Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented software development) järjestelmä (system) on olio

Lisätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

Johtamisen haaste kokonaisarkkitehtuuri menestyksen mahdollistajako?

Johtamisen haaste kokonaisarkkitehtuuri menestyksen mahdollistajako? Johtamisen haaste kokonaisarkkitehtuuri menestyksen mahdollistajako? JÄRJESTÄJÄ SAVO Q AIKA 14.11.2018 Kokonaisarkkitehtuurin määrittelyä Tekijä(t) Armour, F. & Kaisler, S. 2017. Introduction to Enterprise

Lisätiedot

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Sisällys. 11. Rajapinnat. Johdanto. Johdanto Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.

Lisätiedot

Ohjelmistojen mallintaminen. Luento 8, 26.11.

Ohjelmistojen mallintaminen. Luento 8, 26.11. Ohjelmistojen mallintaminen Luento 8, 26.11. Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla)

Lisätiedot

Unified Modeling Language

Unified Modeling Language Unified Modeling Language Confuse 25.11.2001 Tila Versio: 1.0 Vaihe: T1 Jakelu: Julkinen Luontipäivä: 15.11.2001 Antti Haapakoski Muutettu viimeksi: 25.11.2001 Antti Haapakoski Sisältö 1 Yleistä 1 2 Mallinnuksesta

Lisätiedot

Käyttötapausten mallintaminen

Käyttötapausten mallintaminen Käyttötapausten mallintaminen Vaatimukset ja testauslähtöisyys, swd4tn001 Anne Valsta 1.3.2011 (ent. 11.2.2011) Sisällysluettelo 1 Käyttötapaukset ohjelmiston vaatimusten määrityksessä... 2 1.1 Käyttötapauskartta...

Lisätiedot

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1 Ohjelmistojen mallintaminen Luokkakaaviot 5.12.2008 Harri Laine 1 Olioiden palvelut Palvelun kuvauksessa annettavat tiedot näkyvyys (kuten attribuuttien kohdalla) nimi (ainoa välttämätön osa) parametrit

Lisätiedot

Lomalista-sovelluksen määrittely

Lomalista-sovelluksen määrittely Thomas Gustafsson, Henrik Heikkilä Lomalista-sovelluksen määrittely Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikka Dokumentti 14.10.2013 Tiivistelmä Tekijä(t) Otsikko Sivumäärä Aika Thomas

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

UCOT-Sovellusprojekti. Testausraportti

UCOT-Sovellusprojekti. Testausraportti UCOT-Sovellusprojekti Testausraportti Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 0.02 Julkinen 11. lokakuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä

Lisätiedot

582104 Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

582104 Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon 582104 Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon 1 Lyhyt johdatus ohjelmistotuotantoon Ohjelmistotuotanto, ohjelmistoprojektit Miten ohjelmistojen tuottaminen eroaa teollisesta tuotannosta

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA Ohjelmointitekniikka lyhyesti Survival Kit. Vesiputousmalli ELINKAARIMALLEISTA. Ohjelmiston elinkaari Ohjelmiston elinkaarella (life cycle) tarkoitetaan aikaa, joka kuluu ohjelmiston kehittämisen aloittamisesta

Lisätiedot

Opistojohtaminen muutoksessa hanke. Kansanopiston kehittämissuunnitelma. Tiivistelmä kehittämissuunnitelman laatimisen tukiaineistoista

Opistojohtaminen muutoksessa hanke. Kansanopiston kehittämissuunnitelma. Tiivistelmä kehittämissuunnitelman laatimisen tukiaineistoista Opistojohtaminen muutoksessa hanke Kansanopiston kehittämissuunnitelma Tiivistelmä kehittämissuunnitelman laatimisen tukiaineistoista Opistojohtaminen muutoksessa hankkeessa ryhmä kansanopistoja laati

Lisätiedot