4.1 C++-kielen tyylianalysaattori Style++

Koko: px
Aloita esitys sivulta:

Download "4.1 C++-kielen tyylianalysaattori Style++"

Transkriptio

1 40 Harjoitustöiden laadun kehittäminen ihin, joiden tarkastaminen ja ohjaaminen oli aikaisemmin hyvin vaikeaa. Osa näistä työkaluista on havaittu niin hyödyllisiksi, että laitoksen henkilökunta ja opiskelijatkin käyttävät niitä kaikessa C++-ohjelmoinnissaan, myös kurssien harjoitustöiden ulkopuolella. Luvun alussa esitellään useita tällaisia opiskelijan työtä tukemaan tarkoitettuja työkaluja sekä lopuksi harjoitustöiden henkilökohtaisuuden tarkistamiseen opettajalle toteutettu kopiotarkastustyökalu. 4.1 C++-kielen tyylianalysaattori Style++ Kirsti Ala-Mutka, Toni Uimonen Johdanto Ohjelmiston laatuun vaikuttavat monet tekijät. Useimmin ohjelmoinnin opetuksessa keskitytään niistä selkeimmin käsiteltäviin ja määriteltäviin: ohjelmistoprosessiin itseensä, ohjelman rakenteen ja toiminnallisuuden tarkasteluun sekä käytettyjen algoritmien ja tietorakenteiden arviointiin. Kuitenkin käytännössä hyvien ohjelmistojen toteuttamiseksi olisi kiinnitettävä erityistä huomiota myös ohjelman ymmärrettävyyteen ja ylläpidettävyyteen, joille on vaikeampi löytää selkeää määritelmää. Tampereen teknillisen korkeakoulun ohjelmistotekniikan laitoksella asiaa lähestyttiin ohjelmointityylin käsitteen määrittelyllä ja tyylin mittaamiseen perustuvalla arvioinnilla. Luomalla selkeät määrittelyt tyylin käsitteelle ja tyylin osatekijöiden mittaamiselle saatiin aikaan pohja, jolle voitiin toteuttaa ohjelmointityyliä automaattisesti arvioiva työkalu ohjelmointikurssien opetuksen avuksi Tyylin määrittely Perinteisesti ohjelmointityyliin ei ole kiinnitetty ohjelmointikurssien opetuksessa kovin paljon huomiota. Tämä johtuu useista syistä, joista tärkeimpänä on yleensä resurssien puute. Töille ei pystytä varaamaan niin paljon tarkastusaikaa, että tarkastaja ehtisi kunnolla arvioida myös ohjelman ulkoasua. Harjoitustöiden tarkastusruuhkassa huomio kiinnitetään lähinnä ohjelman toimintaan ja rakenteeseen, ulkoasusta palautetta annetaan lähinnä erityisen silmäänpistävissä tapauksissa. Niinpä opiskelijat eivät perusohjelmointitaitoja opiskellessaan välttämättä opi kiinnittämään tyyliseikkoihin huomiota lainkaan. Ohjelman ulkoasun ja selkeiden toteutustapojen merkitys selviää opiskelijalle usein vasta paljon myöhäisemmässä vaiheessa suuria ohjelmia toteutettaessa valitettavan usein kantapään kautta. Lisäksi eri harjoitustöiden tarkastajilla on erilaisia käsityksiä hyvästä ohjelmointityylistä, ja niinpä opiskelija saattaa saada jopa ristiriitaisia palautteita eri kursseilla. Moni assistentti ei myöskään välttämättä ole itsekään tietoinen siitä, mikä on ylläpidettävyyttä ja luettavuutta edistävää hyvää ohjelmointityyliä.

