2008年4月18日 星期五

OOA與Analysis Patterns

在軟體業界所謂系統分析(SA),傳統上指的是需求確認,而系統設計(SD)指的是類似開程式規格。SA通常要設計好頁面與資料庫,SD要開出達成這些頁面功能的程式規格,交由程式設計師來實做。

物件導向的技術引進以後,這個分野卻令人混淆了。首先,什麼是物件導向分析(OOA)?感覺上物件技術是很實作面的技術,如繼承、多型。我們畫Class Diagram、Sequence Diagram,這算是設計的行為吧!那麼,開發過程中的什麼practice是在做OOA呢?很多人以為用use cases表達需求就算是做OOA,很不幸的,use cases是表達需求的一個方法,但是跟物件技術沒有太大關係。(即使use cases是物件技術的族群流行的技巧。)

Martin Fowler寫了一篇專文討論這個問題:Is there such a thing as Object Oriented Analysis?文中說:

... analysis is primarily about understanding the domain, while design is about understanding the software that supports that domain.

所以分析跟設計雖然都跟物件打交道,表達的模型都是用UML畫,差別在於目的不同,所用的技巧也不同。做設計時會常常引用設計樣式,而分析時常常會引用分析樣式。

如果要了解OOA是什麼,建議最快的方法是讀Martin Fowler的Analysis Patterns。或是到他的網站讀Analysis Patterns的部份。為了很快地淺嘗OOA的味道,可以先看用物件技術怎麼處理『數量』和『範圍』。如果想看看更深入一些的樣式,可以參考『組織架構的樣式』以及『會計的樣式』。我個人認為一定要學過這些分析樣式,才會了解OOA,才能了解物件技術的真正威力。

Martin Fowler寫的Analysis Patterns這本書應該是他寫過最重要的一本經典巨著。經典常常不是很暢銷,也不是很好讀。所以這本書不像他的大眾作品UML distilled與Refactoring那麼熱門,但是真正可以開闊讀者的視野,訓練讀者用物件的方法思考問題。如果你的工作是以開發企業軟體為主,可能會發現分析樣式比設計樣式更實用。

沒有留言: