《公共基礎3-軟件工程基礎.pptx》由會員分享,可在線閱讀,更多相關《公共基礎3-軟件工程基礎.pptx(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、軟件工程基礎,公共基礎知識,軟件工程基本概念,軟件生命周期概念,軟件工具與軟件開發(fā)環(huán)境。 結構化分析方法,數(shù)據(jù)流圖,數(shù)據(jù)字典,軟件需求規(guī)格說明書。 結構化設計方法,總體設計與詳細設計。 軟件測試的方法,白盒測試與黑盒測試,測試用例設計,軟件測試的實施,單元測試、集成測試和系統(tǒng)測試。 程序的調試,2,內容提要,3.1 軟件工程基本概念,軟件的定義和組成 計算機軟件(Software)是計算機系統(tǒng)中與硬件相互依賴的另一部分,包括程序、數(shù)據(jù)、文檔。 軟件分成三類: 應用軟件 系統(tǒng)軟件(操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、編譯程序、設備驅動程序等) 支撐軟件(介于應用軟件與系統(tǒng)軟件間,協(xié)助用戶開發(fā)軟件的工具性軟
2、件,比如需求分析工具軟件、編碼工具軟件、測試/維護工具軟件),4,3.1.1 軟件定義與軟件特點,軟件危機 落后的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴重問題的現(xiàn)象。 嚴重問題歸結為成本、質量和生產率等問題 為了解決軟件危機,1968年提出了軟件工程這一概念,并逐漸形成了軟件工程學。(軟件工程源自于軟件危機),5,3.1.2 軟件危機與軟件工程,軟件工程 將工程化應用到軟件開發(fā)過程中(在軟件的開發(fā)工程中應用工程化原則) 軟件工程學工程學的新興領域 軟件工程3個要素: 方法: 完成工程項目的技術手段 工具:支持軟件開發(fā)、管理、文檔生成的工具 過程:
3、對開發(fā)的各個環(huán)節(jié)進行控制和管理,6,3.1.2 軟件危機與軟件工程,軟件工程過程 軟件開發(fā)過程:把用戶的要求轉變?yōu)檐浖a品的過程。,7,3.1.3 軟件工程過程與軟件生命周期,3.1.3 軟件工程過程與軟件生命周期,軟件的生命周期 軟件產品從提出、實現(xiàn)、使用維護、停止使用到退役的過程 3個階段 軟件定義 軟件開發(fā) 軟件運行維護 6個階段工作,8,可行性報告,軟件規(guī)格說明書,測試分析報告,3.1.3 軟件工程過程與軟件生命周期,定義階段 可行性研究與計劃指定:能做嗎? 需求分析:做什么? 開發(fā)階段: 軟件設計:如何做?,分為概要設計和詳細設計兩個階段。 軟件實現(xiàn):實現(xiàn),編碼。 軟件測試:做的怎么
4、樣? 運行維護階段 使用,不斷維護,9,可行性報告,軟件規(guī)格說明書,測試分析報告,概要設計說明書,詳細設計說明書,完成編碼及面向用戶的手冊,軟件工程的目標 在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產品 軟件工程學的范疇,10,3.1.4 軟件工程的目標與原則,軟件工程原則 抽象 抽取事物最基本的特性和行為,忽略非本質細節(jié) 信息隱蔽 采用封裝技術,將程序模塊的實現(xiàn)細節(jié)隱藏起來 模塊化 解決一個復雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干模塊 局部化 確定性 一致性 完備性 可驗證性,11,3.1.4
5、軟件工程的目標與原則,,,軟件開發(fā)工具 協(xié)助開發(fā)人員進行軟件開發(fā)活動所使用的軟件或環(huán)境 需求分析工具、設計工具、編碼工具、排錯工具、測試工具等。 軟件開發(fā)環(huán)境 全面支持軟件開發(fā)全過程的軟件工具的集合 計算機輔助軟件工程:CASE,12,3.1.5 軟件開發(fā)工具與軟件開發(fā)環(huán)境,3.2 結構化分析方法,1需求分析 定義: 任務:導出目標系統(tǒng)的邏輯模型 全面理解用戶的各項要求,準確地表達各項要求 主要工作: 需求獲取需求分析編寫需求規(guī)格說明書需求審評(驗證需求文檔的一致性、可行性、完整性和有效性) 2.需求分析方法: 結構化分析方法 面向數(shù)據(jù)流的結構化分析方法(SA)、面向數(shù)據(jù)結構的Jackson方
6、法(JSD)、面向數(shù)據(jù)結構的結構化數(shù)據(jù)系統(tǒng)開發(fā)方法(DSSD) 面向對象分析方法(OOA) 靜態(tài)分析方法、動態(tài)分析方法,14,3.2.1 需求分析與需求分析方法,需求分析:解決“做什么”問題,1關于結構化分析方法 結構化程序設計理論在需求分析階段的運用 面向數(shù)據(jù)流進行需求分析的方法 自頂向下、逐層分解 主要工具:數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、結構化英語、判定樹、判定表,15,3.2.2 結構化分析方法,2結構化分析的常用工具 數(shù)據(jù)流圖(DFD) 數(shù)據(jù)字典(DD) 結構化分析方法的核心 對數(shù)據(jù)流圖(DFD)中出現(xiàn)的被命名的圖形元素的確切解釋 判定樹、判定表 以圖形形式描述數(shù)據(jù)流圖(DFD
7、)的加工邏輯,16,3.2.2 結構化分析方法,數(shù)據(jù)流圖(DFD):,17,3.2.2 結構化分析方法,,基本圖形元素,軟件需求規(guī)格說明書 是需求分析階段的最后成果 特點: 正確性;無歧義性;完整性;可驗證性;一致性;可理解性;可修改性;可追蹤性。 最重要的是正確性,18,3.2.3 軟件需求規(guī)格說明書,3.3 結構化設計方法,1軟件設計的基礎 開發(fā)階段包括了軟件設計、實現(xiàn)(編碼)和軟件測試三部分,軟件設計是開發(fā)階段最重要的步驟。 從工程管理角度來看,軟件設計分兩步完成:概要設計和詳細設計,20,3.3.1 軟件設計的基本概念,需求分析:解決“做什么”問題 軟件設計:解決“怎么做”問題,2軟件
8、設計的基本原理 抽象 抽出事物本質的共同特點 模塊化 信息隱蔽 每個模塊的實現(xiàn)細節(jié)對于其它模塊來說是隱蔽的 模塊獨立性 每個模塊只涉及軟件要求的具體的子功能和軟件系統(tǒng)中其它的模塊的接口是簡單的 衡量指標: 耦合性:模塊間互相連接的緊密程序的度量 內聚性:模塊內部各個元素之間彼此結合的緊密程度的度量 應做到:高內聚,低耦合,21,3.3.1 軟件設計的基本概念,1概要設計的基本任務 系統(tǒng)結構設計數(shù)據(jù)結構和數(shù)據(jù)庫的設計編寫概要設計文檔概要設計的評審 常用的軟件結構設計工具是結構(SC)圖,22,3.3.2 概要設計,3面向數(shù)據(jù)流的設計方法 數(shù)據(jù)流圖(DFD):需求分析工具 系統(tǒng)結構圖(SC):概要
9、設計工作 主要任務:數(shù)據(jù)流圖變換成結構圖 數(shù)據(jù)流的類型:變換流/事務流 實施要點與設計過程 分析、確認數(shù)據(jù)流圖的類型,區(qū)分是事務型還是變換型 說明數(shù)據(jù)流的邊界 數(shù)據(jù)流圖映射為程序結構 根據(jù)設計準則把數(shù)據(jù)流轉換成程序結構圖,23,3.3.2 概要設計(續(xù)),,,,詳細設計的任務: 確定實現(xiàn)算法和局部數(shù)據(jù)結構 不同于編碼或編程 常用過程設計工具: 圖形工具:程序流程圖、N-S、PAD(問題分析圖)和HIPO 表格工具:判定表; 語言工具:PDL(偽碼),24,3.3.3 詳細設計,3.3.3 詳細設計(續(xù)),程序流程圖 圖形元素: 方框:處理步驟 菱形:邏輯條件 箭頭:控制流 5種控制結構 順序型
10、 選擇型 先判斷重復型 后判斷重復型 多分支選擇型。,25,,3.4 軟件測試,測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,沒有改正錯誤 一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤 一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試 準則: 所有的測試都應該追溯到需求 程序員應避免檢查自己的程序 測試用例(Test Case):為測試設計的數(shù)據(jù),包含兩部分:輸入值集和輸出值集。,27,3.4 軟件測試,從是否需要執(zhí)行被檢測的軟件的角度,分為靜態(tài)測試與動態(tài)測試 靜態(tài)測試 人工評審軟件文檔或程序,借以發(fā)現(xiàn)其中的錯誤 主要方法:代碼檢查、靜態(tài)結構分析、代碼質量度量 動態(tài)測試 上機測試 關鍵:設計高效、合理的測試用
11、例 分兩類:白盒測試方法和黑盒測試方法,28,3.4 軟件測試,按照功能劃分,分為白盒測試和黑盒測試 白盒測試 也稱結構測試或邏輯驅動測試 在程序內部進行,主要用于完成軟件內部操作的驗證。 測試用例是根據(jù)程序的內部邏輯來設計 主要用于單元測試 基本原則 保證所測模塊中每一個獨立路徑至少執(zhí)行一次 保證所測模塊所有判斷的每一個分支至少執(zhí)行一次 保證所測模塊每一個循環(huán)都在邊界條件和一般條件至少執(zhí)行一次 驗證所有內部數(shù)據(jù)結構的有效性 主要方法:邏輯覆蓋、基本路徑測試,29,3.4 軟件測試,按照功能劃分,分為白盒測試和黑盒測試 黑盒測試 也稱功能測試或數(shù)據(jù)驅動測試 對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進行
12、測試和驗證 根據(jù)程序的功能說明來設計測試用例 主要用于確認測試 主要方法 等價類劃分法 邊界值分析法 錯誤推測法,30,3.4 軟件測試,31,,軟件測試步驟: 單元測試、集成測試、確認測試、系統(tǒng)測試,3.4 軟件測試,1單元測試 對象:針對程序模塊,進行正確性檢驗的測試 目的:發(fā)現(xiàn)各模塊內部可能存在的各種差錯 依據(jù):從程序的內部結構出發(fā)設計測試用例,其依據(jù)是詳細的設計說明書和源程序 方法:以白盒測試為主,輔以黑盒測試 在編碼階段進行 驅動模塊(相當于被測模塊的主程序,將測試數(shù)據(jù)傳遞給被測試的模塊)樁模塊(代替被測模塊調用的其他模塊),32,,3.4 軟件測試,1單元測試 驅動模塊:相當于被測
13、模塊的主程序,將測試數(shù)據(jù)傳遞給被測試的模塊 樁模塊:代替被測模塊調用的其他模塊,33,,3.4 軟件測試,2集成測試 任務:把模塊在按照設計要求組裝起來的同時進行測試 目的:發(fā)現(xiàn)與接口有關的錯誤 依據(jù):集成測試的依據(jù)是概要設計說明書 內容:軟件單元的接口測試、全局數(shù)據(jù)結構測試、邊界條件和非法輸入的測試 方式:非增量方式組裝與增量方式組裝。,34,,,3.4 軟件測試,3確認測試 又稱有效性測試 目的:驗證軟件的功能和性能及其它特性是否與用戶的要求一致 依據(jù):軟件需求規(guī)格說明書 方法:黑盒測試法 4系統(tǒng)測試 任務:在實際運行(使用)環(huán)境下,對計算機系統(tǒng)進行一系列的組裝測試和確認測試 目的:在于通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或與之矛盾的地方 依據(jù): 需求分析規(guī)格說明來設計 內容:功能測試、性能測試、操作測試、配置測試、外部接口測試、安全性測試,35,,,,3.4 軟件測試,3.5 程序的調試,程序調試 任務:診斷和改正程序中的錯誤 時機:調試主要在開發(fā)階段進行 基本步驟:錯誤定位、糾正錯誤、回歸測試,37,3.5.1 基本概念,1強行排錯法 通過內存全部打印來排錯(Memory Dump) 在程序特定部位設置打印語句 自動調試工具 2回溯法 3原因排除法 演繹法 歸納法 二分法,38,3.5.2 軟件調試方法,