Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 14 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen.

Samankaltaiset esitykset


Esitys aiheesta: "Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 14 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen."— Esityksen transkriptio:

1 Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 14 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen

2 Olioiden ja komponenttien ”johdotuksen” (wiring) standardeista Szyperski, luku 12 Historiaa Perinteiset eri ohjelmien tai ohjelmanosien väliset vuorovaikutusmahdollisuudet: ”Aikojen alusta” aliohjelmakutsut. Kun tietokoneisiin tuli käyttöjärjestelmät, niillä oli määritellyt binaariset kutsumekanismit. Kutsut saattoivat olla mahdollisia eri ohjelmointikielten välillä. Käyttöjärjestelmän ydinpalveluita ei usein voitu kutsua kuten tavallisia aliohjelmia, vaan tarvittiin välittävä standardikirjasto. Moniajokäyttöjärjestelmissä aliohjelmakutsut ovat mahdollisia vain saman prosessin sisällä. Prosessien väliseen kommunikointiin (IPC – Inter-Process Communication) kehitettiin monenlaisia mekanismeja. Jaettu (yhteinen) muisti, tiedostot, putket, pistukat (sockets) ym. Useimmat eivät ole siirrettäviä eri alustojen välillä. Useimmat soveltuvat helposti myös hajautettuihin järjestelmiin. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 2

3 Olioiden ja komponenttien ”johdotuksen” standardeista (jatkoa) Kaikki vanhat IPC-menetelmät toimivat aliohjelmankutsuja alhaisemmalla abstraktiotasolla (bittitasolla). Vaikeita ja virhealttiita monimutkaisten vuorovaikutusten toteuttamiseen. Etäkutsut (RPC – Remote Procedure Call) (Birrell ja Nelson, ACM Trans. on Computer Systems, 1984). Tynkä (stub) sekä kutsujan että kutsuttavan päässä, niin että kutsu vaikuttaa tavalliselta, paikalliselta kutsulta. Tyngät huolehtivat parametrien ja tuloksen välittämisestä. Kutsumekanismit voivat olla erilaisia. Tietomuodon muunnoksia (esim. binaarilukujen tavujärjestys) voidaan tehdä. Joissakin järjestelmissä (esim. Windowsissa nykyään) käytetään RPC:n kevennettyä versiota myös saman koneen eri prosessien väliseen vuorovaikutukseen. Etäkutsujen etuja ja haittoja: Jos tyngät voidaan luoda automaattisesti, kutsujan ja kutsuttavan ei tarvitse edes tietää, tapahtuuko etä- vai tavallinen kutsu. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 3

4 Olioiden ja komponenttien ”johdotuksen” standardeista (jatkoa) Nopeudessa ja kustannuksissa on kuitenkin suuret erot. Prosessien välinen kutsu samassa koneessa kestää tyypillisesti 10 – 1000 kertaa niin kauan kuin prosessin sisäinen kutsu. Varsinainen etäkutsu koneiden välillä kestää tyypillisesti 10 – 10000 kertaa niin kauan kuin saman koneen prosessien välillä. Internetissä voi tulla vielä lisäviipeitä. Hitauden vaikutus on sitä merkittävämpi, mitä pienempiä toimintoja kutsutaan. Jotta tynkien automaattinen luominen olisi mahdollista, käytetään rajapinnanmäärittelykieliä (IDL). Esim. Open Software Foundationin DCE:ssä (Distributed Computing Environment). Aliohjelmista kuvataan tarkkaan parametrit ja paluuarvot. Perustietotyyppien arvoalueet on kiinnitetty, jotta oltaisiin riippumattomia laitteistojen eroista. Aliohjelmien yksikäsitteistä tunnistamiseen käytetään generoituja universaalitunnisteita (UUID – Universally Unique Identifiers). Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 4

5 Olioiden ja komponenttien ”johdotuksen” standardeista (jatkoa) Aliohjelmakirjastot kuuluvat edelleenkin menestyksekkäimpiin ohjelmistokomponenttien lajeihin. Voidaan myydä ja jaella binaarimuotoisina. Dynaamisina kirjastoina (DLL) erityisen käyttökelpoisia. Palvelut voidaan löytää dynaamisesti DLL:n nimen avulla. Dynaaminen sidonta ja hajautus ovat mahdollisia. Niillä on kuitenkin omat rajoituksensa. Aliohjelmista olioihin Metodinkutsun erot perinteiseen aliohjelmankutsuun: Toteutettava koodi valitaan normaalisti vasta suoritusaikana kohdeolion luokan perusteella. Metodissa on aina automaattisesti käytettävissä olion itseviite. Etäkutsumekanismeissa on kyllä samanlaisia mahdollisuuksia, jos rinnastetaan etäpalvelin (tietokone) olioon. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 5

