目錄
2.GoF
一.瞭解軟件架構
- 架構建模:描述軟件系統的物理成分,物理成分包括:組件 和 在組件上運行的節點
- 架構建模關係圖:包關係圖、構件關係圖、部署關係圖
1.創建包關係圖
- 包關係圖:描述系統各個包以及包之間的關係
- 根據以下規則,將系統用例分組爲各個包:
- 分組相關用例
- 基於使用用例的角色來對用例進行分組
- 根據以下規則,將系統類分組爲各個包:
- 把 具有相同繼承層次結構的類 組合在一個包裏
- 通過 複合關係 把相關類組合在一個包裏
- 將 相互協作、彼此交互的類組 打包
- 包內成分可見性的符號有:
- +:指成分是公共的,可被其他包的成分訪問
- #:指成分是受保護的,只有繼承它的成分可被訪問
- -:指成分是私有的,不可被包外成分訪問
- 包之間的關係類型包括: 訪問依賴性關係、泛化關係
2.創建組件關係圖
- 組件提供了一組接口的實現,用於對系統運行所需的各個組件建模
- 可對其建模以構成完整的軟件系統的組件是 :
- 部署組件:構成可執行系統的組件
- 工作產品組件:作爲 SDLC 實現階段成果的組件
- 執行組件:系統執行時創建的組件
- 組件實現了一組接口,其中每個接口指定類所提供的功能
- 類也可實現一組接口
- 建模組件的技術有:
- 源代碼文件建模
- 可執行文件建模
- 數據庫建模
- 使系統源代碼組件形象化的不同方式:
- 將源代碼分組爲若干包,並在包關係圖中描述
- 畫出組件關係圖,使系統源代碼文件間的關係形象化
- 可執行文件建模包括:建模系統的.exe,庫、數據庫等
- 數據庫建模包括:
- 用 組件關係圖 描述 數據庫表組件
- 描述與 每個數據庫表組件 相關的列和存儲過程
3.創建部署關係圖
- 部署關係圖:顯示在其中 部署軟件組件的硬件
- 部署組件的 計算機系統 或 處理設備 稱爲 節點,用三維矩形框表示,框內包含節點內執行的組件
- 節點通過 連接 互相關聯,連接表示 通信信道(節點之間的一條直線)
- 節點和組件之間的 依賴關係 用虛線表示
- UML 的預定義視圖類型有:
- 模塊視圖類型:實現特定功能的模塊
- 組件與連接器(C&C)視圖類型:作爲執行單元的組件的集合
- 分配視圖類型:一組系統的 組件或模塊 與其 開發環境 之間的關係
二.使用框架和模式
- 框架和模式是使軟件構件可重用的標準
- 框架:類似於應用程序中的通用功能,擁有 Microsoft VC++ 提供的 Microsoft 基礎類(MFC)是框架的示例,它允許開發具有公共特徵(如命令按鈕)的圖形用戶界面
- 框架特性:表示類或庫的集合,包括 抽象、具體類、抽象方法,包含可通過子類化來擴展的類
- 模式:提供 給定問題的 標準解決方案的 一組原則和指南,有助於 軟件組件之間 更好的通信
- 模式分類:
- 通用職責分配軟件模式(GRASP)
- 四人組模式 (GoF)
1.GRASP
- GRASP 是一組模式,它提供 分配對象職責的原則,如 怎樣創建對象、怎樣撤消對象等
- GRASP 由以下模式組成:
- 專家模式:爲 包含相關信息的類 分配職責的指南
- 創建者模式:爲 特定類的新對象 分配職責的指南
- 控制器模式:處理系統事件的指南
- 專家模式 提供用於 向包含相關信息的類 指派職責的 指示信息
- 創建者模式,如果以下條件爲 true,那麼類負責創建對象:
- 一個類包含另一個類
- 類記錄其它類的實例
- 類使用其它類的對象
- 類提供初始化其它類的對象的信息
- 控制器模式,處理系統事件的職責應分配給滿足以下一個或多個條件的類:
- 表示整個系統
- 表現爲用例處理程序
2.GoF
- 基於open-close原則,認爲 所有的設計 都應對於 擴展開發 並且 不允許修改,有以下特性:
- 能重用 現有的關於常見設計問題的 解決方案
- 建立問題及其解決方案的通用術語,以便於理解
- 大致可分爲三類: 創建、結構、行爲
2.1 創建型
創建型設計模式提供 創建對象 和 管理對象生命週期 的方法- 常用的創建型設計模式有:工廠、生成器、單一實例
- 工廠模式:提供一個被稱爲 factory的類,控制抽象基類的 子類對象的 生存期,以下情況需用工廠模式:
- 無法預見 運行時需要哪種類型對象
當基類是個抽象類時,模式必須返回一個已初始化的對象
- 生成器模式:把複雜對象的創建和構造 與 它的表示分離
- 可以對同一個複雜對象創建多個表示,並修改對象的安排
- 類似於抽象工廠方法,因爲兩者都 創建對象族
聚集 或 構造簡單對象 以表示一個複雜對象 單例模式:允許創建自身的實例的類- 當需要訪問代表現實生活對象的單個對象(如打印機和鼠標)時,單件模式是有用的
- 用 靜態數據成員 定義單件模式,以跟蹤所創建對象的生命期
2.2 結構型
- 結構型設計模式:描述如何 使用對象組合 來組合類和對象結合 以形成更大的結構
- 最常用的結構型模式有: 複合模式、代理模式、裝飾模式、外觀模式
- 複合模式:
- 表示複合對象,可包含 簡單對象 和 複合對象
- 提供接口訪問複合對象內的 複合對象 和 簡單對象
- 可把複合模式想象成一棵樹,其中複合對象表示結點,簡單對象表示樹葉
- 代理模式:
- 把 複合對象 表示爲 簡單對象,把對象創建推遲到需要時才進行
- 裝飾模式:
- 修改個別對象的行爲 而不必 創建新的派生類,爲現有對象 定義 附加功能
- 外觀模式:
- 提供單一化的接口簡化軟件開發,在實現分層架構時 也很有用
2.3 行爲型
- 行爲模式 提供在對象間進行通信的指南,最常用的行爲模式有:
職責鏈:描述各種類如何處理請求,描述可以處理的請求類型,描述如何將類無法處理的請求傳遞給其它類 命令:描述如何將 方法請求調用 僅傳遞到特定模塊 觀察者:創建單獨的對象 顯示各種形式的信息3.對設計模式建模
- 對設計模式建模的各種視圖包括:
- 外部視圖:將 設計模式的結構 表示爲 參數化協作
- 內部視圖:將 設計模式的結構 表示爲模式創建者(例如開發人員)所見的結構,內部視圖描述爲 不帶參數的協作
- 將設計模式與分層架構關聯:
4.將設計映射到代碼
- 通過使用 CASE 工具(例如 Rational Rose、Jude 和 Visio),可以自動從 類和通信關係圖 生成代碼
- CASE 工具使用不同的 經驗規則 和 啓發式原則 從設計模型生成代碼,代碼從 類的方法 和 變量生成
- 支持逆向工程,能根據 項目實現 和 測試階段的代碼 生成設計模型
5.重構設計
- 不改變類的外部行爲,重新構造現有代碼的內部結構 的技術
- 改變了類模型,但不改變系統的架構
- 可能進行重構的因素有:
由於 設計實現的平臺原因 在實現階段 需要標識新方法 從 通信關係圖 得出的方法 在類關係圖裏 沒有表示出來6.應用會化外觀
- 會話外觀:用於創建企業應用程序,如使用企業 JavaBeans(EJB)的應用程序的設計模式
- 高級業務組件 定義 低級業務組件(例如企業 bean)之間的完整交互
- 會話外觀 相當於 低級業務組件 的接口,降低了低級業務組件之間的耦合度,使企業應用程序的設計可重用
三.UML和質量軟件過程
1.質量過程
- 質量流程目的:在軟件開發過程中 檢查所開發軟件模型 和 產品質量
- 質量流程在 軟件開發過程的 迭代 和 增量 之間實現,用於確保軟件質量
- 質量流程會在 每個軟件開發過程階段之後 檢查輸出的質量
- 質量流程包括:軟件開發過程質量、軟件模型質量、軟件產品質量、質量流程自身質量
- 質量流程包括:技術(所需工具和生成的輸出)、方法(操作順序)、社會學(人力環境)
質量流程 每個方面的活動 同時發生
- 保證軟件產品質量,需要檢查:
可確保開發軟件產品的活動 和 任務執行順序是正確的質量檢查:流程質量 質量軟件過程 = 軟件開發 + 質量流程 UML 影響軟件模型的:可視化、規範、構造和文檔質量 可視化質量:工件、關係圖、模型可視化 表示的質量 規範質量:提供 UML 工件、關係圖詳細描述的規範 的質量 構造的質量:從 UML 模型生成的代碼 的質量 文檔質量:爲創建軟件模型的 UML構件 和 關係圖 而提供指南的文檔 的質量 質量保證技術:檢查軟件模型語法正確、語義一致、美觀完整 質量流程元模型:定義表達另一種模型的語言、描述應用於軟件開發過程的質量流程元素 及 元素間連接規則 質量流程的元素爲:過程組件、角色、活動、任務、輸出和迭代 過程組件:是一組質量流程的活動、角色和輸出的集合,例如:需求建模、系統設計和測試都算過程組件 表示 用不斷變化的密度 來執行一連串過程組件:迭代2.UML擴展機制
UML擴展機制:開發人員無需更改現有軟件模型、提供額外建模構件、表示軟件系統中的事件流 可根據 特定應用程序域 剪裁 UML,要修改 UML,可以用擴展元素:構造型、約束和標記值- UML提供三種擴展元素:
- 構造型:擴展 UML 詞彙表,表示 UML 沒有特定描述的建模元素,區分UML關係圖中的相似元素,表示:<<>>
- 約束:擴展 UML 構造塊的語義關係,表示無法使用 UML 表示法表示的限制和關係,全局條件或條件,表示:()
- 標記值:擴展 UML 構造塊的屬性,存儲項目相關(日期開發測試狀態等)、存儲構造型模型元素(字符串)
- 使用 UML 建模軟件系統時,你需要考慮事件的 併發 和 同步
- UML 提供兩種標準構造型用於 事件併發流: 進程、線程
- 建模 UML 類中的 多個事件流 和 交互關係圖 步驟:
1. 標識軟件系統中事件的併發流2. 根據事件的併發流標識主動對象3. 將主動對象的公共集分爲主動類4. 平衡主動類之間的職責分發5. 確保每個活動類爲高內聚且鬆散耦合6. 創建類關係圖以表示系統的靜態語義7. 創建交互關係圖以表達系統的動態語義關係8. 在對象之間應用各種類型的通信方式9. 連接約束以確保對象之間的同步 UML 提供了兩種歷史狀態: UML 提供了額外建模構件,如歷史狀態、註釋和備註
四. 度量軟件項目
1.測量過程組件
- 爲測量軟件開發過程,需要測量其過程組件,包括維度:技術、方法、社會學
- 爲所有過程組件,需要計算 總單位值 = 角色、活動、輸出和任務的總數
- 需要在 特定環境上下文內 細化總單位值,因爲同樣的軟件,可在不同環境中實現
- 細化總單位值 需要確定:過程組件的 每個維度的 實例數 及 權重因子
- 權重因子取決於:項目環境、每個維度的重要性
- 過程組件維度的強度 = 維度實例數 x 權重因子
- 計劃生產率:估算每次迭代中 過程組件的維度數
- 實際生產力在 迭代 時確定
分析項目中 總預期延遲:計算調整因子,用調整因子計算完成後續迭代所需的修訂時間- 調整因子公式:Adjustment Factor = Actual productivity/Planned productivity
完成後續迭代所需的修訂時間 = 規劃持續時間 / 調整因子2.用功能點技術測量項目
- 功能點(FP)估算技術:估算項目大小,將系統細分爲更小的組件,FP:軟件測量單位
- 確定 FP 關鍵在於確定組成軟件系統的各個組件
- 使用 FP 技術時,通過對以下計數可得出總工作量估算:文件、接口、輸入、輸出、查詢
- 計算項目的 FP 包括以下步驟:確定 FP 計數的類型、確定範圍和應用程序邊界、確定未調整的功能點(UFP) 、確定值調整因子(VAF)、計算已調整的功能點(AFP)
- 確定 FP 計數的類型(三種):開發項目 FP計數、增強項目 FP計數、應用 FP計數
- 確定UFP:
- ①確定 靜止數據:包括處理所需的存儲數據,運行數據:包含應用程序中導致數據進出的事務
- ②通過靜止/運行數據得到數據FP:文件引用類型(FTR) = 內部邏輯文件(ILF)+ 外部接口文件(EIF)
- 測量 FTR 得到:數據元素類型(DET)+ 記錄元素類型(RET)
- ③通過靜止/運行數據得到事物FP:外部輸入(EI)、外部查詢(EQ)、外部輸出(EO)
- 確定VAF調整因子:確定項目中的延遲
- VAF 基於系統總體特徵(GSC),有 14個GSC:數據通信、分佈式處理、性能目標、常用配置、事物規則、在線更新、複雜處理、可重用性、安裝簡易性、操作簡易性、多站點使用、設施變更
- 計算 VAF, 需要:確定每個 GSC 的影響度(DI)。GSC 的 DI 的範圍爲 0-5
- 0 –不存在,無影響
- 1 –偶爾影響
- 2 –適度影響
- 3 –中等影響
4 –嚴重影響 5 –全面的強烈影響 把 14 個 GSC 的 DI 加起來得到 總的影響度 (TDI) 計算 VAF: VAF = TDI ×0.01 + 0.65 計算 AFP:AFP = (TUFP + CFP) *VAF,CFP 是用於轉換功能的 FP計數 通過計算項目的功能點 評估庫存管理系統項目的大小3.測量 UML構件 的複雜度
- UML 構件之間互相依賴的程度,稱作 複雜度
- 動態組件的複雜度取決於靜態組件的複雜度,因此測量以下靜態部件的複雜度:
- 用例關係圖:通過識別關係圖中角色、用例和關係個數 測量用例關係圖的複雜度,用例分類(簡單中複雜)
- 類關係圖:確定類的大小、關係數量、屬性可見性、操作可見性類可以擁有的對象數量和關係
- 構件關係圖:組件中實現的類的數量,與組件有依賴關係的接口數量
- 確定組件的大小 + 處理速度 = 測量組件關係圖的複雜度
- 組件的處理速度取決於:組件支持的線程數