2 Harjoitustöiden laadun kehittäminen 41 TTKK:lla pyrittiin ratkaisemaan ongelma luomalla laitokselle oma tyyliopas C++kielisten ohjelmien kirjoittamiseen [4]. Oppaaseen on kerätty ohjeita, joita noudattamalla opiskelijat oppivat tuottamaan selkeitä ja tyyliltään yhdenmukaisia ohjelmia. Oppaassa on myös runsaasti sääntöjä, joita noudattamalla voidaan välttyä C++-kielen vaarallisilta sudenkuopilta. Yhtenä esimerkkinä kielen vaarallisista piirteistä ovat kääntäjän automaattisesti luomat oletusrakentajat. Tyylioppaan säännöt perustuvat ISO C++-standardiin sekä useisiin muihin tunnettuihin tyylioppaisiin, kuten esimerkiksi Ellemtelin opas sekä Meyersin ja Cargilin teokset [3][6][7][8]. Olemassa olevat tyylioppaat sisältävät paljon yhteneviä sääntöjä. Kun opiskelija on opetellut yhdet yleisten periaatteiden mukaiset tyyliohjeet, hänen on helppo omaksua toiset ohjeet, jotka ovat yleensä hyvin samantapaiset. Niinpä annettujen tyyliohjeiden noudattamisen opettelu jo harjoitustöissä valmistaa opiskelijaa myöhemmin työelämässä vastaan tulevaan tilanteeseen, jossa ohjelmat on kirjoitettava työnantajan nimeämien tyyliohjeistuksien mukaan. Pelkkä tyylioppaan luominen ja oppaan ohjeiden noudattamiseen kehottaminen ei kuitenkaan vielä edistänyt ohjelmointiharjoitustöiden tasoa huomattavasti. Kokonaisuudessaan tyyliopas sisältää hyvin paljon asioita, joista perusohjelmointikurssia käyvän on vaikea löytää omaa harjoitustyötään koskevia kohtia. Toisaalta taas jatkokursseja opiskeleville lähes kaikki tyylioppaan säännöt ovat tarpeellisia. Opiskelijat eivät kuitenkaan joko kiireen vuoksi tai tietämättään aina noudata näitä ohjeita, ellei sitä systemaattisesti valvota. Yhtenäisten tyyliohjeiden luominen ei siten vähennä ohjelmointityylin tarkastukseen tarvittavaa työmäärää tai assistenttiresursseja. Tyyliopas toimikin aluksi lähinnä suositeltavana oheismateriaalina ohjelmointikursseilla, eikä sen noudattamista erityisesti tarkastettu harjoitustöissä Tyylianalysaattorin synty Tyylin tarkastamisen avuksi päätettiin toteuttaa työkalu, joka mittaa lähdekielisestä ohjelmasta tiettyjä mittauspisteitä ja tuottaa niiden perusteella arvion ohjelman tyylistä. Työ aloitettiin keräämällä laitoksen ohjelmoinnin opettajilta toiveita ja ideoita automaattisesti arvioitavista ohjelmointityylinäkökohdista. Tämän palaverin ja laitoksen tyylioppaan pohjalta käynnistettiin diplomityöprojekti, jossa määriteltiin ja toteutettiin automaattinen tyylianalysaattori [9]. Diplomityössä määritellään tyylikäsitepuu, jossa hahmotellaan eri tyylin osatekijöiden liittymistä toisiinsa. Diplomityössä lähestyttiin tyylin mittaamista jakamalla tyyliä yhä pienempiin osatekijöihin, kunnes päästiin pieniin, mitattavan suuruisiin tekijöihin saakka. Osa mitattavista tyylitekijöistä oli toki mietittynä jo ennen tyylipuun rakentamista, mutta näin saatiin määriteltyä niiden liittyminen muihin ohjelmointityylin osatekijöihin.

