您的位置:首頁 > 軟件教程 > 教程 > 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD):軟件工程的第一性原理

領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD):軟件工程的第一性原理

來源:好特整理 | 時(shí)間:2024-08-25 09:57:05 | 閱讀:161 |  標(biāo)簽: 設(shè)計(jì) 軟件   | 分享到:

本文書接上回《DDD建模后寫代碼的正確姿勢(shì)》,關(guān)注公眾號(hào)(老肖想當(dāng)外語大佬)獲取信息: 最新文章更新; DDD框架源碼(.NET、Java雙平臺(tái)); 加群暢聊,建模分析、技術(shù)實(shí)現(xiàn)交流; 視頻和直播在B站。 前提 本文需要以系列前文的邏輯鏈條和結(jié)論為前提,如果沒有閱讀過前文的,可以閱讀合集《老肖的領(lǐng)域

在本文中,我們將深入探討領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)在軟件工程中的重要性,以及它在長(zhǎng)期迭代的業(yè)務(wù)系統(tǒng)中的作用。通過實(shí)例和案例,我們將闡述DDD如何成為軟件工程的第一性原理。

在接下來的內(nèi)容中,我們將從故事背景開始,逐步展開對(duì)DDD在軟件工程中的應(yīng)用和影響的討論。

接下來,我們將介紹故事背景,探討在長(zhǎng)期迭代的業(yè)務(wù)系統(tǒng)中,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的重要性和作用。

在2020年,我所在的研發(fā)團(tuán)隊(duì)面臨著維護(hù)一個(gè)有近十年歷史的SaaS軟件系統(tǒng)的挑戰(zhàn)。這個(gè)系統(tǒng)是公司的主營(yíng)業(yè)務(wù),用戶活躍度非常高。然而,系統(tǒng)迭代速度遠(yuǎn)遠(yuǎn)無法應(yīng)付客戶需求,每次迭代發(fā)布都是如履薄冰。團(tuán)隊(duì)對(duì)系統(tǒng)已經(jīng)到了完全失控的邊緣。

當(dāng)時(shí),團(tuán)隊(duì)對(duì)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的認(rèn)知并不通透,但隱約感覺DDD能夠幫助他們走出困境。他們渴求改變,但缺乏確定性的驗(yàn)證,對(duì)于如何改變并走向成功,他們并無把握。在這樣的背景下,團(tuán)隊(duì)仍然積極地為作出改變做準(zhǔn)備。

在這個(gè)背景下,團(tuán)隊(duì)對(duì)自己的客戶和業(yè)務(wù)有比較充分的了解,甚至跟著產(chǎn)品經(jīng)理一起去拜訪客戶。他們還打造了一套定制的開發(fā)框架,以更準(zhǔn)確地用代碼表達(dá)業(yè)務(wù)。

在2020年9月,公司CEO領(lǐng)導(dǎo)下,團(tuán)隊(duì)成立了獨(dú)立項(xiàng)目組,目標(biāo)是重新打造一套新的SaaS系統(tǒng),以替換舊的系統(tǒng)。新系統(tǒng)的核心目標(biāo)是“保持系統(tǒng)持續(xù)的快速迭代”,這個(gè)目標(biāo)改變了團(tuán)隊(duì)在需求分析、產(chǎn)品設(shè)計(jì)、系統(tǒng)架構(gòu)時(shí)的核心決策依據(jù)。

團(tuán)隊(duì)一致認(rèn)為這個(gè)目標(biāo)是關(guān)于軟件工程和領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的認(rèn)知質(zhì)變的起點(diǎn),它改變了團(tuán)隊(duì)在決策時(shí)的邏輯,追求更長(zhǎng)期的利益價(jià)值,愿意放棄短期利益。

團(tuán)隊(duì)認(rèn)為這個(gè)轉(zhuǎn)變意味著,整個(gè)公司的決策邏輯,從短期拓展到長(zhǎng)期,追求更長(zhǎng)期的利益價(jià)值,愿意放棄短期利益。而最考驗(yàn)團(tuán)隊(duì)的,就是他們是否真的可以拿到“可維護(hù)性”這個(gè)長(zhǎng)期利益。

如果大家有讀過之前《關(guān)于領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),大家都理解錯(cuò)了》一文,應(yīng)該還記得關(guān)于復(fù)雜度的認(rèn)知。因此,團(tuán)隊(duì)認(rèn)為要掌控系統(tǒng)的可維護(hù)性,就必須實(shí)行分而治之的策略,將復(fù)雜度限定在一個(gè)個(gè)有限的范圍內(nèi)。這個(gè)邏輯正好與領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的理念不謀而合。

于是,團(tuán)隊(duì)在這個(gè)由CEO發(fā)起的戰(zhàn)略級(jí)項(xiàng)目中,開啟了一段神奇的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)落地實(shí)踐之旅,為了確保最終結(jié)果符合預(yù)期,他們甚至建立了一條“不準(zhǔn)跨域”軍規(guī)。

現(xiàn)今已經(jīng)到了2024年的后半年,也就是說上述的項(xiàng)目,已經(jīng)經(jīng)歷了大約四年發(fā)展和迭代。中途我本人也因?yàn)閭(gè)人的一些因素離開了團(tuán)隊(duì),最近我特地向朋友了解項(xiàng)目的近況,他也是項(xiàng)目的核心架構(gòu)師之一,得到了肯定的答復(fù)。

對(duì)于確定不迭代的系統(tǒng),意味著可維護(hù)性的意義就不那么重要了,對(duì)于科研類或者其它領(lǐng)域的軟件,可能要解決的更重要的問題是“技術(shù)難題”等其它維度的問題。

回歸到主題,我一直在思考“DDD是軟件工程的第一性原理?”這個(gè)問題,過往的這些經(jīng)歷,越發(fā)讓我堅(jiān)信這一點(diǎn),但如果讓結(jié)論更加嚴(yán)謹(jǐn),需要限定條件如下。

在這樣的背景下,那么標(biāo)題的答案是肯定的:DDD是軟件工程的第一性原理!

如果你認(rèn)同本文的推導(dǎo)邏輯和觀點(diǎn),那么我相信你一定會(huì)期望了解如何掌握DDD,下一期,我們將講述學(xué)習(xí)和實(shí)踐DDD的最佳路徑。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)