Siirry pääsisältöön
ActivePapers Tallenna datasi uudelleenlaskettavina dokumentteina – näin jokaisen julkaistun tuloksen voi ajaa uudelleen, varmistaa ja säilyttää.

Osa tämän sivuston linkeistä on kumppanuuslinkkejä: ostamalla niiden kautta voimme ansaita komission ilman lisäkustannuksia sinulle. Tämä ei vaikuta suosituksiimme. Lue lisää kumppanuusilmoituksestamme. Kumppanuusilmoitus.

Ohjelmistojen ylläpito tutkimuksessa

Python-versio JVM-versio Blogi … kirjasto —> Ohjelmistojen ylläpito tutkimuksessa, kirjoittanut Konrad Hinsen, julkaistu 26.2.2014 Ohjelmistojen ylläpito on yksi niistä haasteista, joita tieteellisen ohjelmiston kehittäjät kohtaavat säännöllisesti. Se on tärkeää työtä, mutta se vie paljon aikaa, eikä nykyinen arviointijärjestelmä sitä juurikaan palkitse.

Laajan ohjelmistoprojektin hallinnoinnissa rahoituksen saaminen ylläpitotyölle on yleensä vaikeaa. Koska ohjelmistojen ylläpito on vaativaa eikä sinänsä tieteellisesti kiinnostavaa, meidän tulisi kysyä itseltämme, miksi se on välttämätöntä ja voisimmeko tehdä jotain vähentääksemme sen tarvetta.

Ensinnäkin: mitä ohjelmistojen ylläpito oikeastaan on? Merriam-Webster määrittelee verbin “maintain” (ylläpitää) tarkoittavan jonkin pitämistä hyvässä kunnossa korjaamalla, ongelmia ratkomalla jne. Tämä on järkevää teknisen laitteiston kohdalla, joka ajan myötä kuluu mekaanisesti jne. Ohjelmisto ei kuitenkaan kulu, joten ylläpidon on tarkoitetava jotain muuta, kun sitä sovelletaan ohjelmistoihin. En tunne mitään yleisesti hyväksyttyä määritelmää, joten esitän tässä omani:

Ohjelmistojen ylläpito koostuu ohjelmiston muokkaamisesta jommastakummasta seuraavista syistä:

  • Virheiden korjaaminen.
  • Ohjelmiston käyttökelpoisuuden säilyttäminen muuttuvissa tietoteknisissä ympäristöissä.

Jotkut lisäisivät tähän luetteloon toiminnallisia parannuksia, mutta niitä ei varsinaisesti voi pitää ylläpitona vaan ennemminkin paranteluna. Erityisesti tieteellisen ohjelmiston kohdalla uusi toiminnallisuus tarkoittaa usein uutta tiedettä.

Ensinnäkin virheet. Kuten minkä tahansa ohjelmiston kohdalla, myös tieteellisessä ohjelmistossa haluamme virheet korjatuiksi, jotta tulevaisuudessa saataisiin parempia tuloksia.

Aiheeseen liittyvä: — Interaktiiviset Python- ja datatieteen kurssit, jotka koodaat suoraan selaimessa.

Haluamme kuitenkin säilyttää myös virheellisen version, jos jotakin julkaistua tieteellistä tutkimusta on tehty sitä käyttäen. Kyse on yksinkertaisesti rehellisyydestä ja tieteellisen tiedon säilyttämisestä: jos on mahdollista, että tutkimuksen tulokseen on vaikuttanut ohjelmistovirhe, tutkimusta tarkastelevilla henkilöillä pitäisi olla mahdollisuus selvittää tämä. Heillä pitäisi olla pääsy täsmälleen samaan ohjelmistoversioon, jota alun perin käytettiin, eikä vain tämän päivän paranneltuun seuraajaan.