3 42 Harjoitustöiden laadun kehittäminen Eri kursseilla painotetaan erilaisia tyylitekijöitä. Perusohjelmointikursseilla ei tarvita lainkaan esimerkiksi luokkien periytymisen määrittelyyn liittyviä tyyliohjeita, jotka taas ovat jatkokursseilla erittäin olennaisia. Myös yhden kurssin sisällä arvosteluperusteet voivat vaihdella eri harjoitustöiden välillä. Esimerkiksi muutaman rivin mittaisissa harjoitustöissä vaaditaan suhteellisesti suurempaa kommenttimäärää kuin suurissa ohjelmissa. Tämän vuoksi tyylianalysaattorin suunnittelussa otettiin huomioon se, että opettajan täytyy voida helposti muokata analysaattorin arvosteluperusteita. Tavoitteena oli toteuttaa mahdollisimman monelle kurssille ja erilaisiin vaatimuksiin soveltuva työkalu. Arvostelutavan määritys perustuu erilliseen konfiguraatiotiedostoon, joka voidaan antaa analysaattorille käynnistyksen yhteydessä. Konfiguraatiotiedosto sisältää tunnisteet arvosteltaville mittauskohdille sekä ohjeet pisteiden myöntämisestä kohdittain. Jokaiselle arvostelukohdalle määritellään lisäksi painoarvo, jolla osio vaikuttaa analysaattorin antamaan kokonaispistemäärään. pisteet maksimipisteet IT1 IT2 IT3 0 analysoinnista P1 P2 P3 P4 saatu arvo Kuva 4.1 Tyyliarvostelukohdan pisterajojen määräytyminen Joustava ja helposti säädeltävä arvostelutapa saadaan määrittelemällä pisteytys arvostelukohdittain kuvan 4.1 esittämällä tavalla. X-akselilla ovat lähdekielisestä ohjelmasta mitatut arvot ja Y-akselilla analysaattorin antamat pisteet. Mallilla voidaan helposti määritellä arvoväli, jolla opiskelija saa maksimipisteet, sekä tarvittaessa välit, joilla pisteet skaalataan nollan ja maksimipisteiden välille. Tyypillisesti X-akselin arvot ovat prosenttilukuja (esimerkiksi kommenttirivien määrän osuus koodirivien määrästä) tai absoluuttisia arvoja (esimerkiksi goto-lauseiden määrä). Lisäksi konfiguraatiotiedostossa määritellään jokaiselle välille P i.. P j viesti, jonka analysaattori tulostaa, kun mittaustulos osuu kyseiselle välille. Tällä tavalla opettaja voi yksittäisessä arvostelukohdassa helposti sallia opiskelijoille vapauksia itse asettamissaan rajoissa. Vielä tärkeämpi tekijä kurssikohtaista

4 Harjoitustöiden laadun kehittäminen 43 arvostelumallia suunniteltaessa on arvosteltavien kohtien valinta sekä niiden keskinäinen painotus. Arvosteltavaksi voidaan asettaa esimerkiksi useita kohtia hyvin pienellä painoarvolla, jolloin opiskelija saa ohjeiden vastaisesta tyylistä huomautuksia menettämättä silti ratkaisevasti arvostelupisteitä. Kurssin kannalta olennaisimmat asiat voidaan myös määritellä painoarvoiltaan niin suuriksi, että hyväksytyn pistemäärän saadakseen opiskelijalla ei voi olla mikään näistä kohdista väärin (esimerkiksi ei sallita yhtäkään alustamatonta muuttujaa). On myös mahdollista antaa arvostelukohdalle negatiivinen painoarvo, jolloin tämän tyylikohdan toteuttaminen oikein ei vaikuta arvosteluun lainkaan, mutta virheet vähentävät yhteispistemäärää. Näin voidaan paremmin jakaa arvosteluun vaikuttavia pisteitä niille kohdille, joiden noudattamisesta halutaan palkita ja käyttää negatiivista pisteytystä kohtiin, joiden noudattamisen pitäisi olla itsestään selvää. Analysaattorin pohjana toimii Edison Design Groupin C++-kielen jäsentäjä (Front End) [5]. Jäsentäjä tuottaa lähdekielisestä ohjelmasta jäsennyspuun symbolitauluineen, joista analysaattori kerää tarvitsemansa tiedot. Osa tarkasteluista (esimerkiksi mittauspisteet, joissa lasketaan rivimääriä) tehdään suoraan lähdekielisestä ohjelmasta Tyylianalysaattorin käyttö Tyylianalysaattori käynnistetään antamalla argumenteiksi kaikki tarkastettavaan ohjelmaan kuuluvat lähdekieliset ohjelmatiedostot. Parametreina voidaan antaa arvostelussa käytettävä konfiguraatio sekä tulostusta valitsevia ja muotoilevia optioita. Analysaattoriin on olemassa sekä X-käyttöliittymä että yksinkertainen komentotulkille annettava käynnistyskomento. TTKK:n perusohjelmointikursseilla on harjoitustöiden palautuksessa käytetty samalla automaattisia tarkastuksia suorittavaa Ceilidh-järjestelmää TTKK:n toimintatapoihin sovitettuna [2][1]. Tyylianalysaattorin tuloste on tämän vuoksi suunniteltu siten, että sitä voidaan käyttää yhtenä Ceilidhin käynnistämistä tarkastustyökaluista. Tyylianalysaattori tuottaa opiskelijan saaman pistemäärän arvostelukohdittain. Haluttaessa analysaattori kertoo myös tarkat mittausarvot sekä maksimipisteisiin vaaditut arvot. Varsinaisen pisteytyksen lisäksi analysaattori voidaan asettaa tuottamaan kaikista arvosteluperusteiden vastaisista tyylipiirteistä varoitukset rivinumeroineen. Tyylianalysaattorin käyttötapa on vaihdellut eri ohjelmointikursseilla. Kaikilla kursseilla työkalu kuitenkin tarjotaan opiskelijoille vapaasti käytettäväksi, eikä sitä pidetä ainoastaan opettajan tarkastustyökaluna ja tyyliohjeiden noudattamispelotteena. Kursseilla, joilla opettaja erityisesti kannustaa työkalun käyttöön, hän luo kurssille tarpeelliseksi katsomansa arvostelukonfiguraatiot ja antaa ne opiskel-

