Statická analýza kódu: Porovnání verzí

Smazaný obsah Přidaný obsah
Addbot (diskuse | příspěvky)
m Bot: Odstranění 11 odkazů interwiki, které jsou nyní dostupné na Wikidatech (d:q1329550)
Překlad ze stejnojmenného článku na wikipedii
Řádek 2:
{{upravit}}
 
'''Statická analýza kódu''' je analýzasada kódumetod pro analýzu [[SoftwarePočítačový program|SWpočítačových programů]], které jsou aplikovány bez jejich spuštění programu([[analýz|softwarový analýza]], kterýkterá lzeje zaplikována danéhona SWspuštěné vybudovatprogramy se nazývá [[dynamická analýza|dynamická softwarová analýza]]). ProvádíV senejběžnějších případech je analýza prováděna na nějaké verzi [[Zdrojový kód|zdrojovéhozdrojových kódukódů]], anebo někdy naformě [[Objektový kód|objektovéhoobjektových kódukódů]]. BýváTermín spojenoanalýza sprogramů automatizovanýmje nástrojemvětšinou aspojen manuálnís lidskénástroji činnostipro spočívajícíautomatickou analýzu, vnebo porozuměnís lidskou analýzou, revizekterá se nazývá [[program comprehesion]] (pochopení programu) nebo [[code review]] (průzkum kódu).
 
=== Důvody ===
PropracovanostNáročnost statické analýzy provedenévykonávané pomocídanými nástrojůnástroji se liší. Oddo těch, které berou v úvahu pouze  chování jednotlivých příkazůdeklarací a definic,definicí a k těmtěch, které zpracujíobsahují kompletní zdrojový kód programu. přiInformace svézískané analýze.z Využitíanalýzy informacídaného získanýchprogramu zmohou analýzybýt se lišírůzné od zdůraznění možných chyb v kódu, po  k formálním metodámmetody, které matematicky prokazujívyjadřují vlastnosti otýkající danémse daného programu (např. že jeho chování odpovídá specifikaci produktu).
 
[[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ů.
[[Kategorie:Softwarové inženýrství]]
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é systémy|počítačových systémech]], které jsou z hlediska [[Počítačová bezpečnost|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''': The U.S. Food and Druh Administration (FDA) identifikovala použití statické analýzy pro zdravotnická zařízení.
# '''Nukleární software''': Ve Velké Británii Healt and Exevutice doporučuje použití statické analýzy k ochraně systémů jaderných reaktorů.
# '''Letecký software''' (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ů ===
[[Object Management Group|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 [[Podprogram|podprogramu]], bez připojení do kontextu tohoto programu.
 
* '''Technologická úroveň (Technology Level)'''
<nowiki> </nowiki>- 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í jazyk|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 metod. 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á chyba|běhové (run-time) chyby]]: neexistuje žádný mechanismus, který vždy pravdivě zodpoví zda libovolný program může nebo nemusí vykazovat běhové chyby.[[Kategorie:Softwarové inženýrství]]