व्यावहारिक रूप में डोमेन संचालित विकास क्या है? [बन्द है]


24

मैंने क्षेत्र के एक डेवलपर से डोमेन ड्रिवेन डेवलपमेंट के बारे में सुना। उन्होंने इसे इस तरह से बात की जैसे यह बदलती आवश्यकताओं के लिए चांदी की गोली के बारे में था।

मैंने विकी को पढ़ा । अभी भी स्पष्ट नहीं है। व्यावहारिक रूप में "3 डी" क्या है? क्या यह वास्तव में आश्चर्यजनक है कि अब यूएमएल वर्ग आरेख केवल अप्रचलित है?

जवाबों:


29

खैर, सबसे पहले, मुझे नहीं लगता है कि आपके द्वारा संदर्भित विकिपीडिया लेख बहुत अच्छा है, ज्यादातर क्योंकि यह उन चीजों का एक गुच्छा है जो केवल डोमेन ड्रिवेन डिज़ाइन के सहायक हैं और अभ्यास के बारे में किसी को भी बताने के लिए बहुत कम करते हैं।

लेकिन, किसी ऐसे व्यक्ति के रूप में जिसने दिल के लिए डोमेन ड्रिवेन डिज़ाइन लिया है (जो आमतौर पर डीडीडी द्वारा जाता है, 3 डी के बजाय, जो इसके लायक है), मैंने हमेशा महसूस किया कि डीडीडी के मूल तत्व स्पष्ट हैं, यदि आप एरिक के पहले अध्याय के रूप में बहुत कुछ पढ़ते हैं इवांस की किताब। लेकिन यह पैटर्न और प्रथाओं का एक सेट है, इसलिए यह 3 वाक्य का सारांश देना आसान नहीं है कि यह क्या है और कुछ विस्तार में जाने के बिना फायदे क्या हैं। जो विवरण किसी एक व्यक्ति के साथ प्रतिध्वनित होता है, वह बहुत भिन्न हो सकता है; यह संभव है कि 10 साल पहले मैं खुद को इस बिंदु पर नहीं देखा होगा।

DDD एक चांदी की गोली नहीं है। जब समझदारी से काम लिया जाता है, तो यह शिल्पकार जैसे सॉफ्टवेयर के निर्माण के दृष्टिकोण को लेने और विकास टीमों और उन व्यवसायों के बीच संज्ञानात्मक घर्षण को कम करने की आवश्यकता को पहचानने के लिए होता है, जिनके लिए वे सॉफ्टवेयर का निर्माण कर रहे हैं। सबसे महत्वपूर्ण प्रथाओं में से एक है एक परत जिसमें सॉफ्टवेयर टीम और व्यावसायिक टीम द्वारा उपयोग की जाने वाली डोमेन शब्दावली यथासंभव मेल खाती है। आप इस परत का निर्माण इस रूप में करते हैं क्योंकि आप उस व्यावसायिक समस्या को समझते हैं जिसे आप हल करने का प्रयास कर रहे हैं। जब व्यावसायिक तर्क इस परत में समझदारी से कूट-कूट कर भरा होता है, तो उन सभी उपबंधित निर्भरताओं से अलग हो जाता है, जो एंटरप्राइज़ अनुप्रयोगों में आमतौर पर उन सिस्टम के साथ इंटरफेसेस के लिए फैक्टरिंग इंटरेक्शन द्वारा होती हैं, जो वास्तविक डोमेन लेयर में प्रयुक्त भाषा अंततः काफी संक्षिप्त, स्पष्ट और पठनीय बन जाती है।

व्यवहार में, मैंने जो सबसे अधिक उद्यम सॉफ्टवेयर देखा है, उसे देखते हुए, DDD एक चांदी की गोली की तरह लग सकता है , क्योंकि अधिकांश उद्यम सॉफ्टवेयर में चिंताओं का इतना खराब पृथक्करण है कि यह लगभग अप्राप्य है, और सॉफ्टवेयर टीम परिवर्तन के महान भय में रहती है क्योंकि उन्हें इस बात का कोई अंदाजा नहीं है कि सामान्य रूप से भी तुच्छ कोड परिवर्तन के दुष्प्रभाव क्या हो सकते हैं, जबकि एक उचित रूप से फैली हुई डोमेन परत स्वतंत्र रूप से परीक्षण योग्य और सत्यापन योग्य होगी। लेकिन वास्तव में, डीडीडी स्वीकार करता है कि सिस्टम अलगाव में शायद ही मौजूद हैं। DDD में विरासत प्रणालियों (एंटी-करप्शन लेयर, बंधे हुए संदर्भों, एक जोड़े को नाम देने के लिए) का पैटर्न शामिल है।

