(完整word版)軟件工程導論(第6版)知識點總結、復習課_第1頁
(完整word版)軟件工程導論(第6版)知識點總結、復習課_第2頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、復習課- 酷愛YC第一章1、什么是軟件危機,什么是軟件工程軟件危機是指在計算機軟件開發(fā)、使用與維護過程中遇到的一系列嚴重問題和難題。它 包括兩方面:(1 1)如何開發(fā)軟件,以滿足對軟件日益增長的需求;(2 2)如何維護數(shù)量不斷膨 脹的已有軟件。軟件工程:采用工程的概念、原理、技術和方法來開發(fā)與維護軟件,把經過時間考驗而 證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發(fā)出高質 量的軟件,并有效地維護它。2、完整的軟件配置由哪些內容組成軟件配置主要包括程序,文檔和數(shù)據(jù)等成分。3、軟件生命周期分為哪3個時期和8個階段, 每個階段的任務(工作)分別是 什么,重要性如何問題定義問題

2、定義軟件定義軟件定義可行性研究可行性研究需求分析需求分析爲體設計爲體設計詳細設計詳細設計軟件生命周期軟件生命周期軟件開發(fā)軟件開發(fā) 編碼與單元測試編碼與單元測試綜合測試綜合測試運行維護運行維護持續(xù)滿足用戶需求持續(xù)滿足用戶需求概括地說,軟件生命周期由 軟件定義、軟件開發(fā)和運行維護 3 3 個時期組成1 1 、軟件定義 (系統(tǒng)分析 ) 軟件定義時期的任務是:確定軟件開發(fā)工程必須完成的總目標;確定工程的可行性;導 出實現(xiàn)工程目標應該采用的策略及系統(tǒng)必須完成的功能;估計完成該項工程需要的資源 和成本,并且制定工程進度表。這個時期的工作通常又稱為系統(tǒng)分析,由系統(tǒng)分析員負 責完成。軟件定義時期通常進一步劃分

3、成 3 3 個階段,即問題定義、可行性研究和需求分 析。(1 1)問題定義 ,確定系統(tǒng)要解決的問題是什么。成果:關于問題性質、工程目標和工程規(guī) 模的報告。(2 2)可行性研究 ,確定問題是否有可用的、能行得通的解 (包括:技術、經濟、操作、社 會等方面的可行性 )。這個階段的任務不是具體解決問題,而是研究問題的范圍,探索這 個問題是否值得去解,是否有可行的解決辦法。成果:可行性研究報告。(3 3)需求分析 ,確定軟件系統(tǒng)的必須實現(xiàn)的功能、必須達到的性能、必須滿足的運行環(huán)境 要求。系統(tǒng)分析員在需求分析階段必須和用戶密切配合,充分交流信息,以得出經過用 戶確認的系統(tǒng)邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字

4、典和簡要的算法表示系統(tǒng)的邏輯模型。 在需求分析階段確定的系統(tǒng)邏輯模型是以后設計和實現(xiàn)目標系統(tǒng)的基礎,因此必須準確 完整地體現(xiàn)用戶的要求。成果:軟件需求規(guī)格說明書(SRSSRS),內容包括:系統(tǒng)的邏輯模型; 系統(tǒng)(子系統(tǒng) )的名稱、功能描述、接口、基本數(shù)據(jù)結構、性能、設計需求、開發(fā)標準、驗 收原則等。2 2、軟件開發(fā)。開發(fā)時期具體設計和實現(xiàn)在前一個時期定義的軟件,它通常由下述 4 4 個階段組成:總體 設計,詳細設計,編碼和單元測試,綜合測試。其中前兩個階段又稱為系統(tǒng)設計,后兩 個階段又稱為系統(tǒng)實現(xiàn)(1)(1) 總體設計 ( (概要設計 ) ),回答“怎樣實現(xiàn)目標系統(tǒng)”o建立系統(tǒng)的總體結構,劃分

5、子系統(tǒng);確定系統(tǒng)由哪些模塊組成,各子系統(tǒng)間、各模塊間的關系 ( (包括定義各子系統(tǒng)接口界面和各功能模塊的接口,設計全局數(shù)據(jù)庫或數(shù)據(jù)結構, 規(guī)定設計約束,制定組裝測試計劃 ) )。成果:概要設計說明書、數(shù)據(jù)庫或數(shù)據(jù)結構說明書、 系統(tǒng)的組裝 ( (集成 ) )測試計劃等文檔。(2)(2) 詳細設計 任務就是把解法具體化, 也就是回答:“應該怎樣具體地實現(xiàn)這個系統(tǒng)呢 ? ?”, 設計每個程序模塊的內部細節(jié),包括數(shù)據(jù)結構、算法以及各程序模塊間的接口信息,并 設計模塊的單元測試計劃。成果:詳細設計規(guī)格說明和單元測試計劃等詳細設計文檔。以上 (1)(1)、 (2)(2)又合稱為軟件設計。(3)(3) 編碼

6、和單元測試 這個階段的關鍵任務是寫出正確的容易理解、 容易維護的程序模塊。 根據(jù)詳細設計規(guī)格說明,選用某種程序設計語言把詳細設計的結果轉化為機器可運行的 源程序模塊;運行和調試每一個程序模塊;每編寫出一個程序模塊的源程序,調試通過 后,即對該模塊進行單元測試。成果:按一定規(guī)則存在盤上的通過了單元測試的各功能 模塊的集合;詳細的單元測試報告等文檔。(4)(4) 綜合測試 通過各種類型的測試 ( (及相應的調試 ) )使軟件達到預定的要求。最基本的測試是集成測試和驗收測試。成果:滿足概要設計要求、可運行軟件系統(tǒng)和源程序清單;組裝測試報告等文檔。驗收測試報告、項目開發(fā)總結報告,向用戶提交的源程序清單

7、、最終用戶手冊、操作手冊等文檔資料;由專家、用戶負責人、軟件開發(fā)和管理人員組成軟件評審小組對軟件驗收測試報告、測試結果和軟件進行評審,最終驗收軟件產品。以上 (3)(3)、 (4)(4)又合稱為軟件實現(xiàn)。三種不同的軟件測試:單元測試、集成測試、驗收測試。3 3 、軟件運行與維護軟件技術人員通過各種維護活動使軟件系統(tǒng)持久滿足用戶需要。通常有 4 4 類維護活動:改正性維護,也就是診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯誤; 適應性維護,即修改軟件以適應環(huán)境的變化;完善性維護,即根據(jù)用戶的要求改進或擴 充軟件使它更完善;預防性維護,即修改軟件為將來的維護活動預先做準備。成果:更新后的軟件產品;準確記錄維

8、護活動的文檔。4、幾種傳統(tǒng)軟件工程生命周期模型:瀑布模型:基本思想、主要優(yōu)點基本思想:瀑布模型嚴格按照軟件生存周期各個階段來進行開發(fā),上一階段的輸出即是下一階段的輸入,并強調每一階段的嚴格性。它規(guī)定了各階段的任務和應提交的成果及 文檔,每一階段的任務完成后,都必須對其階段性產品 (主要是文檔)進行評審,通過后才 能開始下一階段的工作。因此,它是一種以文檔作為驅動的模型。優(yōu)點:可強迫開發(fā)人員采用規(guī)范的方法;嚴格地規(guī)定了每個階段必須提交的文檔;要求 每個階段交傳統(tǒng)的瀑布模型出的所有產品都必須經過質量保證小組的仔細驗證??焖僭湍P停夯舅枷牖舅枷耄很浖_發(fā)人員根據(jù)用戶提出的軟件基本需求快速開發(fā)一

9、個原型,以便向用戶展示軟件系統(tǒng)應有的一部分或全部功能和性能,同時使用戶熟悉系統(tǒng)。在征求用戶對原 型的初步意見后,進一步使需求全面化、精確化,并據(jù)此改進、完善原型。如此迭代, 直到軟件開發(fā)人員和用戶都通過原型確認軟件系統(tǒng)的需求并達成一致的理解為止。軟件 需求確定后,便可進行設計,編碼、測試等以后的各個開發(fā)步驟。增量模型:基本思想、主要優(yōu)點需求分析驗證規(guī)格說明驗證針對毎亍構件完成洋細 設計、編碼和集成,經測 試肩交付給用戶十山mt狂f匕門勺;A r亠圧1艸磁-iik1 AL + i燈卯JFl占TT1基本思想:把一個軟件產品劃分為一系列的增量構件來設計、編碼、集成和測試,并逐個添加到軟件產品中去,逐

10、步向用戶提交產品。每個構件能夠完成特定的功能優(yōu)點:(1 1 )軟件的實現(xiàn)和維護階段沒有明顯的分界線;(2 2)用戶在很短時間內就可以使用產品的部分功能(3 3 )用戶適應新產品的時間較充裕(4 4 )構件的分解要易于測試、規(guī)模適中(5 5)軟件的體系結構是開放的,易于擴充和維護螺旋模型:引入的原因,與瀑布模型、快速原型模型的聯(lián)系基本思想:軟件風險是任何軟件開發(fā)項目中都普遍存在的實際問題,項目越大,軟件越 復雜,承擔該項目所冒的風險也越大。軟件風險可能在不同程度上損害軟件開發(fā)過程和 軟件產品質量。構建原型是一種能使某些類型的風險降至最低的方法。螺旋模型的基本 思想是,使用原型及其他方法來盡量降低

