日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
DDD領域驅(qū)動設計:為什么公司需要這種方法,誰使用它,它的本質(zhì)是什么?

在動態(tài)且不斷變化的技術世界中構建滿足企業(yè)和用戶的需求和期望的軟件可能具有挑戰(zhàn)性。軟件公司逐漸需要一種可行的方式來讓業(yè)務和產(chǎn)品團隊之間的溝通更加透明。領域驅(qū)動設計(DDD)方法通過促進對主題的深刻理解以及開發(fā)人員和業(yè)務專家之間的持續(xù)協(xié)作來幫助解決這個問題。事實上,開發(fā)人員通過不斷的溝通,對底層領域和業(yè)務規(guī)則有了更深入的了解。同時,利益相關者可以更好地了解技術能力和限制。

巴馬網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。

例如,Standish Group對 100 個項目的分析發(fā)現(xiàn),70% 的返工是由于需求和設計階段缺乏領域知識造成的,這證實了 DDD 促進了企業(yè)和開發(fā)人員之間的理解。

據(jù)Forrester稱,實踐迭代 DDD 模型的開發(fā)團隊比花費數(shù)月進行前期分析的工作速度快 60%。

劍橋大學進行的研究發(fā)現(xiàn),在 DDD 框架內(nèi)對領域知識進行建??梢允箞F隊生產(chǎn)力提高 29%。顯然,這種方法解鎖了內(nèi)部領域知識。

那么為什么企業(yè)需要這種方法,誰使用它,它的本質(zhì)是什么?

領域驅(qū)動設計的核心原則

以領域為中心的設計基于幾個關鍵概念,這些概念支持創(chuàng)建以領域為中心的軟件。

● 首先是領域模型的優(yōu)先級。它代表底層的業(yè)務實體、行為、關系和規(guī)則。代碼實現(xiàn)直接反映領域模型,而不是相反。該模型是迭代開發(fā)的,而不是提前預定的。

● 另一個核心原則是開發(fā)一種通用語言。開發(fā)人員和業(yè)務專家的共享詞匯標準化了術語和領域知識,消除了團隊之間的歧義和不一致。

● DDD 還包括戰(zhàn)略和戰(zhàn)術設計階段。戰(zhàn)略設計側重于作為有界上下文和子區(qū)域的領域的高層組織。戰(zhàn)術設計包含模式和較低級別的實現(xiàn)組件,例如實體、服務和存儲庫。

其他概念包括強調(diào)探索性建模而不是分析、持續(xù)的領域沉浸以及使用通用語言進行文檔記錄。

通過結合建模、語言和基于上下文的技術,DDD 能夠創(chuàng)建不僅關注技術需求而且關注領域核心概念的系統(tǒng)。

在這種背景下,六邊形架構和干凈架構立即浮現(xiàn)在腦海中,它們具有任務分離的共同目標。您可以通過將應用程序劃分為松散耦合的組件來將核心業(yè)務邏輯與外部問題隔離。

讓我們看看定義戰(zhàn)略和戰(zhàn)術設計的元素以及它們?nèi)绾斡绊懡Y果。

策略設計

在 DDD 的背景下,戰(zhàn)略設計是軟件開發(fā)的重要組成部分。它主要包括以下幾個方面:

● 概述。戰(zhàn)略設計從對問題領域和業(yè)務價值的概述開始。在此步驟中,將探索關鍵概念和流程,并確定關鍵業(yè)務需求和目標。

● 問題空間和解決方案空間。戰(zhàn)略設計框架確定了兩個主要概念空間:問題空間和解決方案空間。問題空間側重于探索和分析業(yè)務領域,識別實體、聚合、服務以及它們之間的關系。解決方案空間涉及創(chuàng)建一個有效解決問題空間中確定的問題的模型。