6 Olioiden ja komponenttien ”johdotuksen” standardeista (jatkoa) Nykyiset käyttöjärjestelmät eivät määrittele standardimekanismeja metodinkutsuille. Siksi samankaan oliokielen eri kääntäjien tuottamat luokat eivät välttämättä toimi yhdessä edes samassa koneessa. Yleiskäyttöisiksi tarkoitettuja luokkakirjastoja ei siis yleensä voida myydä ja jaella binaarimuotoisina. Metodinkutsut voidaan rakentaa aliohjelmankutsumekanismin päälle. IBM SOM:ssa tehtiin näin: kaikkien kielten metodinkutsut toteutetaan samojen kirjastoaliohjelmien kutsujen avulla. Myös COM käyttää aliohjelmankutsumekanismia, tosin aliohjelmanosoittimien kautta. Toinen mahdollisuus on määritellä virtuaalikone, joka ymmärtää metodinkutsuja. Java,.NETin Common Language Runtime (CLR). Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 6

7 Olioiden käsittelyn hienouksia Szyperski, kohta 12.3 Olio-ohjelmien ja –komponenttien yhteentoimivuuden tärkeitä kysymyksiä: Miten rajapinnat määritellään? Miten olioviitteitä käsitellään niiden oman prosessin (osoiteavaruuden) ulkopuolella? Miten palveluja tarjotaan ja löydetään? Miten komponenttien evoluutio hoidetaan? Tässä vertaillaan etupäässä Java-, OMG- (CORBA) ja Microsoft-maailmojen ratkaisuja. Rajapintojen määrittely: CORBA 2:ssa ja SOM:ssa kullakin luokalla ja oliolla on yksi rajapinta, kuten perinteisissä oliomalleissa. Javassa ja CLR:ssä luokka ja olio voi toteuttaa useita rajapintoja. COM:ssa ja CORBA 3:n CCM:ssä koosteolio voi toteuttaa useita rajapintoja, joista kukin liittyy johonkin osaolioon. Koosteen ja osien identiteetit voidaan tarvittaessa erottaa toisistaan. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 7

8 Olioiden käsittelyn hienouksia (jatkoa) CORBAssa ja COMissa rajapinnat määritellään IDL:illä. Niillä ja DCE:llä on jokaisella oma IDL. Javassa ja CLR:ssä ei käytetä erillistä IDL:ää vaan metadataa, joka on ohjelmien tutkittavissa (reflektion avulla). On olemassa kaksisuuntaisia kuvauksia eri määrittelytapojen välillä: ainakin Java – OMG IDL ja OMG IDL – COM IDL. Rajapintojen väliset suhteet ja polymorfismi: Kaikissa ympäristöissä samalla rajapinnalla voi olla useita toteutuksia ja toteutus voi sisältää enemmäkin, kuin rajapinta vaatii. CORBA 2 noudattaa perinteistä oliomallia. Oliolla on yksi rajapinta, mutta se voi muodostua moniperinnällä useista rajapinnasta. Olion lisäominaisuuksia voidaan tutkia dynaamisesti. CORBA 3:n CORBA Component Model (CCM) sallii oliolle useita rajapintoja, joiden välillä voidaan liikkua dynaamisesti. Myös vaaditut rajapinnat määritellään eksplisiittisesti. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 8

9 Olioiden käsittelyn hienouksia (jatkoa) COMissa rajapintaa ei voida muuttaa sen jälkeen, kun se on julkaistu. Vain yksiperintä on mahdollista rajapintojen välillä. Olio voi toteuttaa useita rajapintoja, niiden joukko voi muuttua olion elinaikana ja sitä voidaan tutkia dynaamisesti. Vaadittujen rajapintojen ilmoittamiseen on olemassa vain konventio (samoin Javassa ja CLR:ssä). Javassa luokka voi toteuttaa useita rajapintoja. Mahdolliset kutsumuodoltaan samanlaiset operaatiot samaistetaan automaattisesti. CLR:n periaate on muuten sama kuin Javan, mutta eri rajapintojen operaatioita ei samaisteta. Nimeämis- ja hakupalvelut: COMissa käytetään globaaleja tunnisteita (GUID – Globally Unique Identifiers) (kuten DCE:n UUID) rajapinnoille, kategorioille (rajapintajoukoille) ja luokille. CORBA 2:ssa käytetään globaaleja kuvauskantojen tunnisteita (Global Repository IDs). Tällaisina toimivat UUID:t ja URL:t. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 9

