知識要點:
1)實現:編碼風格;2)測試的定義和目標;3)單元測試;
4)集成測試過程及方法;5)白盒、黑盒測試技術;6) BRO測試;條件測試,測試用例設計。
7)維護:軟件維護的定義、特點; 8)主要的維護活動;軟件再工程過程。
9)軟件項目管理:估算軟件規模;10)開發工作量估算;11)開發時間、進度估算;
12)關鍵路徑、機動時間;13)軟件配置及管理過程;能力成熟度模型。
實現:編碼和測試統稱爲實現;
編碼就是把軟件設計結果翻譯成某種程序設計語言書寫的程序;
測試的目的就是在軟件投入生產性運行之前,儘可能多的發現軟件中的問題。
編碼風格所遵循的規則:
1)程序內部的文檔包括恰當的標識符、適當的註解和程序的視覺組織;
2)數據說明的次序應該標準化;
3)語句構造要求簡單直觀;
4)數據的輸入安全方便,輸出清晰易懂;
5)效率儘可能的高效,滿足用戶需求即可;
測試的目標或定義:
1)測試是發現程序的錯誤而執行程序的過程;
2)好的測試方案是爲了發現迄今爲止尚未發現的錯誤的測試方案;
3)成功的測試是發現了迄今爲止尚未發現的錯誤的測試;
軟件維護的定義:軟件交付使用後,爲改正錯誤或者滿足信息的需要而修改軟件的過程;
維護的分類:改正性維護、適應性維護、完善性維護、預防性維護;
軟件維護的特點:(3條)
1)結構化維護與非結構化維護差別巨大;
2)維護代價高昂; 3)維護所面臨的問題很多;
單元測試:集中測試軟件設計的最小單元——模塊。單元測試主要使用白盒測試技術,對多個模塊的測試可以並行進行;
集成測試方法:自頂向下集成、自底向上集成;
Alpha測試:用戶在開發者場所進行,並且在開發者對用戶的指導下進行。開發者負責記錄發現的錯誤和使用中遇到的問題,
總之Alpha測試是在受控環境下進行的測試;
Beta測試:軟件的最終用戶在一個或多個客戶場所進行。開發者通常不在Beta測試的測試現場,因此Beta是軟件在開發者
不能控制的環境中的“真實”應用;
白盒測試:
語句覆蓋:被測試程序中每一條語句至少執行一次;
判定覆蓋:不僅每條語句要執行一次,而且每種判定可能的結果也要執行一次;
條件覆蓋:不僅每條語句要執行一次,而且判定表達式中的每個條件都取到各種可能結果;
判定條件覆蓋:選取足夠多的測試數據,使得判定表達式中每個條件都能取到可能的值,而且每個判定表達式也都取到各種結果
條件組合覆蓋:選取足夠多的測試數據,使得每個判定表達式中的條件的各種組合至少出現一次;
例子:
語句覆蓋:A=2,B=0,X=4(任意);//1-a-4-5-2-b-6-7-3-d;(即圖中每個圖形均走一遍)
判定覆蓋:A=2,B=0,X=4(任意);//覆蓋每個判定結果爲T的
A=0,B=1,X=1;//覆蓋判定結果爲F的 (測試用例不唯一,即每個判定的真假走一次即可)
條件覆蓋:(所有結點均走一遍且包含以下所有條件)
各個判定的條件有:對於a判定結點A>1和A<=1,B=0和B!=0;對於b判定結點:A=2和A!=2,X>1和X<=1;
A=2,B=0,X=1;(覆蓋條件A>1、A=2、B=0、X<=1)
A=1,B=1,X=4;(覆蓋條件A<=1、A!=2、B!=0、X>1)
判定/條件覆蓋:(同時滿足判定覆蓋和條件覆蓋)
A=2,B=0,X=4;(覆蓋條件A>1、A=2、B=0、X>1,且T路徑全走)
A=1,B=1,X=1;(覆蓋條件A<=1、A!=2、B!=0、X<=1,且F路徑全走)
條件組合覆蓋:(每個判定表達式中的判定組合至少出現一次)
列出所有的判定條件組合,選取合適的測試用例直到包含所有條件組合;(重點,要求會區別覆蓋類型和設計其測試用例)
黑盒測試:常用方法(等價類劃分、邊界值分析、錯誤推斷)
軟件維護過程:1)維護組織; 2)維護報告; 3)維護事件流;4)保存維護記錄; 5)評價維護活動;
軟件再工程過程:1)庫存目錄分析; 2)文檔重構; 3)逆向工程; 4)代碼重構; 5)數據重構; 6)正向工程;
逆向工程:分析程序以便在比源代碼更高的抽象層次上創建出程序的某種表示過程。(即:恢復設計結果的過程)
正向工程(革新或改造):從現有程序中恢復設計信息,而且使用該信息去改變或重構現有系統,以提高其整體質量;
軟件項目管理:通過計劃、組織和控制等一系列活動,合理地配置和使用各種資源,以求達到最終目標的過程;
估算軟件規模的方法:
1)代碼行技術;(a爲最小規模、b爲最大規模、c爲最可能規模)通過多人對此三者進行統計估計得出各個規模的平均值
通過下述公式來計算程序規模的估計值
L=(A+4C+B)/6;(此處的ABC爲上述三種規模的平均值,單位LOC或KLOC)
2)功能點技術;
功能點技術定義了信息域的5個特性:輸入項數inp、輸出項數out、查詢數inq、主文件數maf、外部接口數inf;
如何估算功能點:
1、計算未調整的功能點數UFP:UFP=a1*inp+a2*out+a3*inq+a4*maf+a5*inf;
(注這裏的a1,a2,a3,a4,a5爲信息域特性係數,一般會給出下表不須記憶)
2、計算技術複雜因子TCF:TCF=0.65+0.01*DI,這裏的DI爲這種技術因素對軟件規模的影響程度(取值範圍0-5)之和;
3、計算功能點FP:FP=UFP*TCF;
開發工作量估算:1)靜態單變量模型;2)動態多變量模型;3)cocomo2模型;(瞭解即可)
開發時間估算:(向一個已經延期的項目中增加人力只會使其更加延期;軟件系統的開發時間越短,開發成功率越低。)
關鍵路徑&機動時間:圓圈(標識,最早時刻、最遲時刻)、箭頭(僅僅表示依賴關係,其上面的數字表示活動持續時間)
關鍵路徑:事件的最早時刻和最遲時刻相同,這些事件構成了關鍵路徑。關鍵路徑上的事件必須準時發生,組成
關鍵路徑的活動的實際持續時間不能超過估計的持續時間。
機動時間:不在關鍵路徑上的作業有一定程度的機動餘地,即實際開始時間可以比預定時間晚一些,或者實際持續
時間比預定的持續時間長一些,而不影響工程的結束時間;
計算方式(機動時間=(LET)結束-(EET)開始-持續時間) (數據結構中的關鍵路徑的計算,重點要求會計算)
軟件配置和管理過程(5項任務):標示、版本控制、變化控制、配置審計、報告;
成熟度能力模型:(5個等級,下表標識了各個等級的名稱和每個等級的特點)
初始級 |
軟件過程的特徵是無序的,有時甚至是混亂的。幾乎沒有什麼過程 是經過定義的,項目能否取得成功完全取決於開發人員的個人能力 |
可重複級 |
軟件項目的策劃和跟蹤是穩定的,已經爲一個有記律的管理過程 提供了可重複之前成功實踐的項目環境。 |
已定義級 |
軟件過程已經是文檔化和標準化。無論是管理活動還是工程活動 都是穩定的,軟件開發的成本和進度以及產品的功能和質量都受 到控制,且軟件產品的質量具有可追溯性。 |
已管理級 |
軟件過程是可度量的,軟件過程在可度量的範圍內進行。這一級 的過程能力允許軟件機構在定量的範圍內預測過程和產品質量趨勢 在發生偏離時可以及時的採取措施予以糾正,並且可以預期軟件 產品是高質量的。 |
優化級 |
軟件過程是可優化 的,這一級的軟件機構能夠持續不斷地改進其過 程能力,既對現行過程實例不斷地改進和優化,又藉助於所採用的 新技術和新方法來實現未來改進的過程。 |
常用於指定進度計劃的工具:Gantt圖和工程網絡;