● 受限的環(huán)境。受限上下文是與特定開發(fā)團隊的職責范圍相對應的領域的有限細分。每個上下文都定義其實體、聚合、服務和規(guī)則。管理上下文邊界對于隔離和理解域的不同部分至關重要。

● 核心域。核心域是業(yè)務的核心,是業(yè)務最重要、最有價值的部分。在戰(zhàn)略設計中,核心領域至關重要,因為它是開發(fā)的重點,并且包含定義軟件功能的基本抽象和業(yè)務規(guī)則。

DDD 背景下的戰(zhàn)略設計可以通過考慮業(yè)務領域的特征來創(chuàng)建有效的軟件開發(fā)戰(zhàn)略。這有助于開發(fā)人員創(chuàng)建滿足業(yè)務需求、靈活擴展且易于維護的軟件。

戰(zhàn)術設計

戰(zhàn)術設計是軟件開發(fā)方法的一部分。它負責定義一組工具和方法來創(chuàng)建反映業(yè)務領域并確保數(shù)據(jù)完整性的高效且靈活的架構。

  • 首先概述業(yè)務領域及其需求。此步驟分析核心流程、實體、聚合以及它們之間的關系。目標是更深入地了解該領域的核心組件。
  • 接下來,我們關注應用程序的核心,也稱為核心聚合。核心聚合是主要交互元素,包含域的關鍵邏輯和數(shù)據(jù)完整性。它定義了核心操作和業(yè)務規(guī)則。
  • 繼續(xù)討論戰(zhàn)術設計工具包,它為我們提供了一組用于構建有效的應用程序架構的規(guī)則和模式。它包括值對象、實體、服務和聚合等概念。該工具包可幫助開發(fā)人員創(chuàng)建敏捷架構。
  • 使用戰(zhàn)術設計工具包的一個例子是創(chuàng)建存儲庫。存儲庫負責從特定實體或聚合的存儲庫中存儲和檢索數(shù)據(jù)。它們提供與數(shù)據(jù)存儲庫交互的單一接口并封裝數(shù)據(jù)存儲細節(jié)。

戰(zhàn)術設計還區(qū)分應用程序服務和領域服務。應用程序服務協(xié)調(diào)應用程序內(nèi)不同實體和聚合之間的操作和交互。對于領域服務,它們存儲僅與領域模型相關的業(yè)務邏輯和操作執(zhí)行。

總而言之,戰(zhàn)術設計有助于創(chuàng)建反映業(yè)務領域并保證數(shù)據(jù)完整性的有效架構。使用戰(zhàn)術設計工具可以簡化應用程序開發(fā)和支持,從而更容易理解和擴展復雜領域。

有界上下文和通用語言:它們在 DDD 中的作用

DDD 中的有界上下文是應用于特定業(yè)務領域的一組本地化模型和規(guī)則。它有助于在特定上下文中描述和限制系統(tǒng)的不同方面。

有界上下文代表開發(fā)發(fā)生的邊界,并確保該上下文中模型和規(guī)則的一致性。因此,它可以有自己的建模語言,甚至特定于業(yè)務領域的術語。

它使開發(fā)人員能夠更好地理解和建模復雜的主題領域,并促進利益相關者的溝通。有限的上下文可以并行存在并通過定義的接口進行交互。

當我們談論 DDD 時要關注的另一個同樣重要的概念是無處不在的語言。

它可以被描述為所有開發(fā)團隊成員使用和理解的通用語言。

通用語言是在有限的上下文中創(chuàng)建和維護的。它包括反映系統(tǒng)的業(yè)務理解和主題的專業(yè)術語、短語和規(guī)則。這種語言作為熟悉的基礎,促進不同團隊成員之間的有效溝通。

其主要任務是幫助避免與術語或概念的不同解釋和理解相關的誤解,并在某種意義上有助于對主題領域進行更深入、更準確的建模。

開啟新解決方案的關鍵:DDD 方法帶來了什么,它適合誰?

