Ohjelmistotekniikka - Luento 13

Samankaltaiset tiedostot
Ohjelmistotekniikka - Luento 6 Jouni Lappalainen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

3. Komponentit ja rajapinnat

Ohjelmistotekniikka - Luento 7 Jouni Lappalainen

Luku 9: Arkkitehtuurisuunnittelu. Luku 10: Komponenttitason suunnittelu. arkkitehtuurigenret, tyylit ja mallit Kerrosarkkitehtuuri

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät

HSMT J2EE & EJB & SOAP &...

Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

HOJ J2EE & EJB & SOAP &...

Ohjelmistojen suunnittelu

Integrointi. Ohjelmistotekniikka kevät 2003

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tapaustutkimus big data -analytiikkakoulutuksen suunnittelusta

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

Tiedonsiirto- ja rajapintastandardit

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

7. Tuoterunkoarkkitehtuurit

Toimilohkojen turvallisuus tulevaisuudessa

GIS-arkkitehtuurit. Lassi Lehto,

Järjestelmäarkkitehtuuri (TK081702)

SOA SIG SOA Tuotetoimittajan näkökulma

Ohjelmistoarkkitehtuurit, syksy

9. Muunneltavuuden hallinta

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohjelmistoarkkitehtuurit Komponentit Kevät 2016

in condition monitoring

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

7.4 Variability management

Mitä muutoksia pilvipalvelut tulevat aikaansaamaan tietoteknisten ratkaisujen hankinta- ja toimitusmalleissa? Miten pilvipalvelut muokkaavat

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

Luento 8: XML-tuki ohjelmointikielissä & Web-palvelut

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

Tietojärjestelmäarkkitehtuurit

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

812341A Olio-ohjelmointi, I Johdanto

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

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

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

Sovellusarkkitehtuurit

Suunnitteluvaihe prosessissa

TIE Ohjelmistojen suunnittelu

Palveluperustaiset arkkitehtuurityylit

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

10. Tuoterunkoarkkitehtuurit

IoT-platformien vertailu ja valinta erilaisiin sovelluksiin / Jarkko Paavola

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

IBM Iptorin pilven reunalla

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

arvostelija OSDA ja UDDI palveluhakemistoina.

Ohjelmistoarkkitehtuurit. Syksy 2010

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Ohjelmistoarkkitehtuurit. Syksy 2008

Huonon suunnittelun oireita. Hajuja ja sääntöjä. Hyvän suunnittelun periaatteet. Paha haju

Kehyspohjainen ohjelmistokehitys

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Muutamia peruskäsitteitä

2 Ohjelmistoarkkitehtuurien kuvaus

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

The OWL-S are not what they seem

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

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

Automaatio mahdollistaa Software as a Service - arkkitehtuurin

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

TURVAVÄYLÄSEMINAARI. Erilaiset kenttäväylät ja niiden kehitys Jukka Hiltunen

12. Kehysarkkitehtuurit

Pilvilaskennan perusteet ja sanasto (ISO/IEC 17788) sekä jatkotyöstö. SFS SR-310 Pasi Mäkinen, Open Source Lead, Microsoft

Harri Kaukovuo Senior Sales Consultant Technology Sales Oracle Finland Oy


Hajautettujen järjestelmien rakentaminen - Jini. Ohjelmistotuotantovälineet-seminaarin esitelmä

XML johdanto, uusimmat standardit ja kehitys

1 (5) VUOKRALISENSSIN KÄYTTÖÖNOTTO JA PILVIPISTEET AUTODESK ACCOUNTISSA. Milloin vuokra-aika alkaa?

ALUEARKKITEHTUURI WEB PALVELUITA KÄYTTÄEN. Niilo Saranummi VTT Tietotekniikka

Rakenteisen oppimateriaalin tuottaminen verkossa esimerkki Rhaptos. Antti Auer Koordinaattori, HT Jyväskylän yliopisto Virtuaaliyliopistohanke

