使用 UML 面向對象分析和設計 課堂筆記(三)

目錄

一.瞭解軟件架構

1.創建包關係圖

2.創建組件關係圖

3.創建部署關係圖

二.使用框架和模式

1.GRASP

2.GoF ​​​​​​​

​​​​​​​3.對設計模式建模

4.將設計映射到代碼

5.重構設計

6.應用會化外觀

三.UML和質量軟件過程

1.質量過程

2.UML擴展機制

四. 度量軟件項目

1.測量過程組件

2.用功能點技術測量項目

3.測量 UML構件 的複雜度


一.瞭解軟件架構

  • 架構建模:描述軟件系統的物理成分,物理成分包括:組件 和 在組件上運行的節點
  • 架構建模關係圖:包關係圖、構件關係圖、部署關係圖

1.創建包關係圖

  • 包關係圖:描述系統各個包以及包之間的關係
  • 根據以下規則,將系統用例分組爲各個包:
  1. 分組相關用例
  2. 基於使用用例的角色來對用例進行分組
  • 根據以下規則,將系統類分組爲各個包:
  1. 把 具有相同繼承層次結構的類 組合在一個包裏
  2. 通過 複合關係 把相關類組合在一個包裏
  3. 將 相互協作、彼此交互的類組 打包
  • 包內成分可見性的符號有:
  1. +:指成分是公共的,可被其他包的成分訪問
  2. #:指成分是受保護的,只有繼承它的成分可被訪問
  3. -:指成分是私有的,不可被包外成分訪問
  • 包之間的關係類型包括: 訪問依賴性關係、泛化關係

2.創建組件關係圖

  • 組件提供了一組接口的實現,用於對系統運行所需的各個組件建模
  • 可對其建模以構成完整的軟件系統的組件是 :
  1. 部署組件:構成可執行系統的組件
  2. 工作產品組件:作爲 SDLC 實現階段成果的組件
  3. 執行組件:系統執行時創建的組件
  • 組件實現了一組接口,其中每個接口指定類所提供的功能
  • 類也可實現一組接口
  • 建模組件的技術有:
  1. 源代碼文件建模
  2. 可執行文件建模
  3. 數據庫建模
  • 使系統源代碼組件形象化的不同方式:
  1. 將源代碼分組爲若干包,並在包關係圖中描述
  2. 畫出組件關係圖,使系統源代碼文件間的關係形象化
  • 可執行文件建模包括:建模系統的.exe,庫、數據庫等
  • 數據庫建模包括:
  1. 用 組件關係圖 描述 數據庫表組件
  2. 描述與 每個數據庫表組件 相關的列和存儲過程

3.創建部署關係圖

  • 部署關係圖:顯示在其中 部署軟件組件的硬件
  • 部署組件的 計算機系統 或 處理設備 稱爲 節點用三維矩形框表示,框內包含節點內執行的組件
  • 節點通過 連接 互相關聯,連接表示 通信信道(節點之間的一條直線)
  • 節點和組件之間的 依賴關係 用虛線表示
  • UML 的預定義視圖類型有:
  1. 模塊視圖類型:實現特定功能的模塊
  2. 組件與連接器(C&C)視圖類型:作爲執行單元的組件的集合
  3. 分配視圖類型:一組系統的 組件或模塊 與其 開發環境 之間的關係

二.使用框架和模式

  • 框架和模式是使軟件構件可重用的標準
  • 框架:類似於應用程序中的通用功能,擁有 Microsoft VC++  提供的 Microsoft 基礎類(MFC)是框架的示例,它允許開發具有公共特徵(如命令按鈕)的圖形用戶界面
  • 框架特性:表示類或庫的集合,包括 抽象、具體類、抽象方法,包含可通過子類化來擴展的類
  • 模式:提供 給定問題的 標準解決方案的 一組原則和指南,有助於 軟件組件之間 更好的通信
  • 模式分類:
  1. 通用職責分配軟件模式(GRASP)
  2. 四人組模式 (GoF)