10 Olioiden käsittelyn hienouksia (jatkoa) Javassa käytetään täydellisiä (hierarkkisia) sisäkkäisten pakkausten nimiä. Myös CLR:ssä käytetään lukukelpoisia tarkennettuja nimiä. Palveluiden hakemiseen kaikki järjestelmät tarjoavat jonkinlaisen hakemiston tai kuvauskannan. Kustakin palvelusta saadaan selville ainakin tarjottujen rajapintojen tyypit ja voidaan luoda uusia ilmentymiä. Koosteiset dokumentit Koostedokumenttimallit kuuluivat ensimmäisiin sovelluksiin, joissa käytettiin ohjelmistokomponentteja (ahtaan määritelmän mukaan). Ensimmäisenä oli Xeroxin Star-työasemaohjelmisto (1981). Ei menestynyt markkinoilla, useista syistä. Menestyneitä seuraajia Applen Hypercard, MS:n Visual Basic. Perusajatus: käyttäjä voi keskittää huomionsa dokumentteihin, ja oikeat sovellukset käynnistetään automaattisesti niitä käsittelemään. Toiseen dokumenttiin sisältyvää dokumenttia voidaan käsitellä siinä paikassa, vaikka tarvittaisiin eri sovellusta. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 6. 5. 2010 10

11 Olioiden käsittelyn hienouksia (jatkoa) Visual Basicissa (VB) kaikki dokumentit ovat lomakkeita. Lomake voi sisältää käyttöliittymäolioita eli ohjaimia (controls), ja mahdollisten sellaisten joukko on avoin. Käyttäjät voivat toimia komponenttien koostajina sijoittamalla lomakkeisiinsa ohjaimia ja kytkemällä niitä yhteen yksinkertaisten VB-skriptien avulla. Pian syntyivät aktiiviset komponenttimarkkinat, ja ”ohjaimina” tuli tarjolle kokonaisia sovelluksia. OLEssa (Object Linking and Embedding) VB:n ideoita kehitettiin pitemmälle. Säiliöiksi (koosteiksi) kelpaavat muutkin kuin VB-lomakkeet – Word-, Excel-, PowerPoint- ym. tiedostot. Käyttöliittymäolioiksi kelpaavat mielivaltaiset ”dokumenttipalvelimet”. Tärkein muutos: monitasoiset (rekursiiviset) koosteet sallitaan. Myös webissä on koostedokumentteja: HTML-sivuja, jotka sisältävät olioita. Selaimet tarjoavat yleisin dokumenttimallin. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 10. 5. 2010 11

12 Olioiden käsittelyn hienouksia (jatkoa) OLEssa (Object Linking and Embedding) VB:n ideoita kehitettiin pitemmälle. Säiliöiksi (koosteiksi) kelpaavat muutkin kuin VB-lomakkeet – Word-, Excel-, PowerPoint- ym. tiedostot. Käyttöliittymäolioiksi kelpaavat mielivaltaiset ”dokumenttipalvelimet”. Tärkein muutos: monitasoiset (rekursiiviset) koosteet sallitaan. Myös webissä on koostedokumentteja: HTML-sivuja, jotka sisältävät olioita. Selaimet tarjoavat yleisen dokumenttimallin. Java-sovelmat ja muut sivuihin sisältyvät oliot voivat tarjota lisätoimintoja. Malli muistuttaa enemmän Visual Basicia kuin OLEa. Webin koostedokumentit ovat yhtä staattisia kuin VB-lomakkeet. Sisältyvät oliot eivät voi itse olla koosteita (säiliöitä). Palvelinpään ohjelmointimalleilla (JSP, ASP) päästään dynaamisuudessa pitemmällekin kuin OLEssa. Komponenttipohjainen ohjelmistotekniikka (Markku Sakkinen) – Osa 14 10. 5. 2010 12


Lataa ppt "Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 14 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen."

Samankaltaiset esitykset


Iklan oleh Google