Ohjelmistojen mallintaminen, mallintaminen ja UML

Uudelleenkäytön jako kahteen

Tietojärjestelmän osat

OSI ja Protokollapino

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

7. Product-line architectures

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

Visma Nova Webservice Versio 1.1 /

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistoarkkitehtuurit. Kevät 2014

TIE Ohjelmistojen suunnittelu

Valppaan asennus- ja käyttöohje

Oulu D.C. kapasiteettipalveluita oululaiseen ekosysteemiin

Transkriptio:

Ohjelmistotekniikka - Luento 13 Luku 10: Komponenttitason suunnittelu komponentin määrittely luokkapohjaisten komponenttien suunnittelu komponenttipohjainen ohjelmistotekniikka (CBSE) CORBA ja SOA pilvipalvelu tuoterunkoon perustuva ohjelmistokehitysprosessi Luku 11: Käyttöliittymän suunnittelu kultaiset säännöt käyttöliittymän suunnitteluprosessi käyttöliittymän suunnitteluperiaatteet

Mikä on komponentti? OMG Unified Modeling Language Specification [OMG01] määrittelee komponentin a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces. oliopuolella: komponentti koostuu joukosta yhteistyössä toimivia luokkia perinteisesti: ohjelmiston osa, joka sisältää toiminta-logiikan kuvauksen, sen tarvitsemat sisäiset tietorakenteet ja rajapinnan, jonka kautta se voidaan käynnistää ja jonka kautta tietoa siirretään yleisesti: itsenäinen ohjelmayksikkö, joka tarjoaa palveluja rajapinnan kautta!2

Komponentit ovat ohjelmistoarkkitehtuurissa käsiteltäviä pienimpiä yksiköitä: raja arkkitehtuurisuunnittelun ja yksityiskohtaisen suunnittelun välillä. Suuri komponentti voi kuitenkin koostua useista pienemmistä komponenteista, jolloin komponentilla on oma sisäinen arkkitehtuurinsa esim. Eclipsen kaltainen ohjelmointiympäristö ja siihen integroidut työkalut Komponentin sisäisen rakenteen ei pitäisi näkyä ulospäin eikä toiminnan riippua käyttöympäristöstä (muuten kuin vaadittujen rajapintojen kautta)!3

Komponentti muodostaa toiminnallisen kokonaisuuden, joka tarjoaa joukon loogisesti toisiinsa liittyviä palveluja palvelut käyttävät samoja tietorakenteita palveluja käytetään tyypillisesti samassa yhteydessä Toiminnallisuus on peruste komponentin olemassaololle. Komponenteilla hallitaan järjestelmän muunneltavuutta: eristetään järjestelmän osat, jotka halutaan helposti päivitettäviksi Komponenttityyppejä: esim. plugin-komponentit ja COTS (Commercial Off-The-Shelf )-komponentit!4

Komponentti on työnjaon perusyksikkö kaikissa kehitystyön vaiheissa esim. suunnittelu, toteutus, testaus, konfiguraation hallinta, ylläpito Yksi komponentti yhden henkilön vastuulle. Työryhmä kehittää toisiinsa liittyviä komponentteja (esim. tiettyä alijärjestelmää). Järjestelmää kehittävän organisaation rakenne alkaa muistuttaa järjestelmän rakennetta (tai päinvastoin: vrt. Conway:n laki)!5

Komponentin ominaispiirteet Riippuvuudet komponentti voi riippua palveluista, joita se olettaa saavansa muilta komponenteilta vaadittujen rajapintojen kautta Käyttöönotto komponentti voidaan ottaa käyttöön lähdekoodisena (käännösaikana) tai käännettynä binäärimuodossa (linkkausaikana) Koko komponentin tulisi olla yhden henkilön hallittavissa Standardointi esimerkkinä Sunin EJB-komponenttistandardi Koskimies, Mikkonen 2005!6