5 44 Harjoitustöiden laadun kehittäminen ijoille käytettäväksi kurssin harjoitustöiden kehitysvaiheessa. Käytännössä arvostelukonfiguraation pisterajoja asetettaessa opiskelijoille on annettu pientä joustovaraa, joten analysaattorin käyttö ei pakota kaikkia tiukasti samaan kirjoitustapaan. Opettaja yleensä painottaa kurssilla tärkeimpiä tyyliseikkoja, ja antaa muille kohdille pienemmät painoarvot tai poistaa ne kokonaan. Analysaattorin käyttöä suositellaan kaikille opiskelijoille parantamaan tyyliohjeiden oppimista. Kursseilla, joilla harjoitustöille suoritetaan automaattisia tarkistuksia, vaaditaan tyyliohjeiden noudattamista tiettyyn tyylianalysaattorin pistemäärään saakka. Pisterajat voidaan tällöin asettaa siten, että päästäkseen läpi opiskelijan on ehdottomasti noudatettava tärkeimmiksi painotettuja arvostelukohtia, mutta painoarvoltaan vähäisemmissä kohdissa voi olla puutteita. On myös kursseja, joilla tyylianalysaattori ei virallisesti ole osa harjoitustöiden arvostelua, mutta opiskelijat velvoitetaan käyttämään analysaattoria ja perustelemaan ratkaisunsa, mikäli ohjelma ei jostain syystä saa täyttä tyyliarvosanaa kurssille luodulla arvostelukonfiguraatiolla Kokemukset Style++-tyylianalysaattoria on syksystä 1999 lähtien käytetty yhteensä neljällä eri kurssilla ohjelmointityylin opetuksessa. Aluksi ohjelmasta löytyi ongelmia ja virheitä, joita korjailtiin ensimmäisen lukukauden ajan. Myös järkevien arvostelupisterajojen miettiminen sekä työkalun käytön opettelu veivät opettajien ja opiskelijoiden aikaa. Nämä ongelmat ratkesivat nopeahkosti. Opiskelijoiden totuttaminen uusiin vaatimuksiin kesti pitempään. Tyyliohjeiden noudattamisen mittaaminen ohjelmointiharjoitustöissä oli uusi vaatimus, joka herätti vastustusta vanhoihin käytäntöihin tottuneissa opiskelijoissa. Yhtä suureen muutosvastarintaan ei enää toisena vuonna törmätty. Opiskelijat epäilivät eri arvostelukohtien järkevyyttä sekä arvostelivat mielestään liian tiukkoja arvosanaperusteita. Tyyliohje tuntui olevan hyvin suurelle osalle opiskelijoista aivan tuntematon asia, ja kun sen noudattamista nyt mitattiin automaattisesti, opiskelijat eivät aina ymmärtäneet mitä heidän olisi pitänyt ohjelmassaan tehdä toisin. Tyylianalysaattorilla on oma www-sivusto, jossa selitetään vaatimukset arvostelukohdittain. Sen sijaan, että olisivat noudattaneet ohjeita oikein, opiskelijat kuitenkin keksivät joskus hyvin luovia tapoja pisteiden saamiseen. Esimerkiksi voidaan ottaa tyyliohje, jonka mukaan ohjelmissa ei saa käyttää ohjelmakoodin lomaan kirjoitettuja numeroarvoja. Säännön tavoitteena on tuottaa helpommin luettavia ja ylläpidettäviä ohjelmia. Numeroarvon toistuvan kirjoittamisen sijasta sille tulee määritellä merkitystä kuvaava nimi, ts. tehdä siitä vakio, johon muualla ohjelmassa viitataan. Tälle säännölle löytyi useita eri toteutustapoja, jotka noudat-