11、風險。聯(lián)系:簡化的螺旋模型是在快速原型模型的基礎上擴展而成的,把它看作在每個階段之 前都增加了風險分析過程的快速原型模型。完整的螺旋模型,將瀑布模型與原型模型結合起來,并且加入前兩種模型均忽略了的風 險分析瀑布模型的優(yōu)點:有利于大型軟件開發(fā)過程中人員的組織、管理,有利于軟件開發(fā)方法 和工具的研究,從而提高了大型軟件項目開發(fā)的質量和效率。瀑布模型的缺點:(1 1 )開發(fā)過程一般不能逆轉,否則代價太大;(2 2)實際的項目開發(fā)很 難嚴格按該模型進行;(3 3 )客戶往往很難清楚地給出所有的需求,而該模型卻要求如此。(4 4)軟件的實際情況必須到項目開發(fā)的后期客戶才能看到,這要求客戶有足夠的耐心。瀑

12、布模型的使用范圍:(1 1)用戶的需求非常清楚全面,且在開發(fā)過程中沒有或很少變化;(2 2 )開發(fā)人員對軟件的應用領域很熟悉;(3 3)用戶的使用環(huán)境非常穩(wěn)定;(4 4 )開發(fā)工作 對用戶參與的要求很低。快速原型模型的優(yōu)點:(1 1 )可以得到比較良好的需求定義,容易適應需求的變化;(2 2)有利于開發(fā)與培訓的同步;(3 3)開發(fā)費用低、開發(fā)周期短且對用戶更友好??焖僭湍P偷娜秉c:(1 1)客戶與開發(fā)者對原型理解不同;(2 2)準確的原型設計比較困 難;(3 3)不利于開發(fā)人員的創(chuàng)新。快速原型模型的使用范圍:(1 1)對所開發(fā)的領域比較熟悉而且有快速的原型開發(fā)工具;(2 2) 項目招投標時,

13、可以以原型模型作為軟件的開發(fā)模型;(3 3)進行產品移植或升級時,或 對已有產品原型進行客戶化工作時,原型模型是非常適合的增量模型的優(yōu)點:(1 1 )采用增量模型的優(yōu)點是人員分配靈活,剛開始不用投入大量人力資源;(2 2 )如果核心產品很受歡迎,則可增加人力實現(xiàn)下一個增量;(3 3)可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。增量模型的缺點: (1 1)并行開發(fā)構件有可能遇到不能集成的風險,軟件必須具備開放式 的體系結構;(2 2)增量模型的靈活性可以使其適應這種變化的能力大大優(yōu)于瀑布模型和 快速原型模型,但也很容易退化為邊做邊改模型,從而是軟件過程的控制失去整體性。增量模型的使用范圍:(

14、1 1)進行已有產品升級或新版本開發(fā),增量模型是非常適合的;(2 2) 對完成期限嚴格要求的產品,可以使用增量模型;(3 3)對所開發(fā)的領域比較熟悉而且已有原型系統(tǒng),增量模型也是非常適合的。螺旋模型的優(yōu)點:(1 1 )設計上的靈活性,可以在項目的各個階段進行變更;(2 2)以小的分 段來構建大型系統(tǒng),使成本計算變得簡單容易;(3 3)客戶始終參與每個階段的開發(fā),保證了 項目不偏離正確方向以及項目的可控性;(4 4)隨著項目推進,客戶始終掌握項目的最新信 息,從而他或她能夠和管理層有效地交互。螺旋模型的缺點:(1 1)采用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在 風險較大的項目開發(fā)中

15、,如果未能夠及時標識風險,勢必造成重大損失;(2 2 )過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。螺旋模型的使用范圍:螺旋模型只適合于大規(guī)模的軟件項目第二章什么是:經濟可行性、技術可行性、運行與操作可行性、法律可行性(1)(1) 經濟可行性 :這個系統(tǒng)的經濟效益能超過它的開發(fā)成本嗎 ? ? 估算項目的開發(fā)成本和系統(tǒng)投入使用后可能帶來的利潤,進行成本 / / 效益分析,從經 濟角度判斷系統(tǒng)開發(fā)是否“合算” 。(2)(2) 技術可行性 :使用現(xiàn)有的技術能實現(xiàn)這個系統(tǒng)嗎 ? ? 根據(jù)客戶提出的系統(tǒng)功能、性能要求,從開發(fā)者的技術實力、以往工作基礎、問題的 復雜性等出發(fā),判斷系統(tǒng)開發(fā)在時間、 費用及其

