本文書接上回《DDD建模后寫代碼的正確姿勢》,關(guān)注公眾號(老肖想當(dāng)外語大佬)獲取信息: 最新文章更新; DDD框架源碼(.NET、Java雙平臺); 加群暢聊,建模分析、技術(shù)實(shí)現(xiàn)交流; 視頻和直播在B站。 前提 本文需要以系列前文的邏輯鏈條和結(jié)論為前提,如果沒有閱讀過前文的,可以閱讀合集《老肖的領(lǐng)域
在本文中,我們將深入探討領(lǐng)域驅(qū)動設(shè)計(DDD)在軟件工程中的重要性,以及它在長期迭代的業(yè)務(wù)系統(tǒng)中的作用。通過實(shí)例和案例,我們將闡述DDD如何成為軟件工程的第一性原理。
在接下來的內(nèi)容中,我們將從故事背景開始,逐步展開對DDD在軟件工程中的應(yīng)用和影響的討論。
接下來,我們將介紹故事背景,探討在長期迭代的業(yè)務(wù)系統(tǒng)中,領(lǐng)域驅(qū)動設(shè)計的重要性和作用。
在2020年,我所在的研發(fā)團(tuán)隊面臨著維護(hù)一個有近十年歷史的SaaS軟件系統(tǒng)的挑戰(zhàn)。這個系統(tǒng)是公司的主營業(yè)務(wù),用戶活躍度非常高。然而,系統(tǒng)迭代速度遠(yuǎn)遠(yuǎn)無法應(yīng)付客戶需求,每次迭代發(fā)布都是如履薄冰。團(tuán)隊對系統(tǒng)已經(jīng)到了完全失控的邊緣。
當(dāng)時,團(tuán)隊對領(lǐng)域驅(qū)動設(shè)計的認(rèn)知并不通透,但隱約感覺DDD能夠幫助他們走出困境。他們渴求改變,但缺乏確定性的驗證,對于如何改變并走向成功,他們并無把握。在這樣的背景下,團(tuán)隊仍然積極地為作出改變做準(zhǔn)備。
在這個背景下,團(tuán)隊對自己的客戶和業(yè)務(wù)有比較充分的了解,甚至跟著產(chǎn)品經(jīng)理一起去拜訪客戶。他們還打造了一套定制的開發(fā)框架,以更準(zhǔn)確地用代碼表達(dá)業(yè)務(wù)。
在2020年9月,公司CEO領(lǐng)導(dǎo)下,團(tuán)隊成立了獨(dú)立項目組,目標(biāo)是重新打造一套新的SaaS系統(tǒng),以替換舊的系統(tǒng)。新系統(tǒng)的核心目標(biāo)是“保持系統(tǒng)持續(xù)的快速迭代”,這個目標(biāo)改變了團(tuán)隊在需求分析、產(chǎn)品設(shè)計、系統(tǒng)架構(gòu)時的核心決策依據(jù)。
團(tuán)隊一致認(rèn)為這個目標(biāo)是關(guān)于軟件工程和領(lǐng)域驅(qū)動設(shè)計的認(rèn)知質(zhì)變的起點(diǎn),它改變了團(tuán)隊在決策時的邏輯,追求更長期的利益價值,愿意放棄短期利益。
團(tuán)隊認(rèn)為這個轉(zhuǎn)變意味著,整個公司的決策邏輯,從短期拓展到長期,追求更長期的利益價值,愿意放棄短期利益。而最考驗團(tuán)隊的,就是他們是否真的可以拿到“可維護(hù)性”這個長期利益。
如果大家有讀過之前《關(guān)于領(lǐng)域驅(qū)動設(shè)計,大家都理解錯了》一文,應(yīng)該還記得關(guān)于復(fù)雜度的認(rèn)知。因此,團(tuán)隊認(rèn)為要掌控系統(tǒng)的可維護(hù)性,就必須實(shí)行分而治之的策略,將復(fù)雜度限定在一個個有限的范圍內(nèi)。這個邏輯正好與領(lǐng)域驅(qū)動設(shè)計的理念不謀而合。
于是,團(tuán)隊在這個由CEO發(fā)起的戰(zhàn)略級項目中,開啟了一段神奇的領(lǐng)域驅(qū)動設(shè)計落地實(shí)踐之旅,為了確保最終結(jié)果符合預(yù)期,他們甚至建立了一條“不準(zhǔn)跨域”軍規(guī)。
現(xiàn)今已經(jīng)到了2024年的后半年,也就是說上述的項目,已經(jīng)經(jīng)歷了大約四年發(fā)展和迭代。中途我本人也因為個人的一些因素離開了團(tuán)隊,最近我特地向朋友了解項目的近況,他也是項目的核心架構(gòu)師之一,得到了肯定的答復(fù)。
對于確定不迭代的系統(tǒng),意味著可維護(hù)性的意義就不那么重要了,對于科研類或者其它領(lǐng)域的軟件,可能要解決的更重要的問題是“技術(shù)難題”等其它維度的問題。
回歸到主題,我一直在思考“DDD是軟件工程的第一性原理?”這個問題,過往的這些經(jīng)歷,越發(fā)讓我堅信這一點(diǎn),但如果讓結(jié)論更加嚴(yán)謹(jǐn),需要限定條件如下。
在這樣的背景下,那么標(biāo)題的答案是肯定的:DDD是軟件工程的第一性原理!
如果你認(rèn)同本文的推導(dǎo)邏輯和觀點(diǎn),那么我相信你一定會期望了解如何掌握DDD,下一期,我們將講述學(xué)習(xí)和實(shí)踐DDD的最佳路徑。
小編推薦閱讀機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動態(tài)代理的對比分析
閱讀Win11筆記本“自動管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)