1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        使用DSL實(shí)現(xiàn)DDD快速落地

        共 2571字,需瀏覽 6分鐘

         ·

        2021-06-13 10:02




        開發(fā)大型軟件最難的部分并不是實(shí)現(xiàn),而是要深刻理解它所服務(wù)的現(xiàn)實(shí)世界的領(lǐng)域。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain-Driven Design,DDD)是一種處理高度復(fù)雜領(lǐng)域的愿景(Vision)和方法,它主張?jiān)谲浖?xiàng)目中把領(lǐng)域本身作為關(guān)注的焦點(diǎn),維護(hù)一個(gè)對(duì)領(lǐng)域有深度認(rèn)知的軟件模型。


        領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD),其實(shí)就是以領(lǐng)域模型驅(qū)動(dòng)軟件設(shè)計(jì)。要理解 DDD,關(guān)鍵是理解什么是 DDD 所指的領(lǐng)域模型,但在此之前,還是應(yīng)該先認(rèn)識(shí)一下軟件開發(fā)的過程。然后,基于此認(rèn)識(shí)重溫一下 DDD 在戰(zhàn)術(shù)以及戰(zhàn)略層面的若干關(guān)鍵概念。


        2004 年,DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))這一軟件開發(fā)的方法與愿景經(jīng)由建模專家 Eric Evans 的經(jīng)典著作Domain-Driven Design: Tackling Complexity in the Heart of Software 正式面世,當(dāng)即獲得了廣泛關(guān)注和高度評(píng)價(jià)。17 年間,網(wǎng)上越來越多關(guān)于 DDD的文章和討論。為什么我們現(xiàn)在還不停地討論 DDD?為什么DDD仍然如此重要?


        在商業(yè)組織中,主張“技術(shù)為業(yè)務(wù)服務(wù)”的企業(yè)總可以在理論上立于不敗之地。誠然,DDD主張?jiān)谲浖?xiàng)目中把領(lǐng)域本身作為關(guān)注的焦點(diǎn)(換句話說就是技術(shù)人員要懂業(yè)務(wù))符合這種思想,但真正難能可貴的是,DDD提供了切實(shí)可行的應(yīng)對(duì)軟件核心復(fù)雜性的方法。


        實(shí)踐證明,DDD 提出的方法不僅行之有效,而且歷久彌新。


        關(guān)于“產(chǎn)業(yè)互聯(lián)網(wǎng)即將進(jìn)入黃金時(shí)代”的說法,大多是眾多傳統(tǒng)企業(yè)希望借力最新的信息化,特別是互聯(lián)網(wǎng)工具(即所謂“互聯(lián)網(wǎng)+”),提升內(nèi)部效率和對(duì)外服務(wù)的能力。傳統(tǒng)產(chǎn)業(yè)中的很多領(lǐng)域概念和業(yè)務(wù)流程并不一定為普通的開發(fā)者所熟知——這與“消費(fèi)互聯(lián)網(wǎng)”不同,顯然人人都是消費(fèi)者。所以,傳統(tǒng)產(chǎn)業(yè)的信息化急需可以快速梳理并深刻地認(rèn)知領(lǐng)域,以及能構(gòu)建高質(zhì)量領(lǐng)域模型的技術(shù)人才。DDD 可以說是技術(shù)人員升職加薪的“神兵利器”。


        我在工作中看到的情況是,越來越多的技術(shù)人員在自己的求職簡歷上寫上了“熟悉(或精通)DDD”的描述。確實(shí),Eric Evans 的經(jīng)典著作以抽象、凝練著稱,可謂字字珠璣,甚至很多資深技術(shù)人員都不能領(lǐng)悟其中玄妙。所以,我也認(rèn)同掌握 DDD 是一件足以讓技術(shù)人員引以為傲的事情。


        可以說,DDD 是公認(rèn)的解決軟件核心復(fù)雜性的“大殺器”。但是,在軟件開發(fā)中實(shí)踐 DDD 是需要付出相當(dāng)大的成本的。也就是說,大家的普遍看法是:實(shí)踐 DDD 是一個(gè)先苦后甜的過程,一個(gè)項(xiàng)目要不要采用DDD,最好先看看它值不值得。


        但是一個(gè)項(xiàng)目值不值得使用 DDD 有時(shí)不好判斷。大項(xiàng)目往往是由小項(xiàng)目發(fā)展而來的,很多從小項(xiàng)目演化而來的大系統(tǒng)最終變成開發(fā)團(tuán)隊(duì)的噩夢(mèng),噩夢(mèng)的根源幾乎無一例外地在于軟件的概念完整性遭到了破壞。而DDD正是維護(hù)軟件概念完整性的良藥。如果在項(xiàng)目中實(shí)踐 DDD 的成本不高,那么即使是小項(xiàng)目,從一開始就使用 DDD 不是一件很美好的事情嗎?


        在軟件開發(fā)項(xiàng)目中實(shí)踐 DDD 到底有何難處?


        實(shí)踐DDD首先需要面對(duì)的一個(gè)(也許是最大的)難題是:難以描述的領(lǐng)域模型。DDD 想要構(gòu)建的領(lǐng)域模型是什么?按照 Eric Evans 的觀點(diǎn),領(lǐng)域模型不是一幅具體的圖,而是那幅圖想要傳達(dá)的思想;不是一個(gè)領(lǐng)域?qū)<翌^腦中的知識(shí),而是那些經(jīng)過嚴(yán)格組織并進(jìn)行選擇性抽象的知識(shí)。


        聽起來是不是有點(diǎn)玄奧?系統(tǒng)分析師、產(chǎn)品經(jīng)理到底要拿出什么樣的領(lǐng)域模型才能說“我的工作已經(jīng)做到位了”?這個(gè)模型到底是不是可以實(shí)現(xiàn)的?開發(fā)人員、測(cè)試人員到底有沒有理解這個(gè)模型?大家的理解是不是一致的?

        說到底,一個(gè)領(lǐng)域模型要想有用,它必須足夠嚴(yán)格。如何使用一種嚴(yán)格的方式描述經(jīng)過嚴(yán)格組織并進(jìn)行選擇性抽象的知識(shí)呢?


        問題的答案很自然地指向了 DSL。

        其實(shí),Eric Evans 早就意識(shí)到了這一點(diǎn)。他曾經(jīng)在訪談中說:多前沿的話題發(fā)生在領(lǐng)域?qū)S谜Z言(DSL)領(lǐng)域,我一直深信 DSL 會(huì)是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)發(fā)展的下一大步。現(xiàn)在,還沒有一個(gè)工具可以真正給我們想要的東西。但是人們?cè)谶@一領(lǐng)域比過去做了更多的實(shí)驗(yàn),這使我對(duì)未來充滿了希望。


        可以告訴大家的是:在項(xiàng)目中運(yùn)用 DDD 可以不像大家想象的那么痛苦,DDD 并不是只適用于大項(xiàng)目,使用 DDD 并不一定需要犧牲敏捷性,一切的關(guān)鍵在于 DSL 的運(yùn)用。


        我和我工作過的團(tuán)隊(duì)曾經(jīng)在多個(gè)項(xiàng)目中使用 DSL 實(shí)現(xiàn)了 DDD 的真正落地。獨(dú)樂樂不如眾樂樂!現(xiàn)在,我把這些實(shí)踐經(jīng)驗(yàn)寫在了《深入實(shí)踐DDD:以DSL驅(qū)動(dòng)復(fù)雜軟件開發(fā)》一書中分享給大家。



        《深入實(shí)踐DDD:以DSL驅(qū)動(dòng)復(fù)雜軟件開發(fā)》


        內(nèi)容簡介


        本書是目前市場上唯一一本闡述如何通過使用領(lǐng)域?qū)S谜Z言(DSL)實(shí)現(xiàn)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)的圖書。


        書中首先帶領(lǐng)讀者重溫DDD在戰(zhàn)術(shù)設(shè)計(jì)層面及戰(zhàn)略設(shè)計(jì)層面上的部分重要概念,并簡要介紹了自DDD社區(qū)興起的一些軟件架構(gòu)模式。


        然后闡述如何設(shè)計(jì)一門DDD原生的DSL,包括這個(gè)DSL的規(guī)范支持哪些特性、幫助團(tuán)隊(duì)如何描述領(lǐng)域模型的方方面面、這些特性的選擇基于何種考量等。


        在此基礎(chǔ)上詳細(xì)講解了如何使用技術(shù)工具將描述領(lǐng)域模型的DSL文檔直接轉(zhuǎn)化為可以工作的軟件代碼,在這個(gè)過程中結(jié)合諸多來自商業(yè)軟件開發(fā)工作中的真實(shí)案例,展示并分析了大量的關(guān)鍵代碼,讓讀者可以深入地了解制造那些基于DSL的DDD技術(shù)工具的秘密。


        最后講述了一些建模案例,并探討了一些與DDD相關(guān)的其他話題,對(duì)讀者開拓技術(shù)思維、更深刻地理解DDD有所助益。


        關(guān)于作者


        楊捷鋒,曾就職于南開戈德集團(tuán)、普天集團(tuán)、通路快建等公司。曾作為獨(dú)立技術(shù)顧問為海爾集團(tuán)、沈陽飛機(jī)工業(yè)集團(tuán)、上廣電NEC、天馬微電子等企業(yè)提供軟件開發(fā)與技術(shù)咨詢服務(wù)。目前在一家電商創(chuàng)業(yè)公司擔(dān)任技術(shù)負(fù)責(zé)人。


        有多個(gè)大型企業(yè)應(yīng)用軟件的分析建模經(jīng)驗(yàn),以及大型開發(fā)框架(ORM、IoC等)的架構(gòu)經(jīng)驗(yàn)。多年來一直未脫離軟件開發(fā)一線工作,對(duì)軟件系統(tǒng)分析、數(shù)據(jù)建模、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、項(xiàng)目管理有豐富的經(jīng)驗(yàn)。





        掃碼關(guān)注【華章計(jì)算機(jī)】視頻號(hào)

        每天聽華章哥講書


        點(diǎn)擊閱讀全文購買
        瀏覽 12
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            玩弄军区大院熟女 | 免费 成人 外 | 公交车上被摸到高潮 | 精品黄工厂在线观看 | 久久激情网五月天 | 亚洲精品婷婷 | 欧美日韩国产色综合一二三四日韩 | 惩罚哭喊抽打花蒂疼痛蹂躏漫画人 | 一级全黄60分钟免看 | 久久裸体|