總網頁瀏覽量

2016年5月11日 星期三

Program analysis

只是單純的用自己的話來翻譯維基, 所以被我騙進來的快逃阿!!!

Program analysis[1]

電腦科學(Computer science)中,
程式分析(Program analysis)是個程序來自動分析的電腦程式行為和特性,像是
correctness 正確性
robustness 強健性
safety    安全性
liveness  及時性(或稱活性?

Program analysis,主要兩大主題:
1. program optimization 程式最佳化: 提升程式表現,減少資源使用(不必要的資源就刪除?)。
2. program correctness 程式正確性: 在假想的情況之下,確保程式表現正確。

Program analysis 如果在未執行指定程式下執行 static program analysis 靜態程式分析。
Program analysis 如果在執行指定程式下執行 dynamic program analysis 動態程式分析。
但是也有結合兩者的分析。

Static program analysis 靜態程式分析 [2]

靜態分析可以在程式開發的時候發現較有問題的部分,
相較於程式執行測試中較容易修正程式。
由於靜態分析不能分析執行中的判定,所以仍然不完整的。
儘管靜態分析有這些限制,仍然可以減少程式缺失的數量並給一定的保證。

Control-flow [4]
目的在於得到程式在執行中,函式呼叫不同方向的資訊。
所收集到的資訊就會表示成 Control flow graph (CFG),
點(node)就是程式執行地方,線(edge)就是控制流(the flow of control)。
藉由這些辨識程式碼區塊和迴圈(loop)形式的CFG來執行最佳化。
Data-flow analysis
Abstract interpretation
Type systems
Effect systems
Model checking

Dynamic program analysis 動態程式分析 [3]
可以利用程式執行時的資訊來增加分析的準確性,以提供執行時的保護,
但是只能對單一的程式做執行執行且可能因為執行時的檢查導致執行表現降低。
(真的只能做單一程式執行?but can only analyze a single execution of the problem)
(主要在檢查,不需要給使用者實就邊撿查來還邊使用吧XD)

Testing
Monitoring
Program slicing

[1] Program analysis: https://en.wikipedia.org/wiki/Program_analysis
[2] Static program analysis: https://en.wikipedia.org/wiki/Static_program_analysis
[3] Dynamic program analysis: https://en.wikipedia.org/wiki/Dynamic_program_analysis
[4] Control-flow analysis: https://en.wikipedia.org/wiki/Control_flow_analysis

沒有留言:

張貼留言