Interface specification methods for software components

No Thumbnail Available

URL

Journal Title

Journal ISSN

Volume Title

Helsinki University of Technology | Diplomityö
Checking the digitized thesis and permission for publishing
Instructions for the author

Date

2008

Major/Subject

Tietojenkäsittelyteoria

Mcode

T-119

Degree programme

Language

en

Pages

vii + 49

Series

Abstract

Tämä työssä kehitetään rajapintojen määrittelykieli osana LIME-projektia sekä sitä tukevan työkalutoteutuksen. Tavoitteena on ollut tuottaa menetelmä, joka on kevyt ja täydentää ohjelmistoprosesseissa jo käytettyjä laadunvarmistusmenetelmiä. Java on valittu työkalun toteutuskieleksi sen olemassa olevan metadatamekanismin (Javan annotaatiot) ja hyvän työkalutuen ansiosta. Määrittelykielen avulla voidaan määritellä sekä ohjelmistokomponentilta haluttu ulkoinen käyttörajoitus että sen sisäinen käyttäytyminen. Ulkoiseen käyttörajoitukseen viitataan rajapintamäärittelynä ja sisäiseen käyttäytymiseen kirjastomäärittelynä. Jos rajapintamäärittelyä rikotaan kahden komponentin vuorovaikutuksessa, kutsuva komponentti toimii väärin. Vastaavasti jos kirjastomäärittelyä rikotaan, on syy kutsutun komponentin. Molempia määrittelytyyppejä voidaan kirjoittaa joko lineaarisen ajan aikalogiikalla tai säännöllisten lausekkeiden avulla, ja ne voivat sisältää väittämiä joko tällä hetkellä suorituksessa olevasta metodista tai ohjelman tilasta. Työkalutoteutus tukeutuu aspektiohjelmointiin, jonka Gregor Kiczales ja hänen tutkimusryhmänsä kehitti 90-luvun lopulla Xeroxin Palo Alton tutkimuskeskuksessa. Se tuottaa turvallisuusaspekteja, jotka syntetisoivat käyttäytymisinvariantteja ajonaikaisessa suorituksessa annotaatioihin perustuen. Aspektit simuloivat äärellisiä automaatteja, jotka seuraavat vuorovaikutuksen tilaa ja ilmoittavat havaituista virheistä poikkeuksilla.

Description

Supervisor

Niemelä, Ilkka

Thesis advisor

Heljanko, Keijo

Keywords

lightweight methods, kevyet menetelmät, interface specification, rajapintamäärittelyt, Java, Java, PLTL, PLTL, Aspect-oriented programming, aspektiohjelmointi

Other note

Citation