16、他各項約束條件限制下成功的可能性。(3)(3) 運行、操作可行性 :系統(tǒng)的操作方式在這個用戶組織內行得通嗎 ? ? 主要研究系統(tǒng)的運行方式在用戶單位是否可以被有效地實施, 是否與原有其他系統(tǒng)相 矛盾;系統(tǒng)的操作規(guī)程在用戶單位內是否可行,它包括人事、科技政策、管理方法等 等。(4)(4) 法律可行性 :系統(tǒng)的開發(fā)使用,在當國當?shù)禺敃r合法嗎?利用軟件工程的方法設計開發(fā)軟件系統(tǒng)的過程第三章需求分析的基本任務1.1. 確定需求-確定對系統(tǒng)的綜合要求功能需求 性能需求 可靠性和可用性需求 出錯處理需求接口需求 約束 逆向需求(8 8)將來可能提出的要求2.2. 建立數(shù)據(jù)模型-利用圖形工具描述系統(tǒng)數(shù)據(jù)結構

17、并將數(shù)據(jù)結構規(guī)范化,建立數(shù)據(jù)模型3.3. 導出系統(tǒng)的邏輯模型-通常用數(shù)據(jù)流圖、實體-聯(lián)系圖、狀態(tài)轉換圖、數(shù)據(jù)字典和主 要的處理算法描述整個邏輯模型4.4. 編寫需求規(guī)格說明書5.5. 修正系統(tǒng)開發(fā)計劃本階段結束形成的基本文檔軟件需求規(guī)格說明書結構化分析應建立哪三大模型,分別用什么工具描述數(shù)據(jù)模型一數(shù)據(jù)流圖功能模型一實體- -聯(lián)系圖(E-RE-R 圖)行為模型一狀態(tài)圖數(shù)據(jù)流圖、E-R圖、狀態(tài)轉換圖的構成數(shù)據(jù)流圖-系統(tǒng)邏輯功能的描述工具4 4 種成分:源點和終點,處理,數(shù)據(jù)存儲,數(shù)據(jù)流E-RE-R 圖:實體( (即數(shù)據(jù)對象)-)-矩形框,關系-菱形框,屬性-橢圓形或圓角矩形 狀態(tài)轉換圖:狀態(tài),事件

18、,狀態(tài)轉換數(shù)據(jù)字典:數(shù)據(jù)字典是關于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素進 行定義的集合。它的作用正是在軟件分析和設計的過程中給人提供關于數(shù)據(jù)的描述信息。 數(shù)據(jù)流圖和數(shù)據(jù)字典共同構成系統(tǒng)可行性研究階段的邏輯模型。數(shù)據(jù)字典的實現(xiàn)(1)(1) 用 CaseCase 工具中的數(shù)據(jù)字典處理程序對數(shù)據(jù)字典進行生成和編輯;(2)(2) 通過手工制作卡片來制作數(shù)據(jù)字典。每張卡片上保存描述一個數(shù)據(jù)的信息,主要應該 包含下述這樣一些信息:名字、別名、描述、定義、位置。第五章1、總體設計過程包含哪兩個工作階段,各完成什么任務第一階段:系統(tǒng)設計階段,確定系統(tǒng)的物理實現(xiàn)方案(1)(1)設想( (完善) )

19、供選擇的方案(2)(2)選取合理的方案(3)(3)推薦最佳方案第二階段:結構設計階段,確定軟件的結構(1)(1) 功能分解,從實現(xiàn)的角度細化邏輯模型(2)(2) 設計軟件結構(3)(3) 設計數(shù)據(jù)庫(4)(4) 制定測試計劃(5)(5) 書寫文檔 (6)(6)審查和復審2、軟件工程的中心課題是控制軟件的復雜度;在總體設計階段,軟件復雜 度主要體現(xiàn)為模塊獨立性(和全局數(shù)據(jù)結構復雜度);描述模塊獨立性的兩個 指標分別是耦合和內聚3、耦合的含義,1-8級耦合的具體含義,耦合級別的排列從耦合(CouplingCoupling):是對軟件結構內不同模塊之間相互關聯(lián)程度的強弱的度量。它取 決于各個模塊之間

