架構(gòu)之路 - 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) - 開(kāi)篇

什么是領(lǐng)域模型 ?

領(lǐng)域 :軟件程序是為了執(zhí)行用戶的某項(xiàng)活動(dòng),或是滿足用戶的某種需求,這些問(wèn)題區(qū)域就是軟件的領(lǐng)域。例如機(jī)票預(yù)訂程序領(lǐng)域的中包括飛機(jī)的乘客。

模型 :為了創(chuàng)建真正能為用戶活動(dòng)所用的軟件,開(kāi)發(fā)團(tuán)隊(duì)必須運(yùn)用一套與這些活動(dòng)有關(guān)的知識(shí)體系。所需的知識(shí)的廣度可能令人望而生畏,龐大的信息也可能超會(huì)想象。模型這種知識(shí)形式對(duì)知識(shí)進(jìn)行了選擇性的簡(jiǎn)化和有意的結(jié)構(gòu)化。適當(dāng)?shù)哪P涂梢允谷死斫庑畔⒌囊饬x,并專注問(wèn)題。

領(lǐng)域模型:就是為了解決描述領(lǐng)域里復(fù)雜問(wèn)題,而抽象出來(lái)的模型。

領(lǐng)域?qū)<遥阂粋€(gè)領(lǐng)域里的專家,例如物流控制軟件中的物流管理人員,注意。PM不是領(lǐng)域?qū)<摇?/p>

模型在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中的作用

  • 模型和設(shè)計(jì)的核心相互影響。
  • 模型是團(tuán)隊(duì)所有成員使用的通用語(yǔ)言中樞。
  • 模型是濃縮的知識(shí)

如何有效建模 ?

  • 模型和實(shí)現(xiàn)的綁定

    好的程序員會(huì)自然而然的抽象并開(kāi)發(fā)出一個(gè)可以完成更多工作的模型,但是如果建模時(shí)只是技術(shù)人員唱獨(dú)角戲,而沒(méi)有領(lǐng)域?qū)<业膮f(xié)作,那么得到的概念將是很幼稚的。使用這些膚淺的知識(shí)開(kāi)發(fā)出來(lái)的軟件只能做基本工作,而無(wú)法充分反映出領(lǐng)域?qū)<业乃伎挤绞?/p>

  • 建立一種基于模型的語(yǔ)言

    基于模型建立一套領(lǐng)域模型語(yǔ)言,基于領(lǐng)域模型語(yǔ)言進(jìn)行溝通,可以有效的明白領(lǐng)域?qū)<颐枋龅念I(lǐng)域問(wèn)題,領(lǐng)域?qū)<乙部梢詮某绦騿T的描述里理解到軟件的設(shè)計(jì)

  • 開(kāi)發(fā)一個(gè)蘊(yùn)含豐富知識(shí)的模型

    當(dāng)我們的建模不再局限于尋找實(shí)體和值對(duì)象時(shí),我們才能充分的吸取知識(shí),因?yàn)闃I(yè)務(wù)規(guī)則之間可能存在不一致。領(lǐng)域?qū)<以诜磸?fù)的提出需求,修改需求是根據(jù)日常知識(shí)來(lái)進(jìn)行設(shè)計(jì)的,他們往往意識(shí)不到自己的思路有多復(fù)雜。軟件是無(wú)法實(shí)現(xiàn)的。 為了解決此類問(wèn)題,程序員必須與領(lǐng)域?qū)<揖o密協(xié)作來(lái)消化知識(shí),豐富模型,解除矛盾。

  • 提煉模型

有用的模型很少停留在表面,隨著對(duì)領(lǐng)域和需求的逐步理解和加深,我們往往會(huì)丟棄那些最初看起來(lái)很重要的表面要素,或者切換它們的角度。這時(shí)一開(kāi)始可能發(fā)現(xiàn)不了的巧妙抽象就會(huì)浮出水面,而它們恰恰切中要害。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容