讀書筆記《道法自然--面向對象實踐指南》第五章

FISHGUI項目組決定用面向對象的方法完成項目,也決定採用迭代的開發模型。現在終於進入
到面向對象分析的階段了。

面向對象分析該從哪裏開始呢?要完成些什麼工作呢?第一次採用面向對象開發的項目組都
會碰到這樣或那樣的問題,解決之道是要允許項目組犯錯誤,在錯誤中學習、成長。書中提
到:
面向對象分析的主要任務是根據用戶需求,建立一個準確的、完整的、一致的系統模型
。這個過程的輸入是軟件的功能性需求(非功能性需求通常要留到面向對象設計階段再
考慮)。在面向對象分析過程裏,項目組通過分析軟件的功能性需求,得到一個理想化
的系統模型,該模型更多的側重於描述我們需要解決的問題是什麼樣的--我們稱這樣的
模型爲分析模型。
面向對象分析過程一般要從不同的視角觀察和分析軟件系統,並相應地產生以下三種分
析模型。
·功能模型:把用戶的功能性需求轉化爲開發人員和用戶都能理解的一種表達方式,其
結果就是我們此前談到的用例模型。從這個意義上說,用例分析也是面向對象分析工作
的一個組成部分。
·對象模型:通過對用例模型的分析,把系統分解成相互協作的分析類。一般情況下,
我們通過類圖和對象圖來描述系統中的所有對象、對象的屬性以及對象之間的相互關係
。對象模型是系統的靜態模型。
·動態模型:描述系統的動態行爲。我們一般通過順序圖和協作圖來描述系統中對象之
間的交互關係,以揭示所有對象是如何通過分工協作來實現每個具體用例;通過狀態圖
來描述系統中單個對象的狀態變化情況,以揭示單個對象的動態行爲。

既然功能模型在需求分析的階段已經做了,接下來要做的便是找到系統的對象模型,即找出
系統中的分析類,分析類可分爲實體類和軟件類,軟件類又包括邊界類和控制類。實體類是
應用領域中的核心類,一般是從現實世界中的實體對象歸納和抽象出來的,用於長期保存系
統中的信息,以及提供針對這些信息的相關處理行爲。一般情況下,實體類的對象實例和應
用系統本身有着相同的生命週期。邊界類是從那些系統和外界進行交互的對象中歸納和抽象
出來的,也就是說,邊界類是系統內外參與者的聯繫媒介,外界的消息只有通過邊界類實例
才能發送給系統。控制類是實體類和邊界類之間的潤滑劑,是從控制對象中歸納和抽象出來
的,用於協調系統內邊界類和實體類之間的交互。例如,某個邊界對象必須給多個實體對象
發送消息,多個實體對象完成操作後,傳回一個結果給邊界對象,這時,我們可以使用控制
類來協調這些實體對象和邊界對象之間的交互關係。給類分類,是爲了明確的定位它們,按
照這種分類方法,我們很容易把這些分析類對應到MVC模式上。

面向對象分析和麪向對象設計是很不容易區分的兩個階段,爲了能夠較好的進行面向對象分
析,我們還有必要區分出,哪些工作是面向對象分析階段該做的,哪些是該留在面向對象設
計應時完成的。兩者的區別在以下方面:
·在側重點上,面向對象分析側重於理解問題,描述軟件要做什麼,而面向對象
設計側重於理解解決方案,描述軟件要如何做。

·面向對象分析一般只考慮理想的設計,不關心技術和實現層面的細節,
而面向對象設計需要得到更具體、更詳盡,更接近於真實的代碼的設計方案。

·在設計結果的描述方式上,面向對象分析階段側重於描述對象的行爲,而面向對象設
計階段側重於描述對象的屬性和方法。

·面向對象分析只關注功能性需求,而面向對象設計既關注功能性需求,也關注
非功能性需求。

·面向對象分析產生的系統模型通常規模較小,而面向對象設計產生的系統
模型規模較大,內容也比較完整、詳盡。

一般說來,完整的面向對象分析應該包括從用例中提取實體對象和實體類、添加邊界類、
添加控制類、提取屬性、提取分析類間關係、繪製類圖和順序圖、繪製術語
表等幾個步驟。

接着,書中講述了通過尋找用例描述中名詞和名詞短語得到實體對象的方法,還介紹了應用
概念類型列表(物理的或實在的對象、人的角色、組織、時間、地點、規格說明或實物的描
述、規則和策略)
怎樣找出實體對象,在尋找實體對象的時候,必須要知道系統外的對象不
屬於我們考察的範圍、不能把實體對象的屬性當成實體對象,還有就是根據需要我們可以創
建並不存在的實體對象。完成後,便是根據對象分組,得到實體類,尋找實體類的屬性,找
出實體類之間的關係,關係可分爲一對一、一對多、多對多、歸納四種。此階段的工作做完
,即大略知道了系統應該有哪些類,這些類又有哪些成員變量,以及類之間的耦合情況。此
時分析工作遠沒有結束,我們還該根據系統與外界的交互情況添加邊界類,根據消息傳遞情
況添加控制類,在尋找控制類時,可以遵循GRASP模式中的控制者模式背後的原則,找出分析
類之後,便要繪製類圖、用例實現圖(順序圖)、繪製術語表。

最後的總結說到:
·面向對象分析和麪向對象設計既有區別,又有聯繫;
·面向對象分析是由用例驅動的(即我們應該通過用例尋找實體類);
·尋找軟件系統中的實體類和軟件類,確定類或對象之間的關係,這是面向對象分析
工作的核心內容。

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