LUKU 5: SUUNNITTELU. Suunnitteluun liittyviä käsitteitä:

Samankaltaiset tiedostot
Ohjelmistojen suunnittelu

TOIMINNALLINEN MÄÄRITTELY MS

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Johdatus tietojenkäsittelytieteeseen 5. Tietojenkäsittelyn mekaniikat 5.5 Muistaminen: välimuisti

Suunnitteluvaihe prosessissa

Uudelleenkäytön jako kahteen

Tietojärjestelmän osat

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

Kuntasektorin kokonaisarkkitehtuuri

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Johdatus tietojenkäsittelytieteeseen 5. Tietojenkäsittelyn mekaniikat

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

ZENworks Application Virtualization 11

Ohjelmien automaattisen verifioinnin reunamailla

ITK130 Ohjelmistojen luonne

Tietoturvallisuus yhteiskunnan, yritysten ja yksityishenkilöiden kannalta

Avoimen ja yhteisen rajapinnan hallintamalli

Ohjelmistoarkkitehtuurin suunnittelu

Ohjelmiston toteutussuunnitelma

Tinkimätöntä tietoturvaa kaikkiin virtuaaliympäristöihin

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

Tietoturvallisuuden ja tietoturvaammattilaisen

Oleelliset vaikeudet OT:ssa 1/2

Sisäilmaston mittaus hyödyntää langatonta anturiteknologiaa:

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Järjestelmäarkkitehtuuri (TK081702) Pilvipalvelut. Pilvipalvelut - lähtökohtia

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen

Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4

Johdatus tietojenkäsittelytieteeseen - tietojenkäsittelyn mekaniikat: muistaminen: välimuisti

Yritysturvallisuuden perusteet

Omatietovaranto. Hyvinvointisovelluskriteerit (versio 3)

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Käytettävyyslaatumallin rakentaminen verkkosivustolle

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

11/20: Konepelti auki

Johdantoluento. Ohjelmien ylläpito

Muutamia peruskäsitteitä

Johdatus tietojenkäsittelytieteeseen 6. Suunnittelu. Kurssin sisältö

Turvallisuusseminaari Silja-Line

KONEAUTOMAATION LAATU JA TURVALLISUUS Marko Varpunen

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

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

2. päivä. Etätehtävien purku Poikkeamat. Poikkeamat Auditoinnin raportointi Hyvän auditoijan ominaisuudet Harjoituksia

Ohjelmiston testaus ja laatu. Testausmenetelmiä

EU -tietosuoja-asetuksen edellyttämät toimenpiteet kunnissa

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Esityksen sisältö Määrittelyjen mukaisuudesta varmistuminen - PlugIT-leima

Johdatus tietojenkäsittelytieteeseen 6. Suunnittelu

Johdatus tietojenkäsittelytieteeseen - suunnittelu. Matemaattis-luonnontieteellinen tiedekunta Tietojenkäsittelytieteen laitos

OTM-HANKKEEN SIDOSRYHMÄSEMINAARI

TURVALLISUUDEN HUOMIOMINEN OHJELMISTON HANKINTAKETJUSSA

3. Komponentit ja rajapinnat

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Yritysturvallisuuden perusteet

työssäoppimispaikan työtehtävissä toimiminen ammattiosaamisen näytön suorittaminen näyttösuunnitelman mukaan. Ammattitaidon osoittamistavat

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

ISO Standardisarja Eräitä ulottuvuuksia Kari Komonen

Tietorakenteet ja algoritmit

Backup Exec 3600 Appliance

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen testaus

1. Tietokonejärjestelmien turvauhat

Virtuoosi POS-järjestelmien joukossa

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

Tietorakenteet op, 50 h. Luennot alkavat 7.9. ja päättyvät

Miten varmennan ICT:n kriittisessä toimintaympäristössä?

Suomi.fi-palveluväylä. Palvelulupaus ja tiekartta

Tietotuen suunnittelu hoitolinjojen sairaalassa