Komponenttien välinen vuorovaikutus Rajapinta kertoo, miten palvelu otetaan käyttöön Car PowerSource palvelun nimi, parametrit ja niiden tyypit ja mahdollisen tuloksen tyyppi = kutsumuoto (signature) PowerSource tarjottu rajapinta Engine vaadittu rajapinta palvelun merkitys kuvataan tulo- ja jättöehtojen (pre/post condition) avulla Car PowerSource Engine Koskimies, Mikkonen 2005 7

Esimerkki komponenttimallista: osa yliopisto-järjestelmästä UML Superstructure Specification, v2.4!8

Komponentin räätälöinti Komponentin uudelleenkäytettävyys edellyttää komponentin soveltumista erilaisiin yhteyksiin. Komponentin voitava muunnella tarjoamaansa palvelua tarpeen mukaan. Komponentin suunnittelussa huomioitava varianssin hallinta (samaan tapaan kuin tuoterungoissa tai sovelluskehyksissä).!9

Komponentin räätälöinti periytymisen avulla Määritellään halutut operaatiot aliluokassa uudelleen dynaamisen sidonnan ansiosta suoritusaikana tulee kutsutuksi olion dynaamisen tyypin mukainen operaatio Huono puoli: periytyminen rikkoo kapseloinnin -> semanttinen särkyvän yliluokan ongelma (semantic fragile base class problem)!10

Särkyvän yliluokan ongelma Kirjastokomponentti Comp Räätälöity komponentti Custom Muutos alkuperäiseen komponenttiin voi tehdä räätälöidystä komponentista toimimattoman!11

Luokkapohjaisten komponenttien suunnittelu (oliosuunnittelun periaatteet) The Open-Closed Principle (OCP). A module [component] should be open for extension but closed for modification. muutokset eivät saa aiheuttaa muutoksia useisiin paikkoihin (heijastusvaikutus) esim. abstrakteihin rajapintoihin perustuvissa malleissa uuden rajapinnan toteuttavan aliluokan lisääminen ei saisi aiheuttaa muutoksia mallin muissa luokissa <<interface>> Sensor read() enable() disable() test() Detector Window sensor Smoke sensor Motion detector Heat sensor CO2 sensor!12

The Liskov Substitution Principle (LSP). Subclasses should be substitutable for their base classes. Ohjelman toiminta säilyy samana, jos luokan T toiminnallisuus korvataan luokalla S, joka on T:n aliluokka Lapsiluokan tulee olla sijoitettavissa kantaluokkiensa tilalle. Ongelma on, että tätä periaatetta ei voi varmistaa tarkastelemalla vain luokkaa itseään, vaan pitää myös tietää miten sitä käytetään. ChequeAccount Account Kuvan vasemmassa osassa oleva rakenne ei noudata korvausperiaatetta, koska lainatililtä ei voi veloittaa. Tilanne on ratkaistu määrittelemällä tileille uusi, yhteinen yliluokka, jonka rajapintaa on rajoitettu (veloitusmetodi poistettu), josta lainatili ja shekkitili on peritty. accountname balance credit() debit() MortgageAccount interestrate calculateinterest() - debit() Restructuring to satisfy LSP MortgageAccount interestrate calculateinterest() accountname balance credit() ChequeAccount debit()!13

Oliosuunnittelun periaatteet Dependency Inversion Principle (DIP). Depend on abstractions. Do not depend on concretions. Korkeamman tason modulit eivät saa riippua alemman tason moduleista. Molempien tulisi riippua abstraktioista. Abstraktioiden ei tulisi riippua yksityiskohdista, vaan päinvastoin. The Interface Segregation Principle (ISP). Many clientspecific interfaces are better than one general purpose interface. Lihava palvelinrajapinta tulisi erottaa erillisiksi asiakaskohtaisiksi rajapinnoiksi. Rajapinta kuuluu asiakkaalle, eikä palvelimelle. Source: Martin, R., Design Principles and Design Patterns, downloaded from http:www.objectmentor.com, 2000.!14