20、接口的復雜程度、進入或訪問一個模塊的點以及哪些信息通過接口傳 遞。耦合度可以分為若干級別:flX(無直接耦合強(低耦合)數(shù)據(jù)耦合合1特征耦合性(屮槌合)控制據(jù)合1外部勰令(較強耦合仏艾赭合*FC強耦舎)內容耦合弱(1 1)非直接耦合-兩個模塊沒有直接關系(如模塊 1 1 和模塊 2 2),每一個都能獨立地工作而 不需要另一個模塊的存在。非直接耦合兩個模塊間的獨立性最強。非直接耦合(2)(2) 數(shù)據(jù)耦合-兩個模塊彼此間通過參數(shù)交換信息, 而且交換的信息僅僅是簡單的數(shù)據(jù)信 息。這屬于松散耦合。(3)(3) 標記耦合-兩個模塊通過傳遞數(shù)據(jù)結構參數(shù)加以聯(lián)系( (不是簡單數(shù)據(jù),而是記錄、數(shù) 組等) ),

21、則稱這兩個模塊間存在標記偶合。開發(fā)票計算水電費特征耦合( (標記耦合) )(4)(4) 特征耦合-屬于標記耦合,把整個數(shù)據(jù)結構作為參數(shù)傳遞,而被調用的模塊只需要使 用其中一部分數(shù)據(jù)元素。P39P39控制耦合(5)(5) 控制耦合-一個模塊通過傳送開關、標志、名字等控制信息,明顯地控制選擇另一模 塊的某部分功能控制耦合增加了理解和編程的復雜性,調用模塊必須知道被調模塊的內部邏輯,增單價數(shù)量金額計算電費住戶情況/ / /住戶情況水費電費計算水費數(shù)據(jù)耦合*f1RL口1_zr VHIIM- 9公共環(huán)境耦合公共號據(jù)區(qū)加了相互依賴去除模塊間控制耦合的方法:a.a. 將被調用模塊內的判定上移到調用模塊中進行

22、b.b. 被調用模塊分解成若干單一功能模塊(6)(6) 外部耦合-一組模塊都訪問同一全局簡單變量, 而且不是通過參數(shù)傳遞該全局變量的 信息。(7)(7) 公共環(huán)境耦合-兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用。公共環(huán)境可以是全 程變量、共享的通信區(qū)、內存的公共覆蓋區(qū)、任何存儲介質上的文件、物理設備等等。公共環(huán)境耦合的復雜程度隨耦合的模塊個數(shù)而變化,當耦合的模塊個數(shù)增加時復雜程度 顯著增加。公共環(huán)境偶合必不可少,但耦合模塊的數(shù)目應盡量少(8)(8)內容耦合一 P41P41內容耦合A4Bi AEntrylEntry2iB一填塊直接訪問另一糕塊的內部信息(程席代入o棋塊4、內聚的含義,1-7級內聚

23、的具體含義,內聚級別的排列*內聚(CohesionCohesion ):標志同一個模塊內各個元素彼此 結合的緊密程度,它是信息隱藏 和局部化概念的自然擴展。高內聚:模塊內部完成單一的處理;低內聚:模塊內部各部分關聯(lián)不緊密,完成分散的多個處理任務;設計時應該力爭做到高內聚。1 1 內聚度也可以分為若干級別:(1)(1)偶然內聚-當模塊內各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)也很松散,則稱這種模塊為偶然內聚模塊,它的內聚程度最低(2)(2)邏輯內聚-把幾種相關功能或邏輯上相似的功能組合在一個模塊內,每次調用由傳給模塊的參數(shù)確定執(zhí)行哪種功能邏輯類聚(3)(3) 時間內聚-一個模塊包含若干必須在同

24、一段時間內執(zhí)行的任務X-“Z-W.低內聚性IWJ弱(功能分散)強(功能單一)3分 f5分了偶然內聚 邏輯內聚時間內聚 過程內聚通信內聚 順序內聚功能內聚丄0分偶然類聚S例如系統(tǒng)初始化模塊、系統(tǒng)結束模塊、緊急故障處理模塊等均是時間性聚合模塊。(6)(6)順序內聚-一個模塊內的處理元素既包含數(shù)據(jù)聯(lián)系也包含控制聯(lián)系,而且這些處理必須順序執(zhí)行( (通常一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù)) )。(7)(7)功能內聚-一個模塊中各個部分都是完成某單一功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成同一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的,則 稱該模塊為功能內聚模塊。功能內聚

