Statická analýza kódu je sada metod pro analýzu počítačových programů, které jsou aplikovány bez jejich spuštění (softwarová analýza, která je aplikována na spuštěné programy se nazývá dynamická softwarová analýza). V nejběžnějších případech je analýza prováděna na nějaké verzi zdrojových kódů, nebo formě objektových kódů. Termín analýza programů je většinou spojen s nástroji pro automatickou analýzu, nebo s lidskou analýzou, která se nazývá program comprehension (pochopení programu) nebo posouzení kódu (code review).
Důvody Náročnost statické analýzy vykonávané danými nástroji se liší od těch, které berou v úvahu pouze chování jednotlivých deklarací a definicí, a těch, které obsahují kompletní zdrojový kód programu. Informace získané z analýzy daného programu mohou být různé od zdůraznění možných chyb v kódu až po metody, které matematicky vyjadřují vlastnosti týkající se daného programu.
Softwarová metrika a reverzní inženýrství mohou být popsány jako jedny z možných forem softwarové analýzy. Softwarová metrika a statická analýza jsou společně použity zejména při tvorbě vestavěných (embedded) systémů, definující tzv. kvalitu softwarových cílů. Nárůst komerčního použití statické analýzy nastal z důvodů potřeby ověření vlastností programů používaných v počítačových systémech, které jsou z hlediska počítačové bezpečnosti zranitelné. Například následující průmyslová odvětví používají statickou analýzu kódu jako prostředek ke zlepšení kvality stále náročnějších a složitějších programů. Zdravotnický software: Americký Úřad pro kontrolu potravin a léčiv (FDA) použil statickou analýzu pro lékařský přístroj již v roce 2010. Jaderný software: Ve Velké Británii Health and Safety Executive doporučuje použití statické analýzy k ochraně systémů jaderných reaktorů. Letecký software použití v kombinaci s dynamickou analýzou. Studie provedená VDC Research z roku 2012 říká, že v současné době 28,7% embedded software inženýrů využívá nástrojů pro statickou analýzu a 39,7% očekávají jejich použití během dvou let.
Druhy nástrojů OMG (Object Management Group) nedávno zveřejnila studii týkající se typů softwarových analýz potřebných pro měření a hodnocení kvality softwaru. Tento dokument "How to Deliver Resilient, Secure, Efficient, and Easily Changed IT Systems in Line with CISQ REcommendations" popisuje čtyři úrovně softwarové analýzy.
Jednotková úroveň (Unit Level) – Analýza, která je vykonávána v rámci určitého programu nebo podprogramu, bez připojení do kontextu tohoto programu. Technologická úroveň (Technology Level) – Analýza, zkoumá interakce mezi jednotlivými částmi programu, aby získala pohled na celkovou strukturu programu s cílem nalézt chyby a vyhnout se tak budoucím problémům. Systémová úroveň (System Level) – Analýza, která zkoumá interakce mezi jednotlivými částmi programu, ale nezávisle na použitém programovacím jazyce nebo použité technologii. Účelová/Obchodní úroveň (Mission/Business Level) – Analýza, která zkoumá obchodní a účelové vrstvy, pravidla a procesy, které jsou implementovány do softwarového systému pro činnost v rámci podniku nebo svého účelu. Tyto prvky jsou implementovány aniž by byly omezeny na jednu specifickou technologii nebo programovací jazyk a v mnoha případech jsou distribuovány přes více jazyků, ale jsou staticky extrahovány a analyzovány pro pochopení fungování systému.
Formální metody Formální metody označují termín používaný v analýze softwaru (a počítačového hardwaru), jejichž výsledky jsou získány pomocí složitých matematických operací. Tyto matematické techniky zahrnují metody jako například denotační sémantika, axiomatická sémantika, abstraktní interpretace a jiné. Ale ani těmito technikami nelze vždy najít všechny možné běhové (run-time) chyby: neexistuje žádný mechanismus, který vždy pravdivě zodpoví, zda libovolný program může nebo nemusí vykazovat běhové chyby.
Reference
Kategorie:Softwarové inženýrství