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.
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.[2]
Kasvav kommertskasutusala staatilisele analüüsile on ohutuse seisukohast olulistest arvutisüsteemides kasutatava tarkvara omaduste tõestamine ja potentsiaalsete nõrkuste tuvastamine koodis.[3] Järgmised tööstusalad on võtnud staatilise koodi analüüsi kasutusele, et parendada pidevalt keerulisemaks muutuvat tarkvara kvaliteeti.
Meditsiinitarkvara: USA toidu- ja ravimiamet (FDA) on võtnud staatilise analüüsi kasutusele meditsiiniliste seadmete jaoks.[4]
Tuumatarkvara: Ühendkuningriigi Tuumaregulatsioonide Amet (ONR) soovitab kasutada staatilist analüüsi tuumareaktorite kaitsesüsteemides.[5]
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.[7] 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.[8]
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[9], ja on üldlevinud tavaks tarkvara ettevõtetes.[10]
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.[11]
Üksuse taseme analüüs võtab aset kindlas programmis või alamrutiinis, teadmata ülejäänud programmi kontekst.
Tehnoloogia taseme analüüs võtab arvesse mõjud üksuste programmide vahel, et saada terviklikum ja tähenduslikum ülevaade programmist. Näiteks on võimalik staatiliselt analüüsida Androidi tehnoloogilist pinu, et leida ligipääsu vigu.[12]
Süsteemse taseme analüüs võtab arvesse üksuste programmide vahelist mõju ilma, et oleks piiratud ühele kindlale tehnoloogiale või programmeerimiskeelele.
Tarkvara analüüsile on võimalik defineerida lisaks veel üks tase.
Missiooni/äri taseme analüüs võtab arvesse äri kihi tingimused, reeglid ja protsessid, mis on implementeeritud tarkvara süsteemi osana ettevõtte või programmi kihi tegevustest.
Andmete põhine staatiline analüüs kasutab suurt hulka olemasolevat koodi, et tuletada programmeerimise reegleid.[13] 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.[14] Näiteks on ära näidatud, et kui kaldutakse liiga palju kõrvale objektorienteeritud rakendusliidesest, siis on tõenäoliselt tegemist veaga.[15] Samuti on võimalik õppida suurest hulgast minevikuparandustest ja -hoiatustest.[13]
↑Wichmann, B. A.; Canning, A. A.; Clutterbuck, D. L.; Winsbarrow, L. A.; Ward, N. J.; Marsh, D. W. R. Märts 1995. Industrial Perspective on Static Analysis. Software Engineering Journal:69-75. Originaali arhiivikoopia seisuga 27.09.2011 Vaadatud 05.12.2018. (inglise)
↑Patrick Briand, Martin Brochet, Thierry Cambois, Emmanuel Coutenceau, Olivier Guetta, Daniel Mainberte, Frederic Mondot, Patrick Munier, Loic Noury, Philippe Spozio, Frederic Retailleau. 2010. Software Quality Objectives for Source Code. Proceedings: Embedded Real Time Software and Systems 2010 Conference. Vaadatud 05.12.2018. (inglise)
↑M. Howard and S. Lipner. The Security Development Lifecycle: SDL: A Process for Developing Demonstrably More Secure Software. Microsoft Press, 2006. {{cite journal}}: tühi viide (juhend)