天天看點

軟體架構設計之四:面向對象方法一、本章要點二、基本概念三、統一模組化語言四、面向對象分析五、面向對象設計六、面向對象測試

一、本章要點

1)資訊系統綜合知識。包括面向對象的分析與設計、統一模組化語言。

2)系統架構設計案例分析。包括面向對象系統模組化。

二、基本概念

1)面向對象方法包括面向對象的分析、面向對象的設計和面向對象的程式設計。

2)基本概念:

  (1)對象(2)類(3)繼承(4)封裝(5)消息(6)多态性

三、統一模組化語言

1、UML的結構

1)UML的結構包括UML的基本構造塊、支配這些構造塊如何放在一起的規則(架構)和一些運用于整個UML的機制。

2)UML有三種基本的構造塊,分别是事物、關系和圖。

3)公共機制是指達到特定目标的公共UML方法,主要包括規格說明(詳細說明)、修飾、公共分類(通用劃分)和擴充機制4種。

4)UML用于描述事物的語義規則,分别為事物、關系和圖命名。

5)UML對系統架構的定義是系統的組織結構,具體來說,就是5個系統視圖,分别是邏輯視圖、程序視圖、實作視圖、部署視圖和用例視圖。

2、事物

1)UML中的事物也稱為模組化元素,包括結構事物、行為事物、分組事物和注釋事物,是最基本的面向對象的構造塊。

2)結構事物,在UML模型中屬于靜态的部分,代表概念上的或實體上的元素:類、接口、協作、用例、活動類、構件、節點。

3)行為事物,在UML模型中屬于動态的部分,它們是模型的動詞,代表時間和空間上的動作:互動(内部活動)、狀态機。

4)分組事物是UML模型中組織的部分,可以把它看成是個盒子,模型可以在其中被分解。隻有一種分組事物,包。

5)注釋事物是UML模型的解釋部分。

3、關系

1)UML用關系把事物結合在一起,主要有4種:依賴、關聯、泛化和實作。

2)用例之間的關系可概括為兩種:

  (1)用于重用的包含關系(2)用于分離出不同行為的擴充關系

3)類之間的關系

  (1)關聯關系,描述了給定類的單獨對象之間語義上的連接配接。

  (2)依賴關系,如果修改元素X的定義可能會引起對另一個元素Y的定義的修改,則稱元素Y依賴元素X。

  (3)泛化關系,描述了一般食物與該事物中特殊種類之間的關系,也就是父類與子類之間的關系。繼承關系是泛化關系的反關系。

  (4)聚合關系,一種特殊形式的關聯,它是傳遞和反對稱的。表示類之間的關系是整體與部分的關系。

  (5)組合關系,如果聚合關系中表示“部分”的類的存在與否,與表示“整體”的類有着緊密的關系,如“公司”與“部門”的關系,那麼就是組合關系。

  (6)實作關系,将說明和實作聯系起來。接口是對行為而非實作的說明,而類之中則包含中實作的結構。

  (7)流關系,将一個對象的兩個版本以連續的方式連接配接起來。

3、圖形

1)類圖。描述一組類、接口、協作和它們之間的關系。

2)對象圖。描述一組對象及它們之間的關系。

3)構件圖。描述一個封裝的類和它的接口、端口,以及由内嵌的構件和連接配接件構成的内部結構。

4)組合結構圖。描述結構化類的内部結構,包括結構化類與系統其餘部分的互動點。

5)用例圖。描述一組用例、參與者(一種特殊的類)及它們之間的關系。

6)順序圖。是一種互動圖,展現了一種互動,它由一組對象或角色以及它們之間可能發送的消息構成。

7)通信圖。也是一種互動圖,它強調收發消息的對象或角色的結構組織。

8)定時圖。也是一種互動圖,它強調消息跨越不同對象或角色的實際時間,而不僅僅隻是關心消息的相對順序。

9)狀态圖。描述一個狀态機,它由狀态、轉移、事件和活動組成。狀态圖給出了對象的動态視圖。

