Misoo

OOAD的核心觀念:領域概念

何謂領域概念?

 

        什麼是「概念」(Concept)呢?它是抽象的,代表一群實體,是溝通的重要媒介。例如:「
請買杯咖啡」,咖啡是個概念,具有這種概念的人,都會瞭解這句話的意思。他會憑其經驗
而想到真實的咖啡。概念代表一個群體---- 「類別」(Class),人們藉由天賦的能力運用經驗去
想到其所代表的實際東西---- 「物件」(Object)。例如您聽到「買一隻吉他」,這「吉他」概念
讓您想到經驗中的吉他,而去樂器行買一隻「真實的吉他」回家。一般而言,概念包括3
基本要素:

 

1.  符號(Symbol):代表它的文字、圖形或影像。

2.  涵意敘述(Intension):它的明確定義。

3.  代表的東西(Extension):它所代表的群體。

 

        例如,Sale是符號,大家都知道它的含意是:表示一個賣出商品的事件。大家也能想到
實際的交易情況。所以Sale是一個概念。在不同的領域裡,Sale的定義可能不同,代表一群
不同的事物,為不同的概念。像SaleOrderPurchase等代表一向交易事件(Event),皆是重要
的概念。至於像ReceiptInvoiceTicket等皆為重要的概念。這些概念的符號,自然成為領域
專家或知識工作者之間互相溝通的主要字彙(Vocabulary)。因此在敘述領域的相關文件裡,
常用字彙是此領域裡的主要概念符號。
        找出領域知識裡的概念,就是找出軟體系統的物件和類別。找出軟體系統的物件,就像
尋找水的組成元素---- HO。例如麥當勞企業有漢堡、薯條、玩具、特餐、點餐、訂購玩具、
顧客、員工、玩具商、分店等等的概念,將對應到軟體系統的類別,所以在麥當勞的軟體系統
裡就會有漢堡、薯條、玩具、特餐、點餐、訂購玩具、顧客、員工、玩具商、分店等等的類別。
著名資訊科技專家James Martin說:

 

OOA模型不是根據實際事物而建立的;而是根據人們對實際事物的認知概念而建立的。」

   (Object-oriented analysis is not an approach that models reality. Instead, it models the way people
   understand and process reality ---- through the concepts they acquire. )

   

         軟體人員在開發系統時,從客戶的領域概念去瞭解是唯一的途徑。SysML/UML不是敘述我們
開發者所看到的系統(Reality);而必須以領域概念為依歸。 James Martin 又說:

 

「概念是人人互相分享的。概念提供了能讓人人互相了解的共通詞彙。」

  (Concepts are shared by others. Concepts provide the common vocabulary for communication.)

 

     例如「收據」是個重要的商業概念。在商店裡,「收據」代表能歸還所購貨品的權利,也是
們皆知道的,人們也知道實際收據的模樣。這樣的概念,自然成為人們溝通的主要字彙。OOAD
專家Grady Booch說:

 

「例如顧客使用櫃員機時,與櫃員機的對話中,談及帳戶、存款和提款等,這些字眼就是金融
  領域詞彙的一部分。您在開發資訊系統時,可使用跟他們一致的抽象概念。」
    (For Example, a customer using an automated teller speaks in terms of accounts, deposits, and withdrawals;
    these words are part of the vocalulary of the problem domain. A developer of such a system uses these same
    abstractions, ..... )

 

        因此在敘述業務的相關文件裡,通俗而常見的字彙就是此業務領域裡的主要概念。即使是
一般的文件也處處可見領域概念。
 

舉例之1東方傳說

 

后羿從西王母處請來不死之藥,嫦娥偷吃了這顆靈藥,成仙了,身不由主飄飄然地飛往月宮之中,

 在那荒蕪的月宮之中度著無邊的寂寞歲月。

 

         雖然嫦娥可能是傳說虛構的,並非事實(Reality),但是確確實實是我們心中的清晰概念,

傳說中的主角,所以是個重要的類別,表示如下:

      

     

「嫦娥」的確是一個共通的概念和術語,只要有人說出這兩個字時,別人幾乎都知道其意義。

一旦找到了核心的概念之後,就能    繼續發掘與它具有關聯的其他概念了。例如,跟「嫦娥」

具有密切關聯的概念是:月亮和仙丹,常表達如下:   

 

 

 4、與嫦娥相關聯的主要概念

 

          因為人們是藉由心中的概念來認知領域中的事物,並傳播給別人,與人分享;而OOAD

SysML/UML模式則表達人們心中的概念,也就是表達人們對領域中事物的認知(Through the

concepts they acquire)只要更仔細觀察領域專家們心中的更多主要術語或詞彙,就能找到更多

的概念了,然後使用世界標準的SysML/UML模式來表示之。就能\把知識傳播到世界各地。不僅

上述圖4裡的名詞概念而已,其攸關的動作也常是重要概念,譬如圖5。動詞常常代表一項事件

(Event)的發生,而人們常從人、事、時、地、物等各層面去描述一個事件的發生情境。譬如,

吃仙丹就有動作()的對象---仙丹,動作的主角---嫦娥,當然還有地點、時間,甚至仙丹來源

等等。只要你懂得依循概念之關連來逐步找出相關的領域概念,系統分析就變成一種非常有趣

的事情了。

  

 5、動作也常是重要的概念

 


           古典的系統分析比較依賴企業流程或用戶表單,而現代的系統分析則

以專業知識為基礎,這也就是OOAD的特色所在。