Statyczna analiza programu to analiza oprogramowania komputerowego, która jest wykonywana bez faktycznego wykonywania programów, w przeciwieństwie do , która jest analizą wykonywaną na programach podczas ich wykonywania. W większości przypadków analiza jest przeprowadzana na pewnej wersji kodu źródłowego, a w innych przypadkach na pewnej formie kodu obiektowego.
Termin ten jest zwykle stosowany do analizy wykonywanej przez zautomatyzowane narzędzie, natomiast analiza przez człowieka nazywana jest inspekcją lub przeglądem kodu. Przykładem takich narzędzi są różnego rodzaju lintery do kodu.
Rodzaje narzędzi OMG (Object Management Group) opublikowało badanie dotyczące rodzajów analizy oprogramowania wymaganej do pomiaru i oceny jakości oprogramowania. W dokumencie „Jak zapewnić odporne, bezpieczne, wydajne i łatwe do zmiany systemy informatyczne zgodnie z zaleceniami ” opisano trzy poziomy analizy oprogramowania.
Poziom jednostki () Zależnie od rodzaju programu jest to analiza, która odbywa się w ramach określonej funkcji, metody lub ew. modułu (w językach niestrukturalizowanych). Poziom technologii () Analiza uwzględniająca interakcje między różnymi jednostkami programu (integrację jednostek), ale napisanych w tym samym języku programowania. Ma to na celu uzyskanie bardziej całościowego i semantycznego obrazu całego programu w celu znalezienia problemów i uniknięcia oczywistych fałszywych alarmów. Przykładowo można przeanalizować statycznie stos technologii Androida, aby znaleźć błędy uprawnień. Poziom systemu () Analiza uwzględniająca interakcje między wszystkimi modułami bez ograniczania się do jednej konkretnej technologii lub języka programowania. Wg autorów dokumentu ma to pozwolić wykryć problemy w architekturze aplikacji, dysfunkcyjne interakcje, uszkodzenia danych, wyłomy bezpieczeństwa itp.
Zobacz też
Gnicie oprogramowania Zapachy kodu
Przypisy
Linki zewnętrzne Poprawa jakości kodu – sprawdzanie zgodności standardów kodowania (DDJ). Odcinek 59: analiza kodu statycznego (podcast) w Software Engineering Radio.
Kategoria:Testowanie oprogramowania Kategoria:Analiza programów