Ⅰ 什麼是比較靜態分析
靜態分析、比較靜態分析和動態分析 靜態分析、比較靜態分析和動態分析與均衡分析是密切相關的,西方經濟學所採用的分析方法,從一個角度來看是均衡分析,從另一角度來看,就是靜態分析、比較靜態分析和動態分析。 靜態分析(static analysis),就是分析經濟現象的均衡狀態以及有關的經濟變數達到均衡狀態所具備的條件,它完全抽象掉了時間因素和具體的變化過程,是一種靜止地、孤立地考察某種經濟事物的方法。如研究均衡價格時,舍掉時間、地點等因素,並假定影響均衡價格的其他因素,如消費者偏好、收入及相關商品的價格等靜止不變,單純分析該商品的供求達於均衡狀態的產量和價格的決定。 比較靜態分析(Compartive static analysis)就是分析在已知條件發生變化以後經濟現象的均衡狀態的相應變化,以及有關的經濟變數在達到均衡狀態時的相應變化,即對經濟現象有關變數一次變動(而不是連續變動)的前後進行比較。比較靜態分析不考慮經濟變化過程中所包含的時間阻滯。例如,已知某商品的供求狀況,可以考察其供求達到均衡時的價格和產量。現在,由於消費者的收入增加而導致對該商品的需求增加,從而產生新的均衡,使價格和產量都較以前提高。這里,只把新的均衡所達到的價格和產量與原均衡的價格和產量進行比較,這便是比較靜態分析。 動態分析(dynamic analysis)是對經濟變動的實際過程所進行的分析,其中包括分析有關變數在一定時間過程中的變動,這些經濟變數在變動過程中的相互影響和彼此制約的關系,以及它們在每一個時點上變動的速率等等。動態分析法的一個重要特點是考慮時間因素的影響,並把經濟現象的變化當作一個連續的過程來看待。 動態分析因為考慮各種經濟變數隨時間延伸而變化對整個經濟體系的影響,因而難度較大,在微觀經濟學中,迄今佔有重要地位的仍是靜態分析和比較靜態分析方法。
Ⅱ 放大電路的靜態分析方法
1、直流通路和交流通路
放大電路中的電抗性元件對直流信號和交流信號呈現的阻抗是不同的。例如,電容對直流信號的阻抗是無窮大,故不允許直流信號通過;但以交流信號而言,電容容抗的大小為,當電容值足夠大,交流信號在電容上的壓降可以忽略時,可視為短路。電感對直流信號的阻抗為零,相當於短路;而對交流信號而言,感抗的大小為ωL。此外,對於理想電壓源,如VCC等,由於其電壓恆定不變,即電壓的變化量等於零,故在交流通路中相當於短路。而理想電流源,由於其電流恆定不變,即電流的變化量等於零,故在交流通路中相當於開路,等等。
在直流通路中,隔直電容C1、C2相當於開路。在交流通路中,C1、C2相當於短路,此外,集電極直流電源VCC也被短路。於是可得單管共射放大電路的直流通路和交流通路分別如下圖(a)和(b)所示。
根據放大電路的直流通路和交流通路,即可分別進行靜態分析和動態分析。分析時,除了圖解法和微變等效電路法以外,有時也採用一些簡單實用的近似估演算法。例如,常常根據直流通路,對放大電路的靜態工作情況進行近似估算。
2、靜態工作點的近似估算
當外加輸入信號為零,在直流電源VCC的作用下,三極體的基極迴路和集電極迴路均存在直流電流和直流電壓,這些直流電流和電壓在三極體的輸入、輸出特性上各自對應一個點,稱為靜態工作點。靜態工作點處的基極電流、基極與發射極之間的電壓分別用符號IBQ、UBEQ表示,集電極電流、集電極與發射極之間的電壓則用ICQ、UCEQ表示。
可求得單管共射放大電路的靜態基極電流為
(1)
由三極體的輸入特性可知,UBEQ的變化范圍很小,可近似認為
硅管UBEQ=(0.6~0.8)V
鍺管UBEQ=(0.1~0.3)V
根據以上近似值,若給定VCC和Rb,即可由式(1)估算IBQ。
已知三極體的集電極電流與基極電流之間存在關系IC≈βIB,且β≈,故可得靜態集電極電流為
(3)
然後由圖1(a)的直流通路可得
CEQ=VCC-ICQRC (4)
至此,靜態工作點的有關電流、電壓均已估算得到
Ⅲ 程序靜態分析的分析技術及實踐
程序靜態分析(Program Static Analysis)可以幫助軟體開發人員、質量保證人員查找代碼中存在的結構性錯誤、安全漏洞等問題,從而保證軟體的整體質量。還可以用於幫助軟體開發人員快速理解文檔殘缺的大規模軟體系統以及系統業務邏輯抽取等系統文檔化等領域。 如開發20年以上的金融核心COBOL系統,動輒上千萬行代碼的系統規模。對於理解這樣規模的系統,基於程序靜態分析的輔助理解工具就能發揮積極作用。
本文首先對程序靜態分析的特點、常用靜態分析技術、靜態分析實現方式進行描述,然後通過一個實例講解了程序靜態分析的執行過程。 程序靜態分析是與程序動態分析相對應的代碼分析技術,它通過對代碼的自動掃描發現隱含的程序問題,主要具有以下特點:
(1)不實際執行程序。動態分析是通過在真實或模擬環境中執行程序進行分析的方法,多用於性能測試、功能測試、內存泄漏測試等方面。與之相反,靜態分析不運行代碼只是通過對代碼的靜態掃描對程序進行分析。
(2)執行速度快、效率高。目前成熟的代碼靜態分析工具每秒可掃描上萬行代碼,相對於動態分析,具有檢測速度快、效率高的特點。
(3)誤報率較高。代碼靜態分析是通過對程序掃描找到匹配某種規則模式的代碼從而發現代碼中存在的問題,例如可以定位strcpy()這樣可能存在漏洞的函數,這樣有時會造成將一些正確代碼定位為缺陷的問題,因此靜態分析有時存在誤報率較高的缺陷,可結合動態分析方法進行修正。 (1)詞法分析:從左至右一個字元一個字元的讀入源程序,對構成源程序的字元流進行掃描,通過使用正則表達式匹配方法將源代碼轉換為等價的符號(Token) 流,生成相關符號列表,Lex為常用詞法分析工具。
(2)語法分析:判斷源程序結構上是否正確,通過使用上下文無關語法將相關符號整理為語法樹, Yacc為常用工具。
(3)抽象語法樹分析:將程序組織成樹形結構,樹中相關節點代表了程序中的相關代碼,目前已有javacc/ Antlra等抽象語法樹生成工具。
(4)語義分析:對結構上正確的源程序進行上下文有關性質的審查。
(5)控制流分析:生成有向控制流圖,用節點表示基本代碼塊,節點間的有向邊代表控制流路徑,反向邊表示可能存在的循環;還可生成函數調用關系圖,表示函數間的嵌套關系。
(6)數據流分析:對控制流圖進行遍歷,記錄變數的初始化點和引用點,保存切片相關數據信息。
(7)污點分析:基於數據流圖判斷源代碼中哪些變數可能受到攻擊,是驗證程序輸入、識別代碼表達缺陷的關鍵。
(8)無效代碼分析,根據控制流圖可分析孤立的節點部分為無效代碼。
程序靜態分析是在不執行程序的情況下對其進行分析的技術,簡稱為靜態分析。而程序動態分析則是另外一種程序分析策略,需要實際執行程序。大多數情況下,靜態分析的輸入都是源程序代碼,只有極少數情況會使用目標代碼。靜態分析這一術語一般用來形容自動化工具的分析,而人工分析則往往叫做程序理解。
靜態分析越來越多地被應用到程序優化、軟體錯誤檢測和系統理解領域。Coverity Inc.的軟體質量檢測產品就是利用靜態分析技術進行錯誤檢測的成功代表。國內某軟體公司的閃蝶(BlueMropho)代碼分析平台,是利用程序靜態分析技術專注於大型機遺留系統的代碼理解領域,尤其擅長分析千萬行代碼規模級的COBOL系統。
Ⅳ 軟體靜態測試方法
靜態測試方法很多,主要有代碼審查、正式技術評審、同級評審、走查等形式和方法。基本都是通過會議的形式閱讀代碼和文檔,檢查其中存在的問題或錯誤。
路徑法:通過畫程序流程圖和程序節點圖的方法檢查程序中存在的孤立語句(節點)。
節點圖(程序圖)法:判斷程序是否是標准結構化,非結構化表示程序存在問題。
(4)靜態結構的分析方法擴展閱讀:
靜態結構分析主要是以圖形的方式表現程序的內部結構,例如函數調用關系圖、函數內部控制流圖。其中,函數調用關系圖以直觀的圖形方式描述一個應用程序中各個函數的調用和被調用關系;控制流圖顯示一個函數的邏輯結構,它由許多節點組成,一個節點代表一條語句或數條語句,連接結點的叫邊,邊表示節點間的控制流向。
Ⅳ 什麼是靜態分析
靜態分析法是根據既定的外生變數值求得內生變數的分析方法,是對已發生的經濟活動成果,進行綜合性的對比分析的一種分析方法。 靜態分析法主要應用於靜態計算機科學、經濟學、工程、力學、機械等方面。如研究均衡價格時,舍掉時間、地點等因素,並假定影響均衡價格的其他因素,如消費者偏好、收入及相關商品的價格等靜止不變,單純分析該商品的供求達於均衡狀態的產量和價格的決定。
工程分析的問題可以依其解答是否隨時間而變而區分成兩大類別:其反應與時間無關的靜態分析(static analysis,或稱為穩態分析,steady-state analysis)及其反應隨時間而變的動態分析(dynamic analysis)。對於結構分析而言,動態分析又可分成及暫態分析(transientanalysis)、模態分析(modal analysis)、和諧響應分析(harmonic response analysis)三種(事實上還有其它類別的動態分析,但較少用到)。
較完整的力平衡方程式可以表述為:等號的右邊代表作用在結構上的外力,這個外力 {F} 和等號的左邊的三個力形成平衡的關系:慣性力(inertia force)、阻尼力(damping force)、及彈性力(elastic force)。慣性力是質量乘上加速度 。阻尼力是結構物因為所有外部的摩擦(譬如結構與空氣間)或內部的摩擦(結構材料內部本身)所引起的阻力。阻尼力通常被簡化成與速度成正比,而正比系數 [C] 稱為阻尼系數。彈性力等於彈性系數乘以位移。
通常在變形速度和加速度均很小時,可以忽略慣性力和阻尼力項,公式簡化成為靜力平衡方程式。工程上所說的靜態分析就是在靜力平衡方程式指導下進行的理論計算或者藉助工程模擬軟體進行的模擬計算。對於實際工程系統和機械結構,往往模型復雜,靠理論計算很難解決問題,現有應用最廣的方法是藉助有限元理論和有限元軟體進行建模和計算。
Ⅵ 軟體工程 靜態測試的主要方法有哪些
(1)人工檢測:是指不依靠計算機而是靠人工審查程序或評審軟體,包括代碼檢查、靜態結構分析和代碼質量度量等;
(2)計算機輔助靜態分析:利用靜態分析工具對被測試程序進行特性分析,從程序中提取一些信息,以便檢查程序邏輯的各種缺陷和可疑的程序構造。
靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。它可以由人工進行,充分發揮人的邏輯思維優勢,也可以藉助軟體工具自動進行。
(6)靜態結構的分析方法擴展閱讀:
代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設計的一致性,代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代碼結構的合理性等方面;可以發現違背程序編寫標準的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風格的問題,包括變數檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構檢查等內容。
在實際使用中,代碼檢查比動態測試更有效率,能快速找到缺陷,發現30%~70%的邏輯設計和編碼缺陷;代碼檢查看到的是問題本身而非徵兆。但是代碼檢查非常耗費時間,而且代碼檢查需要知識和經驗的積累。
代碼檢查應在編譯和動態測試之前進行,在檢查前,應准備好需求描述文檔、程序設計文檔、程序的源代碼清單、代碼編碼標准和代碼缺陷檢查表等。靜態測試具有的發現缺陷早、降低返工成本、覆蓋重點和發現缺陷的概率高的優點以及耗時長、不能測試依賴和技術能力要求高的缺點。