डोमेन ड्रिवेन डिज़ाइन जटिल सिस्टम के विकास के लिए एक कार्यप्रणाली और प्रक्रिया का नुस्खा है, जिसका फोकस किसी समस्या डोमेन के भीतर गतिविधियों, कार्यों, घटनाओं और डेटा की मैपिंग है, जो एक समाधान डोमेन की प्रौद्योगिकी कलाकृतियों में है।
डोमेन ड्रिवेन डिज़ाइन का जोर समस्या डोमेन के एक सार मॉडल को बनाने के लिए समस्या डोमेन को समझना है जो तब प्रौद्योगिकियों के एक विशेष सेट में लागू किया जा सकता है। डोमेन ड्रिवेन डिज़ाइन एक कार्यप्रणाली के रूप में यह मॉडल विकास और प्रौद्योगिकी विकास कैसे एक प्रणाली में परिणाम दे सकता है के लिए दिशा निर्देश प्रदान करता है जो समस्या डोमेन में परिवर्तन के चेहरे पर मजबूत होने के साथ-साथ इसका उपयोग करने वाले लोगों की जरूरतों को पूरा करता है।
Domain Driven Design की प्रक्रिया पक्ष में डोमेन विशेषज्ञों, समस्या डोमेन जानने वाले लोगों और डिज़ाइन / आर्किटेक्चर विशेषज्ञों, समाधान डोमेन जानने वाले लोगों के बीच सहयोग शामिल है। इस विचार का साझा भाषा के साथ एक साझा मॉडल है, ताकि इन दो अलग-अलग डोमेन के लोग अपने दो अलग-अलग दृष्टिकोणों के साथ उस समाधान पर चर्चा करें जो वे वास्तव में साझा अवधारणाओं के साथ एक साझा ज्ञान आधार पर चर्चा कर रहे हैं।
उन लोगों के बीच एक साझा समस्या डोमेन समझ की कमी, जिन्हें एक विशेष प्रणाली की आवश्यकता होती है और जो लोग सिस्टम को डिजाइन और कार्यान्वित कर रहे हैं वे सफल परियोजनाओं के लिए एक प्रमुख बाधा बनते हैं। इस बाधा को दूर करने के लिए डोमेन ड्रिवेन डिज़ाइन एक पद्धति है।
यह ऑब्जेक्ट मॉडल होने से अधिक है। फोकस वास्तव में साझा संचार और सहयोग में सुधार के बारे में है ताकि समस्या डोमेन के भीतर की वास्तविक जरूरतों को खोजा जा सके और उन जरूरतों को पूरा करने के लिए एक उपयुक्त समाधान तैयार किया जा सके।
डोमेन-संचालित डिज़ाइन: द गुड एंड द चैलेंजिंग इस टिप्पणी के साथ एक संक्षिप्त अवलोकन प्रदान करता है:
डीडीडी शीर्ष स्तर के आर्किटेक्चर को खोजने में मदद करता है और डोमेन के मैकेनिक्स और डायनेमिक्स के बारे में सूचित करता है जिसे सॉफ्टवेयर को दोहराने की आवश्यकता होती है। अफसोस, इसका मतलब है कि एक अच्छी तरह से किया गया DDD विश्लेषण डोमेन विशेषज्ञों और सॉफ़्टवेयर आर्किटेक्ट्स के बीच गलतफहमी को कम करता है, और यह परिवर्तन के लिए महंगे अनुरोधों की संख्या को कम करता है। छोटे संदर्भों में डोमेन जटिलता को विभाजित करके, डीडीडी परियोजना आर्किटेक्ट्स को एक फूला हुआ ऑब्जेक्ट मॉडल तैयार करने के लिए मजबूर करने से बचता है, जहां कार्यान्वयन के विवरणों को पूरा करने में बहुत समय बर्बाद होता है - भाग में क्योंकि अक्सर निपटने के लिए संस्थाओं की संख्या बढ़ती है। सम्मेलन कक्ष सफेद बोर्डों का आकार।
इस लेख को सर्विसेज आर्किटेक्चर के लिए डोमेन ड्रिवेन डिज़ाइन भी देखें जो एक छोटा उदाहरण प्रदान करता है। यह लेख डोमेन ड्रिवेन डिज़ाइन का निम्नलिखित थंबनेल विवरण प्रदान करता है।
डोमेन ड्रिवेन डिज़ाइन हमारे उपयोग के मामलों के लिए प्रासंगिक व्यवसाय की वास्तविकता के आधार पर मॉडलिंग की वकालत करता है। जैसे-जैसे यह अब पुराना हो रहा है और प्रचार स्तर कम हो रहा है, हम में से कई लोग यह भूल जाते हैं कि DDD दृष्टिकोण वास्तव में समस्या को समझने में मदद करता है और समाधान की सामान्य समझ की ओर सॉफ्टवेयर डिज़ाइन करता है। अनुप्रयोगों का निर्माण करते समय, DDD डोमेन और उप-डोमेन के रूप में समस्याओं के बारे में बात करता है। यह बंधे संदर्भों के रूप में समस्याओं के स्वतंत्र चरणों / क्षेत्रों का वर्णन करता है, इन समस्याओं के बारे में बात करने के लिए एक सामान्य भाषा पर जोर देता है, और कार्यान्वयन का समर्थन करने के लिए संस्थाओं, मूल्य वस्तुओं और कुल मूल नियमों जैसी कई तकनीकी अवधारणाओं को जोड़ता है।
मार्टिन फाउलर ने कई लेख लिखे हैं जिसमें एक पद्धति के रूप में डोमेन ड्रिवेन डिज़ाइन का उल्लेख किया गया है। उदाहरण के लिए, इस लेख, BoundedContext , डोमेन संचालित विकास से बंधी हुई संदर्भ अवधारणा का अवलोकन प्रदान करता है।
उन छोटे दिनों में हमें पूरे व्यवसाय का एक एकीकृत मॉडल बनाने की सलाह दी गई थी, लेकिन DDD ने माना कि हमने सीखा है कि "किसी बड़ी प्रणाली के लिए डोमेन मॉडल का कुल एकीकरण संभव नहीं होगा या लागत-प्रभावी" 1 । इसलिए इसके बजाय DDD एक बड़ी प्रणाली को बाउंडेड कॉन्टेक्ट्स में विभाजित करता है, जिनमें से प्रत्येक में एक एकीकृत मॉडल हो सकता है - अनिवार्य रूप से मल्टीपलऑनिकल मैडल को संरचित करने का एक तरीका।