Oliosuunnittelun periaatteet The Release Reuse Equivalency Principle (REP). The granule of reuse is the granule of release. Paketoinnissa käytetään samaa rakeisuutta kuin uudelleenkäytettävyydessä. The Common Closure Principle (CCP). Classes that change together belong together. Luokat joihin kohdistuu samanlaisia muutospaineita kuuluvat yhteen (laitetaan samaan pakettiin). The Common Reuse Principle (CRP). Classes that aren t reused together should not be grouped together. Jos luokkia ei ole uudelleenkäytetty yhdessä, ei niitä myöskään pitäisi käsitellä yhtenä ryhmänä (laittaa samaan pakettiin). Source: Martin, R., Design Principles and Design Patterns, downloaded from http:www.objectmentor.com, 2000.!15

Koheesio Perinteisesti: yhden tarkoituksen moduuli OO näkökulma: koheesio tarkoittaa, että komponentti tai luokka kapseloi vain sellaiset attribuutit ja operaatiot, jotka liittyvät läheisesti toisiinsa ja itse luokkaan tai komponenttiin Koheesion tasot (lueteltu koheesion korkeusjärjestyksessä; ylempi on parempi) Toiminnallinen Peräkkäinen toisen osan tuloste on toisen osa syöte Kommunikationaalinen saman datan käsittelyyn liittyvät operaatiot samassa luokassa Proseduraalinen tarkastetaan lupa käyttää tiedostoa ja sitten avataan se Ajallinen virheen sattuessa tietyt operaatiot suoritetaan (suljetaan avoimet tiedostot, kirjataan virhelokiin ja ilmoitetaan käyttäjälle) Looginen samankaltaiseen tehtävään liittyvät, esim I/O käsittelyyn Satunnainen!16

Kytkentä Perinteisesti: kytkennän aste komponenttien välillä pyritään alhaiseen kytkentään OO näkökulma: kytkennän aste luokkien välillä Kytkennän tasot (korkeasta matalaan; alempi parempi) Sisältökytkentä (haetaan toisen moduulin paikallista dataa) Yleinen kytkentä (globaalin muuttujan käyttö) Ulkoinen kytkentä (kaksi moduulia jakavat ulkopuolisen määrittelemän tietoformaatin, protokollan tai laiterajapinnan) Ohjauskytkentä (operaatio A herättää operaation B) Leimakytkentä (moduulit jakavat tietorakennekoosteen ja käyttävät vain osaa siitä) Datakytkentä (tietoa siirretään argumenttien avulla) Viestikytkentä (moduulit eivät ole riippuvia toisistaan, käyttävät julkista rajapintaa viestien vaihdolle)!17

Komponenttipohjainen kehitys Komponentti on itsenäinen ohjelmistoyksikkö, jota yhdessä muiden komponenttien kanssa voidaan käyttää ohjelmiston rakentamisessa Jos uudelleenkäyttö on mahdollista ohjelmisto-projektissa, seuraavia kysymyksiä tulisi kysyä: Onko vaatimuksiin sopivia valmiita (commercial off-the-shelf (COTS)) komponentteja saatavilla? Onko vaatimuksiin sopivia valmiita open source -komponentteja saatavilla, huomioiden komponentin ja oman sovelluksen lisenssit? Onko vaatimuksiin sopivia itse kehitettyjä komponentteja saatavilla? Ovatko saatavilla olevien komponenttien rajapinnat sopivia järjestelmän arkkitehtuuriin?!18

