物以類聚,一群具有相同特質的「物件」(object),群聚成一個獨特的「類別」(class)。至於,經常可見到的「個體」(instance)一詞,則是「物件」的同義字。在物件導向分析方法中,物件和類別這兩個詞彙,分別用來反映(reflect)問題領域和系統責任,如圖1所示。
圖1:物件和類別反映問題領域和系統責任
在物件導向分析方法中,尋找類別與物件是五大主要活動之一,其他活動還有確立結構、確立主題、定義屬性與定義服務。不過,這五個活動並不需要依照這個順序進行。
系統分析師的主要工作是——將問題領域中的真實事物,轉換成資訊系統該擔負的責任(系統責任)。
因此,在物件導向分析的世界中,才會分別以「物件」代表問題領域中的真實事物,以「類別」代表資訊系統該擔負的責任。物件導向分析的世界就像是一張白色圖畫紙,系統分析師研究著問題領域以及系統責任,並將它們畫到這張白色圖畫紙上。
想像一下,系統分析師偏著頭、皺著眉,專心觀看著真實世界中的問題領域,腦海中努力思考的問題是:
1. 該在哪裡找尋物件,並且將這些物件轉化成類別呢?
2. 而且,又該注意哪些物件呢?
3. 如果,幸運地找到一些物件之後,接著又該思考些什麼呢?
在實務上,系統分析師會真實地面臨到上述這三個主要問題,且讓我們在接下來的文章段落中,與你一塊探索。
何處找尋
該在哪裡找尋物件,並且將這些物件轉化成類別呢?關於這個問題,《Object-Oriented Analysis》一書作者提到了六處可以尋得物件的寶窟,分別為:直接觀察、主動聆聽問題領域專家、查看以前的物件導向分析產出、查看其他系統、雛型(propotype)、閱讀文件。
此處,我們條列說明這六個可以尋得物件的地方,如下:
●直接觀察:駐點在客戶公司的開發團隊,或者是公司內部的資訊部門的開發團隊,比較能夠就近觀察、獲得第一手資料。
●主動聆聽問題領域專家:諸如資深員工、超級用戶(power user)、領域顧問等,這些都是十分常見的領域專家,主動接洽並且訪談他們,通常會得到許多寶貴的資訊。
●查看以前的物件導向分析產出:查看相同或類似的問題領域的物件導向分析產出,甚至是結構化分析或其他非物件導向分析的產出,都很有參考的價值。
●查看其他系統:同樣的,也可以查看相同或類似問題領域的其他系統。如果是舊系統翻新的專案的話,也可以參考現存系統,無論是系統畫面、報表等等,都可以找到許多重要的物件。
●雛型(propotype):如果有雛型系統可以參考的話,可以查看這個雛型系統裡頭有哪些物件可以沿用的。
●閱讀文件:閱讀客戶提供的相關文件,也可以挖掘到許多物件。譬如,在《Use Case Driven Object Modeling With UML: A Practical Approach》一書中,書籍封面如圖2所示,提出十五條「分析癱瘓警訊」(analysis paralysis alerts)作者Doug Rosenberg和Kendall Scott,他們就建議可以閱讀:高階的問題說明文件、低階的需求說明文件、問題領域內的專家知識,這些文件來找尋物件、屬性、關係和操作。
找尋何物
在一個物件導向分析模式中,通常會包含多少個跟問題領域相關的類別呢?這當然是視情況而定。不過,如果硬是要說個大致的話,原著作者有提到,一個模式中平均是35個類別,如果高達110個類別的話,那這個分析模式就太大了。
當然,問題領域也可以往下細分,大約可以細分成4個到5個問題次領域(problem sub-domains),而且每一個問題次領域中,約略可以包含50到100個類別。
至於,該注意問題領域中的哪些物件呢?針對這個問題,原著作者提到下列八種物件,值得我們特別注意,分別為:其他系統、設備、物品、必需記得的事件(event remebered)、角色、操作程序(operational procedures)、地點、組織單位。
現在,我們條列說明這八種物件,如下所述:
●其他系統:系統必須連線的其他系統。比方說,自動櫃員機就無法單獨運作,它必須連線到銀行主機,才能正常運作。
●設備:同樣的,系統必須連線的外部設備,也是很重要的物件。比方說,大賣場的銷售系統就會連線到條碼掃描機,這就是個常見的外部設備。還有,銷售系統也經常會連線到刷卡機,才能夠接受信用卡付款。
●物品:這是決不會錯過的物件,幾乎眼前所見的一切,無論是自然物或人造物,大部分都可以歸類為物品。比方說,樹木、貓狗、建築物、檯燈、信用卡、電腦螢幕等等,舉例不完。
●必需記得的事件:特定條件或時刻下發生且必需記得的事件,這通常是十分重要的物件。比方說,初次啟用信用卡時,我們可能會透過語音系統,進行開卡手續,這是特定條件下會發生的事件。再者,涉及到金錢的商業交易,也是十分常見且重要的事件。
●角色:人類或組織所扮演的角色。一般而言,如果我們會定義一種角色物件,就會有第二種、第三種角色物件。這是因為我們會用各式不同的角色來對一大群的人分類,特別是用工作職稱做為角色名稱。比方說,在醫院領域裡,我們慣用醫生、護士、藥劑師、看護和病人等等的職稱來分辨人。甚至針對醫生,我們還會細分成婦產科醫生、外科醫生等等。
●操作程序:這是比較特殊的物件,通常會在像是以工作流程為主的系統中用到。操作程序物件的屬性,常見有操作程序名稱、所需的授權等級、步驟描述等等。
●地點:實際的場所、辦公室、網站等等,都算是一種地點物件。很多時候,我們會需要記錄事件或交易相關的地點,像是線上購物系統裡,就需要記錄送貨的地點。
●組織單位:公司團體的組織單位,也是一種十分常見的物件。譬如,公司部門、學校班級、社團等等。
思考什麼
特別提醒你的是,並不是在問題領域中尋找到的所有物件,都適合放到分析模式中。所以,如果,幸運地找到一些物件之後,系統分析師接著又該思考些什麼呢?
原著作者提供了我們八個系統分析師必須思索的問題:
1. 哪些資訊需要物件長期記得的?
2. 物件需要提供哪些行為?
3. 物件需要保存的屬性是否不只一個?
4. 是否群聚了不只一個的物件?
5. 類別中的屬性是否總是適用在所有物件上?
6. 類別中的操作是否總是適用在所有物件上?
7. 所關注的需求,是否是跟問題領域有相關?
8. 是否有剔除衍生性的產出?
下一回,我們再進一步詳細說明這八個問題。
熱門新聞
2025-12-12
2025-12-15
2025-12-12
2025-12-15
2025-12-12
2025-12-15