HELIA TIKO ICT03D Tieto ja tiedon varastointi T.Mikkola, O.Virkki. Tietoturva tiedon varastoinnissa

MÄÄRÄYS SIJOITUSPALVELUYRITYKSEN RISKIENHALLINNASTA JA MUUSTA SISÄISESTÄ VALVONNASTA

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Avoimen lähdekoodin ohjelmistot julkisessa hallinnossa

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

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

Käytettävyys verkko-opetuksessa Jussi Mantere

Kutakin koulutusmoduulia voi vastata n. määrä koulutusmoduulin toteutuksia. Koulutusmoduulin toteutus on voimassa tietyn ajan.

Oletetun onnettomuuden laajennus, ryhmä A

Luvat ja valvonta KA-kuvaukset, Ver. 1.0 HYVÄKSYTTY Jari Kokko & Vesa Mettovaara LUVAT JA VALVONTA -KÄRKIHANKE

Ohjelmistoarkkitehtuurit

UCOT-Sovellusprojekti. Testausraportti

Standardi IEC Ohjelmisto

Ohjelmistojen mallintaminen

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

AU Automaatiotekniikka. Toimilohko FB

Avoimen tuotteen hallintamalli FINTO OhRy

1. Toimivan IT-ympäristön rakentaminen

Ohjelmistoarkkitehtuurin suunnitteluperiaatteita

Ohjelmistojen mallintaminen Ohjelmistoarkkitehtuuri Harri Laine 1

Lataa-sovellus. 1. painos

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Tietosisällön eheys. Kimmo Janhunen Riskienhallintapäällikkö

Transkriptio:

LUKU 5: SUUNNITTELU Suunnitteluun liittyviä käsitteitä: abstrahointi (abstraction) epäolennaisten yksityiskohtien häivyttäminen, informaation piilottaminen (information hiding) rakenteen osan (moduulin) sisäisten tietojen ja tietorakenteiden piilottaminen muilta osilta, ongelmien eriyttäminen (separation of concerns) periaate, jonka mukaan ratkaisussa keskitytään yhteen, mahdollisimman täsmällisesti määriteltyyn tehtävään, kapselointi (encapsulation) elementtien sisällyttäminen laajempaan ja abstraktimpaan kokonaisuuteen; käsite on hyvin läheistä sukua informaation piilottamiselle ja ongelmien eriyttämiselle; kapseloinnilla yleensä piilotetaan toteutuksen sisäiset yksityiskohdat ja tarjotaan rajapinta kapselin sisältämien tietojen manipulointiin, rajapinta (interface) rajapinnan välityksellä ohjelmisto tai laitteistokomponentti tarjoaa toiminnallisuuksiaan muiden käyttöön,

hajota ja hallitse (divide and conquer) periaate, jonka mukaisesti suuret kokonaisuudet jaetaan paremmin ja helpommin hallittaviksi osakokonaisuuksiksi, kerrosajattelu (layering) toimintakokonaisuuden jakaminen kerroksiin siten, että kukin kerros tarjoaa joitakin (muutamia) palveluja ylemmille kerroksille käyttäen hyväksi alempien kerrosten tarjoamia palveluja, moduulit (modules) kokonaisuuden jakaminen osiin siten, että osien väliset vuorovaikutukset ja rajapinnat ovat hyvin määriteltyjä, versionhallinta (version control) menetelmät, joilla hallitaan kehitystyötä ja sen aikana syntyviä versioita, uudelleenkäyttö (reuse) olemassa olevien moduulien, määritysten ja suunnitelmien käyttäminen sen sijaan, että tehtäisiin uusia, virtuaalikone (virtual machine) ohjelmisto, joka toteuttaa määritellyn abstraktin koneen toiminnallisuuden, pakkaus (package) jakelu ja asennusyksikkö, johon on koottu ohjelmisto(je)n osat ja dokumentaatio(t).

