序
為什麼建模是一件既有趣又回報諸多的事情?從孩童時起,我就喜歡上了構建模型。那時我搭建最多的是汽車和飛機。當時我並不知道樂高玩具的存在。不過,從我的兒子很小的時候起,樂高就一直伴隨著他的成長。用這些樂高積木構思和搭建模型是如此令人著迷。構建一個基礎模型非常簡單,幾乎可以無止境地發揮想像力。
你也許也會聯想到某些新潮的建築模型。
模型在我們生活中無處不在。如果你喜歡玩桌遊,你正是在使用模型。這裡的模型可能是房產和業主,或是島嶼和幸存者,抑或是領地和建設活動,等等。同樣,視頻遊戲也藏匿了多個模型。這些模型也許塑造了一個奇幻世界,那裡充滿了奇特的人物,他們扮演著夢幻般的角色。而撲克牌或者與之相關的遊戲則是體現著競技的模型。模型就是生活的一部分。人們總是在使用模型,雖然往往並不會承認。
為何如此?因為人人皆有各自的學習方式。雖然學習方式有很多種,但討論最多的三種方式是聽覺、視覺和觸覺。聽覺學習者通過聲音和聆聽來學習。視覺學習者通過閱讀和瀏覽影像來學習。觸覺學習者通過觸摸的行為來學習。有趣的是,每個人都會熱衷於某種學習方式,以至於有時會在其他學習方式上遇到麻煩。例如,觸覺學習者能記住他們所做過的事情,但可能會忘記過程中所聽見的內容。建模的過程主要會涉及視覺和觸覺的刺激,因此你可能會認為視覺和觸覺學習者比聽覺學習者更具有優勢。然而,事實並非總是如此,尤其當一組建模者在構建的過程中使用有聲溝通時。換句話說,模型的構建過程應該適用於大多數人的學習方式。
從建模中學習的能力是人類與生俱來的,為何不利用它去構建已經給生活帶來巨大幫助和影響的軟件模型呢?事實上,軟件模型需要人類去實現,也應該由人類去完成。我認為,人類本應該是優秀的軟件模型構建者。
我強烈期望能夠幫助你使用最好的建模工具來實現軟件。這些工具已被打包成“領域驅動設計”工具箱,或稱之為“DDD”工具箱。該工具箱實際上是一套模式,在Eric Evans所著的《領域驅動設計:軟件核心復雜性應對之道》[DDD]一書中首次提出。我期望將DDD帶給每一個人。如果必須表達我的觀點,我想說的是,讓我把DDD介紹給大家吧!DDD也本該如此,它是面向模型設計的人們用於構建卓越軟件模型的工具箱。本書中,我會盡可能地簡化DDD的學習和使用,並將其帶給每一位讀者。
對於聽覺學習者而言,DDD通過團隊的溝通來構建基於通用語言的開發模型,並以此創造學習的契機。對於視覺和觸覺學習者來說,在團隊進行戰略和戰術建模時使用DDD,其過程高度視覺化並非常注重實操。繪制上下文映射圖 並使用事件風暴構建業務流程時尤為如此。因此,我相信DDD可以幫助到每一位期待通過模型構建來學習並且希望獲得偉大成就的人。
本書所面向的讀者
本書適用於對快速學習DDD核心概念和主要工具感興趣的人。最主要的讀者是軟件架構師和開發者,他們將在項目中實踐DDD。通常,軟件開發者會很快發現DDD的美妙之處,並被其強大的工具深深地吸引。盡管如此,本書也可以幫助高管、領域專家、經理人、業務分析師、信息架構師和測試人員理解這一主題。並非隻有那些從事信息技術(IT)行業和研發(R&D)行業的從業者纔能從書中獲益。
如果你是一位顧問,並且正在推薦你的客戶使用DDD,那麼請將本書提供給主要負責人,這會幫他們快速地理解DDD。如果你團隊中的初級、中級甚至資深開發人員需要盡快在項目上采用DDD,但對其並不熟悉,請讓他們閱讀此書。本書至少可以讓所有的項目負責人和開發人員熟悉DDD詞彙表,並了解即將使用的主要工具,這將使他們能在項目推進過程中不斷地分享一些有意義的內容。
無論你處於什麼樣的經驗水平或擔任什麼樣的職務,請閱讀本書並在項目中實踐DDD。之後再重讀此書,看看你從項目中學到了什麼,以及將來如何進一步改進。
本書的內容
第1章解釋了DDD能為你和你所在的組織帶來什麼,並詳盡地說明了你將學到什麼,以及DDD為何如此重要。
第2章介紹了DDD的戰略設計,並教授了DDD的重要概念:限界上下文與通用語言。第3章解釋了子域,以及在新應用建模時如何使用子域應對新應用與現有遺留繫統集成的復雜性。第4章教授了團隊在戰略層面上的各種協作方式,以及軟件的集成方式,即所謂的上下文映射。
第5章將注意力轉移到了使用聚合進行戰術建模中。領域事件是一個與聚合共同使用的重要而又強大的戰術建模工具,它是第6章的主題——運用領域事件進行戰術設計。
最後,第7章會著重介紹一些加速設計和管理項目的工具,它們可以幫助團隊建立並保持研發節奏。以上的兩個話題很少在其他DDD書籍中討論,但確實是那些決心將DDD付諸實踐的人所迫切需要的。
行文慣例
請在閱讀中注意幾點行文慣例。所有討論的DDD工具都會用楷體字表示。例如,你將會看到以楷體印刷的限界上下文和領域事件。另外所有的源代碼將會用等寬字體印刷。本書正文章節中出現在方括號內的首字母縮寫代表相關的書籍和文獻,它們都列在本書末尾的參考文獻中。
除此之外,本書重點強調的,也是讀者最為喜歡的部分是,通過大量圖表和插圖進行的視覺學習方式。本書中所有插圖都沒有任何數字編號,這是因為我不想讓太多的數字分散你的注意力。每個案例的圖表和插圖都會位於對其討論的正文之前,這也意味著當你閱讀本書時,這些視覺圖形將首先引發你的思考 。而當閱讀正文時,你也可以反過來參考之前的插圖和圖表。