1 verification and validation planning 2 software inspection

  • Slides: 45
Download presentation

主題 1. 驗證和確認規劃(verification and validation planning) 2. 軟體檢查(software inspection) 3. 自動化靜態分析(automated static analysis) 4.

主題 1. 驗證和確認規劃(verification and validation planning) 2. 軟體檢查(software inspection) 3. 自動化靜態分析(automated static analysis) 4. 淨式軟體開發(cleanroom software development)

除錯行程 (Debugging Process)

除錯行程 (Debugging Process)

開發的驗證模型 (V-model of Development)

開發的驗證模型 (V-model of Development)

軟體測試計劃架構 (The Structure of a Software Test Plan) o o o 測試行程(testing process) 需求追蹤(requirement

軟體測試計劃架構 (The Structure of a Software Test Plan) o o o 測試行程(testing process) 需求追蹤(requirement traceability) 測試項目(tested items) 測試排程(testing schedule) 測試記錄程序(test recording procedures) 硬體與軟體需求(hardware and software requirements) o 限制(constraints)

程式檢查 (Program Inspection) o 為文件審查(document review)的正規方法 (formalized approach) o 用來偵測缺失(detect defect)而非更正缺失 (correct defect) o

程式檢查 (Program Inspection) o 為文件審查(document review)的正規方法 (formalized approach) o 用來偵測缺失(detect defect)而非更正缺失 (correct defect) o 缺失可能是邏輯錯誤(logical errors)、程式碼 的異常(anomalies in the code),錯誤的可能 情況(erroneous condition)(如未被宣告的變數 (uninitialized variable)),或是與標準不符(non -compliance with standards)

檢查檢核清單 (Inspection Checklist) o 被用來檢查常見錯誤(common error)的檢核清單 (checklist)可用以主導檢查過程(drive the inspection) o 錯誤檢核清單會依程式語言而定(programming language dependent) o

檢查檢核清單 (Inspection Checklist) o 被用來檢查常見錯誤(common error)的檢核清單 (checklist)可用以主導檢查過程(drive the inspection) o 錯誤檢核清單會依程式語言而定(programming language dependent) o 型態檢查(type checking)的功能越弱,檢核清單 就越龐大 o 例如:初始化(initialization)、常數命名(constant naming)、迴圈終止(loop termination)、陣列界限 (array bounds)等

Inspection Checks

Inspection Checks

檢查速度 (Inspection Rate) o 每小時檢視(overview)約500行敘述(statement) o 在個人準備時,每小時檢視約125行敘述 (statement) o 每小時檢視 90到 125行敘述(statement) o 檢查(inspection)是成本昂貴的行程(expensive

檢查速度 (Inspection Rate) o 每小時檢視(overview)約500行敘述(statement) o 在個人準備時,每小時檢視約125行敘述 (statement) o 每小時檢視 90到 125行敘述(statement) o 檢查(inspection)是成本昂貴的行程(expensive process) o 檢查 500行敘述(statement)約花費 40人時

靜態分析檢查 (Static Analysis Checks)

靜態分析檢查 (Static Analysis Checks)

靜態分析階段 o 控制流程分析(control flow analysis) n 檢查多個離開(multiple exits)或進入點(entry points)的 迴圈(loop)、找出無法執行到的程式碼(unreachable code)等 o 資料使用分析(data use

靜態分析階段 o 控制流程分析(control flow analysis) n 檢查多個離開(multiple exits)或進入點(entry points)的 迴圈(loop)、找出無法執行到的程式碼(unreachable code)等 o 資料使用分析(data use analysis) n 偵測未被初始化(uninitialized)的變數、被寫入兩次但 中間未被使用的變數(variables written twice without an intervening assignment)、宣告後未被使用的變數 o 介面分析(interface analysis) n 檢查常式(routine)和程序宣告(procedure)它們使用的 一致性

138% more lint_ex. c #include <stdio. h> printarray (Anarray) int Anarray; { printf(“%d”, Anarray);

138% more lint_ex. c #include <stdio. h> printarray (Anarray) int Anarray; { printf(“%d”, Anarray); } main () { int Anarray[5]; int i; char c; printarray (Anarray, i, c); printarray (Anarray) ; } 139% cc lint_ex. c 140% lint_ex. c(10): warning: c may be used before set lint_ex. c(10): warning: i may be used before set printarray: variable # of args. lint_ex. c(4) : : lint_ex. c(10) printarray, arg. 1 used inconsistently lint_ex. c(4) : : lint_ex. c(11) LINT printf returns value which is always ignored 的靜態分析

4. 淨室軟體開發 (Cleanroom Software Development) o 淨室(cleanroom)這名字源自於半導體製造過 程,其理念是缺失避免(defect avoidance),而 非缺失移除(defect removal) o 軟體開發過程基於 n

4. 淨室軟體開發 (Cleanroom Software Development) o 淨室(cleanroom)這名字源自於半導體製造過 程,其理念是缺失避免(defect avoidance),而 非缺失移除(defect removal) o 軟體開發過程基於 n 增量型開發(incremental development) n 正規規格(formal specification) n 使用正確參數(correctness argument)的靜態驗證 (static verification) n 決定程式可靠度(program reliability)的統計測試 (statistical testing)

淨室行程 (Cleanroom Process)

淨室行程 (Cleanroom Process)

淨室行程的特徵 o 使用狀態轉換模型(state-transition model)的正規 規格(formal specification) o 增量型的開發(incremental development) o 結構化程式設計(structured programming) -使用 有限的控制(limited

淨室行程的特徵 o 使用狀態轉換模型(state-transition model)的正規 規格(formal specification) o 增量型的開發(incremental development) o 結構化程式設計(structured programming) -使用 有限的控制(limited control)和抽象化結構 (abstraction construct) o 使用嚴格檢查(rigorous inspections)的靜態驗證 o 系統的統計測試(statistical testing)

正規規格和檢查 (Formal Specification and Inspections) o 以狀態為基礎的模型(state based model)是一 個系統規格,檢查過程是根據此模型檢核程 式(check the program against

正規規格和檢查 (Formal Specification and Inspections) o 以狀態為基礎的模型(state based model)是一 個系統規格,檢查過程是根據此模型檢核程 式(check the program against this model) o 程式設計方式(programming approach)很清楚 的定義模型與系統間的關係是否一致 (correspondence) o 使用數學論點(mathematical arguments)(不是 證明(proofs))可增加檢查過程中的信心 (confidence)

參考資料 o Ian Sommerville, Software Engineering, 7 th ed. , Addison-Wesley,2004.

參考資料 o Ian Sommerville, Software Engineering, 7 th ed. , Addison-Wesley,2004.