Tavoitteet yksinkertaisuus (simplicity): erilaiset abstraktiot ja rakenteet, joilla pyritään hallitsemaan sovellusten luontaista monimutkaisuutta, suorituskyky (performance): suoritustehon ja vasteajan ennustaminen, pullonkaulojen paikallistaminen, kapasiteetin suunnittelu, luotettavuus (reliability): toisteisuus, toipuminen, varmistaminen, eheys, luottamus, kehitettävvyys (evolvability): varautuminen toiminnallisuuden ja käytön laajuuden muutoksiin, ja tietoturva (security): pääsynvalvonta, salassapito, yksityisyys, tunnistus, eheys ja turvallisuus. Yleisiä rajoitteita kustannukset, aikataulut, yhteensopivuus ja käytettävyys.

Yksinkertaisuus Dijkstra [1972]: Tietojenkäsittelytiede on monimutkaisuuden hallitsemisen tutkimista. Tietojenkäsittelyjärjestelmät ovat monimutkaisimpien ihmisten tekemiä konstruktioiden joukossa. Parnas [1996] antaa seuraavat perussäännöt, joilla voi pyrkiä kohti yksinkertaisia ratkaisuja: Suunnittele ennen toteutusta. Dokumentoi suunnittelu. Katselmoi ja analysoi dokumentoitu suunnittelu. Katselmoi, että toteutus vastaa suunnittelua.

Suorituskyky Suorituskykyä (performance) kuvaavia keskeisiä suureita ovat suoritusteho, kuinka paljon hyödyllistä työtä tehdään aikayksikössä; vasteaika, kauanko tietyn tehtävän suorittamiseen kuluu; käyttöaste, miten suuren osan ajasta laite on aktiivisena. Suorityskykyanalyysin yksi osa alue on ohjelmistojen suorituskyvyn suunnittelu. Tavoitteena on jo ohjelmiston suunnitteluvaiheessa arvioida tulevan järjestelmän tehokkuutta ja tarvitsemia laitteistoresursseja. Ohjelmistojen vaatimukset (requirements) jaetaan toiminnallisiin ja eitoiminnallisiin vaatimuksiin. Niin kutsuttuihin ei toiminnallisiin vaatimuksiin kuuluvat sellaiset ohjelmiston laatua kuvaavat ominaisuudet kuin tietoturva (security), saatavuus (availability), luotettavuus (reliability) ja suorituskyky.

Luotettavuus Luotettavuuden (reliability) osa alueita ovat toisteisuus, toipuminen, varmistaminen, eheys ja luottamus. Järjestelmän toipumisesta huolehtiva ohjelmakoodi käsittelee poikkeustilanteita ja siksi sen olisi toimittava virheettömästi. Valitettavasti poikkeukselliset tilanteet ovat vaikeasti käsiteltäviä. Ne esiintyvät harvoin, eikä niitä ole helppo saada aikaan kehitysvaiheessa, jotta toipumista päästäisiin testaamaan, joten toipumisesta huolehtiva ohjelmakoodi on usein epäluotettavaa.

Kehitettävyys Ohjelmistojen ikääntyvät. Kun organisaatio lisää tietotekniikan hyväksikäyttöään, eri tietojenkäsittelyjärjestelmien integrointi nousee keskeiseksi vaatimukseksi ja alkuaan hyvinkin löyhä kytkös muuttuu ajan myötä yhä kiinteämmäksi. Järjestelmiin kohdistuu ulkoisia käyttöalueista johtuvia paineita. Esimerkiksi vuosituhannen vaihtumisen aiheuttamat ongelmat olisivat olleet vältettävissä, mikäli 1900 luvulla tehdyt järjestelmät olisi alun perin suunniteltu toimiviksi myös 2000 luvulla. Jotkut ulkoiset paineet johtuvat poliittisista päätöksistä: euroon siirtyminen ja työeläkejärjestelmän maksuperusteiden muutokset. Teknologiset muutokset: esimerkiksi puhelinnumerot ovat useaan kertaan muuttuneet laajentuneen puhelinkannan vuoksi. Käyttäjäkunnan vaatimustaso kasvaa jatkuvasti ohjelmistojen muutokset, parannukset ja kehitys.

