迭代建模(草稿)

需求發(fā)生的『良性』『顯性』的變化就是軟件不斷迭代的驅(qū)動力别智,因此我們積累的領(lǐng)域知識和模型也要適應(yīng)這種變化燃逻。關(guān)于提煉知識和建模葱色,Eric Evans 也總結(jié)了一套名為*模型探討漩渦https://www.domainlanguage.com/ddd/whirlpool/)的方法祟霍。

DDD_Model_Exploration_Whirlpool.png

聚焦于問題域的難點哼凯,領(lǐng)域?qū)<矣脤嵗ㄒ幌盗胁襟E或者狀態(tài)變化)對場景進行解釋褒翰,與此同時贮懈,團隊開始提煉模型或是審視當(dāng)前模型是否可以解決這些問題;不斷用領(lǐng)域?qū)<颐枋龅母鄨鼍皝頇z驗?zāi)P偷挠行杂叛担浑S時將有助于揭示場景的模型場景和模型一并記錄成文檔朵你,不斷進行修正;當(dāng)團隊獲得了對問題域的理解揣非,并設(shè)計了足夠的模型后抡医,應(yīng)該用原型或是實驗代碼來對模型進行驗證。

搞清楚業(yè)務(wù)變化的具體的探索模型(建模)的方式有許多早敬,例如事件風(fēng)暴工作坊(Event Storming)忌傻、用戶故事地圖(Story Mapping)大脉、實例化需求(Specification By Example)。關(guān)于這些方法的綜合運用水孩,可以參考《DDD 15 年》中的一片總結(jié)《模型探索漩渦》(https://zhuanlan.zhihu.com/p/141804228)镰矿。這里不再贅述。

Eric Evans 強調(diào)建模漩渦并不是一種開發(fā)流程俘种,卻能夠適用于各種迭代開發(fā)流程秤标。無論是在軟件開發(fā)生命周期的那個階段,任何時候只要是模型出現(xiàn)問題宙刘,就應(yīng)該跳轉(zhuǎn)到建模的漩渦方法提煉領(lǐng)域知識抛杨。

無獨有偶,在Eric Evans 提出 DDD 的同時期荐类,另一種流行的軟件開發(fā)方法論 RUP (https://en.wikipedia.org/wiki/Rational_Unified_Process)也特別強調(diào)迭代建模。RUP 將軟件生命周期分為四個階段:

Development-iterative.png

構(gòu)思階段 :包括用戶溝通和計劃活動兩個方面茁帽,強調(diào)定義和細化用例玉罐,并將其作為主要模型。
細化階段:包括用戶溝通和建呐瞬Γ活動吊输,重點是創(chuàng)建分析和設(shè)計模型,強調(diào)類的定義和體系結(jié)構(gòu)的表示铁追。
構(gòu)建階段:將設(shè)計轉(zhuǎn)化為實現(xiàn)季蚂,并進行集成和測試。
移交階段:將產(chǎn)品發(fā)布給用戶進行測試評價琅束,并收集用戶的意見扭屁,之后再次進行迭代修改產(chǎn)品使之完善。

聽起來有些像傳統(tǒng)的瀑布式軟件開發(fā)方法涩禀,但是 RUP 的每個階段也劃分成了更小的迭代料滥。而且我們可以看到,業(yè)務(wù)建模始終貫穿了其生命周期的四個階段艾船。

作為一種厚重的軟件開發(fā)方法論葵腹,RUP 如今已不再流行,但是迭代建模的思想依然值得我們借鑒屿岂。我們應(yīng)當(dāng)抓住軟件開發(fā)生命周期中任何和領(lǐng)域?qū)<医涣鞯臋C會践宴,通過挑戰(zhàn)和澄清,不斷地完善領(lǐng)域知識和模型爷怀。

到現(xiàn)在為止阻肩,似乎探索模型的實踐大部分和梳理需求的實踐雷同(除了實踐風(fēng)暴工作坊),好像我們在梳理需求的同時就完善了領(lǐng)域模型(當(dāng)然更新模型的可視化需要花費額外的時間)霉撵。但我們可能忽視了一個問題磺浙,如何保證代碼實現(xiàn)也隨著領(lǐng)域模型的完善而演進洪囤。在 Eric 的模型探索階段中有提到用實驗代碼來驗證模型,當(dāng)代碼能夠和模型匹配上撕氧,自然應(yīng)該進入代碼倉庫瘤缩。除此之外還有其他的實踐嗎?

迭代建模是對現(xiàn)有模型的刷新伦泥,而模型最為關(guān)鍵的兩個要素是領(lǐng)域?qū)ο蠛瓦吔绨 nI(lǐng)域?qū)ο蠖汲袚?dān)著業(yè)務(wù)上的職責(zé),必須有明確的描述不脯;而邊界體現(xiàn)著高內(nèi)聚低耦合(不同粒度的邊界府怯,內(nèi)聚的原則不同),邊界內(nèi)外的依賴有著不一樣的約束防楷。描述職責(zé)和約束依賴應(yīng)該是代碼對領(lǐng)域模型的最佳體現(xiàn)牺丙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市复局,隨后出現(xiàn)的幾起案子冲簿,更是在濱河造成了極大的恐慌,老刑警劉巖亿昏,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峦剔,死亡現(xiàn)場離奇詭異,居然都是意外死亡角钩,警方通過查閱死者的電腦和手機吝沫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來递礼,“玉大人惨险,你說我怎么就攤上這事≡籽茫” “怎么了平道?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長供炼。 經(jīng)常有香客問我一屋,道長,這世上最難降的妖魔是什么袋哼? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任冀墨,我火速辦了婚禮,結(jié)果婚禮上涛贯,老公的妹妹穿的比我還像新娘诽嘉。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布虫腋。 她就那樣靜靜地躺著骄酗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悦冀。 梳的紋絲不亂的頭發(fā)上趋翻,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音盒蟆,去河邊找鬼踏烙。 笑死,一個胖子當(dāng)著我的面吹牛历等,可吹牛的內(nèi)容都是我干的讨惩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼寒屯,長吁一口氣:“原來是場噩夢啊……” “哼荐捻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寡夹,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤靴患,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后要出,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡农渊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年患蹂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砸紊。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡传于,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出醉顽,到底是詐尸還是另有隱情沼溜,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布游添,位于F島的核電站系草,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唆涝。R本人自食惡果不足惜找都,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望廊酣。 院中可真熱鬧能耻,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至戒职,卻和暖如春栗恩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帕涌。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工摄凡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚓曼。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓亲澡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纫版。 傳聞我的和親對象是個殘疾皇子床绪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容