Olioperustainen ohjelmistokehitys määrittelyn, suunnittelun ja toteutuksen väliset suhteet
|
|
- Emma Lehtilä
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Juhani Haikonen Olioperustainen ohjelmistokehitys määrittelyn, suunnittelun ja toteutuksen väliset suhteet Tietojärjestelmätieteen kandidaatintutkielma Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Jyväskylä
2 TIIVISTELMÄ Haikonen, Juhani Mikael Olioperustainen ohjelmistokehitys määrittelyn, suunnittelun ja toteutuksen väliset suhteet / Juhani Haikonen Jyväskylä: Jyväskylän yliopisto s. Kandidaatintutkielma Olioperustaisuus on eräs tärkeä lähestymistapa ohjelmistotuotantoon. Olioperustaisuus on niin sanottu olioparadigma, jossa reaalimaailman katsotaan koostuvan olioista. Olioperustaisesta ohjelmistokehityksestä voidaan tunnistaa ja luokitella toisistaan erotettavia vaiheita. Tässä tutkielmassa perehdytään olioperustaisen ohjelmistokehityksen kolmeen keskeiseen vaiheeseen: oliomäärittelyyn, oliosuunnitteluun ja olio-ohjelmointiin. Vaikka kyseisten vaiheiden lisäksi ohjelmistokehityksen prosessista on tunnistettavissa myös muita vaiheita, ei niitä nähdä yleisesti edellä mainittuja vaiheita tärkeämmiksi. Määrittely-, suunnittelu- ja ohjelmointivaiheessa otetaan eniten kantaa rakennettavien ohjelmien oliopiirteisiin. Tutkielmassa keskitytään erityisesti näiden kolmen vaiheen välisiin suhteisiin ja suhteiden erityisominaisuuksiin. Tutkielman tärkeimpänä tehtävänä on tuoda lukijalle tietoa siitä, missä laajuudessa edeltävien vaiheiden tulokset voidaan hyväksikäyttää seuraavissa vaiheissa eli miten vaiheet ovat integroituneet toisiinsa. AVAINSANAT: Olioperustainen, ohjelmistokehitys, olioanalyysi, oliomäärittely, olio-ohjelmointi.
3 SISÄLLYSLUETTELO 1 JOHDANTO OLIOPERUSTAISUUS Mitä olioperustaisuus on? Olioperustainen ohjelmistokehitys OLIOPERUSTAISEN OHJELMISTOKEHITYKSEN KOLME KESKEISTÄ VAIHETTA Yleistä Oliomäärittely Oliosuunnittelu Olio-ohjelmointi KOLMEN VAIHEEN VÄLISET SUHTEET Yleistä Oliomäärittely ja -suunnittelu Oliosuunnittelu ja -ohjelmointi Integroitu määrittely, suunnittelu ja toteutus YHTEENVETO LÄHDELUETTELO LIITE 1. Olioperustaisen ohjelmistokehityksen kolme vaihetta -esimerkki... 25
4 1 JOHDANTO Olioperustainen ohjelmistokehitys on ollut eräs tärkeä ohjelmistotuotannon lähestymistapa jo 1980-luvun lopulta asti. Kuitenkin tämä tapa kehittää ohjelmistoja on syntynyt epäloogisessa järjestyksessä, sillä se sai alkunsa toteutustavan synnystä 1960-luvulla, ja vasta myöhemmin 1980-luvulla kehitettiin kyseistä toteutustapaa avustamaan määrittely ja suunnittelu. Vielä nykyäänkin olioperustaisen ohjelmistokehitys prosessin eteneminen on aika ajoin ongelmallista, siksi onkin tärkeä selvittää sitä haittaavat seikat. Tämän kandidaatintutkielman tehtävänä on selvittää, mitä oliomäärittely, oliosuunnittelu ja olio-ohjelmointi ovat sekä erityisesti, mitä ominaisuuksia kyseisten vaiheiden suhteet pitävät sisällään. Vaiheet ovat selkeästi tunnistettavissa ja eroteltavissa toisistaan olioperustaisessa ohjelmistokehityksessä. Luvussa kaksi esitellään lukijalle, mitä olioperustaisuus käytännössä tarkoittaa. Lukija tutustutetaan itse tutkielman aihepiiriin eli olioperustaiseen ohjelmistokehitykseen. Tästä ohjelmistojen kehitystavasta esitellään muun muassa sen eri vaiheet ja selvitetään tutkielman avaintutkimuskohdat: oliomäärittely, oliosuunnittelu ja olio-ohjelmointi. Luvussa kolme keskitytään tarkemmin edellä mainittuihin kolmeen olioperustaisen ohjelmistokehityksen keskeisiin vaiheisiin. Luvussa jokainen osavaihe esitellään lukijalle riittävällä tarkkuudella, jotta vaiheiden tarkoitukset ja tehtävät eivät jää epäselviksi. Asian konkretisoimiseksi on tutkielmaan liitetty yksinkertainen esimerkki vaiheiden toteutuksista (LIITE 1). Neljännessä luvussa keskitytään tarkemmin näiden kolmen vaiheen välisiin suhteisiin ja tuodaan esille muun muassa suhteiden ongelma- ja kehityskohtia. Lisäksi luvussa tarkastellaan, kuinka laajasti seuraavissa vaiheissa voidaan käyttää hyväksi edeltävien vaiheiden tuloksia. Toisin sanoen luvussa selvitetään missä määrin vaiheet ovat integroituneet toisiinsa.
5 5 Tämän tutkielman saavutukset ja tulokset kirjataan yhteenveto-luvussa. Siinä pohditaan muun muassa, millaisia keinoja hyväksikäyttäen vaiheiden välisiä tuloksia voitaisiin yhtenäistää. Lisäksi luvussa esitellään vaiheiden integraatiota mahdollisesti parantavia toimenpiteitä. Tämä tutkielma on kirjallisuuskatsaus, joten tutkielmassa monin paikoin viitataan ja luotetaan alan kirjallisuuteen. Käytetty kirjallisuus on koottu tutkielman loppuun.
6 6 2 OLIOPERUSTAISUUS Tämän luvun tarkoituksena on kertoa lukijalle, mitä olioperustaisuus on ja miten se on syntynyt. Lisäksi lukija perehdytetään tämän kandidaatintutkielman aihepiiriin eli olioperustaiseen ohjelmistokehitykseen. Tarkoituksena on selvittää tämän tärkeäksi muodostuneen ohjelmistokehitystavan olemus ja historia. 2.1 Mitä olioperustaisuus on? Olioperustaisuuden voidaan sanoa saaneen alkunsa 1960-luvulla, kun eräs olioohjelmoinnin piirteitä sisältävä ohjelmointikieli, Simula, julkaistiin. Vasta myöhemmin 1970-luvulla alettiin käyttää itse termiä olioperustainen (engl. object-oriented) (Berard, 1993, 4). Englanninkieliselle termille object-oriented esiintyy suomenkielisessä kirjallisuudessa monia eri käännöksiä, mutta ne kaikki tarkoittavat käytännössä samaa asiaa. Sanan olioperustainen lisäksi on suomenkielisessä kirjallisuudessa yleisesti käytetty seuraavia vastineita: oliosuuntautunut, oliolähestymistapa, oliokeskeinen ja oliopohjainen. Tässä tutkielmassa keskitytään käyttämään vain ja ainoastaan sanaa olioperustainen. Sana olioperustainen kuvaa kirjoittajan mielestä parhaiten asian konkreettisuutta. Mitä sitten olioperustaisuus tarkoittaa? Sanansa mukaisesti se tarkoittaa olioihin perustuvaa/pohjautuvaa. Olioperustaisuus on näkökulma, jonka kautta asiat nähdään ja tunnistetaan olioina. Itse olio (engl. object) käsitetään konseptiksi, jolla on identiteetti, tila ja käyttäytyminen. Berard (1993, 7) määrittelee olion luokan (engl. class) näkökulmasta. Luokka on abstrakti tietotyyppi (engl. abstract data type), josta olio instantioidaan (engl. instantiate). Toisin sanoen luokka määrittelee olion rakenteen ja käyttäytymisen, ja luokasta (yleensä ajonaikaisesti) luodaan instanssi eli varsinainen olio.
7 7 Olioperustaisuudessa on yleisesti nähty monia etuja. Olioperustaisuus on jopa nähty todellisena hopealuotina eli revolutiivisena ajatuksena, joka parantaa huomattavasti miltei kaikkea ohjelmiston kehitystoimintaan liittyen. Tällaiset väitteet ovat kuitenkin saaneet kovaakin kritiikkiä vastaansa, sillä niitä ei ole luotettavasti perusteltu. Eräs tärkeä olioperustaisen lähestymistavan tuoma etu on se, että sen ajatusmaailma on reaalimaailmaa kuvaava. Näin siis sen käsitteet ja konseptit ovat ihmiselle luontaisia. Toisin sanoen, kun kaikki asiat nähdään olioina, niin ne myös sellaisina kuvataan. Toinen tärkeä etu on se (Booch, 1994, 41), että olioperustaisuuden on nähty nostavan suunnittelun ja toteutuksen abstraktiotasoa, ainakin edeltäviin ohjelmiston kehitystapoihin nähden. Toisaalta myös olioparadigman on nähty pienentävän muun muassa ylläpitokustannuksia (Koskimies, 1997, 4). Coad ym. (1991) ovat tuoneet esille vielä seuraavia perusteltuja ja konkreettisia etuja. Olioperustaisuus helpottaa projektin edistymisen seurantaa ja parantaa projektinhallintaa. Se myös yksinkertaistaa henkilöstön koulutusta ja parantaa työn tuottavuutta. Lisäksi LaLonde ym. (1998) tuovat selvästi esille sen, että olioparadigma kannustaa iteraatioon. Olioperustaisuudelle on määritelty joukko mittareita, joita kutsutaan olio ominaisuuksiksi (tai oliopiirteiksi). Booch (1994) on katsonut seuraavat olioominaisuudet tärkeimmiksi ominaisuuksiksi: abstrahointi, kapselointi (tiedon piilottaminen), hierarkia, modulariteetti, identiteetti, polymorfismi ja eheys. Muun muassa Haikala ym. (1998) ja Koskinen ym. (2001) ovat yhtyneet tähän näkemykseen. Kaikki edellä mainitut käsitteet kuvataan seuraavissa kappaleissa. Abstrahointi (engl. abstraction) pyrkii yleistämään ja helpottamaan kokonaisuuksia. Se on paras keino ymmärtää monimutkaisia kokonaisuuksia ( mitä korkeampi abstraktiotaso, sitä ymmärrettävämpi asia ). Kapselointi (engl.
8 8 encapsulation) (tiedon piilotus) tarkoittaa tiedon ja käytöksen sitomista johonkin yhteen kokonaisuuteen (olioon). Modulariteetti (engl. modularity) puolestaan tarkoittaa kokonaisuuden jakamista osiin (esimerkiksi komponentteihin tai moduuleihin) (Booch, 1994). Hierarkia (engl. hierarchy) muodostuu olioiden periytymisestä, ja se määrittelee olioiden suhteet toisiinsa nähden. Identiteetillä (engl. identity) kuvataan arvoa, jolla oliot voidaan tunnistaa ja erottaa toisistaan. Polymorfismilla (monimuotoisuus) (engl. polymorphism) kuvataan sitä, että olio ei ole sidonnainen pelkästään sille määriteltyyn tyyppiin (luokkaan). Eheys (engl. integrity) kuvaa sitä, että olion tiedot ovat yksinomaan sen käytettävissä (eli olion tietoihin ei pääse käsiksi kukaan muu) (Booch, 1994). Olioperustaisuus on siis monessa mielessä hyödyllinen asia, mutta siihenkin liittyy joitakin ongelmallisia piirteitä. Haikala ym. (1998, 317) toteavat, että olioperustaisuudesta on tullut niin sanottu muotituote, jonka mainitseminen auttaa kaupallisessa toiminnassa. Tällöin ei esimerkiksi olioperustaisuuden soveltuvuudella kohdealueeseen saata olla mitään merkitystä. Nerson (1992) mainitsee, että oliojärjestelmillä on taipumus olla liian riippuvaisia rakenteellisista ratkaisuista, jolloin huonot rakenteelliset ratkaisut haittaavat koko järjestelmän toimintaa. 2.2 Olioperustainen ohjelmistokehitys Olioperustainen ohjelmistokehitys on evolutiivisesti kehittynyt tapa rakentaa ohjelmistoja. Se sai alkunsa olio-ohjelmoinnin synnystä 1960-luvulla. Tämä on mielenkiintoinen lähtökohta, sillä näin olioperustaisen ohjelmistokehityksen kehittyminen eri vaiheita sisältäväksi prosessiksi selvästikin tapahtui takaperoisesti. Olio-ohjelmointia tukemaan syntyi oliosuunnittelu 1980-luvulla ja oliomäärittely kehittyi vasta 1980-luvun loppupuolella. Muut tunnetut olioperustaisen ohjelmistokehityksen vaiheet kehitettiin vasta 1980-luvun jälkeen.
9 9 Puhuttaessa olioperustaisesta ohjelmistokehityksestä on kuitenkin painotettava sitä, että perinteisesti eri olioperustaisen ohjelmistokehityksen vaiheilla ei ole ollut mitään tekemistä toistensa kanssa [Sekä Berard (1993, 3 5) ja Haikala ym. (1998, )]. Vasta viime aikoina on alettu nähdä olioperustainen ohjelmiston kehitys todellisena yhtenäisenä olioperustaisena ohjelmistokehitys prosessina. Koskimies (1997, 4) on tiivistänyt asian hyvään määritelmään: Olioperustaisella ohjelmistokehityksellä tarkoitetaan systemaattista koko ohjelmiston elinkaaren käsittävää prosessia, joka perustuu kaikissa vaiheissaan ohjelmistojen kuvaamiseen joukkona keskinäisessä vuorovaikutuksessa olevia olioita. Toisin sanoen sovellusohjelma simuloi kyseiseen sovellukseen liittyvän maailman konkreettisia tai abstrakteja tapahtumia, jolloin ohjelmiston rakenne heijastaa tätä ajattelutapaa. Perinteisestä puhtaasta olioperustaisesta ohjelmistokehitys prosessista voidaan tunnistaa selvästi seuraavat toisistaan eroavat vaiheet (KUVA 1): 1. Olioperustaisessa kohdealueanalyysissä (engl. object-oriented domain analysis) pyritään identifioimaan uudelleenkäytettäviä ja toistuvia asioita olioissa (Berard, 1993, 185). 2. Oliomäärittelyssä (engl. object-oriented analysis) tunnistetaan järjestelmän tarpeelliset ja hyödylliset oliot. 3. Oliosuunnittelussa (engl. object-oriented design) määritellään kaikkien oliomäärittelyssä tunnistettujen olioiden väliset suhteet ja toiminnallisuudet. 4. Olio-ohjelmoinnissa (engl. object-oriented programming) suunniteltu ja mallinnettu rakenne toteutetaan toimivaksi ohjelmaksi. 5. Oliotestauksessa (engl. object-oriented testing) rakennetun ohjelman toiminta ja rakenne testataan.
10 10 KUVA 1: Esimerkki olioperustaisesta ohjelmistokehitysprosessista. Perinteisesti edellä mainitut vaiheet nähdään enemmän tai vähemmän loogisesti toisiaan seuraavina vaiheina. Kuitenkin tämän perinteisessä muodossa mielletyn olioperustaisen ohjelmistokehityksen voi nähdä myös räätälöitynä (engl. tailored) prosessina. Tällaiset perinteisestä mallista poikkeavat kehitystavat on kuvattu prosessimalli- ja/tai menetelmäkohtaisesti. Näissä eri prosessimalleissa muun muassa vaiheiden järjestys ja rakenne voi olla kuvattu toisistaan poikkeavasti. Esimerkiksi V-prosessimallin ohjelmistokehitystavassa testaus nähdään jatkuvana tehtävänä koko prosessin ajan. Koskimies (1997, 5) on tuonut esille sen, että olioperustaisuus ei sinällään nopeuta ohjelmistokehitystä, vaan jopa pikemminkin pidentää sitä. Näin siksi, että määrittely ja suunnitteluvaihe vievät perinteisiä menetelmiä (esimerkiksi rakenteellista analyysia ja suunnittelua) kauemmin aikaa. Koska olioparadigma kannustaa iteraatioon (LaLonde ym., 1998) (toistettavuuteen/uudelleenmääritettävyyteen), on selvää, että iteratiivinen prosessi on ajallisesti pidempi suoraviivaiseen prosessiin nähden.
11 11 3 OLIOPERUSTAISEN OHJELMISTOK EHITYKSEN KOLME KESKEISTÄ VAIHETTA Kuten jo aiemmin on todettu, olioperustainen ohjelmistokehitys voidaan nähdä vaiheisena prosessina. Oliomäärittely, oliosuunnittelu ja olio-ohjelmointi ovat tärkeimpiä vaiheita erityisesti oliopiirteisiin kantaa ottavina vaiheina, toisin sanoen ko. vaiheissa vaikutetaan eniten rakennettavien ohjelmien oliopiirteisiin. Tässä tutkielmassa ei perehdytä muihin edellisessä luvussa mainittuihin vaiheisiin, kuten olioperustaiseen kohdealueanalyysiin tai oliotestaukseen. 3.1 Yleistä Tarkasteltaessa olioperustaista ohjelmistokehitystä puhtaana suoraviivaisena prosessina nähdään oliomäärittelyn tehtäväksi tarjota oliosuunnittelulle järjestelmän mallipohja, josta suunnittelu voidaan aloittaa. Oliosuunnittelun lopputulokset käytetään hyväksi olio-ohjelmointi vaiheessa, jossa ohjelma toteutetaan olio-ohjelmointimenetelmin (Booch, 1994, 39-40). Selvästikin sekä oliomäärittely että oliosuunnittelu keskittyvät järjestelmän ymmärtämiseen ja mallintamiseen, kun taas olio-ohjelmointi keskittyy tämän kyseisen järjestelmän toteutukseen (tuottamiseen ajettavaksi ohjelmaksi). Oliomäärittelyn ja oliosuunnittelun tärkeimpänä tuotoksena on dokumentaatio, kun taas olio-ohjelmoinnin tuloksena on dokumentaation lisäksi ohjelmakoodi. Oliomäärittely ja oliosuunnittelu nojaavat tekstikuvausten lisäksi erilaisiin graafisiin esityksiin. Eri notaatiot ja notaatiokielet ottavat kantaa tarkasti näiden graafisten esitysten rakenteisiin ja sisältöihin. Esimerkiksi Koskinen ym. (2001, 35) mainitsevat OMT (Object Modeling Technique) oliomenetelmän käsittävän kolme mallia (oliomalli, dynaaminen malli ja toiminnallinen malli), joilla kuvataan mallinnettavaa järjestelmää sen eri näkökulmista. Toisaalta kuitenkin Mathiassen ym. (2000) väittävät, että eri notaatiokielistä UML (Unified Modelling Language) kielestä on nopeasti tulossa olioperustaisen ohjelmistokehityksen notaatiostandardi.
12 12 Perinteinen lähestymistapa ohjelmistokehityksessä perustuu niin sanottuun ylhäältä-alas ositukseen (engl. top-down). Osituksen periaatteena on aloittaa mallinnus suurista kokonaisuuksista, ja kun nämä tunnistetut kokonaisuudet on saatu mallinnettua, niitä lähdetään tarkentamaan. Mallintamisen jälkeen suunnitelmat konkretisoidaan toteutusvaiheessa. Tutkielman lopussa on liitteenä konkretisoitu esimerkki näiden kolmen vaiheen toteutuksista (LIITE 1). Liitteen esimerkki on erittäin yksinkertainen koska sen tarkoituksena on havainnollistaa asiaa. 3.2 Oliomäärittely Oliomäärittely sai alkunsa 1980-luvun loppupuolella, kun tarve eritellä ohjelmistotuotteiden vaatimuksia oliomaisesti sai suurta huomiota. Tyytymättömyys muun muassa rakenteista analyysiä kohtaan kasvoi ja näin oliomäärittely kehitettiin vastaamaan järjestelmän ymmärtämystä olioperustaisessa ohjelmistokehityksessä (Berard, 1993, 4). Coad ym. (1990, 3) esittelevät kirjassaan seitsemän syytä, miksi oliomäärittelyä ylipäätään tarvitaan. Tärkein syy on selvästi se, että oliomäärittelyn kautta voimme määritellä ja tunnistaa järjestelmän vaatimukset hyväksikäyttäen kolmea ihmiselle luonnollista abstraktiota olioita (objekteja), luokittelua ja koostamista. Toinen huomattava syy on se, että oliomäärittely keskittyy vain ja ainoastaan kohdealueen ymmärtämiseen. Tarkkaan ottaen oliomäärittelyssä etsitään olioluokat, niiden attribuutit ja operaatiot sekä luokkien väliset suhteet (Haikala ym., 1998, ). LaLonde ym. (1993) täydentävät, että määrittely keskittyy vain olioiden analysointiin sekä käyttötapausten selvittämiseen olioiden vastuita painottaen. Mathiassen ym. (2000) kiteyttävät tarkemmin oliomäärittelyn seuraavaan kontekstiin. Määrittelyvaiheessa olioita käytetään organisoimaan järjestelmän kontekstin ymmärrystä. Toisin sanoen olio on ilmentymän abstraktio
13 13 järjestelmän kontekstissa (kuten esimerkiksi asiakas). Olio kuvaa käyttäjän todellisuutta. Tämän lisäksi järjestelmän vaatimukset tunnistetaan olioiden avulla. Oliomäärittely tarkoittaa siis toimintaa, jossa jokin asia eristetään ja kuvataan. Voidaankin siis todeta, että määrittelyvaiheessa mallinnettavaa järjestelmää tarkkaillaan ulkopuolisesti. Siinä pyritään tunnistamaan ja määrittelemään kaikki vaikuttavat oliot ja kokonaisuudet käyttäen hyväksi kohdealueen termistöä. 3.3 Oliosuunnittelu Oliosuunnittelu sai alkunsa 1980-luvun alkupuolella, kun Booch ensimmäisenä esitti oliosuunnittelun käsitteen elinkaariprosessina, jossa määriteltiin ohjelmiston komponenttien vuorovaikutukset (Berard, 1993, 4). Tosin Haikala ym. (1998, 317) kertovat Boochin esitelleen oliosuunnittelun periaatteita jo luvun loppupuolella. Mitä siis oliosuunnittelu tarkoittaa? Booch (1994, 39) esittää perinteiselle menetelmälleen seuraavanlaisen määritelmän: Oliosuunnittelu on suunnittelun keino sitoa oliokeskeisyyden hajottava prosessi ja notaatio, jolla kuvataan järjestelmän sekä loogisia ja fyysisiä että staattisia ja dynaamisia malleja. LaLonde ym. (1993) kuvaavat, että oliosuunnittelu pyrkii erittelemään oliomäärittelyssä tunnistettuja olioita lisää ottamalla huomioon muun muassa toteutusluokkia ja esittelemällä abstraktit luokat, perintähierarkiat, käyttötapaukset (suunnittelun kannalta) ja näkyvyydet. Mathiassen ym. (2000) lisäävät, että oliosuunnittelu on erityisesti rakentavaa toimintaa, jossa tunnistetut osat yhdistetään. Voidaankin todeta, että suunnitteluvaiheessa mallinnettavaa järjestelmää tarkkaillaan sisäpuolelta, ja siinä pyritään jakamaan suunnitteluvaiheessa
14 14 tunnistettuja kokonaisuuksia edelleen osakokonaisuuksiin. Lisäksi näiden tunnistettujen olioiden/komponenttien rakenne, toiminta ja interaktio mallinnetaan sekä pyritään jaottelemaan niille eri tehtäväkokonaisuuksia. De Champeaux ym. (1992) esittävät, että oliosuunnittelu on ikään kuin silta (engl. bridge) määrittelyn ja toteutuksen välillä. Suunnittelun luonne on erilainen olioperustaisessa ohjelmistokehityksessä, sillä kun määrittelyvaiheen malleilla ja toteutusvaiheen järjestelmällä on sama rakenne, on suunnittelun perusolemus muotoa muuttava (engl. transformative). Oliosuunnittelun tehtävänä on siis muuntaa kuvaavat määritelmät toteutettavaan muotoon. Muun muassa tämän vuoksi oliomäärittelyn ja oliosuunnittelun raja on häilyvä. 3.4 Olio-ohjelmointi Olio-ohjelmointi sai alkunsa jo 1960-luvulla ensimmäisen olio-ohjelmointikielen synnystä luvulla olio-ohjelmointi alkoi saavuttaa laajaa tuntemusta, mutta vasta 1980-luvun puolivälissä se kypsyi laajaan mittaansa (Berard, 1993, 5). Booch (1994, 38) kuvaa olio-ohjelmoinnille seuraavan määritelmän: Olioohjelmointi on toteutuksen keino järjestää oliot yhteistyötä tekeväksi ohjelmaksi, joista jokainen olio on jonkin luokan instanssi ja sen kaikkia luokkia yhdistää periytyminen muodostaen toisiinsa kytkeytyvän hierarkian. Yksinkertaisemmin voidaan sanoa, että olio-ohjelmoinnin tehtävänä on toteuttaa jokin ohjelmakokonaisuus tietokoneella ajettavaksi ohjelmaksi. On kuitenkin hyvä huomioida, että olio-ohjelmointikielet ovat niin sanottuja korkean abstraktiotason ohjelmointikieliä, jotka on luotu matalampien tasojen (ohjelmointi-) kielten päällä toimiviksi. Näin ollen toteutettu ohjelma ei ole suoraan tietokoneella ajettavassa muodossaan ilman käännöstä (engl. build). Olio-ohjelmointikielet jakautuvat oliokieliksi ja olioperustaisiksi kieliksi. Oliokieliä pidetään puhtaina (olio-) kielinä, joissa kaikki yleisesti määritellyt oliopiirteet ovat toteutettuina. Puhtaita oliokieliä ovat esimerkiksi Smalltalk ja
15 15 Eiffel. Olioperustaiset kielet ovat puolestaan kieliä, joissa on joitakin oliopiirteitä käytössä, mutta ei kuitenkaan niitä kaikkia. Yksi tällainen kieli on Ada83 (Haikala ym., 1998, 325). Ensimmäiset olio-ohjelmointikielet eivät olleet puhtaita olio-ohjelmointikieliä, vaan niissä oli käytetty hyväksi joitakin nykyisiä olio-ominaisuuksia. Lisäksi on olemassa niin sanottuja hybridikieliä, jotka ovat sekä toisaalta puhtaan oliokielen että toisaalta jonkin muun kielen risteytyksiä. Näistä kielistä tunnetuin on C++, jossa yhdistyy kyseisen kielen oliopiirteet ja C-kielen rakenteinen ohjelmointitapa (Haikala ym., 1998, ). Olio-ohjelmointi on yksi ohjelmointiparadigma eli tapa kuvata erilaisten järjestelmien rakennetta ja toimintaa. Muita yleisiä ohjelmointiparadigmoja ovat esimerkiksi proseduraalinen ohjelmointi ja funktionaalinen ohjelmointi (Koskimies, 1997, 1 2). On erityisen hyvä huomata, että pohjoismaisen koulukunnan mukaan ohjelmointikielten kehitys on evolutiivista, ei revolutiivista. Tämä siis poikkeaa amerikkalaisen koulukunnan näkemyksestä. Olio-ohjelmointi-vaiheessa on erotettava selkeästi termit olio ja luokka. Koska oliot ovat luokkien niin sanottuja instansseja, yleensä ajonaikaisia ilmentymiä. Vain siis olio-ohjelmoinnin yhteydessä voidaan puhua puhtaasti olioista niitä selkeästi tarkoittaen. Kaikissa muissa vaiheissa ainakin ennen olio-ohjelmointia on periaatteessa käytettävä olioista sanaa luokka. On kuitenkin yleisesti hyväksytty sanan olio kuvaavan myös sanaa luokka, luokan ollessa olion muotti. Muun muassa LaLonde ym. (1993) selvästi kuvaavat, että olioperustaisen ohjelmistokehityksen vaiheiden termistö on sama. Miksi sitten olio-ohjelmointi on ollut niin suosittua jo vuosikymmeniä ja mitä hyötyjä se tarjoaa ohjelmistokehittäjille? Budd (1997, 1 2) kuvaa olioohjelmoinnin hyötyjä seuraavasti. Ihmiset uskovat, että olio-ohjelmointi helposti ja nopeasti parantaa tuottavuutta ja tuo ohjelmistotyöhön lisävarmuutta. Myöskin siirtymisen vanhemmista kielistä olio-
16 16 ohjelmointikieliin nähdään olevan on yksinkertaista, koska ongelmanratkaisun ajatusmallit eivät muutu suuresti siirryttäessä olio-ohjelmointiin.
17 17 4 KOLMEN VAIHEEN VÄLISET SUHTE ET Vaikkakin olioperustaisen ohjelmistokehityksen vaiheiden tarkoitus on tukea toisiaan, ei niiden suhde ole aina täysin selkeä. Esimerkiksi oliomäärittelyn ja - suunnittelun erot ovat häilyvät, vaikka molempien kohdistus on selkeä (Booch, 1994). Lisäksi on havaittu, että suora siirtyminen oliomäärittelystä oliosuunnittelun kautta oliototeutukseen ei suinkaan ole mutkatonta (Haikala ym., ). Tässä luvussa tutkitaan, missä laajuudessa vaiheiden integraatio toteutuu, vai onko se puutteellista joka suhteessa. On hyvä pitää mielessä, että vaiheiden rajat ovat saman termistönsä vuoksi olioperustaisissa järjestelmissä häilyvät. Lisäksi on muistettava olioperustaisuuden kannustavan iteratiiviseen toimintaan, joka omalta osaltaan hämärtää vaiheiden keskinäistä eroavaisuutta. 4.1 Yleistä Todellisten olioperustaisten CASE-välineiden (Computer Aided Software Engineering) puute haittaa täysin integroidun tuotantoprosessin toteutumista. Yksi huomattava syy tällaisten välineiden puutteelle on selkeästi olio(- perustaisten-)menetelmien laaja kirjo ja vaihtelevaisuus (Berard, 1993, 5). Tästä huolimatta on ympäri maailman esitelty monia erilaisia olioperustaista ohjelmistokehitystä avustavia ohjelmia. Tällaiset ohjelmat keskittyvät perinteisesti kuitenkin vain johonkin tiettyyn kokonaisuuteen tai vaiheeseen, kuten esimerkiksi mallinnuksen avustamiseen. Yksi tunnetuin mallinnusta avustava ohjelma on Rationalin ROSE mallinnusohjelma. Vastaavasti olioohjelmointia toteuttavista kielistä on kaikista tunnetuin C++ ohjelmointikieli. Lisäksi LaLonde ym. (1993) väittävät, että nykyisellään oliomäärittely, oliosuunnittelu ja olio-ohjelmointi ovat suvaitsemattomia muutoksille. Esimerkiksi kohtuullisen suuri muutos vaatimuksissa kesken toteutusvaihetta, vaatii miltei aina ylhäältä-alas prosessin uudelleenkäynnistämistä
18 18 aikaisemmalta elinkaaren tasolta lähtien. Toisin sanoen on suuri epäkohta, ettei ole olemassa mitään metodiikkaa, joka mahdollistaisi integroidun samanaikaisen aktiviteetin toimittamista. LaLonde ym. (1993) myös väittävät, että ei ole olemassa työvälineitä, jotka pystyisivät toimittamaan peruutusta eli suorittamaan niin sanottua alhaaltaylös (engl. bottom-up) prosessia. Tarve peruutukseen syntyy esimerkiksi muutoksista, jotka säteilevät toteutuksesta takaisin suunnitteluun (tai jopa määrittelyyn) saakka. 4.2 Oliomäärittely ja -suunnittelu Muun muassa Haikala ym. (1998, 329) esittävät, että oliomäärittelyn ja oliosuunnittelun rajanveto on häilyvä. On siis hyvin helppo periaatteessa siirtyä vaiheesta toiseen sitä huomaamatta. Määrittelyvaiheessa määriteltävää järjestelmää on toki suunniteltava, mutta vaiheet erottaa toisistaan asiaan paneutumisen taso. Oliomäärittelyn ja -suunnittelun suurimman sudenkuopan voidaan todeta olevan vaiheiden tunnistamisen ongelma. Koska määrittelyn ja suunnittelun suhde on läheinen, voidaan suhteen läheisyyden nähdä olevan iteraation ja evolutiivisen kehittymisen kannalta toivottu asia. Muita ongelmakohtia ei näiden vaiheiden välillä ole kritisoitu. Oliomäärittelyn tuloksia voidaan siis käyttää hyvinkin tehokkaasti ja laajasti oliosuunnittelussa. 4.3 Oliosuunnittelu ja -ohjelmointi Suurin ongelma suunnittelun ja toteutuksen välillä on vaiheiden keskinäinen erilaisuus, sillä jo pelkästään käsitteet suunnittelu ja toteutus eroavat toisistaan suuresti. Suunnittelu on jonkin kokonaisuuden tarkastelemista ja sen rakenteen ja toiminnan selvittämistä. Toteutus puolestaan on toimintaa, jossa jokin kokonaisuus muodostetaan toiminnalliseksi ja rakenteelliseksi ratkaisuksi.
19 19 LaLonde ym. (1993) kritisoivat, että ei ole olemassa sellaista yleistä työvälinettä, joka tukisi yhtäaikaista toimintaa näiden kolmen vaiheen suhteen. Heidän näkemyksen mukaan tämä on suuri vahinko, sillä olioperustaisuus pyrkii suunnittelun ja toteutuksen yhtäaikaisuuteen. Edelleen he kritisoivat, että olioohjelmointi ymmärretään nykyään erittäin hyvin, mutta oliomäärittelyä ja oliosuunnittelua ei vieläkään täysin ymmärretä eikä niiden rooleja mielletä. Winograd (1990) kritisoi vuoden 1990 OOPSLA konferenssissa alkupuhujan roolissa sitä, että ihmiset eivät ole tietoisia todellisesta tahdostaan. Hänen mukaansa muun muassa eräässä OOPSLA julkaisussa peräänkuulutettiin oliosuunnittelua, mutta silti puhuttiin olio-ohjelmoinnista. Tämä perustavaa laatua oleva ristiriita on osaltaan luonut näiden kahden vaiheen välille suuria paineita. Winograd (1990) painottaa, että ilman suunnittelua ei ole toteutusta. Suunnittelu ei ole tekniikka, vaan pikemminkin se konkreettinen asia, jonka perusteella voidaan ylipäätään jotakin toteuttaa. Lisäksi hän kritisoi sitä, että perinteisesti tietojenkäsittelyn opetuksessa keskitytään opettamaan vain eri tekniikoita eikä niinkään sitä, kuinka tekniikoita voitaisiin hyväksikäyttää eri tarpeiden täyttämiseksi. Lisäksi olio-ohjelmoinnin synty ennen oliosuunnittelua (ja oliomäärittelyä) on luonut osaltaan väärää kuvaa vaiheiden tehtävistä. Oliosuunnittelu on siis kehitetty olio-ohjelmoinnin tarpeita silmälläpitäen eikä omaehtoisesti. Kaikki nämä mainitut asiat huomioon ottaen, on toteutuksen ja suunnittelun integraatio kaikista suurimman turbulenssin kohteena olioperustaisessa ohjelmistokehityksessä. Konseptinen kielimuuri vaiheiden välillä on toki kohtalaisen suuri, mutta tosiasiassa vaiheiden tavoitteet ovat samat. Voidaan siis todeta, että vaiheilla on kuitenkin enemmän yhteistä kuin eroavuutta. Yleisesti oliosuunnittelun tuloksia pystytään käyttämään hyväksi olioohjelmoinnissa riittävissä määrin.
20 Integroitu määrittely, suunnittelu ja toteutus Olio-ohjelmointi saa siis syötteenä sitä edeltävistä vaiheista tuotetut tulokset. Ilman minkäänlaista etukäteen tehtyä määrittelyä tai suunnittelua on olioohjelmointi todella raskas tehtäväkokonaisuus, varsinkin suurissa järjestelmissä ja ohjelmistoissa. Koska olio-ohjelmointi luotiin ennen oliosuunnittelua, ja oliosuunnittelu ennen oliomäärittelyä, on periaatteessa mahdollista siirtyä määrittelystä suoraan toteutukseen tai jopa aloittaa suoraan toteutuksesta. Näin ei kuitenkaan ole suositeltavaa toimia, koska silloin lopputulos ei todennäköisesti ole toivottu. Korson ym. (1990) esittävät, että vaiheiden integraation lisäämiseksi olisi luotava niin sanottu olioperustainen kieli, joka kattaisi määrittelyn, suunnittelun ja toteutuksen. Aiemminhan jo todettiin, että vaiheiden sanasto on sama. Ehdotuksessa mennään astetta pidemmälle, sillä se ei tarkoita perinteisessä mielessä käsitettyjä notaatiokieliä, jotka ovat vain ja ainoastaan mallinnukseen (toisin sanoen määrittelyyn ja suunnitteluun) keskittyviä. Kuinka määrittely, suunnittelu ja toteutus sitten loppujen lopuksi integroituvat toisiinsa? Nykyisellään voidaan integraation todeta toimivan kohtalaisessa määrin. Tässä suhteessa on kuitenkin vielä paljon parantamisen varaa. Tärkein yksittäinen nimetty asia, jolla integraatiota voidaan huomattavasti parantaa, on yhtenäisten työvälineiden kehittäminen [Sekä Berard (1993) että LaLonde ym. (1993)].
21 21 5 YHTEENVETO Tässä kandidaatintutkielmassa on käsitelty olioperustaista ohjelmistokehitystä ja erityisesti sen kolmea keskeistä vaihetta oliomäärittelyä, oliosuunnittelua ja olio-ohjelmointia. Tutkielmassa on tutkittu myös vaiheiden välisiä suhteita ja tuotu esille suhteiden erityispiirteitä. Aihepiiriksi valitut vaiheet ovat sekä konkreettisimmin kehitettäviin ohjelmiin vaikuttavia että oliopiirteisiin eniten kantaa ottavia vaiheita. Tutkielman tärkeimmät havainnot ja johtopäätökset on tiivistetty seuraavaan. Olioperustaisuudessa on yleisesti nähty monia etuja. Tärkein konkreettinen hyöty on siinä, että se pyrkii kuvaamaan reaalimaailmaa yksiselitteisesti. Lisäksi olioperustainen ohjelmistokehitys nähdään yhtenä merkittävänä lähestymistapana ohjelmistojen tuottamiseen. Sen on esitetty muun muassa parantavan tuottavuutta ja lisäävän järjestelmien ymmärrystä. Vaikka olioperustaisen ohjelmistokehityksen vaiheiden tarkoitus on tukea toisiaan, ei niiden suhde aina ole täysin selkeä. Oliomäärittelyssä pyritään mallintamaan reaalimaailmaa. Oliosuunnittelussa keksitään abstraktiot ja mekanismit, jotka tarjoavat määritellyn mallin käytöksen. Olio-ohjelmoinnissa määritelty ja suunniteltu järjestelmä toteutetaan. Vaiheiden välillä on monenlaisia asioita haittaamassa niin sanotun integroidun prosessin toteutumista. Ensinnäkin on huomioitava, että vielä nykyäänkin on tarvetta olioperustaista ohjelmistokehitystä avustaville CASE välineille. Kunnollisten ohjelmistojen elinkaaren kattavien ja ohjelmistoprosessin eri vaiheita tukevien välineiden puute on ollut yksi merkittävimmistä tekijöistä, joka vaikeuttaa vaiheiden integraatiota. Mikäli tällainen väline luotaisiin, olisi tilanne monissa määrin ihanteellinen. Suunnittelua ja määrittelyä jo tukevat notaatiokielet tulisi laajentaa koskemaan määrittelyn ja suunnittelun lisäksi toteutusta. Nykyisin käytetty notaatiokieli on olio-ohjelmoinnissa käytettyyn kieleen nähden monilta osin erilainen. Olisi
22 22 tärkeää standardoida yksi yleinen (perus-)notaatiostandardi kattamaan kaikkia kolmea keskeistä vaihetta. Eniten tätä tavoitetta lähestyy UML notaatiokieli, joka kuitenkin toistaiseksi keskittyy vain määrittelyn ja suunnittelun tukemiseen. Olioperustainen ohjelmistokehitys on nykyään eräs tärkeä ja huomattava lähestymistapa ohjelmistotuotannossa ja sitä se varmasti tulee olemaan vielä monen vuoden ajan. Jotta olioperustaista ohjelmistokehitystä voitaisiin parantaa, on edellä esitetyt asiat tärkeää huomioida. Vaikka nykyiselläänkin oliomäärittely, -suunnittelu ja -ohjelmointi toimivat keskenään tietyssä määrin, niiden keskinäisen integroidun toiminnan parantaminen tehostaisi ja helpottaisi koko olioperustaisen ohjelmistokehitysprosessin hallintaa.
23 23 LÄHDELUETTELO Berard E.V Essays on Object-Oriented Software Engineering Volume 1. Prentice-Hall, Inc. Booch G Object-Oriented Analysis And Design With Applications (2 nd ed.). The Benjamin/Cummings Publishing Company, Inc. Budd T An Introduction to Object-Oriented Programming (2 nd Addison Wesley Longman, Inc. ed.). De Champeaux D., Lea D., Faure P The Process of Object-Oriented Design. Conference proceedings on Object-oriented programming systems, languages, and applications. Vancouver, British Columbia, Canada. Pages: The ACM Digital Library. Coad P., Yourdon E Object-Oriented Analysis. Prentice-Hall, Inc. Haikala I., Märijärvi J Ohjelmistotuotanto (5. Painos). Suomen Atkkustannus Oy. Korson T., McGregor J. D. Understanding Object-Oriented: A Unifying Paradigm. Communications of the ACM. September 1990, Volume 33, No. 9. Pages: The ACM Digital Library. Koskimies K Pieni oliokirja. Suomen Atk-kustannus Oy. Koskinen J, Sakkinen M., Paakki J Ohjelmistotekniikka (Opetusmoniste) (2. Painos). Jyväskylän yliopiston yliopistopaino. LaLonde W., Pugh J., White P., Corriveau J.P Towards Unifying Analysis, Design, and Implementation in Object-Oriented Environments. Proceedings of the 1993 conference of the centre for Advanced Studies on Collaborative research: software engineering Volume 1. Toronto, Ontario, Canada. Pages: The ACM Digital Library.
24 24 Mathiassen L., Munk-Madsen A., Nielsen P.A., Stage J Object-Oriented Analysis & Design. Marko Publishing ApS. Nerson J. - M Applying Object-Oriented Analysis and Design. Communications of the ACM. September, Volume 35, No. 9. Pages: The ACM Digital Library. Winograd T Object-Oriented Programming, Systems, Languages, And Applications (OOPSLA) [Keynote/Addendum to the Proceedings], October Pages: 7 8. Ottawa, Canada.
25 25 LIITE 1 ESIMERKKI Alla on kuvattu yksinkertainen ja konkreettinen esimerkki olioperustaisen ohjelmistokehityksen keskeisten vaiheiden oliomäärittelyn, oliosuunnittelun ja olio-ohjelmoinnin toteutuksista. Oliomäärittelyn ja oliosuunnittelun esitysmuoto on UML notaatiokieltä mukaileva ja esimerkki olioohjelmoinnista on esitetty C++ ohjelmointikielellä. Kuva 2: Olioperustaisen ohjelmistokehityksen kolme vaihetta -esimerkki.
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
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ä
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
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
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ä
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
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
T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät
T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Software design and specification methods Kurssin henkilökunta ja sponsori Luennoitsija DI Antti Karanta, Napa Oy www.napa.fi Assistentti TkL
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
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
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
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
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
2. Olio-ohjelmoinnin perusteita 2.1
2. Olio-ohjelmoinnin perusteita 2.1 Sisällys Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. 2.2 Luokat ja oliot Olio-ohjelmoinnin keskeisimpiä
Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon
582104 Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon 1 Lyhyt johdatus ohjelmistotuotantoon Ohjelmistotuotanto, ohjelmistoprojektit Miten ohjelmistojen tuottaminen eroaa teollisesta tuotannosta
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
Common Lisp Object System
Common Lisp Object System Seminaarityö Tomi Vihtari Ohjelmointikielten periaatteet kevät 2004 Helsingin Yliopisto Tietojenkäsittelytieteen laitos Järvenpää 5. huhtikuuta 2004 Sisältö 1 Johdanto... 1 2
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 /
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
Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki
Malliperustainen ohjelmistokehitys - MDE 25.9.2007 Pasi Lehtimäki MDE Miksi MDE? Mitä on MDE? MDA, mallit, mallimuunnokset Ohjelmistoja Eclipse, MetaCase Mitä jatkossa? Akronyymiviidakko MDE, MDA, MDD,
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..
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ä
Määrittely- ja suunnittelumenetelmät
Menetelmädokumentti Määrittely- ja suunnittelumenetelmät Versio Päiväys Tekijä Kuvaus 0.01 5.12.01 Pekka Koskinen Alustava sisällysluettelo 0.1 7.12.01 Pekka Koskinen Ensimmäinen luonnos 1.0 11.12.01 Pekka
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
Ohjelmistotekniikan menetelmät, suunnittelumalleja
582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman
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
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ä
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.
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
Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa
Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan
582104 Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon
582104 Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon 1 Lyhyt johdatus ohjelmistotuotantoon Ohjelmistotuotanto, ohjelmistoprojektit Miten ohjelmistojen tuottaminen eroaa teollisesta tuotannosta
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ä
Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari
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.
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
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
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
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
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
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
Imperatiivisten ohjelmien organisointiparadigmojen. historia
Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,
Imperatiivisten ohjelmien organisointiparadigmojen historia
Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,
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
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
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,
Kurssin aihepiiri: ohjelmistotuotannon alkeita
Kurssin aihepiiri: ohjelmistotuotannon alkeita [wikipedia]: Ohjelmistotuotanto on yhteisnimitys niille työnteon ja työnjohdon menetelmille, joita käytetään, kun tuotetaan tietokoneohjelmia sekä monista
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
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
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ä:
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.
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
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
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
Oleelliset vaikeudet OT:ssa 1/2
Oleelliset vaikeudet OT:ssa 1/2 Monimutkaisuus: Mahdoton ymmärtää kaikki ohjelman tilat Uusien toimintojen lisääminen voi olla vaikeaa Ohjelmista helposti vaikeakäyttöisiä Projektiryhmän sisäiset kommunikointivaikeudet
T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010
12. Periytyminen 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
Määrittelyvaihe. Projektinhallinta
Määrittelyvaihe Projektinhallinta testaus määrittely suunnittelu ohjelmointi käyttöönotto, testaus tuotteenhallinta laadunvarmistus dokumentointi vaatimustenhallinta Määrittely Määrittely, eli kansanomaisesti
Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)
581361 Ohjelmistoprosessit ja ohjelmistojen laatu (4op) Ohjelmistojärjestelmien syventävien opintojen kurssi Myös ohjelmistotekniikan profiilin pakollinen kurssi eli ohjelmistotekniikka-aiheisen gradun
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
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.
Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto
jen mallinnus, s2008 jen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Tietokoneohjelma (computer program) toimintaohje, jonka mukaan toimien tietokone suorittaa jonkin tietojenkäsittelytehtävän suoritettava
Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1
Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon 31.10.2008 Harri Laine 1 Ohjelmisto Tietokoneohjelma (computer program) toimintaohje, jonka mukaan toimien tietokone suorittaa jonkin tietojenkäsittelytehtävän
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
Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä
Olio-ohjelmointi Johdanto suunnittelumalleihin Hyvin toimivan olio-ohjelmointiparadigmaa noudattavan ohjelman suunnitteleminen ei ole helppo tehtävä. On löydettävä sopiva luokkarakenne kuvaamaan ratkaistavaa
Ohjelmistojen mallintaminen, mallintaminen ja UML
582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML (Ch 2.) Ohjelmistojen mallintamisesta ja kuvaamisesta Strukturoitu mallinnus Tietovuo- ja ER-kaaviot Oliomallinnus ja UML
Software product lines
Thomas Gustafsson, Henrik Heikkilä Software product lines Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Asiantuntijateksti 17.11.2013 Sisällys 1 Johdanto 1 2 Software product
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen 16.06.2014 Ohjaaja: Urho Honkanen Valvoja: Prof. Harri Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston
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
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ä
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
Työkalut ohjelmistokehityksen tukena
1 Työkalut ohjelmistokehityksen tukena Johdanto 2 Työkaluja eli ohjelmistotyötä tukevia ohjelmistoja käytetään ohjelmistoalan yrityksissä nykypäivänä paljon. Työkalut auttavat ohjelmistoalan ihmisiä suunnittelemaan
Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages
Tampere University of Technology Department of Pervasive Computing TIE-20306 Principles of Programming Languages Ruby Ryhmä 8 Juho Rintala Sami Paukku Sisällysluettelo 1 Johdanto... 3 2 Paradigma... 3
Johdantoluento. Ohjelmien ylläpito
Johdantoluento Ylläpito-termin termin määrittely Ylläpito ohjelmistotuotannon vaiheena Evoluutio-termin määrittely Muita kurssin aiheeseen liittyviä termejä TTY Ohjelmistotekniikka 1 Ohjelmien ylläpito
Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen
Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen ohjelmointiin Jukka Talvitie Valvoja: Professori Jorma Jormakka Paikka: TietoEnator oyj Ongelma Ideologia Lifebelt
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
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
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ää
Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia
Ohjelmistojen mallintaminen, kurssikoe 15.12. esimerkkivastauksia Tehtävä 1 a: Ohjelmistotuotantoprosessi sisältää yleensä aina seuraavat vaiheet: määrittely, suunnittelu, toteutus, testaus ja ylläpito.
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
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
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
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)
4. Olio-ohjelmoinista lyhyesti 4.1
4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin
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
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
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
Palvelusuuntautunut ohjelmistotuotanto Laskuharjoitus 1: Ryhmätöiden alustaminen Toni Ruokolainen,
CINCO Collaborative and interoperable computing Palvelusuuntautunut ohjelmistotuotanto Laskuharjoitus 1: Ryhmätöiden alustaminen Toni Ruokolainen, 29.1.2010 Laskuharjoitustilaisuuden sisältö Harjoitustyön
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
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
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
Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu
Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu 581259 Ohjelmistotuotanto 1 Ohjelmistotuotanto Kuinka valmistaa laadukkaita ja tehokkaita ohjelmistoja mahdollisimman edullisesti? Ohjelmistotuotanto
Dynaaminen analyysi II
Dynaaminen analyysi II Luento 7 Antti-Pekka Tuovinen 9 April 2013 1 Tavoitteet Black-box testitapausten suunnittelutekniikat II Tilamallien käyttö Syys-seurausverkot ja päätöstaulut Käyttötapaukset Yhteenveto
Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.
Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,
Kokonaisvaltainen mittaaminen ohjelmistokehityksen tukena
Kokonaisvaltainen mittaaminen ohjelmistokehityksen tukena Mittaaminen ja ohjelmistotuotanto seminaari 18.04.01 Matias Vierimaa 1 Miksi mitataan? Ohjelmistokehitystä ja lopputuotteen laatua on vaikea arvioida
Juha Taina, Marko Salmenkivi ja Kjell Lemström,
Ohjelmistotuotanto Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu Kuinka valmistaa laadukkaita ja tehokkaita ohjelmistoja mahdollisimman edullisesti? Ohjelmistotuotanto (Software
Ohjelmistojen mallintaminen. Luento 3, 9.11.
Ohjelmistojen mallintaminen Luento 3, 9.11. Kertausta: Ohjelmistotuotantoprosessin vaiheet Vaatimusanalyysi- ja määrittely Mitä halutaan? Suunnittelu Miten tehdään? Toteutus Ohjelmointi Testaus Varmistetaan
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
Ratkaisumallien historia
Ratkaisumallien historia Jaakko Vuolasto Helsinki 25.1.2001 Seminaariesitelmä HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisällys 1 Johdanto... 1 2 Ratkaisumallin käsite ohjelmistotuotannossa...
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
Menetelmäraportti - Konfiguraationhallinta
Menetelmäraportti - Konfiguraationhallinta Päiväys Tekijä 22.03.02 Ville Vaittinen Sisällysluettelo 1. Johdanto... 3 1.1 Tärkeimmät lyhenteet... 3 2. Konfiguraationhallinnan tärkeimmät välineet... 4 2.1
TIETOTEKNIIKAN KOULUTUSOHJELMA
TIETOTEKNIIKAN KOULUTUSOHJELMA Tietotekniikan koulutusohjelman toimintaympäristö ja osaamistavoitteet Tietotekniikan koulutusohjelmasta valmistuneet insinöörit sijoittuvat suunnittelu-, ohjelmointi-, esimies-,