haku: @keyword evaluation / yhteensä: 51
viite: 8 / 51
Tekijä:Penttilä, Elias
Työn nimi:Improving C++ Software Quality with Static Code Analysis
C++-ohjelmien laadun parantaminen staattisella koodianalyysillä
Julkaisutyyppi:Diplomityö
Julkaisuvuosi:2014
Sivut:85 + 11      Kieli:   eng
Koulu/Laitos/Osasto:Perustieteiden korkeakoulu
Oppiaine:Ohjelmistotekniikka   (T3001)
Valvoja:Malmi, Lauri
Ohjaaja:Björklund, Kaj
Elektroninen julkaisu: http://urn.fi/URN:NBN:fi:aalto-201406252203
OEVS:
Sähköinen arkistokappale on luettavissa Aalto Thesis Databasen kautta.
Ohje

Digitaalisten opinnäytteiden lukeminen Aalto-yliopiston Harald Herlin -oppimiskeskuksen suljetussa verkossa

Oppimiskeskuksen suljetussa verkossa voi lukea sellaisia digitaalisia ja digitoituja opinnäytteitä, joille ei ole saatu julkaisulupaa avoimessa verkossa.

Oppimiskeskuksen yhteystiedot ja aukioloajat: https://learningcentre.aalto.fi/fi/harald-herlin-oppimiskeskus/

Opinnäytteitä voi lukea Oppimiskeskuksen asiakaskoneilla, joita löytyy kaikista kerroksista.

Kirjautuminen asiakaskoneille

  • Aalto-yliopistolaiset kirjautuvat asiakaskoneille Aalto-tunnuksella ja salasanalla.
  • Muut asiakkaat kirjautuvat asiakaskoneille yhteistunnuksilla.

Opinnäytteen avaaminen

  • Asiakaskoneiden työpöydältä löytyy kuvake:

    Aalto Thesis Database

  • Kuvaketta klikkaamalla pääset hakemaan ja avaamaan etsimäsi opinnäytteen Aaltodoc-tietokannasta. Opinnäytetiedosto löytyy klikkaamalla viitetietojen OEV- tai OEVS-kentän linkkiä.

Opinnäytteen lukeminen

  • Opinnäytettä voi lukea asiakaskoneen ruudulta tai sen voi tulostaa paperille.
  • Opinnäytetiedostoa ei voi tallentaa muistitikulle tai lähettää sähköpostilla.
  • Opinnäytetiedoston sisältöä ei voi kopioida.
  • Opinnäytetiedostoa ei voi muokata.

Opinnäytteen tulostus

  • Opinnäytteen voi tulostaa itselleen henkilökohtaiseen opiskelu- ja tutkimuskäyttöön.
  • Aalto-yliopiston opiskelijat ja henkilökunta voivat tulostaa mustavalkotulosteita Oppimiskeskuksen SecurePrint-laitteille, kun tietokoneelle kirjaudutaan omilla Aalto-tunnuksilla. Väritulostus on mahdollista asiakaspalvelupisteen tulostimelle u90203-psc3. Väritulostaminen on maksullista Aalto-yliopiston opiskelijoille ja henkilökunnalle.
  • Ulkopuoliset asiakkaat voivat tulostaa mustavalko- ja väritulosteita Oppimiskeskuksen asiakaspalvelupisteen tulostimelle u90203-psc3. Tulostaminen on maksullista.
Sijainti:P1 Ark Aalto  1722   | Arkisto
Avainsanat:static code analysis
software quality
evaluation
automation
staattinen koodianalyysi
ohjelman laatu
arviointi
automaatio
Tiivistelmä (fin):Staattisella koodianalyysilla tarkoitetaan ohjelmakoodin analysointia suorittamatta sitä.
Tämä tekee siitä hyödyllistä ohjelmien automaattista analyysia varten.
Tyypillisiä käyttökohteita ovat ohjelmavirheiden havaitseminen sekä tyylitarkastuksien tekeminen.
Analyysityökalujen toteuttamiseen on useita algoritmeja sekä formaaleja menetelmiä.
Yksinkertaisemmat työkalut turvautuvat merkeistä koostuvien hahmojen etsimiseen lähdekoodista.
Toteutustavan valinta riippuu pitkälti halutusta analyysin tarkkuudesta.

