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
Instructions for the author
Authors
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ä, IlkkaThesis advisor
Heljanko, KeijoKeywords
lightweight methods, kevyet menetelmät, interface specification, rajapintamäärittelyt, Java, Java, PLTL, PLTL, Aspect-oriented programming, aspektiohjelmointi