如果一個項目處理復雜的業(yè)務邏輯、不斷變化的流程、關系和業(yè)務規(guī)則,那么它就成為實現(xiàn)領域驅(qū)動設計原則的理想選擇。通過應用 DDD,開發(fā)人員可以有效地駕馭復雜領域并創(chuàng)建準確反映現(xiàn)實世界復雜性的軟件解決方案。

DDD 對未來的變化也具有很強的適應性和靈活性。隨著企業(yè)的發(fā)展并面臨新的挑戰(zhàn),軟件解決方案必須跟上步伐。有限上下文的明確分離和通用語言的使用促進了更新和修改的無縫集成,從而最大限度地減少了重大系統(tǒng)范圍更改的需要。其結果是實現(xiàn)平穩(wěn)過渡、減輕壓力水平并節(jié)省公司成本。

小型 DDD 團隊的力量

領域驅(qū)動設計非常適合小型自治團隊?!半p比薩團隊”的概念就體現(xiàn)了這一點。我們的想法是,一個團隊應該足夠小,只需兩個披薩就可以養(yǎng)活。這可以實現(xiàn)專注、協(xié)調(diào)和生產(chǎn)力。

我們看到“雙披薩團隊”方法與 DDD 交織在一起,成功應用于 Netflix(這使他們能夠快速擴展平臺)和 Uber(他們能夠靈活地隔離事件并管理需求波動)等行業(yè)領導者。

看起來 DDD 是一個專屬俱樂部,成員包括 Netflix、Uber 和我們不起眼的 WebLab Technology。我們是很好的伙伴,不是嗎?

是的,我們使用 DDD 作為開發(fā)復雜業(yè)務軟件的主要方法之一。我們似乎是少數(shù)與之合作的公司之一。

有人在DEV 社區(qū)門戶上發(fā)起了討論,詢問“如何找到遵循領域驅(qū)動設計方法的公司?”

要找到 DDD 從業(yè)者,請遵循結構良好的對話……或者只是尋找我們的團隊!

但有人決定建議你可以找到這樣的公司,如果他們在提案中提到他們與 DDD 合作。需求是有的,但報價并不多。

正如您所看到的,小型、有凝聚力的團隊在復雜的領域中發(fā)揮著至關重要的作用。他們可以快速積累知識并普遍使用其領域的語言。

對于采用 DDD 的公司來說,采用“兩塊披薩”團隊范式可以釋放跨領域的生產(chǎn)力和創(chuàng)新。小團隊和領域驅(qū)動設計的聯(lián)系是強大的。

特別是,DDD 能夠:

● 改進的溝通:無處不在的語言使開發(fā)人員和業(yè)務專家能夠更有效地協(xié)作。

● 業(yè)務一致性:軟件設計直接反映真實的業(yè)務流程和目標。

● 靈活性:模塊化架構使得可以根據(jù)需求的變化輕松修改應用程序。

● 以用戶為中心:以領域為中心,可以創(chuàng)建適合用戶需求的解決方案。

● 效率:主題專家的密切參與可以產(chǎn)生能夠解決實際業(yè)務問題的產(chǎn)品。

DDD 和小型組織:可能的挑戰(zhàn)

在較小的組織中,DDD 集成可能不像在較大的公司中那樣普遍。然而,整合的能力取決于具體的需求和優(yōu)先事項。如果小型組織具有復雜的主題領域或需要有效管理和建模業(yè)務流程,那么 DDD 集成可能會很有幫助。

但是,請為可能出現(xiàn)的障礙做好準備,其中包括:

● 資源有限。較小的組織可能擁有有限的開發(fā)人員和時間,這使得實施新方法具有挑戰(zhàn)性。

● 主題建模困難。DDD 集成需要對主題領域有深入的了解并對其進行正確的建模。缺乏軟件開發(fā)經(jīng)驗可能是一個障礙。

● 抵制變革。較小的組織可能更容易抵制變革,特別是在現(xiàn)有流程和軟件架構已經(jīng)建立的情況下。