यदि आप ऑब्जेक्ट-ओरिएंटेड डिज़ाइन का अभ्यास करते हैं, जिसमें ढीली कपलिंग का अनुशासन भी शामिल है, और आप यूनिट का धार्मिक रूप से परीक्षण करने का अभ्यास करते हैं, और आप निर्दयता से रिफैक्टर कोड, और आप अपने सिस्टम का निर्माण करते समय डोमेन विशेषज्ञों के साथ काम करते हैं, तो अनिवार्य रूप से आप एक परिणाम के साथ समाप्त होंगे। मूल रूप से डोमेन संचालित डिजाइन के वकील किस बारे में बात कर रहे हैं।

इवांस की पुस्तक में वर्णित कुछ विशिष्ट पैटर्न हैं जो ज्यादातर उद्यम सॉफ्टवेयर विकास पर लागू होते हैं, और कुछ जो कि काफी सार्वभौमिक सिद्धांत हैं, लेकिन अनिवार्य रूप से, डीडीडी सॉफ्टवेयर विकास के लिए एक व्यावहारिक दृष्टिकोण है जो समय के साथ तकनीकी ऋण के निर्माण को कम कर सकता है। और अपने ग्राहकों को खुश करें क्योंकि आप एक-दूसरे के साथ एक ही भाषा बोलने में सक्षम हैं, और एक-दूसरे को बेहतर समझने के फायदों के कारण बेहतर काम कर रहे समाधान प्रदान करते हैं।


6

एक उच्च-स्तरीय विवरण हो सकता है -

अपनी समस्या डोमेन के डेटा संरचनाओं और व्यवहार को प्रतिबिंबित करने के लिए अपनी कक्षाओं को मॉडल करें।

इससे आप अपने कोड में परिवर्तन करने के लिए सीधे अपने समस्या डोमेन में परिवर्तन कर सकते हैं, इसलिए यह अद्यतन करने के लिए और अधिक आसान होना चाहिए क्योंकि आपका समस्या डोमेन विकसित होता है।


2

अस्वीकरण: इस प्रश्न को डुप्लिकेट के रूप में चिह्नित किए जाने के बाद मैंने यह उत्तर जोड़ा है । मैं असहमत हूं, लेकिन यहां हम हैं। :-)

डोमेन-संचालित डिज़ाइन का उद्देश्य उच्च-मूल्य / उच्च जटिलता वाले डोमेन में सॉफ़्टवेयर डिज़ाइन करना है।

यह एंटरप्राइज़ सॉफ़्टवेयर के निर्माण के लिए एक अलग दृष्टिकोण में बदल जाता है: इसमें बहुत अधिक सीखने शामिल है, और सबसे महत्वपूर्ण परिणाम यह है कि आपको पहले शॉट पर सही समाधान नहीं मिलेगा।

  • क्योंकि आप जिस तरह से सीखेंगे
  • क्योंकि हितधारक एक ही शॉट में सारी सच्चाई नहीं बताएंगे।
  • क्योंकि डोमेन रास्ते के साथ विकसित होगा

या दोनों का मेल।

दोनों तरीकों से आपको बार-बार सॉफ्टवेयर को फिर से लिखने के लिए अच्छे सॉफ्टवेयर फाउंडेशन की आवश्यकता होगी । यही कारण है कि पुस्तक डोमेन मॉडल पैटर्न के आसपास पैटर्न के दिए गए सेट पर जोर देती है: वे 2004 में सबसे उचित संयोजन थे।

हालांकि, OOP और सामरिक पैटर्न सबसे महत्वपूर्ण बात नहीं है। विकासवादी तरीके से महान सॉफ्टवेयर बनाने के लिए तकनीकी महारत आवश्यक है। लेकिन यह नुस्खा का केवल एक घटक है। दूसरे?

  1. छिपी हुई बारीकियों को खोजने के तरीके के रूप में भाषा के साथ जुनून।
  2. बड़ी सामग्री देने में सक्षम होने के लिए बड़े चित्र दृश्य पर ध्यान दें।
  3. एक बड़ा के बजाय कई सरल मॉडल का सहवास।
  4. डोमेन विशेषज्ञों के साथ और विकास टीम के अंदर सहयोगात्मक मॉडलिंग पर जोर ।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.