Komponentin ominaisuudet Yhdistettävä rajapinnat noudattavat julkista rajapintamäärittelyä Itsenäinen toimitetaan itsenäisenä, ilman tarvetta käyttää muita komponentteja Toimitettava pystyy toimimaan yksin alustalla, joka on komponenttimallin mukainen Dokumentoitu riittävä kuvaus, jotta käyttäjät pystyvät päättelemään, sopiiko komponentti heidän tarpeeseen Standardoitu noudattaa jotain standardoitua komponenttimallia» Sommerville 2004 Riippuvuudet komponentti voi riippua palveluista, joita se olettaa saavansa muilta komponenteilta vaadittujen rajapintojen kautta Käyttöönotto komponentti voidaan ottaa käyttöön lähdekoodisena (käännösaikana) tai käännettynä binäärimuodossa (linkkausaikana) Koko komponentin tulisi olla yhden henkilön hallittavissa Standardointi esimerkkinä Sunin EJBkomponenttistandardi Koskimies, Mikkonen 2005!19

Miten uudelleenkäyttöä voidaan edistää Poistetaan sovelluskohtaiset metodit (operaatiot) Muutetaan nimet helpommin ymmärrettäviksi Lisätään metodeja, jotta saadaan toiminnot kattavammiksi Tehdään poikkeusten käsittely yhdenmukaiseksi kaikille metodeille Lisätään konfigurointi rajapinta, jotta komponentti saadaan sovitettua helpommin käyttöön eri tilanteissa Uudelleenkäytön ja käytettävyyden ristiriita Komponentin uudelleenkäytön vahvistaminen tekee komponentista mutkikkaamman ja vaikeuttaa sen ymmärtämistä Mistä komponentteja Vanhoista (legacy) järjestelmistä, lisätään kääre (wrapper), jonka avulla komponentin saa helpommin käyttöön CBSE uudelleenkäytön tuella (CBSE for Reuse) Sommerville 2011!20

CORBA (Common Object Request Broker Architecture) CORBA:n ideana on oliopohjaisuus ja neutraalin rajapintamäärittelyn (IDL, Interface Definition Language) käyttö Rungon määrittely (skeleton) Kaikki tarjottu palvelu noudattaa rajapinnaltaan IDL määrityksiä ja se voi olla toteutettuna esim. C, C++, Smalltalk tai Java kielillä Rajapinta Toteutus Koodi DII (dynamic invocation interface) Stub (edustaja) (etäoliokutsujen staattinen muodostus) CORBA: n tarjoaman väylän kautta oliot voivat hakea tarvitsemansa palvelun Implementation repository Interface repository CORBA ORB CORBA ORB CORBA tukee hajautettujen olioiden (komponenttien) käsittelyä asiakas/palvelin ympäristössä CORBA standardin mukaisia ORB toteutuksia > 10!21

Palvelupohjainen arkkitehtuuri (SOA) löysästi kytkeytynyt arkkitehtuuri UDDI kolme protokollaa (XML pohjaisia) SOAP (Simple Object Access Protocol) Palvelun välittäjä (broker) kieli ja protokolla, jonka avulla rakenteellista tietoa siirretään WSDL WSDL WSDL (Web Services Description Language) kieli, jonka avulla SOAP protokollalla tarjotun palvelun rajapinta (pyyntö- ja vastausmuoto) voidaan määritellä Palvelua pyytävä SOAP Palvelun tuottaja Palvelu UDDI (Universal Description, Discovery and Integration) Web -palvelujen arkkitehtuuri standardoitu tapa julkaista ja etsiä eri palvelujen metadataa!22

SOAP SOAP on kieliriippumaton Käyttää XML (Extensible Markup Language) kieltä kuvauskielenä rakennettaessa viestipakettia, joka tyypillisesti siirretään verkon yli HTTP -protokollaa käyttäen. SOAP viestin peruosa on kantaelementti <SOAP:Envelope> joka sisältää vaihtoehtoisen otsikkoelementin <SOAP:Header> Oikeuksien tarkistamista Tapahtumien hallintatietoa ja pakollisen runkoelementin <SOAP:Body> <SOAP-ENV:Body> <mfindpart xmlns:m the-method-uri > <PartNo>12345 </PartNo> <GroupID>7 </GroupID> </mfindpart> Envelope Header Extended information Body Method element Embedded element Other independent elements </SOAP-ENV:Body> 23