6 Harjoitustöiden laadun kehittäminen 45 tivat säännön kirjainta, mutta ei henkeä. Esimerkiksi tehtävässä, jossa käytettiin maksimissaan sata alkiota sisältävää taulukkoa, löytyi muutama toteutus, jossa maksimiarvoa ilmaiseva luku 100 oli kyseenalaisen oikeaoppisesti määritelty vakioksi nimeltä SATA. Varsinkin keväällä 2000, kun Style++ otettiin käyttöön tietorakenteiden ja algoritmien kurssilla, asia herätti hyvin paljon keskustelua kurssin uutisryhmässä. Keskustelu koski usein ongelmia arvosteluperusteiden ymmärtämisessä tai muuttui väittelyksi koko tyyliohjeen kohdan tarpeellisuudesta. Erityisesti pari vuotta omalla vapaalla tavallaan ohjelmia kirjoittaneet opiskelijat suhtautuivat hyvin negatiivisesti uusiin vaatimuksiin, vaikka arvosteluperusteisiin oli asetettu joustavuutta, jotka käytännössä sallivat opiskelijoille melko runsaasti vapauksia. Kyse olikin usein väärin ymmärretystä arvosteluperusteesta tai lukematta jätetystä ohjeesta. Tarkastajalle tuli vastaan muun muassa harjoitustöitä, joissa kommenttirivien suhteellisen määrän vaatimusta oli kierretty kirjoittamalla hölynpölyä sisältäviä kommentteja. Koska automaattisia tarkistuksia kuitenkin käytettiin kurssilla vain työn tason esitarkastajana, assistentti tarkasti työt aina vielä henkilökohtaisesti. Työ palautettiin opiskelijalle korjattavaksi, ellei se todellisuudessa täyttänyt tyylivaatimuksia tyylianalysaattorin myöntämistä pisteistä huolimatta. Tällä käytännöllä vastahakoisimmatkin opiskelijat vähitellen myöntyivät myös todellisuudessa noudattamaan asetettuja vaatimuksia. Kiivas ja melko usein negatiivinen keskustelu kurssin aikana kuitenkin herätti epäilyksen siitä, että työkalun toteutuksessa ja sen arvosteluperusteissa oli jotain pahasti vialla. Niinpä loppukeväästä 2000 teetettiin edellämainitun tietorakenteiden kurssin opiskelijoille mielipidemittaus Style++-työkalusta. Kyselyyn vastasi 61 opiskelijaa, mikä vastaa noin 40 % kurssin keväällä suorittaneista. Kuva 4.2 esittää mielipidemittauksen tulokset kaaviona. Ylivoimaisesti suurin osa opiskelijoista piti työkalua hyödyllisenä apuvälineenä, vaikka kurssin uutisryhmässä olikin nähtävillä lähinnä muutaman henkilön näkyvästi antamaa negatiivista palautetta. Melko moni piti kuitenkin työkalua liian pikkutarkkana, mikä huomioitiin seuraavana vuonna arvostelukonfiguraation pisterajoja asetettaessa. Joiltain kurssin opiskelijoilta tuli assistentille myös henkilökohtaista palautetta, jossa pidettiin tyylin tarkastusta hyvänä asiana. Lupasipa joku opiskelija ryhtyä käyttämään tyylianalysaattoria vastaisuudessa apuna kaikessa C++-ohjelmoinnissaan.