25、是最高程度的內聚新文件(4)(4)過程內聚-一個模塊內的處理元素是相關的且僅有控制聯(lián)系,各處理元素必須以特定加工記錄信息內聚-這種模塊完成多個簡單功能,各個功能都在同一數(shù)據(jù)結構上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結構,因此,它是一個信息內聚的模塊。信息內聚信息內聚模塊可以看成是多個功能內聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據(jù)結構、資源或設備隱蔽在一個模塊內,不為別的模塊所知曉。5、如何將數(shù)據(jù)流圖轉換為初始的軟件結構圖/層次圖通過變換分析的方法第 1 1 步復查基本系統(tǒng)模型。第 2 2 步復查并精化

26、數(shù)據(jù)流圖。第 3 3 步 確定數(shù)據(jù)流圖具有變換特性還是事務特性。第 4 4 步 確定輸入流和輸出流的邊界,從而孤立出變換中心。第 5 5 步完成“第一級分解”。第 6 6 步完成“第二級分解”。第 7 7 步使用設計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結構進一步精化* 1功能內聚6、關于模塊設計的啟發(fā)規(guī)則啟發(fā)式規(guī)則(模塊化設計的經驗)卜-寬度1.1. 改進軟件結構提高模塊獨立性2.2. 模塊規(guī)模應該適中3.3. 深度、寬度、扇出和扇入都應適當4.4. 模塊的作用域應該在控制域之內5.5. 力爭降低模塊接口的復雜程度6.6. 設計單入口單出口的模塊7.7. 模塊功能應該可以預測第六章1、詳細設

27、計的目的(主要任務)目的:為軟件系統(tǒng)的 H H 圖/SC/SC 圖中的每一個模塊確定采用的算法(處理流程)和模塊內數(shù) 據(jù)結構,選定某種表達工具給出精確的描述任務:用一定的工具精確描述目標系統(tǒng),從而方便在編碼階段可以把這種描述直接翻譯 成用某種程序設計語言書寫的程序。(1)(1) 確定每一模塊的算法( (處理流程) )(2)(2) 確定每一模塊使用的局部數(shù)據(jù)結構(3)(3) 確定本模塊的接口和用戶界面(4)(4) 為每一模塊設計一組測試用例( (單元測試計劃) )2、結構化程序設計1 1、什么是結構化程序設計(1)(1) 如果一個程序的代碼塊僅僅是通過順序、選擇和循環(huán)這3 3 種基本控制結構進行

28、連接,并且每個代碼塊是單入口、單出口的,則稱這個程序是結構化的。(2)(2) 結構化程序設計是盡可能少用 GOGO TOTO 語句的程序設計方法。最好僅在檢測出錯誤時 才使用 GOGO T TO O語句,而且應該總是使用前向 GOGO TOTO 語句。如果允許使用 LEAVELEAVE( (或 BREAK)BREAK)結構,則不僅方便而且會使效率提高很多。LEAVELEAVE或 BREAKBREAK 結構實質上是受限制的 GOGO TOTO 語句,用于轉移到循環(huán)結構外面的語句。如果只允許使用順序、IF-THEN-ELSEIF-THEN-ELSE 型分支和 DO-WHILEDO-WHILE 型循

29、環(huán)這 3 3 種基本控制結構,則稱為經典的結構程序設計;如果除了上述3 3 種基本控制結構之外,還允許使用DO-CASEDO-CASE 型多分支結構和 DO-UNTILDO-UNTIL 型循環(huán)結構,則稱為擴展的結構程序設計;如果 再加上允許使用LEAVELEAVE( (或 BREAKBREAK) )結構,則稱為修正的結構化程序設計2 2、結構化程序設計中基本的控制流程3、詳細設計的描述一程序流程圖、盒圖、PAD圖:什么是,基本符號和含義,畫法1 1、程序流程圖-又稱為程序框圖,廣泛描述過程設計的方法。基本符號( (國家標準) )1rB順順*序型序型多情況選擇型多情況選擇型(CASES!)先判定

30、型循環(huán)先判定型循環(huán)(U0-WJ11LE)流線流線虛線虛線省略線省略線并行方式并行方式注解或注釋注解或注釋選擇型選擇型后判定塑循環(huán)后判定塑循環(huán)(D0-UNT1L)A1* AilT可表示的控制結構見前圖( (結構化程序設計中基本的控制流程) )27數(shù)據(jù)輸入輸出數(shù)據(jù)輸入輸出處理處理淮備或預處理淮備或預處理預定義處理預定義處理或既定處理或既定處理二-O O-循循環(huán)上界環(huán)上界循環(huán)下界循環(huán)下界文件或文檔文件或文檔外接內接外接內接起止端點起止端點O條件條件判斷判斷2 2、盒圖(N-SN-S 圖) 出于要有一種不允許違背結構程序設計精神的圖形工具的考慮,提出了盒圖,又稱為 N-SN-S 圖。佃)順序;佃)順序