1.GRASP

  • GRASP 是一組模式,它提供 分配對象職責的原則,如 怎樣創建對象、怎樣撤消對象等
  • GRASP 由以下模式組成:
  1. 專家模式:爲 包含相關信息的類 分配職責的指南
  2. 創建者模式:爲 特定類的新對象 分配職責的指南
  3. 控制器模式:處理系統事件的指南
  • 專家模式 提供用於 向包含相關信息的類 指派職責的 指示信息
  • 創建者模式,如果以下條件爲 true,那麼類負責創建對象:
  1. 一個類包含另一個類
  2. 類記錄其它類的實例
  3. 類使用其它類的對象
  4. 類提供初始化其它類的對象的信息
  • 控制器模式,處理系統事件的職責應分配給滿足以下一個或多個條件的類:
  1. 表示整個系統
  2. 表現爲用例處理程序

2.GoF ​​​​​​​

  • 基於open-close原則,認爲 所有的設計 都應對於 擴展開發 並且 不允許修改,有以下特性:
  1. 能重用 現有的關於常見設計問題的 解決方案
  2. 建立問題及其解決方案的通用術語,以便於理解
  • 大致可分爲三類: 創建、結構、行爲

2.1 創建型

  • 創建型設計模式提供 創建對象 和 管理對象生命週期 的方法
  • 常用的創建型設計模式有:工廠、生成器、單一實例
  • 工廠模式:提供一個被稱爲 factory的類,控制抽象基類的 子類對象的 生存期,以下情況需用工廠模式:
  1. 無法預見 運行時需要哪種類型對象
  2. 當基類是個抽象類時,模式必須返回一個已初始化的對象
  • 生成器模式:把複雜對象的創建和構造 與 它的表示分離
  • 可以對同一個複雜對象創建多個表示,並修改對象的安排
  • 類似於抽象工廠方法,因爲兩者都 創建對象族
  • 聚集 或 構造簡單對象 以表示一個複雜對象
  • 單例模式:允許創建自身的實例的類
  • 當需要訪問代表現實生活對象的單個對象(如打印機和鼠標)時,單件模式是有用的
  • 用 靜態數據成員 定義單件模式,以跟蹤所創建對象的生命期

2.2 結構型

  • 結構型設計模式:描述如何 使用對象組合 來組合類和對象結合 以形成更大的結構
  • 最常用的結構型模式有: 複合模式、代理模式、裝飾模式、外觀模式
  • 複合模式:
  1. 表示複合對象,可包含 簡單對象 和 複合對象
  2. 提供接口訪問複合對象內的 複合對象 和 簡單對象
  3. 可把複合模式想象成一棵樹,其中複合對象表示結點,簡單對象表示樹葉
  • 代理模式:
  • 把 複合對象 表示爲 簡單對象,把對象創建推遲到需要時才進行
  • 裝飾模式:
  • 修改個別對象的行爲 而不必 創建新的派生類,爲現有對象 定義 附加功能
  • 外觀模式:
  • 提供單一化的接口簡化軟件開發,在實現分層架構時 也很有用

2.3 行爲型

  • 行爲模式 提供在對象間進行通信的指南,最常用的行爲模式有:
  1. 職責鏈:描述各種類如何處理請求,描述可以處理的請求類型,描述如何將類無法處理的請求傳遞給其它類 
  2. 命令:描述如何將 方法請求調用 僅傳遞到特定模塊
  3. 觀察者:創建單獨的對象 顯示各種形式的信息

​​​​​​​3.對設計模式建模

  • 對設計模式建模的各種視圖包括:
  1. 外部視圖:將 設計模式的結構 表示爲 參數化協作
  2. 內部視圖:將 設計模式的結構 表示爲模式創建者(例如開發人員)所見的結構,內部視圖描述爲 不帶參數的協作
  • ​​​​​​​將設計模式與分層架構關聯:

4.將設計映射到代碼

  • 通過使用 CASE 工具(例如 Rational Rose、Jude 和 Visio),可以自動從 類和通信關係圖 生成代碼
  • CASE 工具使用不同的 經驗規則 和 啓發式原則 從設計模型生成代碼,代碼從 類的方法 和 變量生成
  • 支持逆向工程,能根據 項目實現 和 測試階段的代碼 生成設計模型

