第三章 軟體工程基礎
3.1 軟體工程基本概念
計算機軟體是包括程式、資料及相關文件的完整集合。
軟體的特點包括:
(1)軟體是一種邏輯實體;
(2)軟體的生產與硬體不同,它沒有明顯的製作過程;
(3)軟體在執行、使用期間不存在磨損、老化問題;
(4)軟體的開發、執行對計算機系統具有依賴性,受計算機系統的限制,這導致了軟體移植的問題;
(5)軟體複雜性高,成本昂貴;
(6)軟體開發涉及諸多的社會因素。
軟體按功能分為應用軟體、系統軟體、支撐軟體(或工具軟體)。
軟體危機主要表現在成本、質量、生產率等問題。
軟體工程是應用於計算機軟體的定義、開發和維護的一整套方法、工具、文件、實踐標準和工序。
軟體工程包括3個要素:方法、工具和過程。
軟體工程過程是把軟體轉化為輸出的一組彼此相關的資源和活動,包含4種基本活動:
(1)p——軟體規格說明;
(2)d——軟體開發;
(3)c——軟體確認;
(4)a——軟體演進。
軟體週期:軟體產品從提出、實現、使用維護到停止使用退役的過程。
軟體生命週期三個階段:軟體定義、軟體開發、執行維護,主要活動階段是:
(1)可行性研究與計畫制定;
(2)需求分析;
(3)軟體設計;
(4)軟體實現;
(5)軟體測試;
(6)執行和維護。
軟體工程的目標和與原則:
目標:在給定成本、進度的前提下,開發出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足使用者需求的產品。
基本目標:付出較低的開發成本;達到要求的軟體功能;取得較好的軟體效能;開發軟體易於移植;需要較低的費用;能按時完成開發,及時交付使用。
基本原則:抽象、資訊隱蔽、模組化、區域性化、確定性、一致性、完備性和可驗證性。
軟體工程的理論和技術性研究的內容主要包括:軟體開發技術和軟體工程管理。
軟體開發技術包括:軟體開發方法學、開發過程、開發工具和軟體工程環境。
軟體工程管理包括:軟體管理學、軟體工程經濟學、軟體心理學等內容。
軟體管理學包括人員組織、進度安排、質量保證、配置管理、專案計畫等。
軟體工程原則包括抽象、資訊隱蔽、模組化、區域性化、確定性、一致性、完備性和可驗證性。
3.2 結構化分析方法
結構化方法的核心和基礎是結構化程式設計理論。
需求分析方法有(1)結構化需求分析方法;(2)物件導向的分析的方法。
從需求分析建立的模型的特性來分:靜態分析和動態分析。
結構化分析方法的實質:著眼於資料流,自頂向下,逐層分解,建立系統的處理流程,以資料流圖和資料字典為主要工具,建立系統的邏輯模型。
結構化分析的常用工具
(1)資料流圖; (2)資料字典; (3)判定樹; (4)判定表。
資料流圖:描述資料處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支援系統功能建模。
資料字典:對所有與系統相關的資料元素的乙個有組織的列表,以及精確的、嚴格的定義,使得使用者和系統分析員對於輸入、輸出、儲存成分和中間計算結果有共同的理解。
判定樹:從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結論,根據描述材料中的連線詞找出判定條件之間的從屬關係、並列關係、選擇關係,根據它們構造判定樹。
判定表:與判定樹相似,當資料流圖中的加工要依賴於多個邏輯條件的取值,即完成該加工的一組動作是由於某一組條件取值的組合而引發的,使用判定表描述比較適宜。
資料字典是結構化分析的核心。
軟體需求規格說明書的特點:
(1)正確性;
(2)無岐義性;
(3)完整性;
(4)可驗證性;
(5)一致性;
(6)可理解性;
(7)可追蹤性。
3.3 結構化設計方法
軟體設計的基本目標是用比較抽象概括的方式確定目標系統如何完成預定的任務,軟體設計是確定系統的物理模型。
軟體設計是開發階段最重要的步驟,是將需求準確地轉化為完整的軟體產品或系統的唯一途徑。
從技術觀點來看,軟體設計包括軟體結構設計、資料設計、介面設計、過程設計。
結構設計:定義軟體系統各主要部件之間的關係。
資料設計:將分析時建立的模型轉化為資料結構的定義。
介面設計:描述軟體內部、軟體和協作系統之間以及軟體與人之間如何通訊。
過程設計:把系統結構部件轉換成軟體的過程描述。
從工程管理角度來看:概要設計和詳細設計。
軟體設計的一般過程:軟體設計是乙個迭代的過程;先進行高層次的結構設計;後進行低層次的過程設計;穿插進行資料設計和介面設計。
衡量軟體模組獨立性使用耦合性和內聚性兩個定性的度量標準。
在程式結構中各模組的內聚性越強,則耦合性越弱。優秀軟體應高內聚,低耦合。
軟體概要設計的基本任務是:
(1)設計軟體系統結構;(2)資料結構及資料庫設計;
(3)編寫概要設計文件;(4)概要設計文件評審。
模組用乙個矩形表示,箭頭表示模組間的呼叫關係。
在結構圖中還可以用帶注釋的箭頭表示模組呼叫過程中來回傳遞的資訊。還可用帶實心圓的箭頭表示傳遞的是控制資訊,空心圓箭心表示傳遞的是資料。
結構圖的基本形式:基本形式、順序形式、重複形式、選擇形式。
結構圖有四種模組型別:傳入模組、傳出模組、變換模組和協調模組。
典型的資料流型別有兩種:變換型和事務型。
變換型系統結構圖由輸入、中心變換、輸出三部分組成。
事務型資料流的特點是:接受一項事務,根據事務處理的特點和性質,選擇分派乙個適當的處理單元,然後給出結果。
詳細設計:是為軟體結構圖中的每乙個模組確定實現演算法和區域性資料結構,用某種選定的表達工具表示演算法和資料結構的細節。
常見的過程設計工具有:圖形工具(程式流程圖)、**工具(判定表)、語言工具(pdl)。
3.4 軟體測試
軟體測試定義:使用人工或自動手段來執行或測定某個系統的過程,其目的在於檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。
軟體測試的目的:發現錯誤而執行程式的過程。
軟體測試方法:靜態測試和動態測試。
靜態測試包括**檢查、靜態結構分析、**質量度量。不實際執行軟體,主要通過人工進行。
動態測試:是基本計算機的測試,主要包括白盒測試方法和黑盒測試方法。
白盒測試:在程式內部進行,主要用於完成軟體內部cao作的驗證。主要方法有邏輯覆蓋、基本基路徑測試。
黑盒測試:主要診斷功能不對或遺漏、介面錯誤、資料結構或外部資料庫訪問錯誤、效能錯誤、初始化和終止條件錯,用於軟體確認。主要方法有等價類劃分法、邊界值分析法、錯誤推測法、因果圖等。
軟體測試過程一般按4個步驟進行:單元測試、整合測試、驗收測試(確認測試)和系統測試。
3.5 程式的除錯
程式除錯的任務是診斷和改正程式中的錯誤,主要在開發階段進行。
程式除錯的基本步驟:
(1)錯誤定位;
(2)修改設計和**,以排除錯誤;
(3)進行回歸測試,防止引進新的錯誤。
軟體除錯可分表靜態除錯和動態除錯。靜態除錯主要是指通過人的思維來分析源程式**和排錯,是主要的設計手段,而動態除錯是輔助靜態除錯。主要除錯方法有:
(1)強行排錯法;
(2)回溯法;
(3)原因排除法。
二級公共基礎之 程式設計
第二章 程式設計基礎 2 1 程式設計設計方法和風格 如何形成良好的程式設計風格 1 源程式文件化 2 資料說明的方法 3 語句的結構 4 輸入和輸出。注釋分序言性注釋和功能性注釋,語句結構清晰第 一 效率第二。2 2 結構化程式設計 結構化程式設計方法的四條原則是 1.自頂向下 2.逐步求精 3....
二級公共基礎(一)
1 演算法的基本概念 1.1演算法 解決方 而完整的描述。演算法不等於程式,也不等於計算方法。1.2基本特性 可行性 確定性 有窮性 擁有足夠的情報 1.3演算法設計的基本方法 例舉法 歸納法 遞推 遞迴 減半遞推法 回溯法 1.4演算法複雜度 演算法複雜度包括時間複雜度和空間複雜度。時間複雜度 執...
二級公共基礎知識 二級公共基礎知識 01
樹是一種資料結構,它是由n n 1 個有限結點組成乙個具有層次關係的集合。把它叫做 樹 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。樹的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,每個子結點可以分為多個不相交的子樹 ...