Miten muutoksiin voi varautua? Kun tietokonejärjestelmä otetaan käyttöön tai sen käyttöä laajennetaan, vaikutuksia on tarkasteltava organisaation koko toiminnan kannalta. Ei riitä, että tarkastellaan vain sovellutuksen tehokkuutta tai taloudellisia hyötyjä. Sovelluksen ja käyttöalueen rajat on tunnistettava heti alussa. Nämä päätökset on kirjattava siten, että myös riippuvuudet ja keskinäiset suhteet tulevat selvästi esille. Rajojen määrityksiä on katselmoitava säännöllisesti sekä ohjelmistokehityksen aikana että sen jälkeen, jotta niiden paikkansapitävyys voidaan varmistaa olosuhteiden muuttuessa. Määrittelyn, suunnittelun ja kehitystyön kaikissa vaiheissa on pyrittävä tunnistamaan ja kirjaamaan sekä eksplisiittiset että implisiittiset oletukset, jotka tehdään suunnittelun ja toteutuksen valinnoissa. Nämä oletukset eivät liity vain teknisiin ja hallinnollisiin seikkoihin, vaan myös käyttäjien reaktioihin, ohjelmien vaikutuksiin käyttöalueella sekä taloudellisiin ja sosiaalisiin tekijöihin.

Ohjelmistoon tehtävien muutosten vaikutukset rajoihin ja oletuksiin on käytävä läpi ennen muutosten tekemistä, jotta yhteensopimattomuudet tai muut ei toivotut sivuvaikutukset voidaan välttää. Esitettyjen muutosten kaikki vaikutukset, niin globaalit kuin paikalliset, on analysoitava. Tämä edellyttää muun muassa sitä, että kaikki muutoksiin liittyvät takaisinkytkentäketjut tunnetaan ja ymmärretään. Ohjelmistoarkkitehtuurien on minimoitava osien (moduulit, komponentit, alijärjestelmät) väliset riippuvuudet. Aina kun mahdollista, järjestelmän jokaisen osan tulisi palvella suoraan sen käyttäjääeikätuottaa tietoa muiden osien käsiteltäväksi. Tavoitteena tulisi olla ohjelmiston rakentaminen osista, jotka ovat toiminnallisesti riippumattomia toisistaan.

Tietoturva pääsynvalvonta, salassapito, yksityisyys, tunnistaminen eheys turvallisuus Useimmiten onnettomuuden takana on monimutkainen vyyhti toisiinsa liittyviä tapahtumia, jotka johtuvat teknisistä, inhimillisistä ja työyhteisöön liittyvistä tekijöistä. Tyypillinen vakavien onnettomuuksien aiheuttaja on uskomus, että asiat saadaan kuntoon yhden löydetyn virheen korjaamisella. Monimutkaisissa järjestelmissä on lähes aina useita ohjelmistovirheitä. Hyvin yleinen virhe on luottaa liikaa ohjelmistoon, sillä täydellisiä ohjelmistoja ei voi toteuttaa.

Vaikka ohjelmistossa ei esiinny laitteistojen tavoin satunnaisia kulumisvirheitä, ohjelmiston suunnitteluvirheiden löytäminen ja estäminen on huomattavasti hankalampaa kuin kulumisvirheiden. Lisäksi laitteiston virhekäyttäytymisen muotoja on yleensä vain muutama. Ehdotonta turvallisuutta vaativissa ohjelmistoissa turvallisuus on rakennettava ohjelmistoon. Lisäksi tällaisten ohjelmistojen turvallisuus on analysoitava. Turvallisuus on pystyttävä takaamaan järjestelmätasolla mahdollisista ohjelmistovirheistä huolimatta. Ohjelmistovirheitä vastaan voidaan suojautua myös itse ohjelmistossa. Viime kädessä turvallisuus on järjestelmän, jossa ohjelmistoa käytetään, ominaisuus, ei varsinaisesti ohjelmiston ominaisuus.