Tästä syystä tutkimuksessa käytetyn koodin säilyttäminen on itse asiassa tärkeämpää kuin virheiden korjaaminen. ActivePapers suunniteltiin tätä tavoitetta silmällä pitäen: kaikki ActivePaperissa olevat lasketut datakohteet on linkitetty ne tuottaneeseen ohjelmistoon.

Lisäksi tämä linkki on ehdottomasti muuttumaton julkaisun jälkeen, sillä ActivePaperit julkaistaan kuten artikkelien sähköiset kopiot ja niihin viitataan DOI-tunnisteiden avulla. Julkaisua ennen voi huijata muokkaamalla ActivePaperia nimenomaan petoksen tekemiseksi. ActivePapers ei tue tällaisia toimia, mutta ei myöskään tee erityisiä ponnisteluja petosten estämiseksi. Tällaisia ominaisuuksia voitaisiin lisätä suojaamalla alkuperätiedot tiivisteillä (hashes), mutta toivon, ettei tämä ole tarpeen.

Lukijan suosikki: — Projektipohjaiset tietotieteen polut ohjatulla päätteellä ja todellisilla tietojoukoilla.

Toinen ongelma, eli muuttuvat tietotekniset ympäristöt, on hienovaraisempi. On elämän tosiasia, että kaikki tietotekniikan maailmassa (tietokoneet, käyttöjärjestelmät, kääntäjät, kielimääritelmät, kirjastot…) muuttuu nopeasti, minkä seurauksena tietty lähdekoodi ei todennäköisesti toimi sellaisenaan muutaman vuoden kuluttua.

Tämä johtuu kahdesta syystä: (1) tekninen kehitys mahdollistaa entistä parempia tietokoneita ja ohjelmistoja, mitä ihmiset haluavat, ja (2) kenelläkään ei ole suoraa etua tietoteknisten alustojen stabiiliuteen eikä valtaa saada sitä aikaan. Laitteistovalmistajille ja kaupallisten ohjelmistojen toimittajille nopea muutos on paras tapa varmistaa, että asiakkaat ostavat uusia koneita ja uusivat lisenssinsä säännöllisesti.

On tietenkin ainakin yksi yhteisö, jolla on suoraa etua tietoteknisten alustojen stabiiliuteen: laskennallisen tieteen yhteisö. Jos voisimme ajaa ohjelmistomme 20 vuoden kuluttua ilman muokkauksia ja saada samat tulokset, olisimme tyytyväisiä.

Emme halua tehdä ohjelmistojen ylläpitotyötä, eikä useimmat meistä pysty kohtuudella ylläpitämään omaa tutkimustaan varten kehittämäänsä ohjelmistoa välittömien henkilökohtaisten tarpeidensa yli. On vielä epärealistisempaa odottaa kenenkään ylläpitävän jonkun muun ohjelmistoa, esimerkiksi sellaista, jonka väitöskirjatutkija on jättänyt jälkeensä siirryttyään teollisuuteen.

Käytännössä vain laajasti käytetty yhteisöohjelmisto saa ylläpitoa riittävän pitkien aikajaksojen yli. Mutta jopa tutkimusprojektit, jotka käyttävät laajalti käytettyjä ja ylläpidettyjä paketteja, vaativat yleensä myös projektikohtaista ohjelmistoa, vähintäänkin pari shell-skriptiä. Tämä on yksi syy siihen, miksi laskennallisten tutkimusten toistettavuus on niin heikkoa.

Voisiko tiedeyhteisö tehdä asialle jotain? Uskon, että se voisi, mutta en ole optimistinen sen suhteen, että se ryhtyisi toimiin lähitulevaisuudessa. On todennäköistä, että tutkijat jatkavat kaupallisen laitteiston käyttöä tieteellisessä laskennassa, mikä tarkoittaa, että heidän on hyväksyttävä laitteiston ja siihen liittyvän järjestelmäohjelmiston kehitys, joka on heidän kontrollinsa ulkopuolella.

