如何做領(lǐng)域驅(qū)動設(shè)計
構(gòu)建領(lǐng)域知識
軟件專家與領(lǐng)域?qū)<医徽劸弊撸釂枴貞?yīng)石挂,一起建立領(lǐng)域模型。這種交談不是單向的,是有反饋的齿椅。模型體現(xiàn)了兩個專業(yè)領(lǐng)域的交匯。軟件最終的目的是解決真實領(lǐng)域中的業(yè)務(wù)問題在刺,它必須與領(lǐng)域完美結(jié)合贷岸。
共同語言
討論和定義模型的過程中,我們需要講同一種語言嵌削。領(lǐng)域驅(qū)動設(shè)計的一個核心原則是使用一種基于模型的語言毛好。這種語言稱為“通用語言”。通用語言連接起設(shè)計中的所有的部分苛秕,建立了設(shè)計團(tuán)隊良好工作的前提肌访。通過為模型概念建立對應(yīng)的類,我們在模型和代碼之間以及在語言和代碼之間做映射艇劫。UML圖在只涉及少量元素時很有幫助吼驶。當(dāng)它變大時,就會很難理解店煞,一個中等規(guī)模項目的類圖也會如此蟹演。UML擅長表現(xiàn)類,它們的屬性和相互之間的關(guān)系顷蟀。但類的行為和約束并不容易表現(xiàn)酒请。
模型驅(qū)動設(shè)計
建模過程的目的是創(chuàng)建一個優(yōu)良的模型,下一步是將模型實現(xiàn)成代碼衩椒。緊密關(guān)聯(lián)領(lǐng)域建模和設(shè)計蚌父。模型在構(gòu)建時就考慮到軟件和設(shè)計。開發(fā)人員會被加入到建模的過程中來毛萌。為了緊密捆綁起實現(xiàn)和模型苟弛,通常需要支持建模范型的軟件開發(fā)工具和語言,例如面向?qū)ο缶幊獭?/p>
過程化語言提供了有限的模型驅(qū)動設(shè)計的支持阁将。這樣的語言不能提供實現(xiàn)模型關(guān)鍵組件所必須的構(gòu)建能力膏秫。過程化語言不足以完成表述各自模型的任務(wù)。因為這個原因做盅,模型驅(qū)動設(shè)計中不推薦過程化編程缤削。