OOA

按照對方思想分析業務的方法

Object-Oriented Analysis(面向對象分析方法)是確定需求或者業務的角度,按照面向對象的思想來分析業務。例如:OOA只是對需求中描述的問題,進行模塊化的處理,描述問題的本質,區別每個問題的不同點相同點,確定問題中的對象。OOA與結構化分析有較大的區別。OOA所強調的是在系統調查資料的基礎上,針對OO方法所需要的素材進行的歸類分析和整理,而不是對管理業務現狀和方法的分析。

組成


分析

OOA(面向對象的分析)模型由5個層次(主題層、對象類層、結構層、屬性層和服務層)和5個活動(標識對象類、標識結構、定義主題、定義屬性和定義服務)組成。在這種方法中定義了兩種對象類之間的結構,一種稱為分類結構,一種稱為組裝結構。分類結構就是所謂的一般與特殊的關係。組裝結構則反映了對象之間的整體與部分的關係。

定義屬性

OOA在定義屬性的同時,要識別實例連接。實例連接是一個實例與另一個實例的映射關係。
OOA在定義服務的同時要識別消息連接。當一個對象需要向另一對象發送消息時,它們之間就存在消息連接。
OOA 中的5個層次和5個活動繼續貫穿在OOD(面向對象的設計)過程中。OOD模型由4個部分組成。它們分別是設計問題域部分、設計人機交互部分、設計任務管理部分和設計數據管理部分。

主要原則


定義

(1)抽象:從許多事物中捨棄個別的、非本質的特徵,抽取共同的、本質性的特徵,就叫作抽象。抽象是形成概念的必須手段。
抽象原則有兩方面的意義:第一,儘管問題域中的事物是很複雜的,但是分析員並不需要了解和描述它們的一切,只需要分析研究其中與系統目標有關的事物及其本質性特徵。第二,通過捨棄個體事物在細節上的差異,抽取其共同特徵而得到一批事物的抽象概念。
抽象是面向對象方法中使用最為廣泛的原則。抽象原則包括過程抽象和數據抽象兩個方面。
過程抽象是指,任何一個完成確定功能的操作序列,其使用者都可以把它看作一個單一的實體,儘管實際上它可能是由一系列更低級的操作完成的。
數據抽象是根據施加於數據之上的操作來定義數據類型,並限定數據的值只能由這些操作來修改和觀察。數據抽象是OOA的核心原則。它強調把數據(屬性)和操作(服務)結合為一個不可分的系統單位(即對象),對象的外部只需要知道它做什麼,而不必知道它如何做。
(2)封裝就是把對象的屬性和服務結合為一個不可分的系統單位,並儘可能隱蔽對象的內部細節。
(3)繼承:特殊類的對象擁有的其一般類的全部屬性與服務,稱作特殊類對一般類的繼承。
在OOA中運用繼承原則,就是在每個由一般類和特殊類形成的一般—特殊結構中,把一般類的對象實例和所有特殊類的對象實例都共同具有的屬性和服務,一次性地在一般類中進行顯式的定義。在特殊類中不再重複地定義一般類中已定義的東西,但是在語義上,特殊類卻自動地、隱含地擁有它的一般類(以及所有更上層的一般類)中定義的全部屬性和服務。繼承原則的好處是:使系統模型比較簡練也比較清晰。
(4)分類:就是把具有相同屬性和服務的對象劃分為一類,用類作為這些對象的抽象描述。分類原則實際上是抽象原則運用於對象描述時的一種表現形式。
(5)聚合:又稱組裝,其原則是:把一個複雜的事物看成若干比較簡單的事物的組裝體,從而簡化對複雜事物的描述。
(6)關聯:是人類思考問題時經常運用的思想方法:通過一個事物聯想到另外的事物。能使人發生聯想的原因是事物之間確實存在著某些聯繫。
(7)消息通信:這一原則要求對象之間只能通過消息進行通信,而不允許在對象之外直接地存取對象內部的屬性。通過消息進行通信是由於封裝原則而引起的。在OOA中要求用消息連接表示出對象之間的動態聯繫。
(8)粒度控制:一般來講,人在面對一個複雜的問題域時,不可能在同一時刻既能縱觀全局,又能洞察秋毫。因此需要控制自己的視野:考慮全局時,注意其大的組成部分,暫時不詳察每一部分的具體的細節;考慮某部分的細節時則暫時撇開其餘的部分。這就是粒度控制原則。
(9)行為分析:現實世界中事物的行為是複雜的。由大量的事物所構成的問題域中各種行為往往相互依賴、相互交織。

分析模型

1、對象模型:對用例模型進行分析,把系統分解成互相協作的分析類,通過類圖/對象圖描述對象/對象的屬性/對象間的關係,是系統的靜態模型
2、動態模型:描述系統的動態行為,通過時序圖/協作圖描述對象的交互,以揭示對象間如何協作來完成每個具體的用例,單個對象的狀態變化/動態行為可以通過狀態圖來表達
3、功能模型(即用例模型à作為輸入)。

主要優點

(1)加強了對問題域和系統責任的理解;
(2)改進與分析有關的各類人員之間的交流;
(3)對需求的變化具有較強的適應性;
(4)支持軟體復用。
(5)貫穿軟體生命周期全過程的一致性。
(6)實用性;
(7)有利於用戶參與。

基本步驟

在用OOA具體地分析一個事物時,大致上遵循如下五個基本步驟:
第一步,確定對象和類。這裡所說的對象是對數據及其處理方式的抽象,它反映了系統保存和處理現實世界中某些事物的信息的能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述。
第二步,確定結構(structure)。結構是指問題域的複雜性和連接關係。類成員結構反映了泛化-特化關係,整體-部分結構反映整體和局部之間的關係。
第三步,確定主題(subject)。主題是指事物的總體概貌和總體分析模型。
第四步,確定屬性(attribute)。屬性就是數據元素,可用來描述對象或分類結構的實例,可在圖中給出,並在對象的存儲中指定。
第五步,確定方法(method)。方法是在收到消息后必須進行的一些處理方法:方法要在圖中定義,並在對象的存儲中指定。對於每個對象和結構來說,那些用來增加、修改、刪除和選擇一個方法本身都是隱含的(雖然它們是要在對象的存儲中定義的,但並不在圖上給出),而有些則是顯示的。