Työssä esiteltiin C++-ohjelmien analyysiin kohdistuvia ongelmia.
Staattisen analyysityökalun on toimiakseen ymmärrettävä analysoitava koodi riittävän hyvin, jotta analyysin tuloksista olisi hyötyä.
Monella analyysityökalulla on vaikeuksia ymmärtää monimutkaista lähdekoodia, mikä koskee erityisesti avoimen lähdekoodin ohjelmia.
Työssä käsiteltiin lisäksi syitä miksi laajojen ohjelmien analysointi on hankalaa suurten varoitusmäärien takia.
Lopuksi listattiin viisi avoimen lähdekoodin analysointiohjelmaa sekä kuusi kaupallista ohjelmaa.

Työn tarkoituksena oli selvittää mahdollisuuksia integroida staattisia analyysiohjelmia olemassa oleviin kehitysprosesseihin suorittamalla ohjelmilla kaksiosainen arviointi.
Ensimmäinen arviointi koostui 30:stä synteettisestä testistä, joissa mitattiin analyysityökalujen tarkkuutta havaita ennalta määriteltyjä ohjelmavirheitä.
Clang-kääntäjä suoriutui parhaiten näistä testeistä.
Kaikki analyysityökalut havaitsivat kuitenkin eri virheitä, mikä vahvistaa käsitystä siitä, että mahdollisimman monen työkalun käyttö on suositeltavaa.
Toisessa arvioinnissa tutkittiin valituilla analyysityökaluilla kuutta eri DynaRoadin julkaisuversiota.
Saaduilla tuloksilla pystyttiin vertailemaan analyysityökalujen pätevyyttä havaita ohjelmasta raportoituja kaatumisvikoja.
Analyysityökalut eivät tunnistaneet yhtään tunnettua vikaa, mutta osoittivat hyödyllisyytensä löytämällä muita tuntemattomia vikoja.
Työn lopuksi käytiin läpi kolmen analyysityökalun integrointi olemassa oleviin kehitysprosesseihin.
Tiivistelmä (eng):Static code analysis is the analysis of program code without executing it.
Static analysis tools are therefore a useful part of automated software analysis.
Typical uses for these tools are to detect software defects and otherwise suspect code.
Several algorithms and formal methods are available specializing in code analysis.
Token pattern matching is used by simpler tools, while more in-depth tools prefer formal methods such as abstract interpretation and model checking.
The choice of algorithms thus depends on the preferred analysis precision and soundness.

We introduced the practical problems facing static analysis, especially in the context of C++ software.
For static analysis to work in a satisfiable way, the tool must understand the semantics of the code being analyzed.
Many tools, particularly open-source ones, have deficiencies in their capabilities of code understanding due to being unable to correctly parse complex C++.
Furthermore, we examined the difficulty of handling large numbers of warnings issued by these tools in mature software projects.
As a summary, we presented a list of five open-source and six commercial static analysis tools that are able to analyze C++ source code.

To find out the viability of integrating static analysis tools in real-world projects, we performed a two-part evaluation.
The first part was a measurement of the detection accuracy of four open-source and two commercial tools in 30 synthetic test cases.
We discovered that Clang excels in this test, although each tool found different sets of defects, thus reaffirming the idea that multiple tools should be used together.
In the second part of the evaluation, we applied these tools on six consecutive point releases of DynaRoad.
While none of the tools were able to detect any of the crash defects known in these releases, they proved to be valuable in finding other unknown problems in our code base.
Finally, we detailed the integration effort of three static analysis tools into our existing build process.
ED:2014-08-03
INSSI tietueen numero: 49421
+ lisää koriin
INSSI