5.重構設計

  • 不改變類的外部行爲,重新構造現有代碼的內部結構 的技術
  • 改變了類模型,但不改變系統的架構
  • 可能進行重構的因素有:
  1. 由於 設計實現的平臺原因 在實現階段 需要標識新方法
  2. 從 通信關係圖 得出的方法 在類關係圖裏 沒有表示出來

6.應用會化外觀

  • 會話外觀:用於創建企業應用程序,如使用企業 JavaBeans(EJB)的應用程序的設計模式
  • 高級業務組件 定義 低級業務組件(例如企業 bean)之間的完整交互
  • 會話外觀 相當於 低級業務組件 的接口,降低了低級業務組件之間的耦合度,使企業應用程序的設計可重用
 

​​​​​​​​​​​​​​

三.UML和質量軟件過程

1.質量過程

  • 質量流程目的:在軟件開發過程中 檢查所開發軟件模型 和 產品質量
  • 質量流程在 軟件開發過程的 迭代 和 增量 之間實現,用於確保軟件質量
  • 質量流程會在 每個軟件開發過程階段之後 檢查輸出的質量
  • 質量流程包括:軟件開發過程質量、軟件模型質量、軟件產品質量、質量流程自身質量
  • 質量流程包括:技術(所需工具和生成的輸出)、方法(操作順序)、社會學(人力環境)
  • 質量流程 每個方面的活動 同時發生

  • 保證軟件產品質量,需要檢查:
  • 可確保開發軟件產品的活動 和 任務執行順序是正確的質量檢查:流程質量
  • 質量軟件過程 = 軟件開發 + 質量流程
  • UML 影響軟件模型的:可視化、規範、構造和文檔質量
  • 可視化質量:工件、關係圖、模型可視化 表示的質量
  • 規範質量:提供 UML 工件、關係圖詳細描述的規範 的質量
  • 構造的質量:從 UML 模型生成的代碼 的質量
  • 文檔質量:爲創建軟件模型的 UML構件 和 關係圖 而提供指南的文檔 的質量
  • 質量保證技術:檢查軟件模型語法正確、語義一致、美觀完整
  • 質量流程元模型:定義表達另一種模型的語言、描述應用於軟件開發過程的質量流程元素 及 元素間連接規則
  • 質量流程的元素爲:過程組件、角色、活動、任務、輸出和迭代
  • 過程組件:是一組質量流程的活動、角色和輸出的集合,例如:需求建模、系統設計和測試都算過程組件
  • 表示 用不斷變化的密度 來執行一連串過程組件:迭代

2.UML擴展機制

  • UML擴展機制:開發人員無需更改現有軟件模型、提供額外建模構件、表示軟件系統中的事件流
  • 可根據 特定應用程序域 剪裁 UML,要修改 UML,可以用擴展元素:構造型、約束和標記值
  • UML提供三種擴展元素:
  1. 構造型:擴展 UML 詞彙表,表示 UML 沒有特定描述的建模元素,區分UML關係圖中的相似元素,表示:<<>>
  2. 約束:擴展 UML 構造塊的語義關係,表示無法使用 UML 表示法表示的限制和關係,全局條件或條件,表示:()
  3. 標記值:擴展 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 構件之間互相依賴的程度,稱作 複雜度
  • 動態組件的複雜度取決於靜態組件的複雜度,因此測量以下靜態部件的複雜度:
  • 用例關係圖:通過識別關係圖中角色、用例和關係個數 測量用例關係圖的複雜度,用例分類(簡單中複雜)
  • 類關係圖:確定類的大小、關係數量、屬性可見性、操作可見性類可以擁有的對象數量和關係
  • 構件關係圖:組件中實現的類的數量,與組件有依賴關係的接口數量
  • 確定組件的大小 + 處理速度 = 測量組件關係圖的複雜度
  • 組件的處理速度取決於:組件支持的線程數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章