<source id="4vppl"><ins id="4vppl"></ins></source>
<u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
<object id="4vppl"></object>
  • <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

    <object id="4vppl"></object>
    <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

      <i id="4vppl"><thead id="4vppl"></thead></i>

      <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>

      當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > DomainModel之鳥瞰

      DomainModel之鳥瞰
      2010-01-14 22:34:42  作者:  來源:
      第一次接觸GoogleEarth,帶給我相當(dāng)?shù)恼鸷场D憧梢噪S意轉(zhuǎn)動地球,通過縮放,看到不同層次的景象,這著實(shí)讓我吃驚,竟然可以這樣!手握鼠標(biāo),來回查看,有種作“上帝”的感覺,如果是實(shí)時(shí)的那就不得了了!相信很多人都有在上面尋找自己家的經(jīng)歷。就拿我來說,首先轉(zhuǎn)到背面中國的位置,滑動滾輪,逐漸深圳的全貌顯露出來,西面是蛇口黃色的填海區(qū),上面是深圳的綠肺塘朗山。繼續(xù)向下,黑灰色的廣深高速開始清晰可見,在我辨別清楚小區(qū)所在位置后,范圍進(jìn)一步縮小,旁邊高級中學(xué)里紅色跑道包圍的足球場,看起來很規(guī)整,小區(qū)游泳池,也從一個(gè)小藍(lán)點(diǎn)逐漸露出了它的鋼琴造型。最后停放在小區(qū)里的轎車也顯露無遺。

        GoogleEarth提供了一個(gè)可伸縮的鳥瞰視角,生動的展示了我們所處地方的本來面貌。這不同于,我們每日看到的景象,也不同于我們曾經(jīng)看到的地圖和地球儀。在DomainModel中,雖然沒有GoogleEarth for DomainModel的特殊版本。但我們可以采用類似的方法來查看我們的Model。

        在明確了DomainModel控制風(fēng)格和演化規(guī)律后,我們還需要確定DomainModel中各部分的依賴和職責(zé),才能得到整體觀感。

      “從演化規(guī)律來看,要理解生命周期短者的觀點(diǎn),必先理解生命周期長者的觀點(diǎn)”:)

      我們先考察OO大師PeterCoad等的著作--Java Modeling In Color With Uml。
      PeterCoad關(guān)于企業(yè)信息系統(tǒng)觀點(diǎn)的努力,首先在Object Models:Strategies,Patterns, and Application中得到表達(dá),隨后,在Java Modeling In Color With Uml中,通過“Domain-Neutral Component”更系統(tǒng)的完善了他的構(gòu)想。

      “色彩迷”PeterCoad“四色論”觀點(diǎn),簡單可表達(dá)為“特定領(lǐng)域構(gòu)件,用四種領(lǐng)域中立,按照重要程度分配顏色的構(gòu)件原型,建立模型。”

      四種構(gòu)件原型為:
      “moment-interval”--代表領(lǐng)域中可長可短的業(yè)務(wù)交互。因其地位最重要,故用扎眼的粉紅色表示。
      “party, place, or thing” --表示“moment-interval”中,涉及的實(shí)體。其地位在“description”之上,而在“role”之下,用舒服的綠色。
      “role”-- 是指“moment-interval”中,"party, place, or thing"的參與方式。地位僅次于“moment-interval”,第二刺眼,黃色。
      “description”-- 用來描述上述三者。最平靜,藍(lán)色。

      關(guān)聯(lián),一般是“moment-interval”----“role”----“party, place, or thing” ----“description”。但也存在其他關(guān)系。
      另外PeterCoad在貢獻(xiàn)出領(lǐng)域中立構(gòu)件原型“烤箱”的同時(shí),還不忘贈送我們用它烹調(diào)出來的12套“特定領(lǐng)域構(gòu)件”大餐,讓我們品嘗。

      ColorUml確實(shí)給構(gòu)建企業(yè)信息系統(tǒng),帶了很多實(shí)用的指導(dǎo)。不過Domain.Driven.Design作者,領(lǐng)域驅(qū)動設(shè)計(jì)專家,Eric&amp;Evans的觀點(diǎn),也著實(shí)讓人入迷。

      Eric&amp;Evans在DDD中,明確提出了DomainModel職責(zé)層的概念。
      “在深入了解一個(gè)領(lǐng)域之后,大模式開始顯現(xiàn)。一些領(lǐng)域具有自然的層次結(jié)構(gòu)。某些概念和活動依賴于其他元素,而這些元素又出于不同的原因,以不同速率變化著,我們?nèi)绾卫眠@種自然結(jié)構(gòu),使它變得更加明顯和有用呢?這種層次結(jié)構(gòu)意味著分層,一種最成功的構(gòu)架設(shè)計(jì)模式。”

      “職責(zé)層最適合用分層模式中的“松散分層系統(tǒng)”來設(shè)計(jì),它允許層,不光可以訪問它的直接下層,還可以訪問所有低于它的層。
      因此:
      仔細(xì)考慮模型中概念依賴的關(guān)系,它們的變更速率,以及導(dǎo)致領(lǐng)域各部分發(fā)生變化的來源。如果界定出了領(lǐng)域中的自然層次,那就把它們轉(zhuǎn)化成大的抽象職責(zé)。這些職責(zé)應(yīng)當(dāng)描述系統(tǒng)的高層目標(biāo)和設(shè)計(jì)。重構(gòu)模型,讓“領(lǐng)域?qū)ο?rdquo;,“聚合”和“模塊”適合于它所放入的職責(zé)層”

      具體分層由上到下是:
      Decision ----決策支持,需要執(zhí)行什么和設(shè)置何種策略?使用業(yè)務(wù)活動提供的當(dāng)前信息和歷史信息,來分析決策,設(shè)置策略。
      Policy ----策略,規(guī)則是什么?可以使用或約束低層行為。
      Commitment----約束,承諾了什么?協(xié)議,合同。約束操作層,但其本身也是業(yè)務(wù)活動的結(jié)果。
      Operation----操作,做什么?企業(yè)運(yùn)營的核心業(yè)務(wù)活動
      Potential----潛能,考慮能做什么?組織和其可用的資源。

      在一般應(yīng)用中,Operation層和Potential層可以放入大部分DomainObject。

      比較上述兩者,可以找到相似之處,“party, place, or thing”構(gòu)件原型同Potential層中包含的東西,極為類似。Operation難道不是“moment-interval”么?Commitment也是“moment-interval”的一種。“description”同“specification”類似。當(dāng)然,也有不同之處,ColorUml沒有強(qiáng)調(diào)對象依賴關(guān)系的重要性。"role"在DDD中,沒有突出的位置。

      下面,談?wù)勎业南敕ā?

      根據(jù)前面的討論和得到的規(guī)律,結(jié)合上面的論述。我們希望系統(tǒng)可以隨著業(yè)務(wù)的變化,而同步變化。如果,我們總是試圖遵循業(yè)務(wù)概念的依賴來搭建系統(tǒng),那么,我們就能更直接的實(shí)現(xiàn)業(yè)務(wù)變化。如果,我們的系統(tǒng)就是按照業(yè)務(wù)的概念依賴關(guān)系,搭建起來的。那么,業(yè)務(wù)發(fā)生變化時(shí),我能總能找到對應(yīng)的變化點(diǎn)。按照概念依賴關(guān)系,我們知道那些對象可能會涉及到這種變化,那些對象根本不用考慮。

      但正如前面提到的,業(yè)務(wù)概念的依賴關(guān)系,不會直接呈現(xiàn)在我們面前,我們必須采用“演化的觀點(diǎn)”,加以提取,不斷把基本概念和擴(kuò)展概念進(jìn)行分離。

      入口,我選擇能體現(xiàn)企業(yè)存在意義的“核心業(yè)務(wù)交互”(理論上,可以從任何一個(gè)概念入手)。這類似于前面兩種方法的Operation/moment-interval。要理解加法,我們首先要對可以做加法的數(shù)有所了解。同樣道理,要理解“核心業(yè)務(wù)交互”,我們首先要理解參與交互的參與者。舉例來說,我們要理解生命周期較短的“購買商品”,就需要理解,誰買的?客戶,誰賣的?員工,購買的是什么?商品,在哪里購買的?地點(diǎn),我們得到一些依賴關(guān)系:
      購買商品--&gt;客戶,購買商品--&gt;員工,購買商品--&gt;商品,購買商品--&gt;地點(diǎn)。
      要理解誰來扮演客戶或員工的角色么?如果需要的話,客戶--&gt;參與者,員工--&gt;參與者。
      商品要分類么?是,商品--&gt;商品目錄。商品的定價(jià)是多少?商品定價(jià)--&gt;商品。在不同目錄里商品是同樣的定價(jià)么?否,集團(tuán)購買的要便宜些,商品&lt;--商品目錄定價(jià)--&gt;商品目錄。商品目錄定價(jià)--&gt;商品定價(jià)
      商品有優(yōu)惠策略么?有賣二送一,優(yōu)惠策略--&gt;購買商品。優(yōu)惠策略有期限么?有,只在國慶節(jié)優(yōu)惠,優(yōu)惠策略--&gt;日歷。

      “核心業(yè)務(wù)交互”也可以是生命周期較長的概念,如“協(xié)議”。協(xié)議可以由一次較短的核心業(yè)務(wù)交互產(chǎn)生。如:電信中的購買協(xié)議,就是通過訂購活動產(chǎn)生的。也有把訂單視為協(xié)議的,但區(qū)分訂單和由此產(chǎn)生的購買協(xié)議,可以更好的對應(yīng)實(shí)際訂單和跟隨訂單的協(xié)議書。按照“靜態(tài)依賴”規(guī)律,得到訂購--&gt;購買協(xié)議。

      “核心業(yè)務(wù)交互”可以很長,也可以很短。實(shí)際上,“核心業(yè)務(wù)交互”的壽命極限可以逼近參與角色,可以認(rèn)為“客戶”也是一個(gè)大的“核心業(yè)務(wù)交互”,它通過“客戶開戶”這個(gè)瞬間“核心業(yè)務(wù)交互”而產(chǎn)生。

      瞬間“核心業(yè)務(wù)交互”,比比皆是,通常在一個(gè)事務(wù)里處理的業(yè)務(wù)活動,都可以算作瞬間的“業(yè)務(wù)交互”。甚至,還存在,比事務(wù)還小的瞬間“業(yè)務(wù)交互”,例如:在一次“轉(zhuǎn)賬業(yè)務(wù)”中,可以包含一個(gè)“轉(zhuǎn)出業(yè)務(wù)”和一個(gè)“轉(zhuǎn)入業(yè)務(wù)”。

      理解“業(yè)務(wù)交互”,是理解DomainModel的基礎(chǔ)。可以把“業(yè)務(wù)交互”看作是連接其他概念的紐帶,它本身會依賴一些基本元素,參與角色,資源,。在其上有依賴于它的協(xié)議、約束,策略和決策支持等。

      我們來看一個(gè)“動態(tài)依賴”實(shí)例。
      個(gè)人銀行業(yè)務(wù):
      通過“掛失業(yè)務(wù)”,創(chuàng)建一個(gè)“掛失協(xié)議”。掛失業(yè)務(wù)--&gt;掛失協(xié)議(靜態(tài)依賴)
      該“掛失協(xié)議”將影響到“取款業(yè)務(wù)”。掛失協(xié)議--&gt;取款業(yè)務(wù)(動態(tài)依賴)

      再看另外一個(gè)實(shí)例。
      證券交易:
      計(jì)算某筆“委托”的交易費(fèi)用。費(fèi)用策略--&gt;委托(動態(tài)依賴)

      可能,你已經(jīng)注意到了這里有“核心業(yè)務(wù)交互”和“業(yè)務(wù)交互”,他們的區(qū)別在于,“核心業(yè)務(wù)交互”主要針對企業(yè)的外界涉眾而發(fā)生的“業(yè)務(wù)交互”,是企業(yè)的核心目標(biāo)。此外,還存在為了達(dá)到核心目標(biāo)而需要的,支持和管理的“業(yè)務(wù)交互”,如:“用戶授權(quán)”,簡單的“商品入庫”等等。需要注意的是,Eric Evans的職責(zé)層中的Operation應(yīng)當(dāng)理解為“核心業(yè)務(wù)交互”。而不是“業(yè)務(wù)交互”,考慮到Potential層產(chǎn)生員工的“員工開戶”,也是一個(gè)“業(yè)務(wù)交互”,就不難理解我的意思。

      對于企業(yè)級應(yīng)用,還可能存在的依賴有:
      工作流--&gt;業(yè)務(wù)交互
      工作流策略--&gt;工作流
      項(xiàng)目管理--&gt;業(yè)務(wù)交互
      由于,它們可能會影響到整個(gè)“業(yè)務(wù)交互”,其基礎(chǔ)工作流引擎,基礎(chǔ)業(yè)務(wù)規(guī)則引擎,基礎(chǔ)項(xiàng)目管理構(gòu)件,都需要放入底層的包中,在其之上擴(kuò)展出的具體流程、規(guī)則和實(shí)際項(xiàng)目,將放入其依賴的具體業(yè)務(wù)交互的包里。

      大體上,我接受Eric&amp;Evans的觀點(diǎn),從8000公里上空來看,最下層是最穩(wěn)定的“潛能”、通用業(yè)務(wù)元素和通用引擎構(gòu)件,在其之上是“核心業(yè)務(wù)交互”層,它將受到施加于其上的約束、承諾層的影響,在約束和承諾層之上,是策略層,策略通過考察“業(yè)務(wù)交互”和相關(guān)的約束承諾,按照已定義的規(guī)則行事,最后,決策層負(fù)責(zé)設(shè)置這些規(guī)則。

      不過,正如Eric&amp;Evans已表達(dá)的,把它看作一個(gè)指導(dǎo),而不是約束。因?yàn)椋褪窃谕粚又校粋(gè)包中,也要考慮對象間的依賴關(guān)系,另外,領(lǐng)域的自然層次結(jié)構(gòu),并不一定完全遵循這種固定的劃分模式。

      總之,我希望通過考察“核心業(yè)務(wù)交互”入手,建立一個(gè)帶有強(qiáng)烈“單向依賴”傾向的積木式DomainModel,得到一種簡單、明晰的優(yōu)雅領(lǐng)域構(gòu)架,它反映了領(lǐng)域的自然分層結(jié)構(gòu),因而,能從容應(yīng)付業(yè)務(wù)當(dāng)前和未來的發(fā)展變化。

      安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
      国产午夜福三级在线播放_亚洲精品成a人片在线观看_亚洲自慰一区二区三区_久久棈精品久久久久久噜噜
      <source id="4vppl"><ins id="4vppl"></ins></source>
      <u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
      <object id="4vppl"></object>
    1. <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

      <object id="4vppl"></object>
      <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

        <i id="4vppl"><thead id="4vppl"></thead></i>

        <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>
        亚洲午夜国产片在线观看 | 亚洲阿v天堂在线2017 | 欧美一级一区二区三区免费 | 中文字幕第一区第二区 | 亚洲综合男人的天堂色婷婷 | 婷婷综合缴情亚洲狠狠无遮挡 |