




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第1章軟件工程學概述1.1 軟件危機1.1.1 軟件危機的介紹軟件危機(軟件蕭條、軟件困擾:是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。軟件危機包含下述兩方面的問題:如何開發軟件,滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有軟件。軟件危機的典型表現:(1對軟件開發成本和進度的估計常常很不準確;(2用戶對“已完成的”軟件系統不滿意的現象經常發生;(3軟件產品的質量往往靠不住;(4軟件常常是不可維護的;(5軟件通常沒有適當的文檔資料;(6軟件成本在計算機系統總成本中所占的比例逐年上升;(7軟件開發生產率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢。1.1.2 產生軟件危
2、機的原因(1與軟件本身的特點有關(2與軟件開發與維護的方法不正確有關1.1.3 消除軟件危機的途徑對計算機軟件有正確的認識。認識到軟件開發是一種組織良好、管理嚴密、各類人員協同配合、共同完成的工程項目。應該推廣使用在實踐中總結出來的開發軟件的成功技術和方法,并繼續研究探索。應該開發和使用更好的軟件工具。總之,為了解決軟件危機,既要有技術措施(方法和工具,又要有必要的組織管理措施。1.21.2.1 軟件工程的介紹軟件工程:是指導計算機軟件開發和維護的一門工程學科。采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開
3、發出高質量的軟件并有效地維護它,這就是軟件工程。(期中考軟件工程的本質特性:軟件工程關注于大型程序的構造軟件工程的中心課題是控制復雜性軟件經常變化開發軟件的效率非常重要和諧地合作是開發軟件的關鍵軟件必須有效地支持它的用戶在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人創造產品1.2.2 軟件工程的基本原理用分階段的生命周期計劃嚴格管理堅持進行階段評審實行嚴格的產品控制采用現代程序設計技術結果應能清楚地審查開發小組的人員應該少而精承認不斷改進軟件工程實踐的必要性1.2.3 軟件工程方法學軟件工程包括技術和管理兩方面的內容。軟件工程方法學3要素:方法、工具、過程1.傳統方法學(生命
4、周期方法學或結構化范型強調自頂向下2.面向對象方法學強調主動地多次反復迭代面向對象方法學4個要點:對象、類、繼承、消息1.3 軟件生命周期(必考三個時期八個階段:軟件生命周期由軟件定義、軟件開發和運行維護(也稱為軟件維護三個時期組成,每個時期又進一步劃分成若干個階段。三個時期:八個階段:軟件生命周期軟件定義軟件開發軟件維護問題定義可行性研究需求分析概要設計詳細設計編碼和單元測試綜合測試 運行維護系統設計系統實現1.4 軟件過程1.4.1 瀑布模型1.4.2 快速原型模型1.4.3 增量模型1.4.4 螺旋模型1.4.5 噴泉模型第2章可行性研究2.1可行性研究的任務可行性研究的目的:不是解決問
5、題,而是確定問題是否值得去解決??尚行匝芯康膶嵸|:進行一次大大壓縮簡化了的系統分析和設計的過程,也就是在較高層次上以較抽象的方式進行的系統分析和設計的過程。可行性研究的內容:首先進一步分析和澄清問題定義,導出系統的邏輯模型;然后從系統邏輯模型出發,探索若干種可供選擇的主要解法(即系統實現方案;對每種解法都研究它的可行性,至少應該從三方面研究每種解法的可行性。主要方面:技術可行性,經濟可行性,操作可行性,其他方面:運行可行性,法律可行性,2.2 可行性研究過程1.復查系統規模和目標2. 研究目前正在使用的系統3. 導出新系統的高層邏輯模型4. 進一步定義問題5. 導出和評價供選擇的解法6. 推薦
6、行動方針7. 草擬開發計劃8. 書寫文檔提交審查2.3 系統流程圖系統流程圖:是概括地描繪物理系統的傳統工具。表達的是數據在系統各部件之間流動的情況,而不是對數據進行加工處理的控制過程。2.4數據流圖2.4.1符號基本符號: 數據存儲:數據存儲是處于靜止狀態的數據;數據流:數據流是處于運動中的數據。附加符號:星號(*:表示“與”關系加號(+:表示“或”關系異或(:表示互斥關系2.5數據字典數據流圖和數據字典共同構成系統的邏輯模型。2.5.1 數據字典的內容數據字典的組成:數據流數據流分量(即數據元素 數據存儲處理2.5.2定義數據的方法方法:對數據自頂向下分解。數據組成方式(三種基本類型:順序
7、選擇重復附加類型:可選符號:=意思是等價于(或定義為;+意思是和(即,連接兩個分量;意思是或(即,從方括弧內列出的若干個分量中選擇一個,通常用“|”號隔開供選擇的分量; 意思是重復(即,重復花括弧內的分量;常常使用上限和下限進一步注釋表示重復的花括弧。( 意思是可選(即,圓括弧里的分量可有可無。2.5.3數據字典的實現計算機實現人工實現2.6成本/效益分析2.6.1 成本估計:1. 代碼行技術 2. 任務分解技術3. 自動估計成本技術2.6.2 成本/效益分析的方法成本/效益分析涉及的4個概念:1. 貨幣的時間價值2. 投資回收期3. 純收入4. 投資回收率:P = F1/( 1 + j +
8、F2/( 1 + j 2 + + Fn( 1 + j n第3章需求分析需求分析的任務:需求分析是軟件定義時期的最后一個階段,它的基本任務是準確地回答“系統必須做什么?”這個問題。確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求。系統分析員應該寫出軟件需求規格說明書,以書面形式準確地描述軟件需求3.1需求分析的任務確定對系統的綜合要求分析系統的數據要求導出系統的邏輯模型修正系統開發計劃3.1.1確定對系統的綜合要求1.功能需求2. 性能需求3. 可靠性和可用性需求4. 出錯處理需求5. 接口需求6. 約束7. 逆向需求8. 將來可能提出的要求3.1.2 分析系統的數據要
9、求建立數據模型ER圖描繪數據結構層次方框圖和Warnier圖數據結構規范化3.2 與用戶溝通獲取需求的方法訪談:1. 正式訪談 2. 非正式訪談 3. 調查表 4. 情景分析技術面向數據流自頂向下求精簡易的應用規格說明技術快速建立軟件原型:(1 第四代技術(4GL(2 可重用的軟件構件 (3 形式化規格說明和原型環境3.3分析建模與規格說明3.3.1 分析建模需求分析過程應該建立3種模型:數據模型功能模型行為模型數據字典是分析模型的核心實體-聯系圖用于建立數據模型的圖形數據流圖是建立功能模型的基礎狀態轉換圖是行為建模的基礎3.4實體-聯系圖數據模型中包含3種相互關聯的信息:數據對象、數據對象的
10、屬性、數據對象彼此間相互連接的關系3.4狀態轉換圖3.6.1狀態狀態圖分類:表示系統循環運行過程,通常不關心循環是怎樣啟動的。表示系統單程生命期,需要標明初始狀態和最終狀態。3.6.2事件事件就是引起系統做動作或(和轉換狀態的控制信息。3.6.3符號 3.7其他圖形工具3.7.1 層次方框圖3.7.2Warnier圖3.7.3IPO圖3.8驗證軟件需求(重點3.8.1 從哪些方面驗證軟件需求的正確性一致性完整性現實性有效性第五章總體設計5.1設計過程由兩個主要階段組成:系統設計階段,確定系統的具體實現方案:設想供選擇的方案選取合理的方案推薦最佳方案結構設計階段,確定軟件結構:功能分解設計軟件結
11、構設計數據庫制定測試文檔書寫文檔審查和復查5.2設計原理5.2.1 模塊化模塊化的作用:采用模塊化原理可以使軟件結構清晰,不僅容易設計也容易閱讀和理解。模塊化使軟件容易測試和調試,因而有助于提高軟件的可靠性。模塊化能夠提高軟件的可修改性。模塊化也有助于軟件開發工程的組織管理。5.2.2抽象5.2.3逐步求精5.2.4信息隱藏和局部化5.2.5 模塊獨立盡量使用數據耦合,少用控制耦合和特征耦合,限制公共環境耦合的范圍,完全不用內容耦合。七種內聚的優劣評分結果:高內聚:功能內聚順序內聚中內聚:通信內聚過程內聚低內聚:時間內聚邏輯內聚偶然內聚5.3啟發規則1.改進軟件結構提高模塊獨立性2.模塊規模應
12、該適中3.深度、寬度、扇出和扇入都應適當 4.模塊的作用域應該在控制域之內 5.力爭降低模塊接口的復雜程度6. 設計單入口單出口的模塊7. 模塊功能應該可以預測5.4 描繪軟件結構的圖形工具5.4.1 層次圖和HIPO圖1. 層次圖(H圖層次圖用來描繪軟件的層次結構。很適于在自頂向下設計軟件的過程中使用。2.HIPO圖5.4.2結構圖5.5面向數據流的設計方法結構化設計方法(簡稱SD方法,也就是基于數據流的設計方法。5.5.1概念面向數據流的設計方法把信息流映射成軟件結構,信息流的類型決定了映射的方法。信息流有兩種類型:變換流事務流第6章詳細設計6.1 結構程序設計經典的結構程序設計:只允許使
13、用順序、IF-THEN-ELSE型分支和DO-WHILE型循環這3種基本控制結構;擴展的結構程序設計:如果除了上述3種基本控制結構之外,還允許使用DO-CASE型多分支結構和DO-UNTIL型循環結構;修正的結構程序設計:再加上允許使用LEAVE(或BREAK結構。6.2人機界面設計6.2.1設計問題設計人機界面過程中會遇到的4個問題:系統響應時間:長度易變性用戶幫助設施:集成的幫助設施附加的幫助設施出錯信息處理命令交互6.2.3 人機界面設計指南一般交互指南信息顯示指南數據輸入指南6.3過程設計的工具6.3.1 程序流程圖(程序框圖程序流程圖的主要缺點:程序流程圖本質上不是逐步求精的好工具,
14、它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結構。程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結構程序設計的精神,隨意轉移控制。程序流程圖不易表示數據結構。6.3.2盒圖(N-S圖盒圖具有下述特點:功能域明確。不可能任意轉移控制。很容易確定局部和全程數據的作用域。很容易表現嵌套關系,也可以表示模塊的層次結構。6.3.3 PAD圖它用二維樹形結構的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。 PAD圖的主要優點如下:使用表示結構化控制結構的PAD符號設計出來的程序必然是結構化程序。PAD圖所描繪的程序結構十分清晰。PAD圖表現程序邏輯易讀、易懂、易記
15、。容易將PAD圖轉換成高級語言源程序,這種轉換可用軟件工具自動完成。即可表示程序邏輯,也可描繪數據結構。PAD圖的符號支持自頂向下、逐步求精方法的使用。6.3.4 判定表判定表卻能夠清晰地表示復雜的條件組合與應做的動作之間的對應關系。 判定表的缺點:判定表的含義不是一眼就能看出來的,初次接觸這種工具的人理解它需要有一個簡短的學習過程。當數據元素的值多于兩個時,判定表的簡潔程度也將下降。6.3.5 判定樹判定樹的優點:它的形式簡單,一眼就可以看出其含義,因此易于掌握和使用。判定樹的缺點:簡潔性不如判定表,數據元素的同一個值往往要重復寫多遍,而且越接近樹的葉端重復次數越多。畫判定樹時分枝的次序可能
16、對最終畫出的判定樹的簡潔程度有較大影響。6.3.6 過程設計語言(偽碼偽代碼的基本控制結構:簡單陳述句結構:避免復合語句。判定結構:IF_THEN_ELSE或CASE_OF結構。選擇結構:WHILE_DO或REPEAT_UNTIL結構。PDL的優點:可以作為注釋直接插在源程序中間。有助于保持文檔和程序的一致性,提高了文檔的質量??梢允褂闷胀ǖ恼木庉嫵绦蚧蛭淖痔幚硐到y,很方便地完成PDL的書寫和編輯工作。已經有自動處理程序存在,而且可以自動由PDL生成程序代碼。PDL的缺點:不如圖形工具形象直觀,描述復雜的條件組合與動作間的對應關系時,不如判定表清晰簡單。6.4 面向數據結構的設計方法面向數據
17、結構的設計方法的最終目標是得出對程序處理過程的描述。 A由B、C、D 3個元素順序組成根據條件A是B或C或D中的某一個 A由B出現N次(N 0組成6.4.2 改進的Jackson圖6.4.3 Jackson方法6.5 程序復雜程度的定量度量6.5.1 McCabe方法1. 流圖(程序圖 2. 計算環形復雜度的方法V(G=流圖中的區域數V(G=E-N+2其中E是流圖中的邊數,N是結點數V(G=P+1其中P是流圖中判定結點的數目6.5.2 Halstead方法令N1為程序中運算符出現的總次數,N2為操作數出現的總次數,程序長度N定義為:N=N1+N2程序中使用的不同運算符(包括關鍵字的個數n1,以
18、及不同操作數(變量和常數的個數n2。預測程序長度的公式如下:H = n1 log2n1 + n2 log2n2預測程序中包含錯誤的個數的公式如下:E = N log2 (n1+n2/3000第7章實現編碼和測試統稱為實現。7.1編碼7.1.1 選擇程序設計語言主要的實用標準:系統用戶的要求可以使用的編譯程序可以得到的軟件工具工程規模程序員的知識軟件可移植性要求軟件的應用領域7.1.2 編碼風格1. 程序內部的文檔:恰當的標識符適當的注解程序的視覺組織2. 數據說明3. 語句構造4. 輸入輸出5. 效率:程序運行時間存儲器效率輸入輸出的效率7.2軟件測試基礎7.2.1 軟件測試的目標測試是為了發
19、現程序中的錯誤而執行程序的過程;好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案;成功的測試是發現了至今為止尚未發現的錯誤的測試。7.2.3 測試方法黑盒測試(功能測試:把程序看作一個黑盒子;完全不考慮程序的內部結構和處理過程;是在程序接口進行的測試。白盒測試(結構測試:把程序看成裝在一個透明的盒子里;測試者完全知道程序的結構和處理算法;按照程序內部的邏輯測試程序,檢測程序中的主要執行通路是否都能按預定要求正確工作。7.2.4 測試步驟1. 模塊測試(單元測試保證每個模塊作為一個單元能正確運行;發現的往往是編碼和詳細設計的錯誤。2. 子系統測試把經過單元測試的模塊放在一起形成一個子系統
20、來測試;著重測試模塊的接口。3. 系統測試把經過測試的子系統裝配成一個完整的系統來測試;發現的往往是軟件設計中的錯誤,也可能發現需求說明中的錯誤;不論是子系統測試還是系統測試,都兼有檢測和組裝兩重含義,通常稱為集成測試。4. 驗收測試(確認測試把軟件系統作為單一的實體進行測試;它是在用戶積極參與下進行的,而且可能主要使用實際數據(系統將來要處理的信息進行測試;發現的往往是系統需求說明書中的錯誤。5. 平行運行7.2.5 測試階段的信息流輸入信息有兩類:軟件配置,包括需求說明書、設計說明書和源程序清單等;測試配置,包括測試計劃和測試方案。7.3 單元測試單元測試集中檢測模塊;單元測試和編碼屬于軟
21、件過程的同一個階段;可以應用人工測試和計算機測試這樣兩種不同類型的測試方法;單元測試主要使用白盒測試技術,對多個模塊的測試可以并行地進行。7.3.1 測試重點模塊接口局部數據結構重要的執行通路出錯處理通路邊界條件7.3.2 代碼審查由審查小組正式進行測試稱為代碼審查;一次審查會上可以發現許多錯誤,可以減少系統驗證的總工作量。7.3.3 計算機測試驅動程序是一個“主程序”,它接收測試數據,傳送給被測試的模塊,并且印出有關的結果。存根程序代替被測試的模塊所調用的模塊。它使用被它代替的模塊的接口,可能做最少量的數據操作,印出對入口的檢驗或操作結果,并且把控制歸還給調用它的模塊。7.4 集成測試集成測
22、試是測試和組裝軟件的系統化技術,主要目標是發現與接口有關的問題。由模塊組裝成程序時有兩種方法:7.4.3 不同集成測試策略的比較 混合策略:改進的自頂向下測試方法混合法7.4.4 回歸測試7.5 確認測試確認測試也稱為驗收測試,它的目標是驗證軟件的有效性。7.5.3 Alpha和Beta測試Alpha測試是在受控的環境中進行的。Beta測試是軟件在開發者不能控制的環境中的“真實”應用。1.接口測試2.路徑測試3.功能測試4. 健壯性測試5. 性能測試6. 用戶界面測試7. 信息安全測試8. 壓力測試9. 可靠性測試10. 安裝/反安裝測試確認測試也稱為驗收測試,它的目標是驗證軟件的有效性。Al
23、pha測試是在受控的環境中進行的。Beta測試是軟件在開發者不能控制的環境中的“真實”應用。4.接口測試5.路徑測試6.功能測試4. 健壯性測試5. 性能測試6. 用戶界面測試7. 信息安全測試8. 壓力測試9. 可靠性測試10. 安裝/反安裝測試7.6 白盒測試技術 7.6.1 邏輯覆蓋語句覆蓋判定覆蓋:比語句覆蓋強,但對程序邏輯的覆蓋程度仍不高。條件覆蓋:判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋。判定/條件覆蓋:有時判定/條件覆蓋也并不比條件覆蓋更強。條件組合覆蓋:條件組合覆蓋標準的測試數據并不一定能使程序中的每條路徑都執行到。6. 點覆蓋(語句覆蓋標準相同7. 邊覆蓋(判
24、定覆蓋一致8. 路徑覆蓋7.6.2 控制結構測試覆蓋1. 基本路徑測試基本路徑測試是Tom McCabe提出的一種白盒測試技術。首先計算程序的環形復雜度;以該復雜度為指南定義執行路徑的基本集合;2.條件測試從該基本集合導出的測試用例可保證程序中的每條語句至少執行一次,而且每個條件在執行時都將分別取真、假兩種值。3. 循環測試循環測試是一種白盒測試技術,它專注于測試循環結構的有效性。在結構化的程序中通常只有3種循環,即簡單循環、串接循環和嵌套循環。7.7 黑盒測試技術7.7.1 等價劃分7.7.2 邊界值分析7.7.3 錯誤推測7.9 軟降可靠性7.9.1 基本概念軟件可靠性:程序在給定的時間間
25、隔內,按照規格說明書的規定成功地運行的概率。軟件的可用性:程序在給定的時間點,按照規格說明書的規定,成功地運行的概率。第8章維護軟件工程的目的是要提高軟件的可維護性,減少軟件維護所需要的工作量,降低軟件系統的總成本。8.1 軟件維護的定義軟件維護:在軟件已經交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程??煞譃?項活動:改正性維護適應性維護完善性維護預防性維護8.2軟件維護的特點8.2.1 結構化維護與非結構化維護差別巨大8.2.2 維護的代價高昂8.2.3 維護的問題很多8.3軟件維護過程1.維護組織2.維護報告3.維護的事件流4.保存維護記錄5.評價維護活動8.4 軟件的可維護性
26、決定軟件可維護性的因素主要有7個:可理解性可測試性可修改性可靠性可移植性可使用性效率第9章面向對象方法學引論9.1面向對象方法學概述9.1.1面向對象方法學要點(1認為客觀世界是由各種對象組成的,任何事物都是對象(2把所有對象都劃分成各種類對象,每個對象類都定義了一組數據和一組方法(3按照子類和父類的關系,把若干個對象類組成一個層次結構的系統(4對象彼此之間僅能通過傳遞消息相互聯系9.1.2 面向對象開發方法面向對象=對象+類 +繼承+通信9.1.4 面向對象方法組成面向對象的分析面向對象的設計面向對象的程序設計9.1.6 面向對象方法的優點1.與人類習慣的思維方式一致2.穩定性好3.可重用性
27、好4.可維護性好5.較易開發大型軟件產品9.2 面向對象的概念9.2.1 對象是客觀事物或概念的抽象表述,即對客觀存在的事物的描述統稱為對象,對象可以是事、物、或抽象概念,是將一組數據和使用該數據的一組基本操作或過程封裝在一起的實體。對象的特點(1 以數據為中心。(2 對象是主動的。(3 實現了數據封裝。(4 本質上具有并行性。(5 模塊獨立性好。9.2.2 類是一組具有相同屬性和相同操作的對象的集合。9.2.3 實例由某個特定的類所描述的一個具體的對象。9.2.4 消息向對象發出的服務請求(互相聯系、協同工作等。一個消息包含3個部分:接收消息的對象,消息名,消息變元9.2.5 方法方法就是對
28、象所能執行的操作,也就是類中所定義的服務。9.2.6 屬性屬性就是類中所定義的數據,它是對客觀世界實體所具有的性質的抽象。9.2.7 封裝對象封裝了對象的數據以及對這些數據的操作。9.2.8 繼承(I繼承是子類自動地共享基類中定義的數據和方法的機制。單重繼承:子類僅從一個父類繼承屬性和方法多重繼承:子類可從多個父類繼承屬性和方法9.2.9 多態性9.2.10 重載9.3 面向對象建模(II面向對象開發軟件,需要建立3種形式的模型。對象模型。描述系統數據結構數據結構。動態模型。描述系統控制結構執行操作。功能模型。描述系統功能數值變化。9.4 對象模型9.4.1類圖的基本符號(I1. 定義類 2.
29、定義屬性可見性屬性名:類型 = 缺省值 性質串可見性(visibility表示該屬性對類外的元素是否可見。分為:public(+公有的,即模型中的任何類都可以訪問該屬性。private(-私有的,表示不能被別的類訪問。protected(#受保護的,表示該屬性只能被該類及其子類訪問。如果可見性未申明,表示其可見性不確定。3. 定義操作可見性操作名(參數表:返回類型性質串9.4.2 表示關系的符號(I9.4.2.1 關聯(I關聯表示兩個類的對象之間存在某種語義上的聯系。(1普通關聯 遞歸關聯:一個類與本身有關聯關系(3限定關聯 (4關聯類 9.4.2.2 聚集(I(1共享聚集如果在聚集關系中處于
30、部分方的對象可同時參與多個處于整體方對象的構成,則該聚集稱為共享聚集。 (2組合聚集如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失,則該聚集稱為組合聚集。 9.4.2.3 泛化(I(1普通泛化(2受限泛化預定義的約束有4種:多重、不相交、完全和不完全。 9.4.2.4 依賴 9.4.2.5 細化 9.5動態模型9.6功能模型9.6.1用例圖模型元素:系統、行為者、用例及用例之間的關系(擴展關系、使用關系用例的實例是腳本第10章面向對象分析10.1 面向對象分析的基本過程面向對象分析:抽取和整理用戶需求并建立問題域精確模型的過程.理解-用戶、分析員和領域專家表達-需求規
31、格說明書(對象模型、動態模型、功能模型驗證-二義性,完善性對象模型最基本、最重要、最核心。靜態結構(對象模型3個子模型交互次序(動態模型數據變換(功能模型 復雜問題的對象模型的5個層次面向對象分析的過程尋找類與對象識別結構識別主題定義屬性建立動態模型建立功能模型定義服務10.2 需求陳述需求陳述是闡明“做什么”,而不是“怎樣做”問題范圍功能需求性能需求應用環境假設條件第11章面向對象設計11.1 面向對象設計的準則1.模塊化2. 抽象3. 信息隱藏4.弱耦合耦合指不同對象之間相互關聯的緊密程度。對象之間的耦合分兩類:交互耦合如果對象之間的耦合通過消息連接來實現,則這種耦合就是交互耦合。交互耦合
32、應盡可能松散。繼承耦合與交互耦合相反,應該提高繼承耦合程度。5. 強內聚在面向對象設計中存在下述3種內聚:服務內聚:一個服務應該完成一個且僅完成一個功能。類內聚:一個類應該只有一個用途,它的屬性和服務應該是高內聚的。一般-特殊內聚:設計出的一般-特殊結構,應該符合多數人的概念6. 可重用11.2 啟發規則1. 設計結果應該清晰易懂2. 一般-特殊結構的深度應適當3. 設計簡單的類4. 使用簡單的協議5. 使用簡單的服務6. 把設計變動減至最小第13章軟件項目管理軟件工程計劃控制度量軟件規模估算工作量進度計劃風險管理質量保證配置管理 組織明確軟件開發的目標提供組織機構和資源配置方面的保證保證開發
33、目標的實現技術 管理13.1估算軟件規模13.1.1 代碼行技術 估算方法: 由多名有經驗的軟件工程師分別做出估計。 每個人都估計程序的最小規模(a、最大規模(b和最可能的規模(m, 分別算出這 3 種規模的平均值之后,再用下式計算程序規模的估計值: 單位: LOC 或 KLOC。 代碼行技術的優點: 代碼是所有軟件開發項目都有的“產品”,而且很容易計算代碼行數; 有大量參考文獻和數據 。 代碼行技術的缺點: 源程序僅是軟件配置的一個成分,由源程序度量軟件規模不太合理; 用不同語言實現同一個軟件所需要的代碼行數并不相同; 不適用于非過程性語言。 13.1.2 功能點技術 功能點技術依據對軟件信
34、息域特性和軟件復雜性的評估結果,估算軟件規模。 這種方法用功能點(FP為單位度量軟件規模。 1. 信息域特性 輸入項數(Inp、輸出項數(Out、查詢數(Inq、主文件數(Maf、外部接口數(Inf 每個特征根據其復雜程度分配一個功能點數,即信息域特征系數 a1,a2,a3,a4,a5 2. 估算功能點的步驟 (1 計算未調整的功能點數 UFP UFP=a1Inp+a2Out+a3Inq+a4Maf+a5Inf (2 計算技術復雜性因子 TCF 技術因素對軟件規模的綜合影響程度 DI: 技術復雜性因子 TCF 由下式計算: TCF = 0.65 + 0.01 DI 因為 DI 的值在 070
35、之間,所以 TCF 的值在 0.651.35 之間。 (3 計算功能點數 FP FP = UFP TCF 功能點技術優點:與所用的編程語言無關,比代碼行技術更合理。 功能點技術缺點: 在判斷信息域特性復雜級別和技術因素的影響程度時主觀因素較大, 對經 驗依賴性較強。 13.2 工作量估算 13.2.1 靜態單變量模型 E ev 是估算變量(KLOC 或 FP)。 13.2.2 動態多變量模型 = a KLOCb f i i =1 E = A + B (ev C 17 動態多變量模型也稱為軟件方程式, 該模型把工作量看作是軟件規模和開發時間這兩個變量 的函數。 E=(LOCB0.333/P3(1
36、/t4 13.2.3 COCOMO2 模型(構造性成本模型) 3 個層次的估算模型: 應用系統組成模型: 這個模型主要用于估算構建原型的工作量, 模型名字暗示在構建原型時 大量使用已有的構件。 早期設計模型:這個模型適用于體系結構設計階段。 后體系結構模型:這個模型適用于完成體系結構設計之后的軟件開發階段。 COCOMO2 使用的 5 個分級因素:項目先例性、開發靈活性、風險排除度、項目組凝聚力、過 程成熟度 13.3 進度計劃 13.3.1 估算開發時間 Brooks 規律:向一個已經延期的項目增加人力,只會使得它更加延期。 13.3.2 Gantt 圖 Gantt 圖的主要優點: Gantt 圖能很形象地描繪任務分解情況,以及每個子任務(作業的開始和結束時間。 具有直觀簡明和容易掌握、容易繪制的優點。 Gantt 圖的 3 個主要缺點: 不能顯式地描繪各項作業彼此間的依賴關系; 進度計劃的關鍵部分不明確,難于判定哪些部分應當是主攻和主控的對象; 計劃中有潛力的部分及潛力的大小不明確,往往造成潛力的浪費。 13.3.3 工程網絡 工程網絡是系統分析和系統設計的強有力的工具。 1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產業質量督察方案(3篇)
- 大梁養護澆水方案(3篇)
- 湖北大學《植物有害生物綜合防治》2023-2024學年第二學期期末試卷
- 濮陽科技職業學院《快題表現》2023-2024學年第二學期期末試卷
- 原煤產量管理方案(3篇)
- 豬肉冷庫建設方案(3篇)
- 焦作師范高等專科學校《新聞翻譯》2023-2024學年第二學期期末試卷
- 森林防火開門方案(3篇)
- 廣州華夏職業學院《大學體育(游泳)》2023-2024學年第二學期期末試卷
- 鄭州經貿學院《運動醫務監督與康復治療》2023-2024學年第二學期期末試卷
- 新修訂《黃河保護法》PPT
- 北斗衛星導航發展及其的應用課件
- 過敏性休克應急預案演練記錄表
- 第八章-三相異步電動機的電力拖動課件
- 工程施工停止點檢查表
- 《滅火器維修》GA95-2015(全文)
- 高中美術素描教案(8篇)
- 市政工程監理規劃范本(完整版)
- 國貿實驗一進出口價格核算
- 幼兒園中班美術:《美麗的蝴蝶》 PPT課件
- 單片機芯片8279用法
評論
0/150
提交評論