3.1軟體工程基本概念
1.軟體的定義與特點
(1)定義:軟體是指與計算機系統的操作有關的計算機程式、規程、規則,以及可能有的檔案、文件和資料。
(2)特點。
•是邏輯實體,有抽象性。
•生產沒有明顯的製作過程。
•執行使用期間不存在磨損、老化問題。
•開發、執行對計算機系統有依賴性,受計算機系統的限制,導致了軟體移植問題。
•複雜性較高,成本昂貴。
•開發涉及諸多社會因素。
2.軟體的分類
軟體可分應用軟體、系統軟體和支撐軟體3類。
(1)應用軟體是特定應用領域內專用的軟體。
(2)系統軟體居於計算機系統中最靠近硬體的一層,是計算機管理自身資源,提高計算機使用效率併為計算機使用者提供各種服務的軟體。
(3)支撐軟體介於系統軟體和應用軟體之間,是支援其它軟體的開發與維護的軟體。
3.軟體危機與軟體工程
軟體危機指在計算機軟體的開發和維護中遇到的一系列嚴重問題。軟體工程是應用於計算機軟體的定義、開發和維護的`一整套方法、工具、文件、實踐標準和工序,包括軟體開發技術和軟體工程管理。
4.軟體生命週期
軟體產品從提出、實現、使用維護到停止使用的過程稱為軟體生命週期。
在國家標準中,軟體生命週期劃分為8個階段①軟體定義期:包括問題定義、可行性研究和需求分析3個階段。②軟體開發期:包括概要設計、詳細設計、實現和測試4個階段。③執行維護期:即執行維護階段。
5.軟體工程的原則
軟體工程的原則包括:抽象、資訊隱蔽、模組化、區域性化、確定性、一致性、完備性和可驗證性。
3.2結構化分析方法
需求分析的任務是發現需求、求精、建模和定義需求的過程,可概括為:需求獲取、需求分析、編寫需求規格說明書和需求評審。
1.常用的分析方法
•結構化分析方法:其實質著眼於資料流,自頂向下,逐層分解,建立系統的處理流程。
•面向物件分析方法。
2.結構化分析常用工具
結構化分析常用工具包括資料流圖、數字字典(核心方法)、判斷樹和判斷表。
(1)資料流圖:即DFD圖,以圖形的方式描繪資料在系統中流動和處理的過程,它只反映系統必須完成的邏輯功能。是一種功能模型。
符號名稱作用:
•箭頭代表資料流,沿箭頭方向傳送資料的通道
•圓或橢圓代表加工,輸入資料經加工變換產生輸出
•雙槓代表儲存檔案,表示處理過程中存放各種資料檔案
•方框代表源和潭,表示系統和環境的介面
(2)資料字典:結構化分析方法的核心。資料字典是對所有與系統相關的資料元素的一個有組織的列表。以及精確的、嚴格的定義,使得使用者和系統分析員對於輸入、輸出、儲存成分和中間計算結果有共同的理解。
(3)判定樹:使用判定樹進行描述時,應先從問題定義的文字描述中分清判定的條件和判定的結論,根據描述材料中的連線詞找出判定條件之問的從屬關係、並列關係、選擇關係,根據它們構造判定樹。
(4)判定表:與判定樹相似,當資料流圖中的加工要依賴於多個邏輯條件的取值,即完成該加工的一組動作是由於某一組條件取值的組合引發的,使用判定表比較適宜。
3.軟體需求規格說明書
軟體需求規格說明書是需求分析階段的最後成果,是軟體開發的重要文件之一。
(1)軟體需求規格說明書的作用:①便於使用者、開發人員進行理解和交流;②反映出使用者問題的結構,可以作為軟體開發工作的基礎和依據;③作為確認測試和驗收的依據。
(2)軟體需求規格說明書的內容:①概述;②資料描述;③功能描述;④效能描述;⑤參考文獻;⑥附錄。
(3)軟體需求規格說明書的特點:①正確性;②無歧義性;③完整性;④可驗證性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追蹤性。
3.3結構化設計方法
1.軟體設計的基本概念和方法
軟體沒計是一個把軟體需求轉換為軟體表示的過程。
(1)基本原理:抽象、模組化、資訊隱藏、模組獨立性(度量標準:耦合性和內聚性,高耦合、低內聚)。
(2)基本思想:將軟體設計成由相對獨立、單一功能的模組組成的結構。
2.概要設計
(1)4個任務:設計軟體系統結構、資料結構及資料庫設計、編寫概要設計文件、概要設計文件評審。
(2)面向資料流的設計方法:資料流圖的資訊分為交換流和事物流,結構形式有交換型和事務型。
3.詳細設計的工具
詳細設計的工具包括:
•圖形工具:程式流程圖、N-S、PAD、HIPO。
•表格工具:判定表。
•語言工具:PDL(偽碼)。
3.4軟體測試
1.目的
為了發現錯誤而執行程式的過程。
2.準則
•所有測試應追溯到使用者需求。
•嚴格執行測試計劃,排除測試的隨意性。
•充分注意測試中的群集現象。
•程式設計師應避免檢查自己的程式。
•窮舉測試不可能。
•妥善儲存設計計劃、測試用例、出錯統計和最終分析報告。
3.軟體測試技術和方法
軟體測試的方法按是否需要執行被測軟體的角度,可分為靜態測試和動態測試,按功能分為白盒測試和黑盒測試。
(1)白盒測試:根據程式的內部邏輯設計測試用例,主要方法有邏輯覆蓋測試、基本路徑測試等。
(2)黑盒測試:根據規格說明書的功能來設計測試用例,主要診斷方法有等價劃分法、邊界值分析法、錯誤推測法、因果圖法等,主要用於軟體確認測試。
4.軟體測試的實施
軟體測試是保證軟體質量的重要手段,軟體測試是一個過程,其測試流程是該過程規定的程式,目的是使軟體測試工作系統化。
軟體測試過程分4個步驟,即單元測試、整合測試、驗收測試和系統測試。
單元測試是對軟體設計的最小單位——模組(程式單元)進行正確性檢驗測試。
單元測試的目的是發現各模組內部可能存在的各種錯誤。
單元測試的依據是詳細的設計說明書和源程式。
單元測試的技術可以採用靜態分析和動態測試。