7 46 Harjoitustöiden laadun kehittäminen Työkalun käyttämisessä tulee tällä hetkellä vastaan silloin tällöin ongelmia, jotka johtuvat siitä, että työkalun sisäisesti käyttämässä jäsentäjässä on virheitä, joiden vuoksi tarkastettavasta ohjelmasta ei aina pystytä tuottamaan jäsennyspuuta. Ongelmia ovat aiheuttaneet myös käytössä olevat gcc-kääntäjän kirjastot, jotka ovat uuteen C++-standardiin verrattuna vielä osittain ristiriitaisia ja puutteellisia. Itse tehtyjen korjausten avulla työkalu on kuitenkin saatu sellaiseen kuntoon, että suurin osa uusimmista kielen piirteistä pystytään jo käsittelemään onnistuneesti. On silti valitettavaa, että pääaineopiskelijat voivat harjoitustöissään välillä törmätä virhetilanteisiin, jotka vähentävät luottamusta koko työkaluun. Tilanne tulee parantumaan, kun kaikki uuden kääntäjäversion kirjastot saadaan käyttöön. Myös jäsentäjän toteutukseen toivotaan korjausta Edison Design Groupilta, joka on toimittanut tuotteestaan säännöllisesti uusia versioita Yhteenveto Kuva 4.2 Opiskelijoille tehdyn mielipidekyselyn tulokset Style++ mittaa useita erilaisia ohjelman ulkoasuun, C++-kielen oikeaan käyttöön ja hyviin ohjelmointitapoihin liittyviä asioita. Arvosteluperusteiden määrittely ja mitattavien kohtien valinta on pyritty tekemään mahdollisimman joustavaksi, jotta työkalu soveltuisi eri asioita painottaville ohjelmointikursseille. Myös uusien arvostelukohtien lisääminen työkaluun on mahdollista. Tyylianalysaattorin suunnittelussa on pyritty miettimään toteutuksen arkkitehtuuri siten, että samalla peri-

8 Harjoitustöiden laadun kehittäminen 47 aatteella voitaisiin toteuttaa tyylitarkastustyökaluja myös muille ohjelmointikielille. Laajempi selostus tyylianalysaattorin toteutuksesta löytyy Toni Uimosen diplomityöstä [9]. Arvostelukohdista, niiden perusteluista sekä mittaustavasta kiinnostuneille löytyy lisätietoa myös Style++-työkalun kotisivulta osoitteesta Harjoitustöiden tarkastajan kannalta tyylianalysaattorin käyttöönotto on vaikuttanut tarkastustyömäärään ja tarkastustyön sisältöön selvästi. Kun työt ovat tarkastukseen tullessaan riittävän hyvin tyyliohjeiden mukaisia, niiden lukeminen on helppoa ja tarkastajalla riittää aiempaa enemmän aikaa työn algoritmien ja muiden toteutusyksityiskohtien tarkasteluun. Suoritusarvosanaan laskettavaa tyyliarvostelua ei kuitenkaan kannata jättää pelkän automatiikan varaan, koska Style++ ei esimerkiksi ymmärrä kommenttitekstien sisältöä eikä siten pysty mittaamaan kaikkia tyylitekijöitä luotettavasti. Automaattinen tyylianalysaattori on kuitenkin osoittautunut opiskelijoille hyväksi perustyylin opettajaksi sekä assistentille hyödylliseksi palautettujen harjoitustöiden luettavuuden varmistajaksi. Käytännön kokemusten perusteella on nähtävissä, että yhtenäisten tyyliohjeiden ja arvostelutyökalun hyödyntämiseksi parhaalla mahdollisella tavalla tyylinäkökohtia olisi käsiteltävä kurssin opetuksessa muutenkin kuin jaettavan ohjeen ja harjoitustyön tarkastuksen yhteydessä tapahtuvan mittauksen muodossa. Opiskelija, jolla ei ole ohjelmointikokemusta, ei pysty vielä pelkän säännön ja sen lyhyen perustelun pohjalta välttämättä näkemään todellista syytä ja järkeä säännön olemassaoloon. Vaikka sääntöjä voidaan vaatia noudattamaan ymmärtämättä niiden todellista syytä, on oppimistulos luonnollisesti parempi, kun opiskelija tietää, miksi hänen on järkevää opetella kirjoittamaan ohjelma tietyllä tavalla. Hyvän ohjelmointityylin perusteiden opettelu kuuluu perusohjelmointikurssille, mutta myös syventävissä opinnoissa vastaan tulevien uusien ohjeiden perusteet olisi selvitettävä kunnolla. LÄHTEET [1] Ala-Mutka, K Tietokoneavusteinen ohjelmoinnin opetus. Diplomityö, Ohjelmistotekniikan laitos, Tampereen teknillinen korkeakoulu. 54 s. [2] Benford, S., Burke, E. & Foxley, E The Design Document for Ceilidh Version 2, LTR Report, Computer Science Department, Nottingham University. [3] Cargill, T C++ Programming Style, Addison Wesley. [4] C++ tyyliopas. Ohjelmistotekniikan laitos, Tampereen teknillinen korkeakoulu,