Aiheeseen liittyvä: — Syvä tekninen kirjasto tieteellisten laskennan kirjoja, videoita ja live-koulutuksia.

He voivat kuitenkin rakentaa stabiilin alustan näiden jatkuvasti muuttuvien alustojen päälle, ainakin työnsä puhtaasti laskennallista osaa varten.

Perustasolla kaikki Turing-täydelliset ohjelmistojen notaatiot ovat ekvivalentteja ja ne voidaan muuntaa toisikseen. Käytännössä suorituskykyvaatimukset asettavat rajoituksia koodin muuntamiselle, mutta on silti mahdollista määritellä koodiesityksiä, jotka voidaan kääntää tehokkaasti kaikenlaisille taustalla oleville laitteistoille ja järjestelmäohjelmistoille ja jotka pysyvät siten stabiileina.

Kaksi todenperäistä esimerkkiä ovat JVM:n tavukoodi ja LLVM:n välimuoto. JVM:n tavukoodi on ollut olemassa 20 vuotta ja osoittautunut erittäin stabiiliksi. LLVM:n välimuodon ei ole tarkoitus olla stabiili, mutta tämä johtuu siitä, että LLVM:n kehittäjät eivät halua rajoittaa tulevia vaihtoehtojaan sitoutumalla stabiiliin esitystapaan. Googlen PNaCl-projekti yrittää ignoroida tämän varoituksen ja käyttää LLVM-koodia tavalla, joka on järkevää vain, jos se pysyy stabiilina. Aika näyttää, miten tämä tulee toimimaan.

Meidän valintamme: — Osta yksittäisiä tieteellisiä Python-kursseja suoraan, usein suurilla alennuksilla.

Tiedeyhteisö voisi määritellä oman välisen koodiesityksensä hyödyntäen kokemusta olemassa olevista lähestymistavoista ja optimoiden alustansa tieteellisiä sovelluksia varten. Mutta kuten edellä totesin, en ole optimistinen sen suhteen, että näin tapahtuisi.

Kaksi vaatimusta olisivat useiden suurten tutkimus- ja rahoitusorganisaatioiden pitkäaikainen sitoutuminen tämän alustan ylläpitoon vuosikymmenten ajan. Olen vakuuttunut siitä, että tämä olisi taloudellisesti järkevää, koska olen varma, että yhden alustan ylläpito on halvempaa kuin lukuisien tieteellisten ohjelmistopakettien ylläpito ja niiden jatkuv uudelleenkirjoittaminen, joita ei ole ylläpidetty. Se vaatisi kuitenkin sellaista sopimuksen ja sitoutumisen tasoa, joka on tieteessä harvinaista; sitä on tapahtunut vain muutaman valtavan installaation, kuten CERN:n, kohdalla.

Stabiilin alustan tarjoama merkittävä etu on syy, miksi ActivePapersin ensimmäinen versio suunniteltiin JVM:n ympärille. Valitettavasti JVM ei ole kovin suosittu tieteellisessä laskennassa. Tätä selitetään usein suorituskyvyn puutteella, vaikka tuo argumentti ei ole enää yhtä pätevä kuin ennen. Siinä on myös muutamia suunnitteluongelmia, erityisesti liukulukuoperaatioiden osalta, mutta samaa voidaan sanoa suosituista kielistä kuten C tai C++, mikä ei ole estänyt tutkijoita käyttämästä niitä.

Käytännöllisempi ActivePapersin Python-versio rakentuu alustalle, jonka määrittelee Scientific Python -ekosysteemi (erityisesti Python, NumPy ja h5py). Tämä alusta on osoittautunut menneisyydessä kohtalaisen stabiiliksi, ja suurin epävakauden aiheuttaja oli siirtyminen Python 3:een. Aikajänne, jonka yli tieteellinen

Lisälukemista


Omista elinikäinen kurssi, älä tilausta

Osta yksittäisiä tieteellisiä Python-kursseja suoraan, usein suurilla alennuksilla