Staatiline programmi analüüs

 
Staatiline programmi analüüs onarvutitarkvara analüüs, mis töötab ilma programmi käivitamata. Programmi töötamise ajal tehtavad analüüsi nimetataksedünaamiliseks analüüsiks. Staatilist analüüsi rakendatakse peamiselt programmilähtekoodile või objektkoodile.
Terminit rakendatakse tavaliselt analüüsile, mida teeb automatiseeritud tööriist. Inimese tehtud analüüsi kutsutakse programmi mõistmiseks või koodi ülevaatuseks. Koodi ülevaatusel kasutatakse ka tarkvara inspekteerimist ja tarkvara süstemaatilist läbimist.
Põhimõtted.
Analüüsi keerukus sõltub sellest, kas koodi töötlev analüüsi tööriist käsitleb ainult individuaalsete lausete ja deklaratsioonide käitumist või tervet lähtekoodi terviklikuna. Analüüsist saadud informatsiooni kasutuskohad varieeruvad potentsiaalsete vigade esiletõstmisest (näiteks lint-tööriist) kuni formaalsete meetoditeni, mis matemaatiliselt tõestavad programmi omadusi (näiteks kas programmi käitumine vastab spetsifikatsioonile).
Tarkvara näitajaid ja pöördprojekteerimist võib nimetada staatilise analüüsi vormideks. Tarkvara näitajate tuletamist ja 
staatilist analüüsi tarnitakse aina rohkem koos, eriti manussüsteemide loomises, defineerides niinimetatud tarkvara kvaliteedi objektiivid.
Kasvav kommertskasutusala staatilisele analüüsile on ohutuse seisukohast olulistest arvutisüsteemides kasutatava tarkvara omaduste tõestamine ja potentsiaalsete nõrkuste tuvastamine koodis. Järgmised tööstusalad on võtnud staatilise koodi analüüsi kasutusele, et parendada pidevalt keerulisemaks muutuvat tarkvara kvaliteeti.
Aastal 2012 VDC Researchi tehtud uuringust selgus, et 28,7% küsitletud manussüsteemide tarkvarainseneridest kasutavad
staatilise analüüsi tööriistu ja 39,7% vastanutest eeldavad võtta need tööriistad 2 aasta jooksul kasutusse. Aastal 2010 tehtud uuringu, kus küsitleti Euroopa teadusprojektides töötavaid arendajaid, leiti, et 60% intervjueeritavatest on kasutanud vähemalt harilikke integreeritud arenduskeskkondadesse sisseehitatud staatilisi
analüsaatoreid. See-eest ainult 10% vastanutest kasutasid muud analüüsi tööriista lisaks.
Rakenduse turvalisuse tööstuses kasutatakse lisaks ka terminit Staatiline Rakenduse Turvatestimine (ingl "Static Application Security Testing" ehk SAST). SAST on oluline osa Turvalisuse Arenduse Elutsüklist (ingl "Security Development Lifecycle" ehk SDL), näiteks Microsofti SDL, ja on üldlevinud tavaks tarkvara ettevõtetes.
Tööriista tüübid.
Object Management Group (OMG) avaldas uuringu erinevat tüüpi tarkvara analüüsidest, mis on vajalikud tarkvara kvaliteedi mõõtmiseks ja hindamiseks. Uuring kirjeldab kolme erinevat tarkvara analüüsi taset.
Tarkvara analüüsile on võimalik defineerida lisaks veel üks tase.
Andmete põhine staatiline analüüs.
Andmete põhine staatiline analüüs kasutab suurt hulka olemasolevat koodi, et tuletada programmeerimise reegleid. Näiteks on võimalik kasutada kõiki Java avatud lähtekoodiga pakette GitHubis, et õppida head analüüsistrateegiat. Reeglite tuletamiseks on võimalik rakendada masinõppe tehnikaid. Näiteks on ära näidatud, et kui kaldutakse liiga palju kõrvale objektorienteeritud rakendusliidesest, siis on tõenäoliselt tegemist veaga. Samuti on võimalik õppida suurest hulgast minevikuparandustest ja -hoiatustest.