9 48 Harjoitustöiden laadun kehittäminen [5] Edison Design Group Compiler Front Ends for the OEM Market, [6] Henricson, M., & Nyquist E Programming in C++, Rules and Recommendations, Ellemtel Telecommunication Systems Laboratories. [7] International standard ISO/IEC Programming languages C++. American National Standards Institute, New York [8] Meyers, S Effective C++: 50 specific ways to improve your programs, Addison Wesley. 206 s. [9] Uimonen, T Tyylin automaattinen arviointi ohjelmistoissa. Diplomityö, Ohjelmistotekniikan laitos, Tampereen teknillinen korkeakoulu. 65 s. 4.2 Muistinhallintaa avustava kirjasto Tutnew Matti Rintala Tausta C++ on teollisuudessa erittäin suosittu ohjelmointikieli ja siitä johtuen sitä käytetään myös opetuskielenä suuressa osassa oppilaitoksia. C++ on erittäin tehokas ja varsin monikäyttöinen ohjelmointikieli, mutta sitä ei ole suunniteltu opetuskäyttöön, mistä johtuen kieli sisältää monia ansoja ja vaaroja, jotka aiheuttavat ylimääräistä päänvaivaa erityisesti aloittelevalle ohjelmoijalle, jolla usein ei ole käsitystä siitä, mistä ja miten ohjelmassa olevaa virhettä kannattaisi etsiä. Toinen ongelma ohjelmoinnin opetuksessa on, että opetuksessa yleensä korostetaan, että ohjelmien tulisi pystyä reagoimaan järkevästi muistin loppumiseen. Tätä on kuitenkin erittäin vaikea testata, koska nykyisissä tietokoneissa muistia on niin paljon, että sen loppuminen on erittäin epätodennäköistä ja usein vaikea saada aikaan. Tutnew on Tampereen teknillisellä korkeakoululla käytössä oleva kirjasto, joka auttaa ohjelmoijaa C++:n dynaamisen muistinhallinnan virheiden huomaamisessa ja paikantamisessa. Lisäksi Tutnew antaa mahdollisuuden simuloida koneen muistin loppumista sekä saada tilastotietoa dynaamisen muistin käytöstä. Tutnew ei pyri korjaamaan muistinhallinnan virheitä, vaan mahdollisuuksien mukaan antamaan ohjelmoijalle selkeitä virheilmoituksia, jotka kertovat mitä ja missä on mennyt pieleen. Tutnew pyrkii lisäämään mahdollisuutta, että muistinhallinnan