




已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1 軟件危機在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題 幾乎所有的軟件 都不同程度地存在著這些問題 軟件危機主要包括如下兩方面的問題 如何開發(fā)軟件 滿足增長需求 如何維護軟件 2 解決軟件軟件危機的途徑解決軟件危機的途徑是軟件工程 按工程化的原則和方法組織軟件開發(fā)工作是有效的 是擺脫軟件危機的一個主要出路 第一章軟件工程學概述 3 軟件軟件是程序 數據及文檔的完整集合 其中 程序是能夠完成預定功能和性能的可執(zhí)行的指令序列 數據是使程序能夠適當地處理信息的數據結構 文檔是開發(fā) 使用和維護程序的圖文資料 4 軟件工程軟件工程是采用工程的概念 原理 技術和方法來開發(fā)與維護軟件一門工程學科 從而經濟地開發(fā)出高質量的軟件并有效地維護它 5 軟件工程方法學在軟件生命周期全過程中使用的一整套技術方法的集合稱為軟件工程方法學 軟件工程第一章 6 方法學三要素 工程方法學包含3個要素 方法 工具和過程 方法 是完成軟件開發(fā)的各項任務的技術方法 回答 怎樣做 的問題 工具 是為運用方法而提供的自動的或半自動的軟件工程支撐環(huán)境 過程 是為了獲得高質量的軟件所需要完成的一系列任務的框架 它規(guī)定了完成各項任務的工作步驟 軟件工程第一章 7 傳統方法學 面向對象方法學 1 傳統方法學 生命周期方法學或結構化范型 強調自頂向下 2 面向對象方法學 強調主動地多次反復迭代 3 面向對象方法學4個要點 對象 類 繼承 消息 軟件工程第一章 8 軟件生命周期軟件孕育 誕生 成長 成熟 衰亡的生存過程 軟件工程第一章 軟件生命周期 各階段具體任務 1 問題定義 必須回答的關鍵問題是 要解決的問題是什么 2 可行性研究 階段回答的關鍵問題是 對于上一個階段所確定的問題有行得通的解決辦法嗎 3 需求分析 目標系統必須做什么 確定目標系統必須具備哪些功能 4 總體設計 必須回答的關鍵問題是 概括地說 應該怎樣實現目標系統 總體設計又稱為概要設計 5 詳細設計 關鍵問題是 應該怎樣具體地實現這個系統呢 6 編碼和單元測試 關鍵任務是寫出正確的容易理解 容易維護的程序模塊 7 綜合測試 關鍵任務是通過各種類型的測試使軟件達到預定的要求 8 軟件維護 通過各種必要的維護活動使系統持久地滿足用戶的需要 8 軟件過程為獲得高質量軟件所需要完成的一系列任務的框架 它規(guī)定了完成各項任務的工作步驟 是軟件工程三要素之一的過程 9 軟件生命周期模型軟件過程通常用軟件生命周期模型來描述 它規(guī)定了把生命周期劃分成哪些階段以及各個階段執(zhí)行的順序 也稱為過程模型 10 典型的生命周期模型瀑布模型 快速原型模型增量模型 螺旋模型噴泉模型 軟件工程第一章 11 瀑布模型 軟件工程第一章 實際的瀑布模型 傳統的瀑布模型 12 快速原型模型 軟件工程第一章 實線箭頭表示開發(fā)過程虛線箭頭表示維護過程 13 增量模型 軟件工程第一章 增量模型 風險更大的增量模型 14 螺旋模型 增加了風險分析過程的快速原型 軟件工程第一章 簡單得螺旋模型 完整的螺旋模型 15 噴泉模型 面向對象軟件開發(fā)迭代和無縫的特性 軟件工程第一章 噴泉模型 16 各模型特點瀑布模型的特點 1 階段間具有順序性和依賴性 2 推遲實現的觀點 3 質量保證的觀點 快速原型 是快速建立起來的可以在計算機上運行的程序 它所能完成的功能往往是最終產品能完成功能的一個子集 增量模型 它分批地逐步向用戶提交產品 整個軟件產品被分解成許多個增量構件 開發(fā)人員一個構件一個構件地向用戶提交產品 螺旋模型 基本思想是使用原型及其他方法來盡量降低風險 理解這種模型的一個簡單方法 是把它看作在每個階段之前都增加了風險分析過程的快速原型模型 使用于內部開發(fā)的大規(guī)模軟件項目 噴泉模型 強調的是 迭代 和 無縫 的特性 是典型的面向對象的軟件過程模型之一 復習重點 軟件危機軟件工程軟件工程三要素軟件生命周期包含的過程 3個時期 8個階段 及各過程的任務瀑布模型快速還原模型 1 可行性研究的目的 就是用最小的代價在盡可能短的時間內確定問題是否能夠解決 必須記住 可行性研究的目的不是解決問題 而是確定問題是否值得去解決 從下述3個方面研究每種解法的可行性 1 技術可行性2 經濟可行性3 操作可行性其他方面 運行可行性 法律可行性2 典型的可行性研究有下述一些步驟 1 復查系統規(guī)模和目標 2 研究目前正在使用的系統3 導出新系統的高層邏輯模型4 進一步定義問題5 導出和評價供選擇的解法6 推薦行動方針7 草擬開發(fā)計劃8 書寫文檔提交審查 第二章可行性研究 3 系統流程圖 是概括性地描繪物理系統的傳統工具 它的基本思想是用圖形符號以黑盒子形式描繪組成系統的每個部件 系統流程圖表達的是數據在系統各部件之間流動的情況 而不是對數據進行加工處理的控制過程 因此盡管系統流程圖的某些符號和程序流程圖的符號形式相同 但是它卻是物理數據流圖而不是程序流程圖 基本符號如下 第二章可行性研究 庫存清單系統的系統流程圖 4 數據流圖 DFD 是一種圖形化技術 它描繪信息流和數據從輸入移動到輸出的過程中所經受的變換 在數據流圖中沒有任何具體的物理部件 它只是描繪數據在軟件中流動和被處理的邏輯過程 基本符號如下 第二章可行性研究 附加符號 星號 表示 與 關系 加號 表示 或 關系異或 表示互斥關系 第二章可行性研究 5 畫數據流圖的步驟 1 從問題描述中提取數據流圖的4種成分 數據的源點 終點處理 處于靜止狀態(tài)的數據數據流 處于運動中的數據數據存儲 2 畫基本系統模型 3 細化 描繪系統的主要功能 功能級數據流圖 4 對系統主要功能進一步細化 6 畫數據流圖舉例 銀行計算機儲蓄系統的工作過程大致如下 儲戶填寫的存款單或取款單由業(yè)務員鍵入系統 如果是存款則系統記錄存款人姓名 住址 或電話號碼 身份證號碼 存款類型 存款日期 到期日期 利率及密碼 可選 等信息 并印出存單給儲戶 如果是取款而且存款時留有密碼 則系統首先核對儲戶密碼 若密碼正確或存款時未留密碼 則系統計算利息并印出利息清單給儲戶 第一步 提取數據流圖的四種成分 數據源點和終點 業(yè)務員 儲戶處理 1 事物處理 2 處理存款 3 處理取款數據存儲 1 存款信息 2 取款信息數據流 事物 存款單 存單密碼 取款單 利息清單 頂層數據流圖 第二步 畫基本數據流圖 功能級數據流圖 第三步 畫功能級數據流圖 細化的數據流圖 第四步 對系統主要功能進一步細化 7 數據字典 數據的信息的集合 也就是對數據流圖中包含的所有元素的定義的集合 可行性研究階段 數據流圖與數據字典共同構成系統的邏輯模型 沒有數據字典 數據流圖就不嚴格 然而沒有數據流圖 數據字典也難于發(fā)揮作用 數據字典應該由對下列4類元素的定義組成 數據流 數據流分量 數據元素 數據存儲和處理 由數據元素組成數據的方式只有下述3種基本類型 順序 選擇 重復和可選 數據定義符號 等價于 和即連接 選擇一個 重復 可選 8 定義數據的方法 數據組成方式 三種基本類型 順序選擇重復附加類型 可選數據定義符號 含義 意思是等價于 或定義為 意思是和 即 連接兩個分量 意思是或 即 從方括弧內列出的若干個分量中選擇一個 通常用 號隔開供選擇的分量 意思是重復 即 重復花括弧內的分量 常常使用上限和下限進一步注釋表示重復的花括弧 意思是可選 即 圓括弧里的分量可有可無 電話定義 應用舉例 北京某高校可用的電話號碼有以下幾類 校內電話號碼由4位數字組成 第1位數字不是0 校外電話又分為本市電話和外地電話兩類 a 撥校外電話需先撥0 若是本市電話則再接著撥8位數字 第1位不是0 b 若是外地電話則撥3位區(qū)碼再撥8位電話號碼 第1位不是0 請用定義數據字典的方法 定義上述的電話號碼 電話號碼 校內電話號碼 校外電話號碼 校內電話號碼 非零數字 3位數字 后面繼續(xù)定義校外電話號碼 本市號碼 外地號碼 本市號碼 數字零 8位數字外地號碼 數字零 3位數字 8位數字非零數字 1 2 3 4 5 6 7 8 9 數字零 03位數字 3 數字 3 3至3個數字8位數字 非零數字 7位數字7位數字 7 數字 7數字 0 1 2 3 4 5 6 7 8 9 9 成本 效益分析的目標 正式要從經濟角度分析開發(fā)一個特定的新系統是否劃算 從而幫助客戶組織的負責人正確地做出是否投資于這項開發(fā)工程的決定 第二章可行性研究 復習重點 可行性研究的目的可行性研究的內容數據流圖的畫法數據字典的實現 第二章可行性研究 1 需求分析的任務 準確地回答 系統必須做什么 這個問題 而不必研究 如何做 需求分析的結果 是提供準確完整的軟件需求規(guī)格說明書 2 軟件系統的綜合要求功能需求 性能需求 可靠性和可用性需求 出錯處理需求接口需求 約束 逆向需求 將來可能提出的要求3 分析系統的數據要求 1 建立數據模型 E R圖 2 描繪數據結構 層次方框圖和Warnier圖 3 數據結構規(guī)范化 第三章需求分析 4 需求分析過程建立三種模型數據模型 實體 聯系圖功能模型 數據流圖行為模型 狀態(tài)轉換圖數據字典是分析模型的核心 第三章需求分析 5 實體 聯系圖數據模型中包含3種相互關聯的信息 數據對象 數據對象的屬性 數據對象彼此間相互連接的關系 聯系可分為以下三種類型 一對一 一對多和多對 6 范式 第一范式 第二范式 第三范式 第三章需求分析 7 狀態(tài)轉換圖通過描繪系統的狀態(tài)及引起系統狀態(tài)轉換的事件 來表示系統的行為 8 層次方框圖用樹形結構的一系列多層次的矩形框描繪數據的層次結構 第三章需求分析 9 Warnier圖Warnier圖也用樹形結構描繪信息 但是這種圖形工具比層次方框圖提供了更豐富的描繪手段 第三章需求分析 軟件產品的Warnier圖 10 IPO圖是輸入 處理 輸出圖的簡稱 能夠方便地描繪輸入數據 對數據的處理和輸出數據之間的關系 第三章需求分析 主文件更新處理的IPO圖 第三章需求分析 復習重點 需求分析的任務需求分析階段建立3種模型 數據模型功能模型行為模型實體 聯系圖 E R圖 的畫法 第四章形式化說明技術 第五章總體設計 1 總體設計的目的 概括地說 系統應當如何實現 因此總體設計又稱為概要設計或者初步設計 2 總體設計的過程 由兩個主要階段組成 系統設計階段 確定系統的具體實現方案 包括 設想供選擇的方案 選取合理的方案 推薦最佳方案 結構設計階段 確定軟件結構 包括 功能分解 設計軟件結構 設計數據庫 制定測試文檔 書寫文檔 審查和復查 3 模塊 是由邊界元素限定的相鄰程序元素的序列 而且有一個總體標識符代表它 第五章總體設計 4 模塊化 就是把程序劃分成獨立命名且可獨立訪問的模塊 每個模塊完成一個子功能 把這些模塊集成起來夠成一個整體 可以完成指定的功能滿足用戶的需求 每個程序都相應地有一個最適當的模塊數目M 使得系統的開發(fā)成本最小 5 模塊化的作用 模塊化可以使軟件結構清晰 不僅容易設計也容易閱讀和理解 模塊化使軟件容易測試和調試 因而有助于提高軟件的可靠性 模塊化能夠提高軟件的可修改性 模塊化也有助于軟件開發(fā)工程的組織管理 第五章總體設計 6 抽象 抽象就是抽出事物本質特性而暫時不考慮細節(jié) 是人類處理復雜問題的基本方法之一 7 逐步求精 為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮 8 信息隱藏 設計和確定模塊 使得一個模塊內包含的信息 過程和數據 對于不需要這些信息的模塊來說 是不能訪問的 9 局部化 指把一些關系密切的軟件元素物理地放得彼此靠近 顯然 局部化有助于實現信息隱藏 第五章總體設計 10 模塊獨立性 使得每個模塊完成一個相對獨立的特定子功能 并且和其他模塊之間的關系很簡單 即功能專一 模塊之間無過多的相互作用的模塊 11 模塊獨立程度的兩個定性標準度量 兩個標準分別稱為內聚和耦合 12 耦合 是對一個軟件結構內不同模塊之間互連程度的度量 耦合要低 即每個模塊和其他模塊之間的關系要簡單 13 內聚 是衡量一個模塊內部各個元素彼此結合的緊密程度 內聚要高 每個模塊完成一個相對獨立的特定子功能 理想內聚的模塊只做一件事情 14 耦合的種類 6種 1 非直接耦合 完全獨立 兩個模塊中的每一個都能獨立地工作而不需要另一個模塊的存在 2 數據耦合 兩個模塊彼此間通過參數交換信息 而且交換的信息僅僅是數據 3 控制耦合 兩個模塊彼此間傳遞的信息中有控制信息 4 特征耦合 把整個數據結構作為參數傳遞而被調用的模塊只需要使用其中一部分數據元素時 就出現了特征耦合 5 公共環(huán)境耦合 兩個或多個模塊通過一個公共數據環(huán)境相互作用時 它們之間的耦合稱為公共環(huán)境耦合 6 內容耦合 最高程度的耦合是內容耦合 如果出現下列情況之一 兩個模塊間就發(fā)生了內容耦合 一個模塊訪問另一個模塊的內部數據 一個模塊不通過正常入口轉到另一個模塊的內部 兩個模塊有一部分程序代碼重疊 一個模塊有多個入口 設計原則 盡量使用數據耦合 少用控制耦合和特征耦合 限制公共環(huán)境耦合的范圍 完全不用內容耦合 15 內聚的種類 7種 1 偶然內聚 一個模塊完成一組任務 這些任務彼此間即使有關系 關系也是很松散的 就叫做偶然內聚 2 邏輯內聚 一個模塊完成的任務在邏輯上屬于相同或相似的一類 則稱為邏輯內聚 3 時間內聚 一個模塊包含的任務必須在同一段時間內執(zhí)行 就叫時間內聚 4 過程內聚 一個模塊內的處理元素是相關的 而且必須以特定次序執(zhí)行 則稱為過程內聚 5 通信內聚 模塊中所有元素都使用同一個輸入數據和 或 產生同一個輸出數據 則稱為通信內聚 即在同一個數據結構上操作 6 順序內聚 一個模塊內的處理元素和同一個功能密切相關 而且這些處理必須順序執(zhí)行 則稱為順序內聚 7 功能內聚 如果模塊內所有處理元素屬于一個整體 完成一個單一的功能 則稱為功能內聚 功能內聚是最高程度的內聚 高內聚 功能內聚 順序內聚中內聚 通信內聚 過程內聚低內聚 時間內聚 邏輯內聚 偶然內聚 15 啟發(fā)性規(guī)則 7條 1 改進軟件結構提高模塊獨立性 通過模塊分解或合并 降低耦合提高內聚 2 模塊規(guī)模應該適中 過大的模塊往往是由于分解不充分 過小的模塊將導致模塊數目過多將使系統接口復雜 3 深度 寬度 扇出和扇入都應適當 深度 軟件結構中控制的層數 寬度 軟件結構內同一個層次上的模塊總數的最大值 扇出 一個模塊直接控制 調用 的模塊數目 扇入 有多少個上級模塊直接調用它 15 啟發(fā)性規(guī)則 7條 4 模塊的作用域應該在控制域之內 模塊的作用域 定義為受該模塊內一個判定影響的所有模塊的集合 模塊的控制域 是這個模塊本身以及所有直接或間接從屬于它的模塊的集合 5 力爭降低模塊接口的復雜程度 6 設計單入口單出口的模塊 7 模塊功能應該可以預測 功能可預測 如果一個模塊可以當做一個黑盒子 只要輸入的數據相同就產生同樣的輸出 這個模塊的功能就是可以預測的 16 層次圖 H圖 層次圖用來描繪軟件的層次結構 很適于在自頂向下設計軟件的過程中使用 與層次方框圖的區(qū)別是 層次方框圖描繪的是數據結構 17 HIPO圖 HIPO圖是 層次圖 輸入 處理 輸出圖 的英文縮寫 為了能使HIPO圖具有可追蹤性 在H圖 層次圖 里除了最頂層的方框之外 每個方框都加了編號 和H圖中每個方框相對應 應該有一張IPO圖描繪這個方框代表的模塊的處理過程 18 面向數據流的設計方法 面向數據流的設計方法可以把數據流圖變換成軟件結構 通常所說的結構化設計方法 簡稱SD方法 也就是基于數據流的設計方法 19 信息流有兩種類型 變換流 事務流 20 變換分析 把具有變換流特點的數據流圖按預先確定的模式映射成軟件結構 21 變換分析設計步驟 1 復查基本系統模型 確保系統的輸入數據和輸出數據符合實際 2 復查并精化數據流圖 確保數據流圖給出了正確的邏輯模型 使數據流圖中每個處理都代表一個相對獨立的子功能 3 確定數據流圖具有變換特性還是事務特性 4 確定輸入流和輸出流的邊界 從而孤立出變換中心 21 變換分析設計步驟 5 完成 第一級分解 最頂層的控制模塊協調下述從屬的控制功能 輸入信息處理控制模塊Ca 協調對所有輸入數據的接收 變換中心控制模塊Ct 管理對內部形式的數據的所有處理操作 輸出信息處理控制模塊Ce 協調輸出信息的產生過程 21 變換分析設計步驟 6 完成 第二級分解 輸入部分 轉換部分 輸出部分分別映射成接收模塊 處理模塊 輸出模塊 從變換中心的邊界開始沿輸入通路向外移動 把輸入通路中每個處理映射成軟件結構中Ca控制下的一個低層模塊 然后沿輸出通路向外移動 把輸出通路中每個處理映射成直接或間接受模塊Ce控制的一個低層模塊 最后把變換中心內的每個處理映射成受Ct控制的一個處理模塊 21 變換分析設計步驟 6 完成 第二級分解 7 使用設計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結構進一步精化 22 事物分析 23 舉例 根據儲蓄系統的數據流圖利用面向數據流的設計方法設計其軟件結構 23 舉例 根據儲蓄系統的數據流圖利用面向數據流的設計方法設計其軟件結構 第五章總體設計 復習重點 總體設計的目的模塊化模塊獨立及度量標準耦合 內聚及其種類啟發(fā)性規(guī)則面向數據流的設計方法 第六章詳細設計設計 1 總體設計的目的 確定應該怎樣具體地實現所要求的系統 2 結構程序設計 經典的結構程序設計 只允許使用順序 IF THEN ELSE型分支和DO WHILE型循環(huán)這3種基本控制結構 擴展的結構程序設計 如果除了上述3種基本控制結構之外 還允許使用DO CASE型多分支結構和DO UNTIL型循環(huán)結構 修正的結構程序設計 再加上允許使用LEAVE 或BREAK 結構 描述程序處理過程的工具叫程序設計工具 分為圖形 表格 和語言3類 必須提供對設計的無歧義的描述 包括 程序流程圖 程序框圖 盒圖 N S圖 PAD圖 判定表 判定樹 過程設計語言 偽碼 3 過程設計工具 4 程序流程圖 程序流程圖又稱為程序框圖 它是歷史最悠久 使用最廣泛描述過程設計的方法 也是用的最混亂的一種方法 5 盒圖 N S圖 出于要有一種不允許違背結構程序設計精神的圖形工具的考慮 Nassi和Shneiderman提出了盒圖 又稱為N S圖 6 PAD圖 是問題分析圖 problemanalysisdiagram 的英文縮寫 它用二維樹形結構的圖來表示程序的控制流 將這種圖翻譯成程序代碼比較容易 7 判定表 判定表卻能夠清晰地表示復雜的條件組合與應做的動作之間的對應關系 8 判定樹 是判定表的變種 用樹形的方式清晰地表示復雜的條件組合與應做的動作之間的對應關系 畫判定樹時分枝的次序可能對最終畫出的判定樹的簡潔程度有較大影響 9 過程設計語言 過程設計語言 PDL 也稱為偽碼 它是用正文形式表示數據和處理過程的設計工具 偽代碼的基本控制結構 簡單陳述句結構 避免復合語句 判定結構 IF THEN ELSE或CASE OF結構 選擇結構 WHILE DO或REPEAT UNTIL結構 例題 某程序流程圖如下圖所示 請分別用N S圖和PAD圖表示 a j b i c e d x2 x3 x4 f g h xi PAD圖 x8 a j x1 b T F f x6 T F x7 i g h CASExi x2 x4 x3 x5 c d e N S圖 例題 某校制定了教師的講課課時津貼標準 對于各種性質的講座 無論教師是什么職稱 每課時津貼費一律是50元 對于一般的授課 則根據教師的職稱來決定每課時津貼費 教授30元 副教授25元 講師20元 助教15元 請分別用判定表 判定樹表示津貼標準 10 面向數據結構的設計方法 面向數據結構的設計方法的根據數據結構最終得出對程序處理過程的描述 最適合在詳細階段使用 11 Jackson方法 面Jackson結構程序設計方法由5個步驟組成 1 分析并確定輸入數據和輸出數據的邏輯結構 用Jackson圖描繪數據結構 2 找出輸入數據結構和輸出數據結構中有對應關系的數據單元 3 用下述規(guī)則從描繪數據結構的Jackson圖導出描繪程序結構的Jackson圖 第一 為每對有對應關系的數據單元 按照它們在數據結構圖中的層次 在程序結構圖的相應層次畫一個處理框 層次不同時與圖中層次低的那個對應 第二 根據輸入數據結構中剩余的每個數據單元所處的層次 在程序結構圖的相應層次分別為它們畫上對應的處理框 第三 根據輸出數據結構中剩余的每個數據單元所處的層次 在程序結構圖的相應層次分別為它們畫上對應的處理框 改進的Jackson圖規(guī)定在構成順序結構的元素中不能有重復出現或選擇出現的元素 因此可能需要增加中間層次的處理框 4 列出所有操作和條件 包括分支條件和循環(huán)結束條件 并且把它們分配到程序結構圖的適當位置 5 用偽碼表示程序 12 程序復雜程度的定量度量 定量度量程序復雜程度 McCabe方法 Halstead方法 13 McCabe方法 根據程序控制流的復雜程度定量度量程序的復雜程度 這樣度量出的結果稱為程序的環(huán)形復雜度 為了突出表示程序的控制流 通常使用流圖 14 計算環(huán)形復雜度的方法 有了描繪程序控制流的流圖之后 可以用下述3種方法中的任何 第六章詳細設計 復習重點 程序的3種基本控制結構 程序流程圖 N S圖 盒圖 PAD圖的基本符號會畫程序流程圖 N S圖 PAD圖和判定表 判定樹計算環(huán)形復雜度的方法 第七章實現 1 軟件實現 通常把編碼和測試統稱為實現 所謂編碼 就是把軟件設計結果翻譯成用某種程序設計語言書寫的程序 源程序代碼的邏輯簡明清晰 易讀易懂是好程序的一個重要標準 測試的目的 就是在軟件投入生產性運行之前 盡可能多地發(fā)現軟件中的錯誤 2 軟件測試的目標 測試是為了發(fā)現程序中的錯誤而執(zhí)行程序的過程 好的測試方案是極可能發(fā)現迄今為止尚未發(fā)現的錯誤的測試方案 成功的測試是發(fā)現了至今為止尚未發(fā)現的錯誤的測試 注意 測試決不能證明程序是正確的 即使經過了最嚴格的測試之后 仍然可能還有沒被發(fā)現的錯誤潛藏在程序中 測試用例應由測試輸入數據和與之對應的預期輸出結果這兩部分組成 窮舉測試是不可能的 3 軟件測試方法 1 黑盒測試 功能測試 把程序看作一個黑盒子 完全不考慮程序的內部結構和處理過程 是在程序接口進行的測試 2 白盒測試 結構測試 把程序看成裝在一個透明的盒子里 測試者完全知道程序的結構和處理算法 按照程序內部的邏輯測試程序 檢測程序中的主要執(zhí)行通路是否都能按預定要求正確工作 白盒測試 黑盒測試都不可能實現窮盡測試 4 軟件測試步驟 模塊測試 子系統測試 系統測試 驗收測試 平行運行 1 模塊測試 單元測試 模塊測試又稱單元測試 它把每個模塊作為單獨的實體來測試 保證每個模塊作為一個單元能正確運行 發(fā)現的往往是編碼和詳細設計的錯誤 單元測試主要使用白盒測試技術 2 子系統測試把經過單元測試的模塊放在一起形成一個子系統來測試 著重測試模塊的接口 3 系統測試把經過測試的子系統裝配成一個完整的系統來測試 發(fā)現的往往是軟件設計編碼中的錯誤 也可能發(fā)現需求說明中的錯誤 不論是子系統測試還是系統測試 都兼有檢測和組裝兩重含義 稱為集成測試 4 驗收測試 確認測試 把軟件系統作為單一的實體進行測試 它是在用戶積極參與下進行的 而且可能主要使用實際數據 系統將來要處理的信息 進行測試 發(fā)現的往往是系統需求說明書中的錯誤 驗收測試也稱為確認測試 5 平行運行 同時運行新開發(fā)出來的系統和將被它取代的舊系統 6 驅動程序 存根程序 單元測試可以應用人工測試和計算機測試這樣兩種不同類型的測試方法 在計算機測試中 模塊不是一個獨立的程序 不能獨立運行 它可能調用其它模塊或被其它模塊調用 因此必須為每個單元測試開發(fā)驅動程序和 或 存根程序 驅動程序是一個 主程序 它接收測試數據 傳送給被測試的模塊 存根程序代替被測試的模塊所調用的模塊 相當于 虛擬子程序 7 集成測試的集成策略 模塊組裝成程序時有兩種方法 1 非漸增式測試方法 先分別測試每個模塊 再把所有模塊按設計要求放在一起結合成所要的程序 2 漸增式測試 把下一個要測試的模塊同已經測試好的那些模塊結合起來進行測試 測試完以后再把下一個應該測試的模塊結合進來測試 當使用漸增方式把模塊結合到程序中去時 有自頂向下和自底向上兩種集成策略 當使用自頂向下集成時有深度優(yōu)先和寬度優(yōu)先的策略 7 回歸測試 回歸測試 是指重新執(zhí)行已經做過的測試的某個子集 以保證測試過程中的變化沒有帶來非預期的副作用 回歸測試就是用于保證由于調試或其他原因引起的變化 不會導致非預期的軟件行為或額外錯誤的測試活動 8 Alpha和Beta測試 Alpha測試由用戶在開發(fā)者的場所進行 并且在開發(fā)者對用戶的 指導 下進行測試 是在受控的環(huán)境中進行的 Beta測試由軟件的最終用戶們在一個或多個客戶場所進行 開發(fā)者通常不在測試的現場 Beta測試是軟件在開發(fā)者不能控制的環(huán)境中的 真實 應用 9 白盒測試技術 10 邏輯覆蓋 1 語句覆蓋 選擇足夠多的測試數據 使被測程序中每個語句至少執(zhí)行一次 2 判定覆蓋 不僅每個語句必須至少執(zhí)行一次 而且每個判定的每種可能的結果都應該至少執(zhí)行一次 比語句覆蓋強 但對程序邏輯的覆蓋程度仍不高 3 條件覆蓋 不僅每個語句至少執(zhí)行一次 而且使判定表達式中的每個條件都取到各種可能的結果 判定覆蓋不一定包含條件覆蓋 條件覆蓋也不一定包含判定覆蓋 4 判定 條件覆蓋 使得判定表達式中的每個條件都取到各種可能的值 每個判定表達式也都取到各種可能的結果 有時判定 條件覆蓋也并不比條件覆蓋更強 5 條件組合覆蓋 要求選取足夠多的測試數據 使得每個判定表達式中條件的各種可能組合都至少出現一次 條件組合覆蓋標準的測試數據并不一定能使程序中的每條路徑都執(zhí)行到 6 點覆蓋 程序執(zhí)行路徑至少經過流圖的每個結點一次 語句覆蓋標準相同 7 邊覆蓋 使得程序執(zhí)行路徑至少經過流圖中每條邊一次 判定覆蓋一致 8 路徑覆蓋 選取足夠多測試數據 使程序的每條可能路徑都至少執(zhí)行一次 如果程序圖中有環(huán) 則要求每個環(huán)至少經過一次 語句覆蓋 判定覆蓋 條件覆蓋 判定 條件覆蓋 條件組合覆蓋 路徑覆蓋 點覆蓋 邊覆蓋 11 控制結構測試 1 基本路徑測試 2 條件測試 3 循環(huán)測試 12 黑盒測試技術 1 等價劃分 2 邊界值分析 3 錯誤推測 13 等價劃分 等價劃分是一種黑盒測試技術 把程序的輸入域劃分成若干個數據類 每類中的一個典型值在測試中的作用與這一類中所有其他值的作用相同 使用等價劃分法設計測試方案首先需要劃分輸入數據的等價類 常常還需要分析輸出數據的等價類 以便根據輸出數據的等價類導出對應的輸入數據等價類 14 等價劃分原則 如果規(guī)定了輸入數據的個數 則類似地也可以劃分出一個有效的等價類和兩個無效的等價類 如果規(guī)定了輸入數據的一組值 而且程序對不同輸入值做不同處理 則每個允許的輸入值是一個有效的等價類 此外還有一個無效的等價類 任一個不允許的輸入值 如果規(guī)定了輸入數據必須遵循的規(guī)則 則可以劃分出一個有效的等價類 符合規(guī)則 和若干個無效的等價類 從各種不同角度違反規(guī)則 如果規(guī)定了輸入數據為整型 則可以劃分出正整數 零和負整數等3個有效類 如果程序的處理對象是表格 則應該使用空表 以及含一項或多項的表 15 等價劃分設計測試方案時步驟 為每一個等價類規(guī)定一個唯一編號 設計一個新的測試方案以盡可能多地覆蓋尚未被覆蓋的有效等價類 重復這一步驟直到所有有效等價類都被覆蓋為止 設計一個新的測試方案 使它覆蓋一個而且只覆蓋一個尚未被覆蓋的無效等價類 重復這一步驟直到所有無效等價類都被覆蓋為止 注意 通常程序發(fā)現一類錯誤后就不再檢查是否還有其他錯誤 因此 應該使每個測試方案只覆蓋一個無效的等價類 例子 某城市的電話號碼由3個部分組成 地區(qū)碼 空白或四位數字 前綴 非0或1開頭的四位數字 后綴 四位數字 使用等價類劃分方法進行測試用例設計 16 邊界值分析 驗表明 處理邊界情況時程序最容易發(fā)生錯誤 使用邊界值分析方法設計測試方案首先應該確定邊界情況 選取的測試數據應該剛好等于 剛剛小于和剛剛大于邊界值 通常設計測試方案時總是聯合使用等價劃分和邊界值分析兩種技術 例 測試計算平方根的函數 輸入 實數 輸出 實數需求說明 當輸入一個0或比0大的數的時候 返回其正平方根 輸入一個小于0的數時 顯示錯誤信息 輸入值小于0非法 并返回0 劃分 1 邊界為0和最大正實數 劃分 2 邊界為最小負實數和0 由此得到以下測試用例 a 輸入 最小負實數 b 輸入 絕對值很小的負數 c 輸入0d 輸入 絕對值很小的正數 e 輸入 最大正實數 17 調試 調試是在測試發(fā)現錯誤之后排除錯誤的過程 有下列3種調試途徑可以采用 蠻干法回溯法原因排除法 對分查找法歸納法演繹法 17 軟件可靠性 程序在給定的時間間隔內 按照規(guī)格說明書的規(guī)定成功地運行的概率 平均無故障時間MTTF是衡量軟件可靠性的重要指標 18 軟件可用性 軟件可用性是程序在給定的時間點 按照規(guī)格說明書的規(guī)定 成功地運行的概率 第七章實現 復習重點 測試的目的 任務 步驟及方法 黑盒測試和白盒測試 Alpha和Beta測試掌握邏輯覆蓋法掌握等價劃分法和邊界值分析法調試的概念 第八章維護 1 維護定義 所謂軟件維護就是在軟件已經交付使用之后 為了改正錯誤或滿足新的需要而修改軟件的過程 2 維護的種類 可分為4項活動 改正性維護 把診斷和改正錯誤的過程稱為改正性維護 適應性維護 為了和變化了的環(huán)境適當地配合而進行的修改軟件的活動 完善性維護 為了滿足在用戶提出的增加新功能或修改已有功能的要求和一般性的改進要求 需要進行完善性維護 預防性維護 把今天的方法學應用于昨天的系統以滿足明天的需要 采用先進的軟件工程方法對需要維護的軟件或軟件中的某一部分 主動地進行重新設計 編碼和測試 注意 只有預防性維護是主動的 其他維護都是被動的 3 軟件的可維護性定性 維護人員理解 改正 改動或改進這個軟件的難易程度 4 決定軟件的可維護性定性的因素 可理解性可測試性可修改性可移植性可重用性文檔是影響軟件可維護性的決定因素 5 軟件再工程過程 典型的軟件再工程過程模型定義了 庫存目錄分析文檔重構逆向工程代碼重構數據重構正向工程6類活動 第八章維護 復習重點 維護的定義維護的類型決定軟件的可維護性定性的因素 第九章面向對象方法學論 1 向對象方法學要點 1 面向對象的軟件系統是由對象組成的 軟件中的任何元素都是對象 復雜的軟件對象由比較簡單的對象組合而成 2 把所有對象都劃分成各種對象類 簡稱為類 class 每個對象類都定義了一組數據和一組方法 數據用于表示對象的靜態(tài)屬性 是對象的狀態(tài)信息 3 按照子類 或稱為派生類 與父類 或稱為基類 的關系 把若干個對象類組成一個層次結構的系統 也稱為類等級 4 對象彼此之間僅能通過傳遞消息互相聯系 面向對象 oo 對象 objects 類 classes 繼承 inheritance 通信 communicationwithmessages 2 面向對象方法的優(yōu)點 與人們習慣的思維方法一致 穩(wěn)定性好 可重用性好 較易開發(fā)大型軟件產品 可維護性好 3 對象 是客觀事物或概念的抽象表述 即對客觀存在的事物的描述統稱為對象 對象可以是事 物 或抽象概念 是將一組數據和使用該數據的一組基本操作或過程封裝在一起的實體 對象的特點 1 以數據為中心 2 對象是主動的 3 實現了數據封裝 4 本質上具有并行性 5 模塊獨立性好 4 類 類就是對具有相同數據和相同操作的一組相似對象的定義 類 好比是一個對象模板 用它可以產生多個對象 5 實例 實例就是由某個特定的類所描述的一個具體的對象 6 消息 對象之間通信的手段 是一個對象要求另一對象執(zhí)行類中定義的某個操作的規(guī)格說明 通常一個消息由三部分組成 接收消息的對象消息標識符 即消息名 零個或多個變元MyCircle Show Green 7 其他概念 方法 方法就是對象所能執(zhí)行的操作 也就是類中所定義的服務 屬性 屬性就是類中所定義的數據 它是對客觀世界實體所具有的性質的抽象 封裝 封裝就是指把對象的數據和實現操作的代碼集中起來放在對象內部 繼承 繼承是子類自動地共享基類中定義的數據和方法的機制 單重繼承 子類僅從一個父類繼承屬性和方法 多重繼承 子類可從多個父類繼承屬性和方法 多態(tài)性 是指子類對象可以像父類對象那樣使用 同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象 即不同等級的類 可以公用一個方法的名字 不同層次中的每個類卻各自按自己的需要來實現這個行為 重載 有兩種重載 1 函數重載 指在同一作用域內的若干個參數特征不同的函數可以使用相同的函數名字 2 運算符重載 指同一運算符可以施加于不同類型的操作數上面 當被操作數類型不同時 運算符的含義是不同的 8 面向對象建模 面向對象開發(fā)軟件 需要建立3種形式的模型 對象模型 描述系統數據結構 數據結構 動態(tài)模型 描述系統控制結構 執(zhí)行操作 功能模型 描述系統功能 數值變化 對象模型始終都是最重要 最基本 最核心 功能模型指明了系統應該 做什么 動態(tài)模型明確規(guī)定了 什么時候做 對象模型則定義了做事情的實體 即 對誰做 9 類圖的基本符號 1 定義類 類的圖形符號為長方形 用兩條橫線把長方形分成上 中 下3個區(qū)域 別放類的名字 屬性和服務 2 定義屬性 可見性屬性名 類型 缺省值 性質串 3 定義方法 可見性操作名 參數表 返回類型 性質串 10 表示關系的符號 1 普通關聯 2 限定關聯 3 關聯類 關聯中的每個連接與關聯類的一個對象相聯系 關聯類通過一條虛線與關聯連接 11 聚集 聚集是一種特殊的關聯 聚集表示類與類之間是整體與部分的關系 除了一般聚集之外 還有兩種特殊的聚集關系 分別是共享聚集和組合聚集 1 共享聚集如果在聚集關系中處于部分方的對象可同時參與多個處于整體方對象的構成 則該聚集稱為共享聚集 一般聚集和共享聚集的關聯關系用空心菱形表示 2 組合聚集如果部分類完全隸屬于整體類 部分與整體共存 整體不存在了部分也會隨之消失 則該聚集稱為組合聚集 組合聚集的組成關系用實心菱形表示 12 泛化 泛化關系就是通常所說的繼承關系 它是通用元素和具體元素之間的一種分類關系 用一端為空心三角形的連線表示泛化關系 三角形的頂角緊挨著通用元素 注意 泛化針對類型而不針對實例 泛化可進一步劃分成普通泛化和受限泛化 受限泛化 給泛化關系附加約束條件 分為 多重 不相交 完全 不完全 13 依賴和細化 1 依賴關系依賴關系表示 描述兩個模型元素 類 用例 之間的關系 其中一個模型元素是獨立的 另一個模型元素不是獨立的 它依賴于獨立的模型元素 如果獨立的模型元素改變了 將影響依賴于它的模型元素 2 細化關系當對同一個事物在不同抽象層次上描述時 這些描述之間具有細化關系 假設兩個模型元素A和B描述同一個事物 它們的區(qū)別是抽象層次不同 如果B是在A的基礎上的更詳細的描述 則稱B細化了A 或稱A細化成了B 注意是虛線 實線就成了泛化 14 動態(tài)模型 動態(tài)模型描述系統控制結構 通常用狀態(tài)圖表示 狀態(tài)圖 略 15 功能模型 用例圖 一幅用例圖包含的模型元素有系統 行為者 用例及用例之間的關系 使用用例模型代替?zhèn)鹘y的功能說明 往往能夠更好地獲取用戶需求 它所回答的問題是 系統應該為每個 或每類 用戶做什么 復習重點 類與對象的基本概念3種形式的模型 對象模型動態(tài)模型功能模型 第九章面向對象方法學論 1 面向對象分析 面向對象分析 就是抽取和整理用戶需求并建
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高考生物三年高考真題及模擬題分類匯編專題12種群和群落含解析
- 再生障礙性貧血護理教學查房
- 家庭教育書分享
- 中醫(yī)艾灸護理程序圖解
- 國畫動物美術課件
- 腫瘤科春季健康宣教內容
- 幼兒園睿思維培訓
- 綠化工程造價培訓
- 酒障病人的護理
- 2025年音樂產業(yè)音樂版權運營與音樂科技創(chuàng)新融合發(fā)展的技術創(chuàng)新報告
- 2025年重慶市中考歷史真題(原卷版)
- 吉林省國資委監(jiān)管企業(yè)招聘筆試真題2024
- 項目管理中的資源優(yōu)化配置
- 2025年重慶市中考道德與法治試卷真題(含標準答案)
- 2025年北京昌平區(qū)東小口鎮(zhèn)城市協管員招聘題庫帶答案分析
- 10kV供配電系統電氣設備改造 投標方案
- 婦女兒童之家管理制度
- 江蘇省揚州市江都區(qū)城區(qū)2025屆八年級物理第二學期期末聯考試題含解析
- 《防爆安全管理》課件
- 【課件】2024年全國I、II卷新高考讀后續(xù)寫+課件-2025屆高三英語一輪復習
- 醫(yī)保村醫(yī)政策培訓
評論
0/150
提交評論