● 技術限制。過時的技術基礎設施不支持完整的 DDD 集成。

事實上,并非所有這些障礙都適用于所有小型組織。每個組織都有可能影響 DDD 集成的獨特特征和挑戰(zhàn)。

DDD實施:逐步開始

現(xiàn)在,讓我們看看有效實施 DDD 的基本步驟,而不被復雜性所困擾。

1 . 從小事做起

建議從小規(guī)模開始使用 DDD,尤其是剛接觸它或處理大型系統(tǒng)時。選擇應用程序中一個小的、不太關鍵的部分并開始應用 DDD。

2.持續(xù)學習

通常,第一次實施可能并不完美。這是一個持續(xù)學習的過程。不要因最初的挑戰(zhàn)而灰心喪氣。了解錯誤并從中吸取教訓。

3.協(xié)作

DDD 不僅僅與編碼人員有關。它涉及整個團隊:開發(fā)人員、項目經(jīng)理、系統(tǒng)分析師、領域?qū)<业?。它需要緊密協(xié)作,根據(jù)業(yè)務需求進行知識共享和軟件開發(fā)。

最后,正如我們之前所說,必須記住 DDD 并不總是適用于所有項目的解決方案。對于簡單的應用程序來說,它引入的復雜性可能不是必需的,因此評估其在項目中的需求至關重要。

交叉點:DDD 與敏捷的聯(lián)系

那么,DDD 與 Agile 的交集如何體現(xiàn)呢?DDD 和敏捷有著相似的原則,為它們的成功集成奠定了基礎。

  • 與利益相關者積極互動。在 DDD 中,這體現(xiàn)在普遍使用促進有效溝通的語言,而敏捷則側重于協(xié)作來創(chuàng)造價值。
  • 靈活性和適應性。兩種方法都是適應性強的。敏捷旨在接受和實施變更,而 DDD 模型則不斷發(fā)展以反映領域理解。
  • 迭代開發(fā)。敏捷專注于以小規(guī)模、漸進的步驟開發(fā)軟件。在 DDD 中,模型隨著發(fā)展而不斷完善,這讓我們回到了敏捷 DDD 的迭代本質(zhì)。

DDD 和敏捷之間的聯(lián)系表現(xiàn)為一種互補關系。因此,在敏捷環(huán)境中使用 DDD 可以簡化溝通,確保更好地符合業(yè)務需求,并交付高質(zhì)量的軟件。

我們可以自信地說,嚴重依賴領域知識的行業(yè)在 DDD 專注于學習其特定領域的復雜性方面發(fā)現(xiàn)了特殊的價值。最終,以領域為中心的設計的本質(zhì)在于它能夠創(chuàng)建與企業(yè)及其客戶的需求緊密結合的高質(zhì)量軟件。

對于WebLab Technology來說,DDD 方法是我們與客戶建立長期技術合作伙伴關系的理念的一個組成部分。它符合康威定律,該定律指出軟件系統(tǒng)反映了構建它們的組織的通信結構。

我們的專業(yè)團隊創(chuàng)建的架構與客戶的領域自然契合,領域?qū)<业纳疃葏⑴c使我們能夠創(chuàng)建一個涉及每個人的順暢的溝通鏈。也許越多的公司意識到這種方法的必要性,未來就會發(fā)現(xiàn)更有價值的 DDD 好處。

畢竟,正如埃里克·埃文斯(Eric Evans)在他的書中所寫的那樣,“為了有效地溝通,代碼必須基于用于編寫需求的相同語言 - 開發(fā)人員彼此以及與領域?qū)<医徽劦南嗤Z言?!?/p>
當前名稱:DDD領域驅(qū)動設計:為什么公司需要這種方法,誰使用它,它的本質(zhì)是什么?
URL網(wǎng)址:http://www.dlmjj.cn/article/djijhso.html