Tuoterunkoon perustuva ohjelmistokehitysprosessi Alustakehitysprosessi (domain engineering) Vaatimusmäärittely Sovellusalueen käsitemalli Muunneltavuusvaatimukset Alustan suunnittelu Tuoterunkoarkkitehtuuri Alustan toteutus Yhteiset vaatimukset Toteutusympäristö Alusta Tuotekehitysprosessi (application engineering) Tuote Tuotekohtainen koodi Vaatimusmäärittely Tuotevaatimukset Tuotteen toteutus Koskimies&Mikkonen 2005!24

Tuoterunko ja yksittäinen tuote Komponentteja valinnainen Alusta Alusta Alusta Tuoterunko Tuote vaihtoehtoinen, mahdollisesti tuotekohtainen vaihtoehtoinen, ei tuotekohtainen Koskimies&Mikkonen 2005!25

Pilvipalvelu (pilvilaskenta, cloud computing) NIST (The US National Institute of Standards and Technology) määrittelee Cloud computing is a model for enabling convenient, on demand network access to a shared pool of configurable computing resources (e.g. networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. Kolme peruspiirrettä palvelujen laajuus voidaan säätää tarpeen mukaan kustannukset muodostuvat käytön mukaan ja laatu sovitaan SLA (service level agreement) sopimuksella palvelujen laatu (esim. varmuus ja suorituskyky) riippuu pitkälti Internetin palveluasteesta ja resurssien hallinnasta!26

Pilvipalvelu (pilvilaskenta, cloud computing) Pilvipalvelujen käyttämä verkko voi olla jotain neljästä pilvityypistä (+IoT): Yksityinen pilvipalvelu, (Private cloud) Yrityksen oma tai vuokrattu palvelu, jolloin resurssit ovat ainoastaan yrityksen omassa käytössä (muodostaa oman suljetun verkon) Yhteisön omaan käyttöön tarkoitettu pilvipalvelu (Community cloud) Resurssit jaettuja ainoastaan määritellyn yhteisön käyttöön. Julkinen pilvipalvelu (Public cloud) Julkinen pilvi, avoin, lähes rajoittamattomat resurssit ja käyttäjät. Infrastruktuuri sijaitsee jaetuilla palvelimilla muiden samaa pilvipalveluntarjoajaa käyttävien asiakkaiden kanssa Yhdistelmäpilvipalvelu (Hybrid cloud) Mist ja Edge (IoT)!27

Tunnetuimmat pilvipalvelun palvelutyypit IaaS - Infrastructure as a Service, IT infrastruktuuri, verkko, laitteistot ja sovellukset hankitaan pilvipalveluna, esim. Amazonin Elastic Compute Cloud (EC2), Eucalyptus, Openstack, OpenNebula. PaaS - Platform as a Service alustapalvelu, jonka päälle asiakas voi rakentaa sovelluksia, esim. Googlen AppEngine, Microsoftin Azure, Force.com, Rackspace. SaaS - Software as a Service sovellus tai sovelluksia hankitaan pilvipalveluna, esim. Facebook, Gmail, OfficeLive. tunnetaan myös seuraavat palvelut TaaS - Testing as a Service testausta hankitaan pilvipalveluna (esim. oululainen bitbar.com). HaaS Human as a Service crowdsourcing työvoimaa (esim. testaajia) hankitaan pilvipalveluna. Jouni Lappalainen & Ilkka Tervonen!28

11. Käyttöliittymän suunnittelu Helppo oppia? Helppo käyttää? Helppo ymmärtää?!29

Käyttöliittymän suunnittelu Tyypillisiä suunnitteluvirheitä yhdenmukaisuuden puute liikaa muistamista ei ohjausta/apua ei poistumistietä outo kieli (tietokonetermit) ei oikopolkuja ei riittävää palautetta vaikea dialogi vaikeat virheilmoitukset!30

Kultaiset säännöt / Mandel 1997 Käyttäjä ohjaa (place the user in control) joustavat vuorovaikutustavat käyttäjä voi keskeyttää halutessaan ei teknisiä järjestelmätason ilmoituksia Vähennä muistikuormaa ei tarvetta muistaa komentoja, vaihtoehdot esille loogiset oikopolkukomennot Pidä käyttöliittymät yhdenmukaisina samat sanat, tilanteet tai toimenpiteet tarkoittavat aina samaa asiaa useissa ikkunoissa esiintyvät osaset pitäisi sijoitella kaikissa ikkunoissa samoihin paikkoihin!31

Käyttöliittymän suunnitteluprosessi Kuinka hyvin kaikki toiminnalliset vaatimukset on toteutettu? Kuinka helppokäyttöinen ja helppo oppia? Kuinka tyytyväinen käyttäjä on, miten palvelee käyttäjää työssä Käyttöliittymän validointi Käyttäjän, tehtävän ja ympäristön analyysi Mikä ongelma, mitä tehtäviä, miten tehtävät riippuvat toisistaan? Miten käyttäjä haluaa käyttää järjestelmää? Käyttöliittymän suunnittelu Toteutus Määrittele käyttöliittymän oliot ja toiminnot (operaatiot). Mallinna tapahtumat, jotka aiheuttavat tilan muutokset käyttöliittymässä. Kuvaa miten käyttöliittymän eri tilat näkyvät käyttäjälle.!32

Käyttöliittymän suunnittelun periaatteet / Tognozzi 2001 Ennakointi sovelluksen tulisi ennakoida käyttäjän tarpeita esim. tulostimen valmistajan sivulla on driver infon lisäksi linkki, mistä eri käyttöjärjestelmien driver voidaan ladata Kommunikointi käyttäjää tulisi informoida aktivoiduista toiminnoista Yhdenmukaisuus toimintojen ja esitystavan tulisi olla yhtenäinen läpi sovelluksen Kontrolloitu itsenäisyys käyttäjän navigointia sovelluksessa tulisi tukea, mutta tarvittaessa voidaan myös rajata käyttöä käyttäjätunnuksen ja salasanan avulla Tehokkuus sovelluksen käyttöliittymä tulisi suunnitella sellaiseksi, että tavoitteena on käyttäjän tehokkuuden paraneminen, ei suunnittelijan!33

Käyttöliittymän suunnittelun periaatteet / Tognozzi 2001 Joustavuus käyttöliittymän tulisi tukea sekä sovellusta tuntevia, että satunnaisia käyttäjiä ( eiku -kokeilua) Fokus käyttöliittymän tulisi estää käyttäjää eksymästä Fittin laki kohteen löytämiseen kuluva aika on etäisyyden ja kohteen koon funktio / Fitt 1954 Käyttöliittymäoliot merkittävä määrä käyttöliittymäolioita löytyy kirjastoista, käytä niitä Odotusajan minimointi sovelluksen tulisi käyttää multitasking ominaisuutta ja suorittaa raskaita tehtäviä taustalla!34

Käyttöliittymän suunnittelun periaatteet / Tognozzi 2001 Opittavuus sovelluksen oppimiseen kuluva aika pitäisi minimoida Metaforat tuttujen periaatteiden (ja nimien) käyttö helpottaa oppimista Varmista tulosten säilyvyys varmista täytettävän lomakkeen talletus Luettavuus esitettävän tiedon tulisi olla helppolukuista Tilatiedon jäljitys tilatietoa tulisi tallettaa, jotta siihen voidaan palata Näkyvä (visible) navigointi the illusion that users are in the same place, with the work brought to them (käyttäjä valitsee toiminnot käyttöliittymässä esitellyistä)!35