Hammashoitokoneen keskitetty asetusten hallinta ja replikointi
Sähkötekniikan korkeakoulu
Diplomityö,jokaon jätettyopinnäytteenä tarkastettavaksi
diplomi-insinöörin tutkintoavartenEspoossa7.3.2014.
Työn valvoja:
Prof.Raimo Sepponen
Työn ohjaaja:
DI OlliKattelus
A ’’ Aalto-yliopisto
Sähkötekniikan
korkeakoulu
Tekijä:Aleksi Wallenius
Työn nimi: Hammashoitokoneenkeskitetty asetusten hallintaja replikointi
Päivämäärä:7.3.2014 Kieli: Suomi Sivumäärä:7+51
Elektroniikanlaitos
Professuuri: Sovellettuelektroniikka Koodi:S-66
Valvoja: Prof. Raimo Sepponen
Ohjaaja: DIOlliKattelus
Diplomityöntavoitteenaolisuunnitellajatoteuttaanykyaikaisenhammashoitoko-
neenasetustenhallintajareplikointi-ominaisuusPC-ohjelmistolle.Ominaisuuden
pohjana oli toiselle hoitokoneelle toteutettu vastaava ominaisuus. Ominaisuudel-
la oli siis voitava ottaa talteen hoitokoneen asetukset tietokoneelle ja pystyttävä
lähettämään asetukset takaisin yhdelle taiuseammallehoitokoneelle.
Työn alussa esitellään ominaisuuden toteuttamiseksi käytettyjä teknologioita ja
niille löydettyjä vaihtoehtoja. Eri vaihtoehtoja vertaillaan ja perustellaan niiden
välillä tehtyjä valintoja. Työssä kuvataan myös, kuinka ominaisuuden toimintaa
suunniteltiin ja sen vaatimuksia pohdittiin. Joidenkin ominaisuuden osien toteu-
tuksien valintoja selvitetään tarkemminkin.
Työn tavoitteessa onnistuttiin eli saatiin toteutettua toimiva ominaisuus, jonka
toimintaperiaatettaja käyttöäesitelläänja onnistumista arvioidaantyön loppuo-
sassa. Lopuksi pohditaan vielä tapoja, joilla ominaisuuden toimintaa voitaisiin
kehittää ja erityisesti, kuinkasen tietoturvaavoitaisiin parantaa.
Avainsanat: Asetusten hallinta,Hammashoitokone,HTTP, CGI,SQL, Java, C,
C++, shell-skripti
Author: Aleksi Wallenius
Title: CentralizedSettings Management And Repliationof a Dental Unit
Date: 7.3.2014 Language: Finnish Numberof pages:7+51
Department of Eletronis
Professorship: AppliedEletronis Code: S-66
Supervisor: Prof. Raimo Sepponen
Instrutor: M.S. (Teh.) Olli Kattelus
Thegoalofthis Master'sThesiswastodesignandtoimplementforaPCsoftware
the settingsmanagementand repliation feature of a modern dental unit. As the
basisforthefeaturewastheorrespondingfeatureimplementedforanotherdental
unit. Sothefeature had tobettobeused totransferand tosavethe settingsof
a dental unitto aomputer and tosend thesesettings bak to oneor moreunits.
In the beginning of the Thesis tehnologies used to implement this feature and
alternativetehonologies found forthemare presented.Dierent optionsareom-
pared and hoies made between themare justied.In the Thesis it'salsodesri-
bed how the operation ofthe feature was planned and how itsrequirements were
pondered. The hoies of the implementationsof some of the parts of the feature
are lariedin even more detail.
The Thesiswassuessfulinahievingitsgoal.This meansthat afuntioningfea-
turewasimplemented.Itsoperationalprinipleanduse ispresented anddisplayed
and its suess is judged in the later parts of the thesis. Lastly ways to improve
the funtioningofthefeatureandespeiallyitsinformationseurity arepondered.
Keywords: Settingsmanagement,Dentalunit,HTTP,CGI,SQL,Java,C,C++,
shell sript
Esipuhe
Ensimmäiseksi haluan kiittää Professori Raimo Sepposta työn valvonnasta ja Olli
Kattelusta ohjauksesta ja molempia kärsivällisyydestä työn valmistumisaikataulun
venyessä. KiitoksetmyösPlanmeallejaplanmealaisilletuestajamahdollisuudesta
työntekoon, ja erityisestiJari Kannonkerälle kannustuksesta.
Kiitänmyösvanhempianituestajakaikkiakavereitani,erityisestiMattiFouhault-
Airasmaataja Hanna Hoi Yee Tammista, jaksamisestakuunnella valitustani diplo-
mityön teon hankaluudesta. Kiitokset ansaitsevat myös Amândio Fondo, José Au-
gustoNhantumbojakokomuu ASSCODECHA-järjestönväkiMaputosta.Heantoi-
vat myöskintukensa ja ennen kaikkea mahdollisuuden työnteolle varsinaisen työni
ohella.
Lopuksi haluan mainitavielä FunkyMonkeys -hostellinEtelä-AfrikanNelsprui-
tissa. Se tarjosi minulle sopivat puitteet kolmen viikon ajan joulun 2013 tienoilla
tämändiplomityönvaltaosankirjoittamiselle.
Maputo, 16.2.2014
Aleksi Wallenius
Sisältö
Tiivistelmä ii
Tiivistelmä (englanniksi) iii
Esipuhe iv
Sisällysluettelo v
Lyhenteet vii
1 Johdanto 1
2 Kirjallisuuskatsaus käytetyistä ja vaihtoehtoisista teknologioista 4
2.1 TCP/IP-protokollaperhe . . . 4
2.1.1 Internet Protool . . . 4
2.1.2 Transmission Control Protool . . . 4
2.1.3 UserDatagram Protool . . . 4
2.2 Terminaalisovellukset . . . 5
2.3 Tiedonsiirto . . . 5
2.3.1 TrivialFile Transfer Protool . . . 5
2.3.2 File Transfer Protool . . . 5
2.3.3 Seure Copy ja SSH File Transfer Protool . . . 6
2.3.4 Network File System . . . 6
2.4 Hypertext Transport Protool . . . 6
2.5 TLS, SSL ja IPse . . . 12
2.6 Common Gateway Interfae . . . 12
2.6.1 Vaihtoehtoja CGI:lle . . . 13
2.6.2 GNU CGICC -kirjasto . . . 13
2.7 Muita käytettyjä kirjastoja . . . 13
2.7.1 Java Remote Method Invoation. . . 13
3 Ominaisuuden lähtökohdat ja suunnittelu 15 3.1 Ominaisuus PlanmeaCompat -hoitokoneella . . . 15
3.2 Sovereignin web-käyttöliittymä. . . 15
3.3 Sovereignin ACCU-kortin arkkitehtuuri ja sisäinen viestintä . . . 16
3.4 Romexis-arkkitehtuuri . . . 16
3.5 Sovereignin ja Romexiksen välinen viestirajapinta . . . 17
3.6 Haastattelut . . . 19
3.7 Asetustiedostot . . . 20
3.8 Ominaisuuden vaatimukset . . . 22
3.9 Tiedonsiirto . . . 24
3.10 Asetustietojen tallennustapa . . . 26
3.11 Tietoturva ja potilasturvallisuus . . . 27
4 Ominaisuuden toteuttaminen 29
4.1 CGI-skriptit . . . 29
4.2 Romexis ja Sovereign . . . 29
4.3 Ominaisuuden testaus . . . 36
5 Tulosten esittely 38
6 Tarkastelu 43
6.1 Arviointi . . . 43
6.2 Ominaisuuden jatkokehitys . . . 43
6.3 Tietoturvanparantaminen . . . 46
Viitteet 48
Lyhenteet
ASP Ative ServerPages
CGI Common Gateway Interfae
FTP File Transfer Protool
FTPS FTP Seure
HTML Hypertext Markup Language
HTTP Hypertext Transfer Protool
HTTPS Hypertext Transfer ProtoolSeure
IP Internet Protool
IPSe Internet Protool Seurity
Java RMI JavaRemote MethodInvoation
JSP JavaServerPages
MIME Multipurpose Internet MailExtensions
NFS NetworkFile System
RFC Request for Comments
SCP Seure Copy
SFTP SSH File Transfer Protool
SMTP Simple MailTransfer Protool
SQL Strutured Query Language
SSH Seure Shell
SSL Seure Sokets Layer
TCP Transmission ControlProtool
TFTP Trivial File Transfer Protool
TLS TransportLayer Seurity
UDP User Datagram Protool
URL Uniform Resoure Loator
WWW World WideWeb
1 Johdanto
Tämädiplomityöontehtysuomalaisessahammaslääketieteenalanyrityksessänimel-
täPlanmeaOy. Työ tehtiinosanatekijän työtä Planmeanhammashoitokonedivi-
sioonan ohjelmistotuotekehitysosastolla. Planmea suunnittelee ja valmistaa ham-
mashoitokoneita,hammasröntgenlaitteitaja näidenhallintaan tarkoitettujatyöase-
maohjelmistoja. Planmea on Planmea Group -yhtiöryhmän emoyhtiö. Yhtiöryh-
määnkuuluulisäksiviisimuutayhtiötä:PlanmedOy,PlandentOy,LM-Instruments
Oy, Opus SystemerAS ja Triangle Furniture Systems In.Näistä esimerkiksiPlan-
med suunnittelee, valmistaaja markkinoi kuvantamislaitteitamammograaaja or-
topedistä kuvantamistavarten ja Plandenttoimittaa laitteita,tarvikkeita ja palve-
lujahammasklinikoilleja-laboratorioille.Yhteensäyhtiöryhmätyöllistäälähes 2500
henkilöä.[1℄ [2℄
Hammashoitokoneellatarkoitetaannykyaikaista laitekokonaisuuttajokasisältää
hammaslääkärin potilastuolin lisäksi muun muassa lääkärin ja hoitajan tarvitse-
matinstrumentitjaoheislaitteetsekäohjaus-japuhdistusjärjestelmät.Sovereignon
Planmean kehittynein hammashoitokone ja siksi yhtiön lippulaivatuote. Sovereig-
ninerikoisuutenaonerityisestisen korkeamuokattavuudenaste. Hoitokonevoidaan
esimerkiksihelpostimuuttaaoikeakätisen lääkärinkäyttämästävasemmankätiseksi.
Modulaarisuutensa ansiosta Sovereign on hankittavissa lukuisillaerilaisilla kokoon-
panoilla ja asennustavoilla. Kuvassa 1 näkyy Sovereign-hoitokone eräässä muodos-
saan. Myöshoitokoneen istuimenvärit onvalittavissalaajastavalikoimasta.[3℄[4℄
Toinen yhtiön myymistä hammashoitokoneista on nimeltään Planmea Com-
pat. Se on ominaisuuksiltaan jonkin verran Sovereignia riisutumpi. Planmealla
on myös PC:llä ajettava Romexis-ohjelmisto. Romexiksen käytetyimmät ominai-
suudet liittyvät yrityksen kuvantamistuotteisiin. Ohjelmalla voidaan muun muas-
sa hallita kuvattavana olleita potilaita ja tutkia heidän kuviaan. Romexikseen on
kuitenkin saatavilla valinnainen Clini Management -moduuli, jolla taas voidaan
hallitaesimerkiksiyhden, taitarvittaessa jopauseamman,klinikankaikkiahoitoko-
neita. Klinikkatasolta voidaan siirtyä myös yksittäisen koneen tarkkailuun ja jopa
etäohjaamiseen.Hoitokoneidenkäytöstä kerätään erilaisia tietoja, joita voi jälkikä-
teen tutkia Romexiksen lokikirjoista,kuvaajista ja erilaisista Romexiksen luomista
raporteista. Tässä työssä tehty ominaisuus on osa Clini Management -moduulia,
joten jatkossa tässä työssä Romexis-termi käsittää ohjelman oletusominaisuuksien
lisäksi myös Clini Management -moduulin. Clini Management -moduuli on ole-
tuksena käytössä muun muassa yliopistoilla opetuskäytössä olevien hoitokoneiden
yhteydessä. [5℄ [6℄ [7℄
Romexis-ohjelmistovoidaanjakaakolmeenitsenäisestiajettavaan,muttatoisten-
sakanssakeskustelevaan,ohjelmaan.RomexisServer-palvelinohjelmiaonkerrallaan
käynnissäyhdessätyöympäristössätavallisestiyksikappale.Palvelimellaontiedossa
kaikkiympäristöstä löytyväthoitokoneet.Sovereign-hoitokoneillaontiedossapalve-
limen IP-osoite ja ne ilmoittautuvatsillekäynnistyessään lähettämällä viestin. Pal-
velin pyytää hoitokoneelta lisätietoja sen konguraatiosta ja tallentaa ne tietokan-
taansa. Yhteys Compatille muodostetaan hieman eri tavalla. Sen kohdalla yhtey-
Kuva 1: Sovereign-hoitokone. [3℄
Ohjelma on nimeltäänMultiProxy, ja sille on asetettu tiedot kaikkien Compatien
IP-osoitteista. Kutakin Compatia kohden palvelin käynnistää Planlink-prosessin,
joka hoitaa varsinaisen suoran keskusteluyhteyden hoitokoneeseen ja toimii erään-
laisena tulkkina hoitokoneen ja Romexis-ohjelmiston välillä. Kolmas Romexiksen
pääosa on itse asiakasohjelma, Romexis Client. Se on ainoa osa, jolla on yleiselle
käyttäjälle näkyvä graanen käyttöliittymä. Tavallisesti asiakasohjelmia on käyn-
nissä omansa kullekin hoitokoneelle ja niitä pyöritetään hoitokoneiden yhteydessä
olevillaPC-koneilla. Client-ohjelmasaa palvelimeltamuun muassa tiedoteri hoito-
koneista. Client voi ottaa myös oman yhteyden yksittäisiin hoitokoneisiin. Palveli-
mentavoinCompatiinyhdistäessäasiakasohjelmakäynnistäätätävartenPlanLink-
Tässätyössä toteutettiinRomexiksenCliniManagement-moduuliinSovereign-
hammashoitokoneen asetusten hallinta ja replikointi -ominaisuus, jolla Sovereignin
asetuksetvoidaantallentaa Romexis-palvelimelleja asettaamyöhemminsamatase-
tukset yhdelle tai useammalle hoitokoneelle etäyhteyden kautta. Ominaisuus oli
omassamuodossaantoteutettuaiemminPlanmean toisellehoitokoneelle,Compa-
tille.Sen pohjalta Sovereignin vastaavaaominaisuutta lähdettiinkehittämään. Ro-
mexikseenhaluttiinyhtenevätominaisuudetkaikilleerihoitokoneille.Ominaisuuden
vaatimuksia mietittiin paljon, mutta lopulta päädyttiin tekemään ensin ulkoisesti
täysin Compatia vastaava toiminnallisuus,jota voidaan sitten tarvittaessa laajen-
taa taimuuttaa.
Ominaisuuden käytöstä Compatilla ei ole hirveästi tietoa, mutta sillä on sel-
keästi potentiaalista hyötyä. Sitä onmyöstoivottumyyntiosaston puoleltakentältä
saadunpalautteenperusteella.Sovereignonsuhteellisenuusi tuote,eikäsitäolevie-
lämyyty suuria määriä, jotenominaisuudentarjoamat hyödyteivätolevielä olleet
suuressatarpeessa.Suurillaklinikoilla,joillalääkäritkäyttävätuseitaerihoitokonei-
taja kutakinhoitokonettakäyttääuseampilääkäri,onhuomattavaaapuasiitä,että
lääkäri voi aina kullekin työpisteelle tullessaan kirjautua tunnuksillaan Romexik-
seen ja asettaa hoitokoneeseen haluamansa asetukset. Hoidon lopetettuaan lääkäri
voi taas tallentaa halutessaan mahdolliset tekemänsä muutokset, jotka ovat sitten
käytettävissä kaikilla klinikan koneilla. Samantapaista toiminnallisuutta on saatu
aikaan myös Sovereignin ominaisuudella, jolla lääkäri voi tuoda omat asetuksensa
hoitokoneelle USB-muistitikulla ja myös tallentaa sinne tekemänsä muutokset. Tä-
män ominaisuudenkäyttö eikuitenkaan oleniinkätevää,eikä seoleläheskäänyhtä
kattava ja monikäyttöinen.
Toisaaltaominaisuudestavoiollasuurtaapuayliopistoillahammaslääketieteelli-
sissäopetusluokissa,joissaonkymmeniäjos eijopasatojahammashoitokoneitayh-
dessä tilassa.Niissäusein halutaanasettaakaikkienoppilaiden hoitokoneetsamaan
alkutilaan.TyössätoteutetunominaisuudenavullasiitätuleevaivatontamyösSove-
reignille.Opettajantaiteknikoideneitarvitse yksi kerrallaankäydä läpikymmeniä
hoitokoneitaasettaakseen ne kaikki samaantilaan.
Kolmas selkeä käyttökohde ominaisuudelleon asennusten helpottaminen. Tästä
löytyikin omakohtaista kokemusta yrityksen sisällä. Nopeuttaa huomattavasti työ-
tä,joshoitokoneet voidaan kaikkihelpostikerralla asettaaasiakkaan haluamaanti-
laan ennen luovutusta. Vaikka ominaisuudenkäytöstä taisen toivomisesta ei saatu
suoraa palautetta, on sen tuoma hyöty säästetyssä ajassa ja käytön helpottamises-
sa kuitenkin niin selkeä, että ominaisuuden tarpeellisuus on kiistaton. Se on myös
selkeä myyntivaltti yritykselle, jonka kilpailijoilla ei vielä tätä ominaisuuttaa vas-
taavaatoiminnallisuuttataiedes Clini Management-moduuliin tapaistaohjelmaa
oletarjolla.
2 Kirjallisuuskatsaus käytetyistä ja vaihtoehtoisista
teknologioista
2.1 TCP/IP-protokollaperhe
InternetinprotokollaperhettäkutsutaanTCP/IP-protokollaperheeksisenensimmäis-
tenmääriteltyjenjayleisimminkäytettyjenprotokollienmukaan.Näidenlisäksiper-
he sisältää lukuisia muita protokollia,joiden pohjallaitse internetrakentuu. Proto-
kollatryhmitelläänneljälleeri abstraktiotasolle, jotka ovatalimmasta alkaen: link-
kitaso (Link layer), internet-taso (Internet layer), siirtotaso (Transport layer) ja
sovellustaso (Appliation layer). Linkkitasoon kuuluvat teknologiat, jotka liittyvät
verkon yhden pisteen viestintään. Internet-tasolta löytyvät taas yksittäiset verkot
yhdistävät teknologiat. Siirtotaso hoitaa prosessien välisen kommunikaation ja so-
vellustasollaon ohjelmat, jotka hoitavat tukitoimintoja ja ovat yhteydessä käyttä-
jään.[8℄ [9℄ [10℄
2.1.1 Internet Protool
Internet Protool eli IP on internet-tasoon kuuluva pakettien välittämiseen tieto-
verkkojen sisällä ja välilläkäytetty kommunikaatioprotokolla.Se on monella tapaa
internetin tärkein protokolla ollen käytännössä sen pohja ja mahdollistaen sen ko-
ko olemassaolon.IP:navullapaketit kulkevatkohteisiinsapaketteihinmääriteltyjen
IP-osoitteiden mukaan. Yleisinkäytössä oleva IP-versio onneljä.Versioonkuusiol-
laankuitenkinsiirtymässä,koskayksilöllisetIP-osoitteetovatkäytännössäloppuneet
version neljä tavasta määrittääosoiteavaruus. [8℄ [9℄[11℄ [12℄
2.1.2 Transmission Control Protool
TranmissionControlProtool, TCP,onsiirtotasonprotokolla,jokatarjoaamahdol-
lisuudenlähettäädataasovellustenvälillä.Protokollaonluotettava,mikätarkoittaa
sitä, että se sisältää toiminnallisuuksia, jotka pyrkivät estämään viestien katoami-
senmatkalla.Semyöspyrkiikorjaamaanvirheitälähetetyssädatassa.TCP onmyös
yhteydellinen protokolla eli siinä osapuolten välille avataan yhteys, jolloin jokaisen
paketin ei tarvitse sisältää tietoa tarkoitetusta vastaanottajasta ja jokainen viesti
tulee vastaanottajalle samassajärjestyksessä kuin ne lähetettiin. [8℄[9℄ [13℄ [14℄
2.1.3 User Datagram Protool
User Datagram Protool, UDP, on TCP:n tavoin siirtotason protokolla. Myös sen
avullavoidaanlähettääviestejäohjelmienvälillä.UDP eikuitenkaan oleluotettava
protokolla eli siinä ei ole mitään virheenkorjausta tai viestin perillemenon varmis-
tusta. Se on myös yhteydetön protokolla, missä viestit vain lähetetään kukin erik-
seen vastaanottajan osoitteeseen. Sitä voi siis käyttää tarkoituksiin, joissa tällaiset
hienoudet eivät olevälttämättömiätaine hoidetaan sovelluksien toimesta. Hyvänä
puolenasaadaantällöinkevyempi ja nopeampiprotokollasellaistavaativiinkäyttö-
2.2 Terminaalisovellukset
Työssä käytetään terminaalisovellusta nimeltä Telnet. Sen avulla saadaan teksti-
pohjainen yhteys Sovereignin ACCU-kortin Linux-pohjaiseen käyttöjärjestelmään.
Telnet on tietoturvaltaan hyvin puutteellinen. Telnetin onkin korvannut monissa
nykyaikaisissa sovelluksissa usein Seure Shell eli SSH-sovellus. SSH tarjoaa hyvin
suojatunjasalatunkirjautumisen,datasiirronjaterminaaliyhteydenkäyttäjälle.Ko-
mentorivinetäkäytönlisäksisitävoidaankäyttääsalaamaanmuutensuojaamatonta
internet-yhteyttä käyttävän protokollan viestiliikenne.[8℄ [17℄ [18℄ [19℄ [20℄
2.3 Tiedonsiirto
2.3.1 Trivial File Transfer Protool
TrivialFileTransfer ProtooleliTFTPonnimensämukaisestihyvinyksinkertainen
tiedostonsiirtomenetelmä ja tarvitsee vain vähän muistia. Siksi sitä käytetäänkin
yleensä automatisoituihin toimintoihin kuten käynnistystiedoston siirtämiseen ko-
neiden välillä paikallisesti.TFTP käyttää yleensä UDP:tä tiedonsiirtoon, mutta se
voidaan toteuttaa käyttäen myös jotain muuta siirtoprotokollaa. Protokolla toimii
siten,että lähettäjälähettäädataa vakiosuuruisissaerissä, ja vastaanottaja kuittaa
kunkinpaketin saapuneeksi. Tarvittaessasamapaketti lähetetään uudestaan.Myös
kuittaus voidaan lähettääuudestaan, jos seuraavaapakettia ei kuuulu.
TFTPonhyvinriisuttuverrattunaesimerkiksiFTP:hen(FileTransferProtool).
Sillävoi lähinnävain siirtäätiedostoja.Siinä ei esimerkiksiole mahdollisuuttasuo-
jata yhteyttä kirjautumisella tai kysellä saatavilla olevia tiedostoja. Ensimmäisen
ominaisuudentakiasitäkäytetäänlähinnäpaikallisverkoissa.Myöshoitokoneitakäy-
tetään tavallisesti paikallisverkoissa, joten TFTP olisi sinänsä ollut riittävä tämän
työn käyttöön. TFTP-yhteys oli myös jo valmiiksi osittain toteutettu Sovereignin
ja Romexiksen välille. Toki mahdottomuus suojata yhteyttä millään tavalla, olisi
heikentänyt hoitokoneentietoturvaa. [8℄ [21℄ [22℄
2.3.2 File Transfer Protool
File Transfer ProtooleliFTP on TFTP:n tavoinosa TCP/IP-Internet-protokolla-
perhettä.SeonhuomattavastiTFTP:tämonipuolisempi.Setoimiiselkeästiasiakasohjelma-
palvelin-arkkitehtuurimallinmukaisesti.FTPontoteutettutoimimaanTCP:npääl-
lä. Siinä onmuun muassa toteutettu käyttäjätunnusten ja salasanojen vaatiminen.
AlkuperäisessämuodossaanFTPkäyttääkahtayhtäaikaistaTCP-yhteyttä.Toisella
liikkuu varsinainen data ja toisella hoidetaan yhteyden ohjaus. Sama ohjausyhteys
säilyy koko session ajan ja sen katketessa koko sessio päättyy. Sen sijaan datayh-
teyksiä luodaan aina uusi kullekin datansiirrolle. FTP:stä on kuitenkin olemassa
uudempia versioita, joissakäytetään HTTP:n tavoinvain yhtä yhteyttä.
FTP:npuutteena onedelleen se, että seeiollamillääntavallasalattu.Ulkopuo-
lisella, jolla on pääsy FTP-palvelimen ja asiakasohjelman väliseen viestintään, on
mahdollisuus saada tietoonsa selkokielisenä muun muassa käytetty käyttäjätunnus
te. FTPS eliFTPSeure yhdistääFTP:hen TLS:n ja SSL:n,jolloinkoko yhteyson
salattu, eikä kirjautumistietoja tai siirretyn datan sisältöä pysty ulkopuoliset saa-
maanselville.ToinenvaihtoehtoonnimeltäänFTPoverSSH.Siinänimensämukai-
sesti FTP-yhteydet putkitetaanSSH-yhteyden kautta.Ongelmaksitässä lähestymi-
sessä muodostuu helposti se, että FTP käyttää useampia yhteyksiä. Ohjausyhteys
salataan, mutta avatessa uusi datayhteys SSH-asiakasohjelma ei ymmärrä salata
myös sitä. Siksi onkin käytettävä SSH-asiakasohjelmia, joissa tähän ongelmaan on
kiinnitetty erityistähuomiota.[8℄[9℄ [23℄ [24℄ [25℄ [26℄[27℄[28℄
2.3.3 Seure Copy ja SSH File Transfer Protool
Seure Copy eli SCP on SSH:ta käyttävä tiedostonsiirtoprotokolla. SSH:tä käyte-
täänkirjautumiseen ja yhteyden salaamiseen.SCP onsiissuojattuprotokolla.SCP
toimiiTCP:n kautta. SCP on sinänsä melko riisuttu teknologia sen mahdollistaes-
sa ainoastaan tiedostojen siirron. Sitä ei ole määritelty missään RFC:ssä. SSH Fi-
le Transfer Protool eli SFTP sen sijaan sisältää FTP:n tavoin hieman enemmän
ominaisuuksia. SFTP mahdollistaa tiedostojen siirtämisen lisäksi niiden käytön ja
hallinnan yhteyden yli. Useimmiten myös sitä käytetään SSH:n kautta, mutta sitä
voidaan periaatteessa käyttää missä tahansa suojatussa yhteydessä kuten TLS- tai
VPN-yhteydessä. Se olettaa, että käytetyn teknologian yhteys on salattu ja se on
jo hoitanut käyttäjän autentikoinnin. SFTP vaatii pohjalleen luotettavan datavir-
ran.VaikkaSFTPmuistuttaakinFTP:täominaisuuksiltaan,seeiolesamaasiakuin
SSH:n yli käytetty FTP, vaan aivan oma protokollansa. [29℄ [30℄
2.3.4 Network File System
Vieläyksi tiedostonsiirtomenetelmä,jokaolisi ollut mahdollisesti sopivatyön käyt-
tötarkoitukseen on nimeltäänNetwork File System eli NFS. Se ei varsinaisesti ole
tiedonsiirtomenetelmävaan jaettu tiedostojärjestelmä.Sen avullafyysisesti toisella
koneellaolevadata voidaan saada osaksitoisen koneen tiedostojärjestelmää.Ulkoi-
sesti käyttäjälle siis näyttää, että kaikki data sijaitsee samalla koneella. Näin ase-
tustiedot olisi voitu jakaa suoraan Romexis-palvelimelta Sovereignin käyttöön, ja
Sovereign olisi voinut tallentaa asetuksensa suoraanpalvelimelle. Tälläteknologial-
la, kuten mahdollisesti muillakin vaihtoehtoisilla teknologioilla, ongelmiksi toteu-
tuksessa olisivat saattaneet muodostua Javan tuki kyseiselle teknologialle tai mah-
dollisestitarvittavienkirjastojenlöytäminensekäniidenalustariippuvuus.Romexis-
ta voidaan käyttää useammissa erikäyttöjärjestelmissä, mutta NFS on yleisimmin
käytössä vain Linux-pohjaisissa käyttöjärjestelmissä. Toki vastaavanlaisia jaettuja
tiedostojärjestelmiä onmuitakin.[8℄ [31℄ [32℄
2.4 Hypertext Transport Protool
Hypertext Transport Protool eli HTTP on protokolla, johon World Wide Web
perustuu. Sitä käyttäen web-palvelimet (server) ja web-selaimet tai muut asiakas-
ohjelmat (lient) keskustelevat keskenään. HTTP-protokolla perustuu pyyntöihin
Kuva2: Esimerkit työssä käytetyistäURL-osoitteista.
http://192.168.1.100/gi-bi n/do wnlo ad_u ser. gi
http://192.168.1.100/gi-bi n/do wnlo ad_ onfi g.g i
http://192.168.1.100/gi-bi n/up load _use r.g i
http://192.168.1.100/gi-bi n/up load _on fig. gi
web-selain,jokapyytäävaikkakäyttäjänsävalitsemaaverkkosivua,kuvaataimuuta
resurssia.SelainkertoopyynnössäURL-osoitteen(UniformResoureLoator)avulla
haluamansa resurssin. Palvelinlähettää sitten pyynnön mukaisen vastauksen. Ylei-
simminHTTP:täkäytetäänsiisweb-sivujensiirtämiseen,muttasitävoidaankäyttää
myös muihin tarkoituksiin, kuten esimerkiksi tämän työn tavoin tiedostojen siirtä-
miseen.
URLkoostuuuseastaosasta,joistakukinvoidaankerrallaanjättääpoistietyissä
tilanteissa.Kuvassa2onesitettyesimerkitURL:listätässätyössätehtyihinjakäytet-
tyihin CGI-skripteihin. URL:liä käytetään internetissä moniin tarkoituksiin. Tästä
syystä URL:n alussa kerrotaan käytetty protokolla.Tämän työn tapauksessa URL
alkaa siis kirjaimilla http. Jos käytettäisiin salattua HTTP-protokollaa, alku olisi
https.Tämänjälkeentuleehalutunpalvelimenosoite.Yleensä HTTP:ntapaukses-
sa käytetään palvelimen domain-osoitetta IP-osoitteen sijaan, koska domain-osoite
pysyy muuttumattomanavaikkakoneenIP-osoite muuttuisikinesimerkiksifyysisen
palvelimenvaihtuessa.Tässä työssä hoitokoneellaeioleomaa domainia,vaan siihen
viitataan suoraanRomexiksen tiedossa olevalla IP-osoitteella.Palvelimenosoitteen
jälkeen voidaan antaa kaksoispisteen jälkeenkäytettäväksihaluttu palvelimenport-
ti. Jos porttia ei ole määritetty käytetään protokollan mukaista oletusporttia, joka
HTTP:ntapauksessa on80.SeuraavanaURL:ssä onpolkuhaluttuun resurssiinpal-
velimella.Polkuonvirtuaalinen,eliseeivälttämättävastaaresurssinsijaintiapalve-
limen todellisessahakemistorakenteessa. Sen sijaanpalvelimenasetuksissa on mää-
ritetty, mihin todelliseen kansioon kukin URL-polku, jos mihinkään, viittaa. Usein
ontapana,kutentässäkintapauksessa,ettäCGI-skriptitsijoitetaankansioon,johon
viitataan URL:ssä nimellä gi-bin tai gi, ja palvelin asetetaan hakemaan skrip-
tiäoikeastakansiosta.Palvelintällöinmyösymmärtääajaa skriptinsen sijaan,että
palauttaisivainsen sisällön.Muita URL:n osiaei tässä työssä käytetä. [33℄ [34℄ [8℄
HTTP-pyynnöt javastauksetovatrakenteeltaanhyvin samankaltaisia.Nekoos-
tuvatotsikko-osasta (header) ja, tarvittaessa, varsinaisestarungosta (body). Pyyn-
nön otsikko-osa sisältääensimmäisellärivillä(requestline) pyynnön tyypin,valitun
resurssin URL-osoitteen ja käytetyn protokollantyypinja version. Muut rivitsisäl-
tävätlisätietoja pyynnöstä, esimerkiksikäyttäjäntodennustiedotja rungonsisällön
tyypin ja koon. Vastaus alkaa tilarivillä (status line), joka kertoo jälleen käytetyn
protokollanja sen version,kolminumeroisen tilakoodin,jokakertoo kertoo pyynnön
onnistumisestataimahdollisistavirheistätaierikoistilanteista,sekäkyseisen koodin
merkityksen tekstimuodossa. Tilarivin jälkeen myös vastaus sisältää rivejä, jotka
Kuva3: Esimerkkityössä käytetystä GET-tyyppisestä HTTP-pyynnöstä.
GET /gi-bin/download_onfig.g i HTTP/1.1
Authorization: Basi G1zb3ZlmVpZ246292ZXJlaW duG 0=
Host: 192.168.1.100
Connetion: Keep-Alive
User-Agent: Apahe-HttpClient/4.2.1 (java 1.5)
[\r℄[\n℄
Kuva 4:Esimerkkityössä käytetystä POST-tyyppisestä HTTP-pyynnöstä.
POST /gi-bin/upload_onfig.gi HTTP/1.1
Authorization: Basi G1zb3ZlmVpZ246292ZXJlaW duG 0=
Content-Length: 28864
Content-Type: multipart/form-data;
boundary=3pZTf_KePS4LlFCkCA GoXF OhpY -4F6
Host: 192.168.1.100
Connetion: Keep-Alive
User-Agent: Apahe-HttpClient/4.2.1 (java 1.5)
--3pZTf_KePS4LlFCkCAGoXFOhp Y-4F 6
Content-Disposition: form-data;
>> name="userfile";
>> filename="unitonf.tar"
Content-Type: appliation/otet-stream
[\r℄[\n℄
Tiedoston sisältö
[\r℄[\n℄
--3pZTf_KePS4LlFCkCAGoXFOhp Y-4F 6--
namahdollisestiviestin runko.Pyynnöillätämävoisisältääesimerkiksipalvelimelle
lähetettäviä lomaketietoja tai lähetettäväntiedoston. Vastauksen rungossa taas on
sitten yleensä pyydetty resurssi, joka on tavallisimmin web-sivun sisältö HTML-
muodossa. Tässä työssä vastaus sisältää osassa tapauksista pyydetyt asetustiedos-
tot.
HTTP-pyyntöjäonsiiserityyppisiä.TässätyössätarvitaanvainGET-jaPOST-
tyyppisiä pyyntöjä. Näistä on esimerkit kuvissa 3 ja 4. GET-pyynnöllä pyydetään
palvelimeltajotakin resurssiaesimerkiksi web-sivun sisältöä HTML-muodossa(Hy-
pertext Markup Language). POST-pyynnöllä taas pyydetään palvelinta muokkaa-
maan palvelimella olevaa tietoa tai tekemään jotain pyynnön mukana lähetetylle
datalle.Eripyyntötyyppejä onlistattunataulukossa 1.Kutenkuvien3 ja 4esimer-
keistä nähdään pakollisen ensimmäisen rivin jälkeen otsikossa on riveittäin avain-
Taulukko 1:HTTP-pyyntötyyppejä. [34℄
Tyyppi Kuvaus
GET Pyytääpalvelimelta annettuaresurssia
HEAD Käytetään kutenGET-pyyntöä, mutta palvelin palauttaa vain otsikkorivit il-
mansisältöä
POST Pyytäämuuttamaanpalvelimellaolevaatietoa
PUT Pyytääpalvelintaluomaantaimuuttamaan palvelimellaolevaaresurssia
DELETE Pyytääpalvelintapoistamaanpalvelimellaolevanresurssin
CONNECT KäytetäänsallimaansuojattujenSSL-yhteyksienvälittäminenHTTP-yhteyden
kautta
OPTIONS Pyytääpalvelintalistaamaanmahdollisetpyyntötyypitannetulleresurssille
TRACE Pyytääpalvelintatoistamaansaamansapyynnönotsikkorivit
Taulukko 2: HTTP-pyyntöjen yleisimpiä ja tässä työssä tärkeimpiä otsikkokent-
tiä.[34℄
Otsikko Kuvaus
Host KertoopalvelimennimentaiIP-osoitteen
Content-Length Kertoopyynnönsisällönkoonkahdeksanbitintavuissa
Content-Type Kertoopyynnönsisällöntyypin
Authorization Kertooautentikoinnintyypinjakäyttäjänkäyttäjänimenjasala-
sanansalattuna
User-Agent Kertookäytetynasiakasohjelmannimen,versionjaalustan
Content-Disposition Käytetään esimerkiksi lähetettäessä lomaketietoja POST-
pyynnölläkertomaankenttiennimet ja mahdollisenlähetettävän
tiedostonnimi
2 on esitelty yleisimpien ja tämän työn kannalta tärkeimpien otsikkorivien merki-
tyksiä.
Kuvan3esimerkkionhyvinyksinkertainen.Siinäpyydetäändownload_onfig.gi-
skriptiä palvelimelta, jonka IP-osoite on192.168.1.100. Palvelin tunnistaa, että ky-
seessäon skriptija ajaasen skriptin sisällönpalauttamisensijaan.Authorization-
kentässä kerrotaan tunnistautumisentavaksiBasija lähetetäänkäyttäjätunnus ja
salasanasalattuina. Tämä kenttä lähetetään yleensä vasta, kun palvelinonvastan-
nut tilakoodilla 401, joka ilmoittaa, että kirjautuminen on tarpeen. Tässä työssä
kenttä lähetetään kuitenkin välittömästi pakotettuna ensimmäisen pyynnön muka-
na, koska tuntemattomasta syystäyhteyttä ei muuten saatumuodostettua.
Kuvan4esimerkissätaas onPOST-tyyppinenpyyntö,jollalähetetäänasetustie-
dostohoitokoneelle.PyynnönContent-Type-kentässä kerrotaan,ettäsisällöntyyppi
onmultipart/form-data,jokatarkoittaamoniosaistaesimerkiksiHTML-lomakkei-
denlähettämäädataa.KukinosaonerotettutoisistaanBoundary-merkkisarjalla.Li-
säksijokaisenosansisältöonkuvattavasitäennenvähintäänContent-Type-kentällä.
Esimerkintapauksessa appliation/otet-stream tarkoittaa osan sisällönolevan
geneeristä bittivirtaailman tarkempaa määrittelyä.Se luonnollisestimuodostaalä-
hetettävän tiedoston sisällön. Content-Disposition-kentällä kerrotaan lisätieto-
Kuva5: Esimerkkityössä saadusta HTTP-vastauksesta GET-pyyntöön.
HTTP/1.1 200 OK
Date: Wed, 23 Ot 2013 14:10:01 GMT
Server: Apahe/2.2.17 (Unix)
Last-Modified: Tue, 30 Ot 2012 14:31:14 GMT
ETag: "29981d-7000-4d47a35d108 0"
Aept-Ranges: bytes
Content-Length: 28672
Keep-Alive: timeout=15, max=100
Connetion: Keep-Alive
Content-disposition: attahment;
>> filename="unitonf-sovereign _3-2 012- 10-3 0_14 3114 -502 8.ta r"
Content-type: appliation/x-tar
[\r℄[\n℄
Tiedoston sisältö
Kuva6: Esimerkkityössä saadusta HTTP-vastauksesta POST-pyyntöön.
HTTP/1.1 200 OK
Date: Thu, 24 Ot 2013 14:42:54 GMT
Server: Apahe/2.2.17 (Unix)
Vary: Aept-Enoding
Content-Length: 30097
Keep-Alive: timeout=15, max=100
Connetion: Keep-Alive
Content-Type: text/html
[\r℄[\n℄
<html>
Sivun ja mahdollisen tiedoston sisältö
</html>
Filename-parametrin ollessa läsnä tiedetään kyseessä olevan tiedosto. Parametrin
arvo on tiedostolle ehdotettu oletustiedostonimi. Esimerkissä runko sisältää vain
yhden osan. Rungon koononvastattava Content-Length-kentän arvoa tavuina.
Kuvissa 5 ja 6 on esimerkit työssä mahdollisesti saatavista HTTP-vastauksista.
Monet vastauksen otsikko-osan kentistä on samoja kuin pyynnöillä. Taulukossa 3
on esitelty lisänä joitain erityisesti HTTP-vastauksissa esiintyviä kenttiä. WWW-Au-
thentiate-kenttää käytetääntilakoodin401 kanssakertomaanlisätietojahalutus-
ta autorisoinnista. Tässä työssä sitä ei siis tarvita, koska, kuten sanottua, autori-
sointitiedotlähetetään aina automaattisestiilman palvelimenpyyntöä.
Taulukko 3: HTTP-vastausten yleisimpiä ja tässä työssä tärkeimpiä otsikkokent-
tiä.[34℄
Otsikko Kuvaus
Date Kertoovastauksenlähettämisenpäivämääränjakellonajan
Last-Modied Kertoo,milloinpyydettyresurssionviimeksimuuttunut
Server Kertoopalvelimenohjelman,senversionjakäytetynalustan
ETag Kertoopyydetynresurssinyksilöiväntunnuksen
WWW-Authentiate Kertoo asiakasohjelmallelisätietoja palvelimen vaatimasta käyt-
täjäntodennuksestayhdessätilakoodin401kanssa
sentapauksessa 200.Näintämänkintyöntapauksessa. Vastauskoodi200 tarkoittaa,
ettävastauspyyntöönononnistunutjasisältääjonkinlaisenrunko-osan.Tätäkäyte-
täänlähinnäGET-jaPOST-tyyppistenpyyntöjenvastauksissa.Erilaisiavastauksen
tilakoodeja on lukuisia. Tilakoodit ovat aina kolminumeroisia ja ne voidaan jakaa
ensimmäisennumeronmukaan viiteen ryhmään.Numerollayksi alkavat ovat alem-
mantason tilakoodejajavastaussaattaanäissätapaukissa sisältääpelkäntilarivin.
Numerollakaksialkavatovatkaikkierilaisiaonnistuneeseenpyynnöntoteuttamiseen
viittaavia vastauksia. Kolmialkuiset koodit viittaavat siihen, että asiakasohjelman
ontehtäväuusi pyyntöjohtuenesimerkiksi resurssin siirtymisestätoiseen paikkaan.
Neljäalkuinen koodi on merkki virheestä asiakasohjelman päässä. Lopulta vitosella
alkavatilakertoovirheestä palvelimella.
Kuvan5GET-pyynnönvastauksessaonrunkonahoitokoneenasetustiedostotpa-
kattuna tar-tiedostoon. Content-Disposition-kentäss ä kerrotaan, että sisältö on
attahment-tyyppiä. Selaimessa tämä aiheuttaa yleensä sen, että se ehdottaa ole-
tuksena tiedoston tallentamista eikä yritä avata sitä selaimen ikkunaan. Oletus-
tiedostonimen selain saa samaisen kentän filename-parametrista. Content-Type-
kertoo tiedoston olevan tyypiltään appliation/x-tar. Tämä tarkoittaa, että ky-
seessä on tar-tyyppinen tiedosto, minkä voi toki nähdä myös tiedostopäätteestä.
Content-Type-kentän arvoksivoiperiaatteessaasettaamitätahansa, muttaonkui-
tenkin määritelty lista yleisesti hyväksyttyjä tunnuksia eri tiedostotyypeille. Näi-
tä kutsutaan Internet Media Typeiksi. Ne kehitettiin alunperin kuvaamaan säh-
köpostien liitetiedostojen tyyppejä kehitettäessä nykyisin yleisesti käytössä olevaa,
SMTP:tä (Simple Mail Transfer Protool) käyttävää,ei-tekstimuotoisetliitetiedos-
tot mahdollistavaa sähköpostistandardia eli MIME:ä (Multipurpose Internet Mail
Extensions). Nykyisin tyyppejä käytetään muissakin yhteyksissä kuten HTTP-otsi-
koissa. [35℄ [36℄
Kuvan 6 POST-pyynnön vastauksessa taas palautetaan HTML-muotoista teks-
tiä. Tätä saatetaan tulevaisuudessa tarvita kehitettäessä hoitokoneen web-käyttö-
liittymääeteenpäin. Yhdessä kohdassa HTML-sivua näytetään lähetetyn tiedoston
sisältötekstimuodossa.Jostiedostoaeiolelähetetty,vastaus-HTMLsisältäälomak-
keen, jonkaavullatiedoston voi lähettää.Tulevaisuuteen varautumisen lisäksitämä
auttoi ominaisuudentestaamisessakehitysvaiheessa. [34℄ [8℄[9℄ [37℄ [38℄
2.5 TLS, SSL ja IPse
SeureSokets Layer,SSL,onitseasiassaTransportLayerSeurityn,TLS,edeltäjä,
mutta niistäkäytetään useinyhteisnimitystäSSL/TLS. TLS(ja sitäennenSSL) on
salausprotokolla,jonkatarkoitusontuodatietoturvaainternetinyhteyksiin,jottasi-
täeivoida salakuunnella.Nimensämukaisestisitäkäytetääninternetin siirtotasolla.
Sillävoidaan salataesimerkiksi HTTP-protokollan viestiliikenne.Tällaisestayhtey-
destä käytetään nimitystäHTTP Seureeli HTTPS. TLS:äävoidaankäyttäämyös
lukuistenmuidenprotokollienpohjallavarmistamaantietoturvallisuus.InternetPro-
tool Seurity eli IPse TLS:stä poiketen toimiisitä alemmalla eli internet-tasolla.
Se salaa internetin IP-protokollan viestinnän. [8℄ [9℄ [39℄ [40℄ [41℄
2.6 Common Gateway Interfae
WorldWibeWebinalkuaikoinasuuriosasensisällöstäolistaattistaeliseeimuuttu-
nutpyynnöstä toiseen.Tämäsaattoi tarkoittaavaikkapa HTML:ää sisältävääteks-
titiedostoa,jokaolisiisvalmiiksiolemassajajokapalautettiinsellaisenaan.Nopeasti
tulikuitenkin tarpeelliseksi dynaamisen sisällön luominen. Sisältöäpiti pystyä luo-
maanreaaliaikaisesti.EsimerkiksikäyttäjänsyötteisiinkutenHTTP-pyynnönmuka-
nalähetettyihintäytetynlomakkeentietoihinpitipystyäreagoimaan.Myösmahdol-
listasivullaolevaatietoaolipystyttäväpäivittämään jokaisellalatauksellavaikkapa
tietokannasta.
Yksi ensimmäisistä tavoista tuottaa Webiin dynaamisesti sisältöä oli Common
Gateway InterfaeeliCGI.CGI:lle ontullut lukuisiakilpaileviateknologioita, jotka
ratkaisevat dynaamisen sisällön ongelman kukin omalla tavallaan, mutta ne eivät
ole kuitenkaan täysin korvanneet CGI:tä sen ollessa vielä yleisesti käytössä. Näitä
muita teknologioitaselvitetäänlyhyesti luvussa 2.6.1.
CGI ei ole ohjelmointikieli vaan nimensä mukaisesti rajapinta. Se on rajapinta
web-palvelimenjasen ajamanCGI-skriptinvälillä.Skriptinvoisiistoteuttaalukui-
sillaerikielillä.YksiyleisimminkäytössäolevistaonPerl-kieli.Perl-kielelläonmonia
hyviäpuolia. Sitäeimuun muassatarvitse kääntää,vaankooditulkitaan ajonaikai-
sesti. Tässä työssä käytetään C++-kieltä. Rajapinnan käsittelyä helpottamaan on
monille kielille tehty CGI-kirjastoja. Perlille on olemassa ainakin CGI.pm-kirjasto
ja tässä työssä käytetään C++:nCGICC-kirjastoa.
Yleisinweb-palvelinon tässäkin työssä käytetty Apahe, mutta myösuseimmat
muutweb-palvelimettukevatCGI:tävalmiiksi.JottaCGI-skriptejävoidaankäyttää,
ontätävartenkuitenkinasetettavaoikeintiettyjä asioitaweb-palvelimenasetuksis-
ta. Kun palvelin saa HTTP-pyynnön (yleensä tyypiltään GET) jotakin resurssia
varten, on palvelimen osattava päätellä, tuleeko resurssin sisältö palauttaa vai, ku-
ten CGI:n tapauksessa, ajaa haluttu skripti. Palvelimen asetuksiin on säädettävä,
mitkä tiedostot ovat ajettavia. Yleensä asetetaan, että CGI-tiedostot ovat esimer-
kiksi /gi- tai /gi-bin-kansiossa olevat tiedostot. Lisäksi voidaan ohjata ajetta-
vaksi kaikki tiedostot, joiden tiedostopääte on .gi. Näiden asetusten tekeminen on
tietenkinerilaista eripalvelimilla, eikäsitätässä käydä läpi.
antaa sille tietoja vakiosyötteen (standard input, STDIN) ja ympäristömuuttujien
kautta. Skriptilläonsiten käytössäänmonen muun asianlisäksi muunmuassa koko
saadun HTTP-pyynnön sisältö vaikkapa lomaketietoineen. Skripti tulostaa vakiou-
lostuloon (standard output, STDOUT) rivit, jotka se haluaa palvelimen palautta-
van asiakasohjelmalle. Tämä on usein HTML-koodia. Skripti voi myös ennen sitä
määritellä HTTP-otsikkokenttiä. Palvelin saattaa vielä lisätä omia otsikkorivejään
vastaukseen ennensen palauttamista.[34℄
2.6.1 Vaihtoehtoja CGI:lle
CGI:lle on kehitetty lukuisia vaihtoehtoja, jotka yrittävät ratkaista saman ongel-
man eri tavoin. Monet niistä pyrkii välttämään uuden prosessin luomisen dynaa-
mista sisältöä luodessa, mikä on yksi CGI:n heikkouksista. Ative Server Pages eli
ASP mahdollistaa koodin kirjoittamisenHTML-tiedoston sisälle. Kielivaihtoehtoja
on useita, mutta yleisin käytetty on VisualBasi. PHP taas on itsessään oma kie-
lensä,jotapalvelintulkitseejasuorittaa. SitäkinvoidaankirjoittaaHTML:nsekaan
taiomiin tiedostoihinsa.Sitä käytetään Apahen web-palvelimenkanssa.
Java servletit on teknologia, joka muistuttaa CGI:tä siinä on erillisiä skriptejä,
jotkaluovatdokumentteja.KielenäkäytetäänainaJavaajarajapintaeroaaselkeästi
CGI:stä.JavaServerPages eliJSPkäyttäämyösJavaa,muttasiinäkoodiakirjoite-
taan ASP:n tavoin HTML:n sekaan. FastCGI ja mod_perltaas ovat teknologioita,
jotkakäyttävätCGI-rajapintaa,muttaniissäkäytetäänpelkästäänPerl-kieltä.Niissä
tavallisen CGI:n uusienprosessien luomisesta johtuva hitaus onvältetty ensimmäi-
sessä pitämällä Perl-prosessia koko ajan käynnissä palvelimen rinnalla ja toisessa
integroimalla Perl-tulkki suoraan palvelimeen. Myös JavaSript-kieltä voidaan pi-
tää ainakin osassa käyttötarkoituksista CGI:n korvaajana. Siinä lähestymistapa on
kuitenkin toinen,silläkoodisuoritetaan vasta selaimenpäässä.[34℄
2.6.2 GNU CGICC -kirjasto
CGICC on ANSI-yhteensopivalle C++-kielelle toteutettu kirjasto, joka helpottaa
CGI-rajapinnan käyttöäja CGI-ohjelmien tekoa. Sen avulla voidaan muun muassa
käsitellä helpostiHTTP-POST- ja GET-pyyntöjensisältämiä lomaketietoja.Se tu-
kee myös tiedostojen lähettämistä HTTP:n kautta.Kirjasto sisältäärunsaasti apu-
luokkia ja metodeja, joiden avulla voidaan esimerkiksi tuottaa kätevästi HTML-
dokumenttejajaHTTP-vastauksenmuitaosia.CGICConmyösyhteensopivaFastC-
GI:nkanssa. [42℄
2.7 Muita käytettyjä kirjastoja
2.7.1 Java Remote Method Invoation
Java Remote Method Invoation eli Java RMI on kirjasto ja ohjelmointirajapinta,
jonka avulla Java-ohjelmat voivat kutsua metodeja ja käyttää olioita, jotka sijait-
sevat toisessa Javan virtuaalikoneessa mahdollisesti toisella tietokoneella. Tyypilli-
RMI-rajapinnatja ne toteuttavatoliot, joitavoidaan sitten käyttää rajapinnan yli.
RMI-nimirekisteriin on tallennettava RMI-oliot, jolloin asiakasohjelma voi hakea
viittauksen haluamaansa olioon rekisteristä. Asiakasohjelma voi saada viittauksen
etäolioonmyös metodin argumenttientai palautusarvonkautta. [43℄
3 Ominaisuuden lähtökohdat ja suunnittelu
3.1 Ominaisuus Planmea Compat -hoitokoneella
TämäntyönominaisuudentoteutuksenlähtökohtanaolisiisPlanmeantoisellehoi-
tokonetyypille, Compatille, toteutettu vastaava ominaisuus. Compatilla sen ase-
tukset on tallennettuna bitteinä suoraan muistiin tekstimuotoisten tiedostojen si-
jaan. Compat lähettää Romexikselle muiden tietojen mukana asetuksensa jatku-
vasti tasaisin väliajoin. Asetusbitit tallennetaan muuttujaan, jonka sisältö tallen-
netaan kantaan käyttäjän niin halutessa. Asetusten tallennukseen käytetään kahta
eritietokantataulua.Päätauluuntallentuu yksiriviperhaettuasetus.Käyttäjäkoh-
taiset ja konekohtaiset asetukset tallentuvat erilleen. Aputauluun tallennetaan sit-
ten useampia arvoja kustakin tallennetustaasetuksesta. Tallennettavia asioitaovat
viite samaan aikaan tallennettuun toiseen asetukseen, eli viite käyttäjäkohtaisista
asetuksista konekohtaisiin, asetukset tallentanut Romexis-käyttäjä, tieto asetusten
globaaliudesta,tallennusnimijaitseasetusbitit,jotkaoneroteltuuseammalleriville,
koska yhden rivindatakentän maksimikokoon2000 merkkiä. Bitit onsiiskoodattu
tekstiksikymmenkantaisena.
Vastaavasti asetuksia Compatille lähetettäessä lähetetään asetusbitit tietyssä
järjestyksessä pienemmissä erissä Compatin viestiliikenneprotokollan mukaisesti
muun viestiliikenteen seassa tietyissä paikoissa viestikehystä. Compat sitten kir-
joittaabitit muistiinsa oikealle alueelle.Compatilla kokemusta ominaisuuden käy-
töstä on lähinnä koneiden asennuksen yhteydestä, jolloin koneet on voitu helposti
asettaa samaan alkutilaan asennuksen päätteeksi. Yleinen mielipide on kuitenkin
selkeästi sellainen,että ominaisuudellaolisipaljonenemmänkinpotentiaalia,jasitä
pidetään hyödyllisenä lisänä ja hyvänä kilpailuvalttinakilpailijoihinnähden.
3.2 Sovereignin web-käyttöliittymä
Sovereignilleontehtyselaimellakäytettäväkäyttöliittymä,jollavoitehdämuutoksia
hoitokoneenyleisempiinkonekohtaisiinasetuksiin,huoltoasetuksiin,moottorinajoa-
setuksiinja joihinkininstrumenttiasetuksiin.Kuvissa 7ja 8näkyy lomakkeet, joilla
voidaanmuuttaayleisiäkonekohtaisiaasetuksiajainstrumenttiasetuksia.Sivutluo-
daanSovereigninHTTP-palvelimellaPerl-kielelläkirjoitetuillaCGI-skripteillä.Kun
lomakkeillatehdäänmuutoksiaasetuksiin,CGI-skriptitkäsittelevätmuutoksetjate-
kevätvastaavat muutokset oikeisiin tiedostoihin.Asetustiedostojen siirtoonkäytet-
tävätskriptit tehtiinmyösCGI-rajapintaa hyödyntäen, jottane voitaisiinmyöhem-
min helposti integroida olemassaolevaan hallintajärjestelmään. Selaimella voidaan
jo oikealla URL:llä hakea asetukset ja saada näkyviin lomake, jolla lähettää hoito-
koneelletiedostoja. Tiedostoja eikuitenkaan vielä käsitellä mitenkään. CGI-skripti
pitäisi muokata keskustelemaan Sovereignin pääohjelman kanssa ja ilmoittamaan
saapuneista asetustiedostoista. Myös käyttöliittymän pääsivulle pitäisi lisätä linkit
näihin CGI-skripteihin.
Kuva 7:Sovereigninweb-käyttöliittymän konekohtaisten asetusten muokkaussivu.
3.3 Sovereignin ACCU-kortin arkkitehtuuri ja sisäinen vies-
tintä
Sovereigninpääkortti onnimeltäänACCU. Silläpyöriisiis Sovereignin C++-ja C-
kielillä toteutettu pääohjelmisto sekä myöskin työssä hyödynnetty HTTP-palvelin.
Se on ainoa Sovereignin piirikorteista, joilla on tämän työn kannalta merkitystä.
ACCU:n ohjelmistopyöriiuseassaerillisessäitsenäisessäprosessissa, jotkakeskuste-
levattoistensakanssa käyttäen yhteistäkirjastoa. Kullekinprosessilleonmääritetty
omaviestirajapintansa.TärkeinprosesseistaonnimeltäänOperator,jokatoimiimui-
den prosessien välissä ja jolla on myös useita aliprosesseja. ACCU:n prosessit ovat
yhteydessä myös hoitokoneenmuiden laitteidenohjelmistoihinCAN-väylänkautta.
TärkeinACCU:nprosesseistatämäntyönkannaltaonkuitenkinnimeltäänPlanlink.
Se on hyvin itsenäinen prosessi, joka on kyllä yhteydessä Operatoriin, mutta hoi-
taa yksin keskustelun Romexiksen kanssa. Se pystyy hallitsemaan samanaikaisesti
kymmenen yhteyttä eri Romexiksenosiin jasäikeisiin. [44℄ [45℄ [46℄ [47℄
3.4 Romexis-arkkitehtuuri
Romexis-ohjelmisto koostuu siis käytännössä kolmesta osasta. Ne ovat Romexis-
Kuva 8:Sovereigninweb-käyttöliittymän instrumenttiasetusten muokkaussivu.
MultiProxy-nimellä,josniitä onkäynnissäuseita samassaprosessissa. Ohjelmistoja
voidaankäyttää erilaisissa kokoonpanoissa, joita onesitelty kuvissa 9 ja 10. Kuvis-
sahoitokoneenaonCompat, jotensiinäonmukanaPlanlink-ohjelmat, joistaomat
prosessinsaonpalvelimellajaasiakasohjelmalla.AsiakasohjelmankäyttämäPlanlink
voi, kuten kuvistanäkyy, toimiaeri koneellakuinitse asiakasaohjelma.Sovereignin
kanssa Planlinkiäeikäytetä, vaan hoitokoneeseenotetaansuoraanyhteydet palveli-
meltataiasiakasohjlemsta.Tällöinkinasiakasohjelmajapalvelintoimivatfyysisesti
erikoneilla,mikä eikuitenkaan olevälttämätöntä.
Romexis-ohjelmisto on toteutettu Java-kielellä käyttäen hyväksi sen natiiveja
käyttöliittymäkirjastoja, Swingiä ja AWT:tä. Erilaiset painallukset ja muut vuo-
rovaikutukset käyttöliittymänkanssa välittyväteteenpäin ohjelmassa tapahtumina,
jotka sitten ohjelma käsittelee. Tämän kyön kannalta oleellisimman Romexiksen
osan eli asiakasohjelman Clini Management -moduulin luokkarakennetta on ha-
vainnollistettu kuvassa 11. Tämän työn toiminnallisuus on sijoitettu RoomPanel ja
MonitoringPanel välilehdille. Yhteyttä palvelimelle on myös pidettävä, koska sen
yhteydessä sijaitsee tietokanta ja tiedostojärjestelmä,johon asetukset on tallennet-
tu. Data asiakasohjelman ja palvelimen välilläsiirtyy automaattisestiniiden välille
pystytetyn RMI-rajapinnankautta. [48℄[6℄ [7℄ [5℄
3.5 Sovereignin ja Romexiksen välinen viestirajapinta
Sovereignin ja Romexiksen välinen keskustelu perustuu TCP-protokollaan. Sove-
reignin käynnistyessä se ottaa yhteyttä Romexis-palvelimeen. Tämän jälkeen pal-
Kuva9:EsimerkkiRomexis-ohjelmistonkokoonpanosta tapauksessa,jossa Planlink
ja asiakasohjelmaovateritietokoneilla. [48℄
asiakasohjelmasaa palvelimeltanämä tiedot,jolloinasiakasohjelmavoiaina tarvit-
taessa avata oman yhteydensä hoitokoneeseen. Sovereignin ja Romexiksen väliset
viestitovatpääosintekstimuotoisia.Rajapintaan onmääritettytiettyjämäärämuo-
toisia viestejä, jotka on kummankin osapuolen tiedossa. Viestiliikennettä voi myös
seurata avaamalla yhteyden oikeaan porttiin hoitokoneella. Porttiin voi myös kir-
joittaa omia viestejään emuloiden näin Romexista. Sovereign hyväksyy kaikki yh-
teytensäRomexikseenPlanlink-prosessissaan.Samassaprosessissasemyöskäsittelee
Romexikseltasaamansa viestit.
Tässä työssä Romexisesimerkiksi kysyy hoitokoneelta,voidaanko asetuksiasiir-
tää lähettämällä viestin req.setting.transfer, johon hoitokone vastaa lähettä-
mällä myöntävän vastauksen rep.setting.transfer.ok tai kielteisen vastauksen
rep.setting.transfer.nok. Viestit saattavat sisältää myös välilyönneillä erotet-
tuja avain-arvo-pareja, joissa avain ja arvo on erotettu toisistaan yhtäsuuruusmer-
killä. Näillä voidaan välittää erilaisia lisätietoja viestien mukana. Esimerkiksi, kun
Romexis ilmoittaahoitokoneelle,että uusi asetustiedosto onlähetetty,sekertoosa-
malla asetustiedoston nimen ja sen, voidaanko kirjautumisesto purkaa ja tuleeko
hoitokone uudelleenkäynnistääuusien asetusten käyttöönoton jälkeen.[49℄
Kuva10:EsimerkkiRomexis-ohjelmistonkokoonpanostatapauksessa,jossaPlanlink
ja asiakasohjelmaovatsamalla tietokoneella. [48℄
3.6 Haastattelut
Tässä työssä Sovereign-hoitokoneelle toteutettu ominaisuus oli siis jo aiemmin to-
teutettu ja käytössä Compat-hoitokoneelle. Ominaisuus ei kuitenkaan ollut vielä
kovinlaajassakäytössä. Haastateltaviksiei yrityksestä huolimattasaatu lääkäreitä,
huoltomiehiä, teknikoita, asentajia taimuita hoitokoneidenkanssa toimiviayrityk-
sen ulkopuolisiahenkilöitä.Sen sijaanaiheestakeskusteltiinyrityksentuotekehitys-
jaaftersales -joukkojenkanssa.Ilmeisestityössä tehdylleominaisuudelleonkuiten-
kinollutkysyntääjasitäontoivottu.Ominaisuudestavoiollahyötyämonellatapaa.
Senlisäksi,että sitävoivatlääkäritkäyttäätyössäänisoillaklinikoilla,siitäonapua
myöshammaslääketieteenoppilaitoksissaisoissa opetustiloissa,joissaopettajatvoi-
vathelpostiasettaakaikilleoppilaillesamatasetuksetkaikkiinhoitokoneisiinyhdellä
kertaa.Myöshoitokoneitahuoltavatjaylläpitävätteknikothyötyvätominaisuudesta
sen helpottaessa heidän työtään. Yrityksen sisällä kokemusta on kuitenkin lähinnä
asennustöistä, joissa ominaisuudesta on ollut huomattavaa apua, kun koneiden al-
kuasetuksetovathoituneetkätevästi.Ennenominaisuuttaasetuksetonjouduttusiis
asettamaanjoko käsin, USB-asetusominaisuutta hyväksikäyttämällä taiasennusten
yhteydessä automaattisellaasennusskriptillä.Keskusteluissapohdittujakysymyksiä
onlistattualla.Luonnollisestisuurimpaanosaankysymyksistävoidaanvastatavain
Compatinosalta.Moniinkysymyksiineivieläsaatukokemuksen kauttavastauksia.
DiagnosticsModule implements IClinic diagnostics.Poll
summaries.MaintenancePoll diagnostics.DiagnosticsPoll
monitoring.MonitoringPoll
RoomPanel
MonitoringPanel ErgoDataPanel InfoPanel
FloorPanel
DiagnosticsPanel Server
Workstation package
romexis_server_resource.
diagnostics
Kuva11:HahmotelmaRomexiksen CliniManagement -moduulinluokkarakentees-
ta.[48℄
•
Miten ennenominaisuudentoteutusta hoitokoneidenasetusten päivitykseton hoidettu?•
Tuliko idea ominaisuudelleasiakkailtavai keneltä?•
Minkälaisessa käytössä ominaisuus on ollut esimerkiksi yliopistoilla tai isoilla klinikoilla?•
Kuka ominaisuuttakäyttää?•
Miten ja millaisissatilanteissa sitäkäytetään?•
Onko Compatinja Sovereigninkäytöissä jotaineroa?•
Mitämerkitystä ja hyötyä ominaisuudesta on?•
Mitkäovat ominaisuudenvaatimuksest?•
Onko ominaisuudesta saatu jonkinlaistapalautetta?3.7 Asetustiedostot
Sovereign-hoitokoneen asetukset jaetaan kahteen päätyyppiin. Hoitokonekohtaiset
asetuksetovatnimensämukaisestihoitokoneenasetuksia,jotkaeivätvaihdukäyttä-
toksia,jotkaovatsamatkaikilleyhdenhoitokoneenkäyttäjille.Nämäasetuksetvaih-
tuvatkoneeltatoiselle,vaikkasamakäyttäjäkäyttäisierikoneita.Käyttäjäkohtaiset
asetukset ovat taas koneelletallennettuja eri käyttäjien omia asetuksia.Varsinaisia
käyttäjiä koneella voi olla kerrallaan viisi kappaletta. Lisäksi niin sanottua guest-
käyttäjääkäytetään,kunkonettakäytetäänulkoiselleUSB-Flash-muistilletallenne-
tuillaasetuksilla. Asetukset on talletettu hoitokoneen Unix-pohjaisen käyttöjärjes-
telmäntiedostojärjestelmääntekstipohjaisiin tiedostoihin.
Kaikki asetukset löytyvät tiedostojärjestelmän yhdestä kansiosta ja sen alikan-
sioista. Konekohtaiset asetukset löytyvät kaikki omasta alikansiostaan. Asetuksia
löytyy vielä useasta eri tiedostosta, vaikka tarkoitus on vähentää tiedostojen mää-
rää ja mahdollisesti saada kaikki asetukset sisällytetyksi yhteen tiedostoon. Tie-
dostoja onkahdeksan erillistä. Kaikki tiedostot siirretään yksinkertaisuuden vuok-
si Romexis-palvelimelta Romexis-asiakasohjelman kautta hoitokoneelle ja takaisin.
Kuitenkinasetuksia hoitokoneelle lähetettäessä vainosa tiedostoista lopultakorva-
taan ja yhdestä tiedostosta vain osa riveistä korvataan uusilla. Tämä johtuu siitä,
ettämonettiedostoistasisältävätasetuksia,jotkakoskevatvaintiettyähoitokonetta
taijoiden ei muusta syystä haluta siirtyvän koneelta toiselle. Yksi tiedosto sisältää
tietoja koneellesuoritetuista pesuista. Sitä ei siiskorvata. Sen sijaan tiedostot, jot-
ka sisältävät instrumenttien oletusasetukset, tuolin käsikäyttöisen ajon parametrit,
tuolin eri moottoreiden käyttörajoitukset ja valokovettimen ajastusasetukset kor-
vataan sellaisinaan. Tiedostoja, jotka kertovat vesilinjojen pesun puhdistusaineen
vaikutusajan ja tiedon eripesuihinliittyvistä tiloista ja edellisistäsuoritetuista pe-
suista,eimyöskäänhalutakorvata,sillänekinliittyvätselkeästivainyhteentiettyyn
hoitokoneeseen.
Tärkein hoitokoneen asetustiedostoista sitten sisältää suurimman osan kaikista
asetuksista. Tiedostosta poimitaan vain osa riveistä, joilla ylikirjoitetaan olemas-
saolevat valmiit rivit tai rivin puuttuessa lisätään uusi rivi. Kuten luonnollista on,
siirrettäviä asetuksia ovat sellaiset, jotka eivät suoraan kytkeydy johonkin tiettyyn
hoitokoneeseen. Tällaisia ovat muun muassa lääkärin tekemät muutokset hoitoko-
neen käyttöliittymään ja jotkin pienet muutokset laitteiston ja sen huoltotoimen-
piteiden asetuksiin. Sen sijaan kaikki laitteiston kokoonpanoon ja sen kalibrointiin
liittyvätasetukset jätetään kopioimatta. Myöskään hoitokoneenverkkoasetuksiin ei
kosketa.
Käyttäjäkohtaisetasetukset löytyvät asetuskansionjuuresta sekä sen altalöyty-
vistä käyttäjäkohtaisista hakemistoista, joita on omansa viidelle koneeseen tallen-
netulle käyttäjälle ja yhdelle USB-portin kautta asetuksensa tuovalle vierailevalle
käyttäjälle. Kaikkien kansioiden sisältämät tiedostot ovat pääpiiirteissään samat.
Joitain eroja löytyy muun muassa sen mukaan, onko käyttäjän nimeä vaihdettu,
onko käyttäjä muokannut eri instrumenttien tehdasasetuksia tai onko käyttäjällä
jotain muutoksia tallentamatta. Käyttäjien kansioista löytyy iso lista tiedostoja,
jotka liittyvät lähinnä instrumenttien asetuksiin ja esisäädettyihin tuolin asentoi-
hin erikokoisia potilaita ja eri toimenpiteitä varten. Lisäksi asetuskansion juuresta
löytyy tiedosto, joka sisältää kaikkien mahdollisten instrumenttien tehdas- eli ole-
tusasetukset. Sitä eisiirretä asetuksia kopioitaessa. Sen sijaankaikki eri käyttäjien
täinen käyttäjä on tehnyt muutoksia jonkin instrumentin oletusasetuksiin, löytyy
käyttäjän kansiosta tiedosto, johon kaikki muutokset suhteessa oletusasetuksiin on
listattu. Lisäksi, kun käyttäjä tallentaa muutoksensa, luodaan kansioon näille vie-
lä oma tiedostonsa. Tämä on tarpeen, että instrumenttien käyttö toimisi halutul-
la tavalla. Tämän takia asetukset on myös oltava kullekin instrumentille erikseen
kullekinmahdollisellehoitokoneeninstrumenttipaikalle.Käytössähänvoiollauseita
samantyyppisiäinstrumentteja.Tallentamattomieninstrumenttiasetustenhalutaan
säilyvän tietyissä käyttötapauksissa ja poistuvan toisissa. Esimerkiksi jos käyttäjä
muuttaa jotainjonkininstrumentinasetuksista, käyttääsitten toista instrumenttia
japalaaensimmäiseeninstrumenttiin, ovattehdytmuutoksetedelleenvoimassa.Ne
ovat säilyneet tiedostossa, jossa on tallentamattomat käyttäjän tekemät muutok-
set. Toisaaltajoskäyttäjälläontallentamattomiamuutoksiajossakinesiasetuksessa
ja valitsee sitten toisen esiasetuksen, ensimmäisen esiasetuksen tallentamattomat
muutokset menetetään.
Käyttäjäkohtaisista asetuksista löytyy myös tiedosto, joka sisältää käyttäjäni-
men, joskäyttäjä ontallentanutsellaisenitselleen.Yhdestä tiedostosta löytyy tieto
siitä, minkä kätisellelääkärillehoitokone onasennettu ja säädetty.Loput asetustie-
dostoistaliittyyhoitokoneentuolinasentoihinja ajoihin.Tiedostotsisältävätesital-
lennettujatuolinasentojaerikokoisillepotilailleja erilaisilletoiminnoille,kuten ylä-
taialaleuantutkimiselle tairöntgen-kuvienottamiselle. [50℄ [51℄
Hoitokoneen on myös suunniteltu tukevan eri niin sanottuja hoitotiloja, kuten
kirurginentilakirurgisiatoimenpiteitävarten ja kuvaustilahampaiden jaleuan ku-
vantamista varten. Kussakin hoitotilassa voisi käytössä olla eri instrumentit ja eri
asetukset niille. Lisäksi tuolin valmisasennot olisivat omansa. Hoitotilaa vaihdet-
taessamyöskaikkitallentamattomatmuutoksetmenetettäisiin.Tällä hetkellä tosin
hoitokonetukee vainyhtäyleistähoitotilaa.Jotta erihoitotilatvoitaisiintoteuttaa,
pitäisiluultavastilaittaaalikansioihinomatasetustiedostot kullekinhoitotilalle.[45℄
Työtä tehdessä pohdittiin mahdollisuutta yksinkertaistaa hoitokoneen asetus-
logiikkaa esimerkiksi vähentämällä tarvittavien tiedostojen määrää. Muun muassa
tavoitteenaolimahduttaakonekohtaisetasetuksetyhteentiedostoon.Toisaaltaolisi
ollutkätevää,joskalibraatioasetuksetlöytyisivätyhdestätiedostosta,muut tiettyyn
koneeseensidotutasetuksettoisestajakaikkisiirrettäväksitarkoitetutasetuksetkol-
mannesta omasta tiedostostaan. Kaikki nämä muutokset tulisi samalla suhteuttaa
yhtiön tuleviin hoitokoneisiinjapyrkiä yhteensopivuuteen jauudelleenkäytettävyy-
teen.Muutoksiineikuitenkaanryhdyttytässävaiheessa, koskaominaisuushaluttiin
ensin toteuttaatoimivanamahdollisimmanpian javastasitten lähteä mahdollisesti
kehittämään sitäeteenpäin. On myös mahdollista, että Sovereignin ohjelmistokor-
vataanuudella,jolloinvanhaanohjelmistooneihalutakuluttaa turhaantyötunteja.
3.8 Ominaisuuden vaatimukset
Työn aloitusvaiheessa ei ollut aivan selvää, millainen asetustenhallintaominaisuus
haluttiin toteuttaa, miten sen haluttiin toimivan ja millaisia ominaisuuksia siltä
vaadittiin. Näitä asioita mietittiinkin eri työryhmissä useasti ja yritettiin selvittää
siin käyttää joko pelkästään tai Romexiksen lisäksi myös Sovereignin käyttöliitty-
mästä. Lääkärin tullessa koneelle hän olisi voinut hakea koneelle haluamansa ase-
tukset Romexis-palvelimelta. Romexis olisi voinut lähettää Sovereignille kirjautu-
neelle käyttäjälle valittavana olevat asetukset ja lääkäri olisi voinut valita, mihin
viidestä käyttäjäpaikasta asetukset olisi otettu käyttöön. Samoin lääkäri olisi kos-
ka vain voinuttallentaa ja lähettääasetukset Romexikselle. Lääkäri olisisyöttänyt
asetuksille nimen, jonka perusteella hän olisi voinut myöhemmin tunnistaa tallen-
nuksen. Tämä olisi vaatinut mahdollisesti Romexikseen tarkistuksen, että annettu
nimioliuniikki.Konekohtaisiaasetuksiaeiolisilähetetty. Ominaisuusolisivaatinut
runsaasti muutoksiamyösSovereigninkäyttöliittymään jaRomexikseen esimerkiksi
tietokantojen osalta. Kaikkitallennetut asetukset olisi pitänyt pystyä linkittämään
uniikistijohonkinhoitokoneenkäyttäjäänjaitse hoitokoneeseen. Tätätoteutettaes-
saolisitodennäköisestijouduttu mahdollisestikiertämäänRomexis-asiakasohjelma,
ja laittaa hoitokone keskustelemaan suoraan Romexis-palvelimen kanssa. Romexis-
asiakasohjelmahan linkkaa tallennetut asetukset vain Romexikseen kirjautuneena
olevaankäyttäjään.Ominaisuudetpäätettiinkin jättäätoteuttamattaainakintässä
vaiheessa.
Lopultasiispäädyttiinkeskittymään ominaisuudentoteuttamiseen käytettäväk-
siRomexiksenpäästä.Mallinaolisiisvalmistoteutus Compat-hoitokoneelle,johon
mietittiin parannuksia. Mietittiin muun muassa sitä, kuinka helposti erotettaviksi
halutaantehdäkonekohtaisten jakäyttäjäkohtaisten asetusten haku ja palautus, ja
halutaankoyhdenkoneenerikäyttäjienasetuksettehdäyksittäinpalautettaviksivai
pitääkökaikkikäyttäjäasetuksetpalauttaayhdelläkertaa.Harkitiinmyöstallennet-
tujen asetusten linkkaamistajollaintavallatiettyyn koneeseen ja käyttäjäasetusten
käyttäjiin.Kunhoitokoneenohjelmistonversionumerotallennetaankullekinhaetulle
asetukselle, voitaisiintätä tietoakäyttäämyösvarmistamaan asetusten yhteensopi-
vuuskoneenversionkanssa.Yhteensopivuksiajakunkinversionvälisiämuutoksiaei
ollut kunnolla tiedossa ja tämän ominaisuuden toteutus olisi vaatinut jonkinlaisen
asetusten versionhallinnanrakentamisen ja runsaasti ylläpitotyötä tulevaisuudessa,
joten tästäkin luovuttiin ainakin toistaiseksi. Samaan aiheeseen liittyy myös idea
siitä, että asetustiedostojen sisältöjä olisijotenkin tarkistettumahdollisten virheel-
listen arvojen tai puuttuvien tietojen varalta. Samalla olisi tunnistettu kokonaan
vääränmuotoiset tiedostot. Ominaisuus oltaisiin voitu tehdä joko Romexiksen tai
Sovereignin päähän. Luonnollisempi lienee Sovereign, koska sielläon helpompi olla
selvillä,mitäasetuksiajuurisenohjelmistoversiojakokoonpanotarvitsee.Tätäkään
ideaa ei tässä vaiheessa vielä toteutettu, mutta konekohtaisten asetusten kohdalla
Sovereignosaalisätäpuuttuvatasetusarvottietyilläkoodistalöytyvilläoletusasetuk-
silla. Tämä olisi varmasti hyödyllinen toiminto myös käyttäjäkohtaisten asetusten
osalta.
Eräs mietitty parannus olise, että sen lisäksi, että hoitokoneessa voidaan käyt-
tää käyttäjäasetuksia USB-muistitikulta, näin voisi tehdä myös Romexis-koneen
kautta. Eli USB-tikun asetukset olisi voinut ottaa talteen Romexikselle tai lähet-
tääsuoraanhoitokoneelle,samallahoitokoneeltaolisivoitutallentaaerillisenäUSB-
muistitikullaolleetasetukset. Nämäparannukset olisivatvaatineetsuurempiamuu-
toihin.Tällöinominaisuusolisimyöskäyttäjännäkökulmastatoiminuteritavallaeri
hoitokonetyypeille.Tähäneisiislähdetty,vaanlopultaominaisuuspäätettiintoteut-
taa ulkoisesti samalla tavalla kuin Compatin vastaava ominaisuus. Näin päästiin
jälleenvähemmällätyölläja pienemmillämuutoksillaolemassaolleisiinrakenteisiin.
PinnanallatoteutusolitokierilainenCompatiinverrattuna.Ominaisuudentoteu-
tuksesta ja sen eroista kerrotaan lisääluvuissa 4 ja 5. Vaikka ominaisuuden halut-
tiinkintoimivansamallatavallakuinCompatinkohdalla,mietittiinkylläkuitenkin
Romexiksen käyttöliittymään yleisempiä parannuksia, joista kerrotaan myös lisää
myöhemmin. Muutoksiin lähdetään ehkä tulevaisuudessa suuremman Romexiksen
käyttöliittymäremontinyhteydessä.
Kun ominaisuuden vaatimukset oli määritelty, jouduttiin vielä miettimään joi-
tain käytännön kysymyksiä ominaisuuden käyttöön liittyen. Ensimmäinen kysymys
oli se että, miten suhtaudutaan hoitokoneen käyttämiseen asetuksia haettaessa tai
päivitettäessä. Saisiko asetuksia hakea tai ennen kaikkea, olisiko turvallista lähet-
tää asetuksia,kunhoitokoneolikäytössä?Olisiollutmahdollistakysyä käyttäjältä,
voitaisiinkoasetuksetsiirtäätaihaluttiinkouudetasetuksetottaakäyttöön.Turval-
lisuuden varmistamiseksi ja jälleen myös yksinkertaisuuden vuoksi päätettiin, että
hoitokoneella ei saisi olla asetuksia siirrettäessä kumpaankaan suuntaan käyttäjää
kirjautuneena.Lisäksipäätettiin,ettäeimahdollistetakäyttäjänuloskirjaamisenpa-
kottamistaRomexiksestakäsin, mistäkieltämättäolisihuomattavastiapua,josvoi-
daanesimerkiksiollavarmoja,ettäsuurenopetustilanmilläänkoneellaeiolekukaan
toimimassa,vaikkakaikissaolisikinkäyttäjäkirjautuneena.Nytjoudutaansiiskäydä
käsin kirjaamassa jokainen käyttäjä erikseenulos. Hoitokonelukitaan asetustensiir-
toa aloitettaessa siten, että koneelle ei voi kirjautua kesken prosessin. Jos prosessi
jostainsyystä keskeytyy taijokinviestieimeneperille asti,saattaakäydäniin,että
hoitokonejäätähänlukitustilaanjavaatiiuudelleenkäynnistyksenkoneenkäyttämi-
seksi.Yksitapaestäätämä,olisiliittääasetustensiirtoonjokuaikaraja,jonkajälkeen
lukitus avautuisi automaattisestijokatapauksessa. Tällöinpitäisipitää myöshuoli,
ettäasetustensiirtoaeijatketa,josviestivielätulee vaanhoitokoneentilapalautuisi
siirron aloittamista edeltävään tilaan. Asetuksien käyttöönottoon liittyy myös hoi-
tokoneen uudelleenkäynnistys. Käyttäjäkohtaiset asetukset tulevat käyttöön ilman
uudelleenkäynnistystä, mutta konekohtaiset asetukset vasta käynnistyksen jälkeen.
Päätettiinkin, että hoitokone käynnistää itse itsensä vain konekohtaisten asetusten
lähettämisenjälkeen. Jos lähetetäänsamalla kertaa myöskäyttäjäkohtaiset asetuk-
set, konekohtaiset lähetetään jälkimmäisenä.Koneenkäyttöliittymäeivaroita tule-
vasta uudelleenkäynnistyksestä eikätäten myöskään pyydä vahvistusta siihen,mikä
helpottaajälleenpäivittäjientyötä isojakonemääriäkerrallapäivitettäessä,eikäva-
roituksenpuutteellaväliäolekaan,koskakoneellaeikirjautunuttakäyttäjääole,eikä
kone siis ole käytössä. Toteutuksen suunnitteluun liittyy myös joitain asioita, joita
mietittiinenemmänkin. Näistäkerrotaan lisäätämän luvun seuraavissa osissa. [52℄
3.9 Tiedonsiirto
Vaikka monien eri työssä tehdyn ominaisuuden toteutettujen osien kohdalla tut-