Ymmärrettävää ohjelmointia : Menetelmän johto ja sovellus
Heikkilä, Tatu (2024)
Heikkilä, Tatu
2024
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2024-05-20
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202404305017
https://urn.fi/URN:NBN:fi:tuni-202404305017
Tiivistelmä
Olennaisena osana ohjelmistotuotteen lähdekoodin ylläpitoa ja uudelleenkäyttöä ohjelmistokehittäjät omaksuvat uusia lähdekoodikantoja. Järjestelmädokumentaatio helpottaa tätä omaksumista. Dokumentaatio kuitenkin vanhentuu helposti ja sen takia tutkitaan paljon dokumentaation automaattista johtamista lähdekoodista. Tällä tavalla johdettu dokumentaatio ei kuitenkaan vastaa kaikkiin kysymyksiin, joita naiivilla ohjelmistokehittäjällä voi olla. Työ keskittyykin tapaan yhdistää järjestelmädokumentaatio lähdekoodiin, jolloin käsin kirjoitettu dokumentaatio pysyy helpommin ajantasalla lähdekoodin muuttuessa. Menetelmää johtaessa ja arvioidessa keskitytään kysymyksiin, joihin automaattisesti johdettu dokumentaatio ei voi vastata. Menetelmästä voi siis olla hyötyä osana automatisoituakin infrastruktuuria. Johdettavan menetelmän lähtöpisteiksi otettiin literate-ohjelmointi ja nykyaikaiset vihkokäyttöliittymät.
Menetelmän johto alkoi katsastamalla vihkokäyttöliittymien kirjo ja vetämällä yhteen niiden olennaiset piirteet. Tämän jälkeen piirteet rajattiin arvioiden niiden ohjelmistotuotannollista pätevyyttä, minkä jälkeen muodostettiin menetelmähypoteesi. Menetelmällä tuotettiin selainsovellus, jonka vihkokäyttöliittymää tutkittiin laadullisen tapaustutkimuksen keinoin.
Menetelmä laajentaa literate-ohjelmoinnille ominaista monimediaista proosaa, kiedontaa, mielivaltaista lähdekoodirakennetta, luettavaa ja käännettävää esitystä vihkokäyttöliittymien lähdekoodisolujen suorituksella, tulosten visualisoinnilla, vuorovaikutteisuudella, heikolla yhden tiedoston periaatteella ja ajettavalla esityksellä. Olennainen laajentava piirre on koodisolujen suoritus solukohtaisesti valittavalla ohjelmointikielellä. Menetelmän voi toteuttaa Org Mode -vihkoalustalla. Hypoteettisesti menetelmä laajentaa lähdetiedoston perustelevaa kerrontaa literate-ohjelmointiin verrattuna. Hypoteesi toteutuu tutkittavassa tapauksessa, mutta yksittäisenää tapauksena tulosta ei voi yleistää. Tapauksessa perustelevaa kerrontaa syntyy koodisolujen suorittamisesta syntyneestä vuorovaikutteisesta ajoympäristön asennuksesta, yksikkötestauksesta ja visuaalisesta testauksesta.
An essential part of maintaining and reusing source code is adopting new codebases. System documentation facilitates this. However, system documentation gets out-of-date and so a lot of research effort is being put into automatic generation of documentation from source code. Documentation derived this way does not answer all questions a naive software developer might have. This work concentrates on a way to combine system documentation with source code, so that the handwritten documentation stays up-to-date more easily. When deriving a new method, questions that cannot be answered are considered, so the method can also be useful as a part of such automatised infrastructure. Various modern notebook interfaces and literate programming set the stage for deriving the new method.
Deriving the method started by reviewing a variety of notebook interfaces and putting together their essential traits. The traits that didn't fit software engineering were pared down, after which a method hypothesis was formed. A browser app was produced using the method and its notebook interface was studied using qualitative case study methods.
The new method extends the multimedia prose, tangling, arbitrary source code structure, and the readable and compilable presentation inherent to literate programming by source code cell execution, result visualisation, interactivity, weak single file metaphor, and executable presentation inherent to notebook interfaces. The essential new trait is cell execution with per-cell set programming language. The method can be executed using the Org Mode notebook interface. According to the hypothesis, the method extends explanatory narratives in the source file compared to bare literate programming. The hypothesis realises itself in the studied case, but with a single case the result cannot be generalised. In the studied case, explanatory narration is extended by interactive program environment setup, unit testing and visual testing, all borne of cell execution.
Menetelmän johto alkoi katsastamalla vihkokäyttöliittymien kirjo ja vetämällä yhteen niiden olennaiset piirteet. Tämän jälkeen piirteet rajattiin arvioiden niiden ohjelmistotuotannollista pätevyyttä, minkä jälkeen muodostettiin menetelmähypoteesi. Menetelmällä tuotettiin selainsovellus, jonka vihkokäyttöliittymää tutkittiin laadullisen tapaustutkimuksen keinoin.
Menetelmä laajentaa literate-ohjelmoinnille ominaista monimediaista proosaa, kiedontaa, mielivaltaista lähdekoodirakennetta, luettavaa ja käännettävää esitystä vihkokäyttöliittymien lähdekoodisolujen suorituksella, tulosten visualisoinnilla, vuorovaikutteisuudella, heikolla yhden tiedoston periaatteella ja ajettavalla esityksellä. Olennainen laajentava piirre on koodisolujen suoritus solukohtaisesti valittavalla ohjelmointikielellä. Menetelmän voi toteuttaa Org Mode -vihkoalustalla. Hypoteettisesti menetelmä laajentaa lähdetiedoston perustelevaa kerrontaa literate-ohjelmointiin verrattuna. Hypoteesi toteutuu tutkittavassa tapauksessa, mutta yksittäisenää tapauksena tulosta ei voi yleistää. Tapauksessa perustelevaa kerrontaa syntyy koodisolujen suorittamisesta syntyneestä vuorovaikutteisesta ajoympäristön asennuksesta, yksikkötestauksesta ja visuaalisesta testauksesta.
An essential part of maintaining and reusing source code is adopting new codebases. System documentation facilitates this. However, system documentation gets out-of-date and so a lot of research effort is being put into automatic generation of documentation from source code. Documentation derived this way does not answer all questions a naive software developer might have. This work concentrates on a way to combine system documentation with source code, so that the handwritten documentation stays up-to-date more easily. When deriving a new method, questions that cannot be answered are considered, so the method can also be useful as a part of such automatised infrastructure. Various modern notebook interfaces and literate programming set the stage for deriving the new method.
Deriving the method started by reviewing a variety of notebook interfaces and putting together their essential traits. The traits that didn't fit software engineering were pared down, after which a method hypothesis was formed. A browser app was produced using the method and its notebook interface was studied using qualitative case study methods.
The new method extends the multimedia prose, tangling, arbitrary source code structure, and the readable and compilable presentation inherent to literate programming by source code cell execution, result visualisation, interactivity, weak single file metaphor, and executable presentation inherent to notebook interfaces. The essential new trait is cell execution with per-cell set programming language. The method can be executed using the Org Mode notebook interface. According to the hypothesis, the method extends explanatory narratives in the source file compared to bare literate programming. The hypothesis realises itself in the studied case, but with a single case the result cannot be generalised. In the studied case, explanatory narration is extended by interactive program environment setup, unit testing and visual testing, all borne of cell execution.