31、;(h)選擇;選擇;CASE多分支多分支; ;(1)循環(huán);何調用子程序循環(huán);何調用子程序A3 3、PADPAD 圖PADPAD 是問題分析圖(problem(problem analysisanalysis diagram),diagram),的控制流,將這種圖翻譯成程序代碼比較容易NassiNassi 和 ShneidermanShneidermanCASE 條件/1值2值CASE 1CASE 2部分CASEH部分T卜、X1訐|LDO-J|LhTlL X5_、DO-MULE=2=3X3cde用二維樹形結構的圖來表示程序循環(huán)條件DO-WHILE部分(1O使用PAD圖提供的定義功能來逐步求精的例

32、子WHILE CP(d)UNTIL CP(f)def(g)(a)(a)順序(先執(zhí)行 P1P1 后執(zhí)行 P2P2); (b)(b)選擇(IFIF C C THENTHEN P1P1 ELSEELSE P2P2 )(c)CASE(c)CASE 型多分支;(d)WHILE(d)WHILE 型循環(huán)(WHILEWHILE C C DODO P P ) ;(e)UNTIL;(e)UNTIL 型循環(huán)(REPEAREPEA P PUNTILUNTIL C C ) ;(f);(f)語句標號;(g g) g g 定義CT?卩8UNTIL C3P9PIO(b)(b)(e)(c)UNTIL C24、在詳細設計階段,軟

33、件復雜度主要體現(xiàn)為程序的復雜程度,可用程序模塊的環(huán)形復雜度(McCabe方法)來度量,或用Halstead方法來度量5、環(huán)形復雜度(McCabe方法)來度量計算工具 :流圖-退化了的程序流程圖McCabeMcCabe 方法根據(jù)程序控制流的復雜程度定量度量程序的復雜程度,這樣度量出的結果 稱為 程序的環(huán)形復雜度 。為了突出表示程序的控制流,人們通常使用流圖 ( (也稱為程序圖 ) )。所謂流圖實質上是“退 化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及 分支或循環(huán)的具體條件。計算方法:3種方法(1)(1) 流圖中的區(qū)域數(shù)等于環(huán)形復雜度 區(qū)域:由邊和結點圍成的面積稱為

34、區(qū)域。當計算區(qū)域數(shù)時應該包括圖外部未被圍起 來的那個區(qū)域。即流圖的封閉區(qū)域數(shù)加 1 1。(2)(2)流圖的環(huán)形復雜度 V(G)=E-N+2V(G)=E-N+2,其中,E E 是流圖中邊的條數(shù),N N 是結點數(shù)。 流圖的環(huán)形復雜度 V(G)=P+1V(G)=P+1,其中,P P 是流圖中判定結點的數(shù)目。6、Halstead方法來度量-計算方法HalsteadHalstead 方法是另一個著名的方法,它根據(jù)程序中運算符和操作數(shù)的總數(shù)來度量程序的復雜程度。計算復雜度的方法:在圖形界面( (或 WebWeb 界面) )環(huán)境下,尤其是在交互系統(tǒng)的中,一個模 塊的頁面數(shù)以及每個頁面上的項目數(shù),也是模塊復雜

35、程度度量的依據(jù)第七章1、編碼風格涉及的一系列內容源程序實際上也是一種供人閱讀的文檔,有一個文檔的風格問題。應該使程序具有良好 的風格。源程序代碼的邏輯簡明清晰、易讀易懂是好程序的一個重要標準。1源程序文檔化 (程序內部的文檔 )2數(shù)據(jù)說明3語句構造4輸入輸出設計5程序的效率2、單元測試、集成測試、確認/驗收測試,測試計劃(包括用例)在什么時候 書寫形成單元測試: - 模塊測試 模塊測試的目的是保證每個模塊作為一個單元能正確運行,所以模塊測試通常又稱為單 元測試。在這個測試步驟中所發(fā)現(xiàn)的往往是詳細設計和編碼的錯誤。集成測試:子系統(tǒng)測試 - 局部(模塊 子系統(tǒng))子系統(tǒng)測試是按軟件結構把經過單元測試

36、的若干模塊放在一起形成一個子系統(tǒng)來測試。 模塊相互間的協(xié)調和通信是這個測試過程中的主要問題,因此,這個步驟著重測試模塊 間的接口。系統(tǒng)測試 - 全局(子系統(tǒng) 完整系統(tǒng)) 系統(tǒng)測試是,按軟件結構,把經過測試的若干子系統(tǒng)裝配成一個完整的系統(tǒng)來測試。在這個過程中不僅應該發(fā)現(xiàn)設計和編碼的錯誤,還應該驗證系統(tǒng)確實能提供需求說明書中 指定的功能,而且系統(tǒng)的動態(tài)特性也符合預定要求。在這個測試步驟中發(fā)現(xiàn)的往往是軟件設計中的錯誤,也可能發(fā)現(xiàn)需求說明中的錯誤。不論是子系統(tǒng)測試還是系統(tǒng)測試,都兼有檢測和組裝兩重含義,通常合稱為集成測試。驗收測試-用戶參與驗收測試把軟件系統(tǒng)作為單一的實體進行測試,測試內容與系統(tǒng)測試基

37、本類似,但是它是在用戶積極參與下進行的,而且可能主要使用實際數(shù)據(jù)( (系統(tǒng)將來要處理的信息) )進行測試。驗收測試的目的是驗證系統(tǒng)確實能夠滿足用戶的需要,在這個測試步驟中發(fā)現(xiàn)的往往是系統(tǒng)需求說明書中的錯誤。驗收測試也稱為確認測試。3、軟件測試與調試的目的軟件測試的目的就是在軟件投入生產性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤測試橫跨兩個階段:(1)(1) 編寫出每個模塊之后就對它做必要的測試( (稱為單元測試) )。(2)(2)在上一階段結束之后,對軟件系統(tǒng)還應該進行各種綜合測試通常由專門的測試人 員承擔這項工作。 軟件測試的直接目的是要衡量軟件產品是否符合預期; 軟件測試的根本目的是確保軟件滿

38、足用戶需求;調試就是通過測試發(fā)現(xiàn)軟件的錯誤之后改正錯誤并進行再診斷。調試是測試階段最困難的工作。調試是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程。調試的任務是進一步診斷和改正 程序中潛在的錯誤4、軟件錯誤主要包括什么軟件錯誤指軟件產品中存在的導致期望的運行結果和實際運行結果間出現(xiàn)差異的一系列 問題,這些問題包括故障、失效、缺陷。1.1. 軟件故障是指軟件運行過程中出現(xiàn)的一種不希望或不可接受的內部狀態(tài)。2.2. 軟件失效是指軟件運行時產生的一種不可接受的外部行為結果。3.3. 軟件缺陷是存在于軟件之中的那些不希望或不可接受的偏差。5、測試用例由什么組成IEEEIEEE 對于測試用例給出的定義是:測試用例是

39、一組測試輸入、執(zhí)行條件和預期結果, 目的是要滿足一個特定的目標,例如執(zhí)行一條特定的程序路徑或檢驗是否符合一個特定 的需求。測試用例可表示成:測試用例= =輸入+ +輸出+ +測試環(huán)境其中,輸入是指測試數(shù)據(jù)和操作步驟;輸出是指系統(tǒng)的預期執(zhí)行結果;測試環(huán)境是 指進行軟件測試所必須的工作平臺和前提條件。6、軟件測試的方法C人工測試方法人工測試方法/ /靜態(tài)測試方法靜態(tài)測試方法 軟件測試的策略和方法白盒測試方法白盒測試方法動態(tài)測試方法動態(tài)測試方法黒盒測試方法黒盒測試方法(1)靜態(tài)測試一什么是靜態(tài)測試-對軟件( (文檔) )進行分析、檢查和審閱,不實際運行被測試的軟件。靜態(tài)測試約可找出 303070%7

40、0%的邏輯設計錯誤,主要工作是對需求規(guī)格說明書、軟件設計說明書、源程序做檢查和審閱( (主要是閱讀文檔) ),包括:(1)(1) 通過結構分析、流圖分析、代碼審查,指出軟件缺陷。(2)(2) 是否符合標準和規(guī)范;動態(tài)測試一什么是白盒測試-什么是黑盒測試-什么是動態(tài)測試-通過運行軟件來檢驗軟件的運行結果和動態(tài)行為的正確性。動態(tài)測試的兩個基本要素:被測試程序、測試用例。動態(tài)測試有兩種典型的方法:黑盒測試和白盒測試(1)黑盒測試輸入條件I被測對象輸入條件川定義:已經知道了產品應該具有的功能,可以針對產品的每個( (或主要) )功能點設計 一組用例( (包括輸入數(shù)據(jù)和預期輸出數(shù)據(jù)),通過測試來檢驗是否每個功能都能正常 使用;輸出結果黑盒測試主要在以下方面進行:(1 1)a/ /B測試:(2)(2)菜單/ /幫助測試:(3)(3)發(fā)行測試:(4)(4)回歸測試黑盒測試的優(yōu)勢:a.a.黑盒測試方法對測試人員

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論