10)活動圖。将程序或其他計算的結構展示為計算内部一步步的控制流和資料流。

11)部署圖。描述對運作時的處理節點及在其中生存的構件的配置。

12)制品圖。描述計算機中的一個系統的實體結構。制品包括檔案、資料庫和類似的實體比特集合。

13)包圖。描述由模型本身分解而成的組織單元,以及它們的依賴關系。

14)互動概覽圖。是活動圖和順序圖的混合物。

四、面向對象分析

分析模型獨立于具體實作,即不考慮與系統具體實作有關的因素,這也是OOA和OOD的差別所在,OOA的任務是“做什麼”,OOD的任務是“怎麼做”。

1、用例模型

1)用例分析技術為軟體需求規格化提供了一個基本的元素,而且元素是可驗證、可度量的。

2)建構用例模型需要經曆識别參與者、合并需求獲得用例和細化用例描述三個階段。

2、分析模型

1)分析模型描述系統的基本邏輯結構,展示對象和類如何組成系統(靜态模型),以及它們如何保持通信實作系統行為(動态模型)。

2)建立分析模型包括以下基本活動:

  (1)發現領域對象,定義概念類。

  (2)識别對象的屬性。屬性是描述對象靜态特征的一個資料項。

  (3)識别對象的關系,包括建立類的泛化關系、對象的關聯關系。

  (4)為類添加職責,分别是類所維護的知識和類能夠執行的行為。

  (5)建立互動圖。

五、面向對象設計

1)面向對象設計是把分析階段得到的需求轉變成符合成本和品質要求的、抽象的系統實作方案的過程。

2)面向對象設計的一些基本準則是子產品化、抽象、資訊隐蔽、高内聚和低耦合。

3)具體的一些面向對象的設計原則:

  (1)單一職責原則,這是子產品内聚性在類和類的職責中的展現。

  (2)開放-封閉原則,在子產品本身不變動的情況下,通過改變子產品周圍的環境達到修改目的。

  (3)李氏(Liskov)替換原則,子類型必須能夠替換掉它們的基類型;子類具有擴充父類的責任,而不是重寫的責任。

  (4)依賴倒置原則,高層子產品不應該依賴于低層子產品,二者都應該依賴于抽象;抽象不應該依賴于細節。針對接口程式設計,而不是針對實作程式設計。

  (5)接口隔離原則,應當為用戶端提供盡量小的單獨接口,而不是提供大的接口;使用多個專門的接口比使用單一的總接口要好。

  (6)組合重用原則,要盡量使用組合,而不是繼承關系達到重用目的。

  (7)迪米特(Demeter)原則,又叫最少知識法則(Least Knowledge Principle,LKP),就是說一個對象應當對其他對象有盡量少的了解。

六、面向對象測試

1)傳統測試模式與面向對象的測試模式最主要的差別在于,面向對象的測試更關注對象而不是完成輸入輸出的單一功能,這樣的話測試可以在分析與設計階段就現行介入,使得測試更好地配合軟體生産過程并為之服務。

2)與傳統測試模式相比,面向對象測試的優點在于:

  (1)更早地定義出測試用例,甚至在需求被确定之前,可以幫助系統分析員和設計師更好地了解需求并且保證需求是可測試的。

  (2)由于錯誤的修改成本與錯誤發現的時間成正比,早期介入可以降低成本。

  (3)盡早地編寫系統測試用例,以便開發人員與測試人員對系統需求的了解保持一緻。

  (4)面向對象的測試模式更注重與軟體的實質。

3)面向對象測試包括4個測試層次:算法層、類層、模闆層和系統層。

  (1)算法層,測試類中定義的每個方法,基本上相當于傳統軟體測試中的單元測試。

  (2)類層,測試封裝在同一個類中的所有方法與屬性之間的互相作用。面向對象測試中所特有的子產品(單元)測試。

  (3)模闆層,又稱為主題層,測試一組協同工作的類或對象之間的互相作用。

  (4)系統層,把各個子系統組裝成完整的面向對象軟體系統,在組裝過程中同時進行測試。

繼續閱讀