靜態程式分析

program program Safety

靜態程式分析(英語:Staticprogramanalysis)是指在不運行電腦程式的條件下,進行程式分析的方法。有些程式分析需要在程式運行時才能進行,這種程式分析稱為動態程式分析(英語:dynamicprogramanalysis)[1]。大部份的靜態程式分析的對象是針對特定版本的原始碼,也有些靜態程式分析的對象是目標代碼。靜態程式分析一詞多半是指配合靜態程式分析工具進行的分析,人工進行的分析一般稱為程式理解(英語:programcomprehension)或代碼審查。
靜態程式分析的複雜程度依所使用的工具而異,簡單的只考慮個別敘述及聲明的行為,複雜的可以分析程式的完整原始碼。不同靜態程式分析產生的信息也有所不同,簡單的可以是標示可能的代碼錯誤(如lint編程工具(英語:lintprogrammingtool)),複雜的可以是形式化方法,也就是用數學的方式證明程式的某些行為符合其設計規格。
軟體度量和反向工程可以視為一種靜態程式分析的方式。在實務上,在定義所謂的軟體品質指針(softwarequalityobjectives)後,軟體度量的推導及程式分析常一起進行,在開發嵌入式系統時常會用這種方式進行。
靜態程式分析的商業用途可以用來驗證安全關鍵計算機系統中的軟體,並指出可能有計算機安全隱患的代碼,這類的套用越來越多。[2]例如以下的產業已確定用靜態程式分析作為提升複雜軟體品質的方法:
醫療軟體:美國的美國食品藥品監督管理局確定在醫療設備上使用靜態程式分析[3]。
核能軟體:英國的健康與安全委員會(英語:HealthandSafetyExecutive)建議針對堆保護系統(英語:ReactorProtectiveSystem)的軟體進行靜態程式分析中[4]。
在信息安全的領域中,靜態程式分析會稱為靜態應用程式安全檢測(StaticApplicationSecurityTesting,簡稱SAST)。

相關詞條

熱門詞條

聯絡我們