作者:Anders小明

先看下Booch對面向對象分析和設計的經典論述:
OOP:面向對象編程是一種實現方法,程序被組織成對象的協作集合,每一個對象代表某個類的實例,對象的類是通過繼承關系聯合在一起的類層次中的所以成員。
OOD:面向對象設計是一種設計方法,它包含面向對象的分解過程,以及一種表示方法,用來描寫設計中的系統的邏輯模型與物理模型,以及靜態模型與動態模型。
OOA:面向對象分析是一種分析方法,它以可在問題域的詞匯表中找到的類和對象的觀點來審視需求。
?
經典是經典,不過總是不那么容易實踐,我自己在工作中總結了一下面向對象分析和面向對象設計的區別:
1.?面向對象分析的關鍵點,是其產出物能夠映射到業務系統的需求。因此,面向對象分析的產物稱為業務模型(Business Model)和業務行為,關注在:領域對象(Domain Model),領域服務(Domain Service),以及相關的邊界對象(Boundary Object)和控制對象(Controller Object);以及在此之上業務模型交互視圖,包括了測量觀察行為,以及賬目(或類賬目)處理行為。此時的設計不涉及任何具體的框架,工具包以及相關處理具體實現技術的對象。

2.?面向對象設計的關鍵是,其產出物能映射到計算機系統的要求。因為,面向對象設計建立在面向對象分析之上,細化業務模型和業務行為,給出面向對象技術的技術實現。表現為結合了大量具體框架,工具包以及相關技術實現對象(以Factory為代表,Factory對象是處理實例化的,而這是計算機系統的概念)。

雖然面向對象分析和設計存在重大區別,然后它們有時并不能被明顯區分。面向對象設計是對面向對象分析有限制作用。從實用角度講,如果分析的成果在轉化為設計的成果存在巨大困難時,分析成果的價值是有限的。

以下簡單列出自己的面向對象分析設計的實踐過程:
1. 分析階段
?分析對象模型,不細化對象模型的抽象和封裝
?分析業務行為,不細化行為的層次分解
?連接對象模型和業務行為,分析相關的各種Specification
?初步細化行為的層次分解
?初步細化對象模型的抽象層次
?分析行為和請求的響應模式

2.設計階段
?設計各種Specification的實現策略
?進一步細化行為的層次分解
?設計行為和控制器的關聯邏輯分解
?進一步細化對象模型的抽象體系
?結合框架設計行為和請求的響應模式
?結合框架設計行為和控制器的關聯邏輯分解

不知道其它的兄弟們怎么工作的。