Liikkuvat agnetit, mobiili koodi (2-B)

Agentilla tarkoitetaan suhteellisen itsenäisesti toimivaa koodia, mutta tarkempi tulkinta vaihtelee näkökulmasta riippuen. Tekoälyn yhteydessä agenttien odotetaan suoriutuvan mutkikkaista tietoa tai tekoälykkäitä algoritmeja edellyttävistä toimista, kuten automaattisesta osakekaupasta. Käyttöliittymäagentit edustavat älykkyyttä, jonka on määrä tottua käyttäjän taipumuksiin ja siten esim. välttää häiritseviä kyselyjä; myös jatkuvatoiminen oikolukija on agentti tässä mielessä. Hajautettujen järjestelmien agentit taas ovat verkossa vaeltavia agentteja, jotka isäntäkoneesta toiseen siirtyessään keräävät ja suodattavat niistä saamaansa tietoa. Autonomisten agenttien perusteellista luokitusta ja määrittelyä löytyy artikkelista Is it an Agent, or just a Program? (1996).

Agentti on siis ohjelma, joka toimittaa asioita ihmisen puolesta. Olionäkökulmasta agentti on olio, jolla on yksityinen toteutussäie. Liikkuva agentti siirtää itsensä (oikeastaan agenttisysteemin avustuksella) host-koneeseen, joka sisältää olion, jonka kanssa agentti haluaa vuorovaikuttaa. Tällaisten agenttien käyttö vähentää verkon kuormaa ja toisaalta verkon aiheuttaman viipeen vaikutusta tehtävän suorittamiseen. Agentit myös kapseloivat protokollia.

Liikkuvilla agenteilla on seuraavanlaisia ominaisuuksia:

  • autonomisuus (säieohjelmointia, lisäksi asynkronisuus),
  • tavoitehakuisuus (ehtolausekkeiden pohjalta),
  • reaktiivisuus (olioita metodeineen),
  • sosiaalisuus (olioiden vuorovaikutus),
  • mukautuvuus (poikkeusten käsittely, ympäristön muutoksiin sopeutuminen, "vankkatekoisuus"),
  • liikkuvuus (sekä monistuvuus ja pysyvyys, joiden ansiota on vikasietoisuus),
  • luontainen verkkolaskentaan sopiva heterogeenisuus.

Liikkuvaa koodia kirjoitetaan tyypillisesti tulkattavalla kielellä, jolloin saavutetaan parempi riippumattomuus alustasta. Java-turvallisuuden kirjassa Securing Java väitetään?: "Java is by far the most popular implementation of Web-based mobile code. Lesser-known competitors include JavaScript?, Safe-Tcl, Telescript, Word macros, Excel macros, ActiveX?, and Postscript." Tässä mainittu Tcl on Tool Control Language (vuodesta 1988). Sen jälkeläisiä ovat Python ja Tk.

Javan arkkitehtuurin ansiosta tuntemattoman agentin isännöinti on "suhteellisen" turvallista. Ongelmia kuitenkin on: Isäntäkone ei voi rajoittaa oliolle tai säikeelle tarjottavia prosessori- ja muistiresursseja. Java-objektin julkiset metodit ovat kenen tahansa saatavissa osoitteen perusteella. Agentilla ei ole suoraa keinoa valvoa, mitkä muut agentit käyttävät sen metodeja. Olion täydellistä suoritustilaa ei saa nykyisellään selville ja esim. pinokehys ja ohjelmalaskuri pysyvät kiellettynä tietona.

Harjoitus: Ajattele koodia, joka tulee jostain ajettavaksi koneessasi ja lähtee sitten edelleen jonnekin. Intressinäsi on tarjota koneesi palvelua (kuten tekisit asiakkaalle kaupassasi), mutta miten varmistut, ettei mitään asiatonta tapahdu (myymälävarkautta tms.)? Mieti ensin, missä määrin agenttien asiattomuudet poikkeavat niistä mitä virukset voivat aiheuttaa.

Katso sitten samaa asiaa toisinpäin: kirjoitat koodia, jonka haluat kiertelevän ajautumassa muissa koneissa ja palaavan kiinnostavia tuloksia mukanaan. Mitä voit tehdä, että tosiaan saat tuloksia ja voit myös luottaa niihin? Mieti tässäkin ensin, mitä uhkia agenttisi kohtaa matkallaan.

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r2 < r1 | 
Topic revision: r2 - 26 Sep 2010 - 11:11:13 - MarkoHelenius
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback