Detecting roles of variables in an intermediate language

No Thumbnail Available

URL

Journal Title

Journal ISSN

Volume Title

School of Science | Master's thesis
Checking the digitized thesis and permission for publishing
Instructions for the author

Date

2010

Major/Subject

Ohjelmistotekniikka

Mcode

T-106

Degree programme

Language

en

Pages

[9] + 52 + [11]

Series

Abstract

Learning new programming language requires a lot of effort. On top of syntax and semantics, experienced programmers have tacit knowledge on how certain problems are solved on the language, some knowledge on how programs should he written and also expect the code to have certain features when they read someone else's code. To aid in learning a new language and also to transport this tacit knowledge, several research reports offer roles of variables as solution. Several tools have also been written that try to detect roles of variables from source code. Two of these tools use variable usage properties, its usages and definitions location in code in relation to other code and deduce if the variable has certain role characteristic. In this thesis a mapping between the roles of variables usage properties and JVM byte code was made. The aim is to find the same or similar characteristics on lower level language. If properties can be detected on lower level language they can also be detected for numerous languages that are available and compile to JVM byte code. The mapping was tested by implementing a prototype. Variable usage properties seemed to be detected well, but the actual role identification did not work perfectly. Even though there are limitations to what prototype using the mapping was able to do well, it seems plausible that roles of variables can be detected in byte code and further research is certainly needed.

Uuden ohjelmointikielen opetteleminen on haastava tehtävä. Ohjelman lauseiden (syntaksi) ja niiden merkityksen (semantiikka) lisäksi kokeneilla ohjelmoijilla on tietoa siitä miten jotkin ongelmat ratkaistaan ko. ohjelmointikielellä, tietoa siitä miten ohjelmat pitäisi ko. kielellä kirjoittaa ja myös olettavat tiettyjä piirteitä muiden koodista jota lukevat. Uuden kielen opetteluun ja myös tämän hiljaisen tiedon välitykseen on useissa tutkimuksissa tarjottu apuna muuttujien roolimärityksiä. Useita työkaluja on rakennettu muuttujien roolien havainnointiin. Kaksi näistä työkaluista käyttää muuttujien käyttäytymisominaisuuksia, sitä missä kohtaa ohjelmakoodia. muuttuja määritellään ja missä sitä käytetään, muuttujan roolin päättelyyn. Tässä työssä yhdistetään muuttujien käyttäytymisominaisuudet Javan bytekoodiin. Tavoitteena on löytää samat tai samanlaiset käyttäytymisominaisuudet alemman tason kielestä Jos käyttäytymisominaisuudet voidaan tunnistaa bytekoodista, voidaan ne mahdollisesti tunnistaa kaikille tai suurelle osalle Java bytekoodiksi kääntävistä kielistä ja kääntäjistä. Liityntä muuttujien käytön ominaisuuksista bytekoodiin testattiin toteuttamalla. prototyyppi. Muuttujien käytön ominaisuudet tunnuttiin tunnistavan hyvin prototyypillä, mutta varsinaisten roolien tunnistaminen ei toiminut täydellisesti. Vaikka prototyypin kyky tunnistaa varsinaisia rooleja oli hyvin rajallinen, näyttää hyvinkin mahdolliselta että roolit pystytään tunnistamaan bytekoodista ja sen jatkotutkimus on hyvinkin tarpeen.

Description

Supervisor

Korhonen, Ari

Thesis advisor

Taherkhani, Ahmad

Keywords

roles of variables, muuttujien roolit, teaching programming languages, ohjelmointikielten opetus, JVM bytecode, JVM bytekoodi, JVM programming languages, JVM ohjelmointikielet, data flow analysis, tietovuoanalyysi, control flow analysis

Other note

Citation