क्या वास्तुकला विवरण दस्तावेज़ DRY सिद्धांत का उल्लंघन है?


11

DRY प्रिंसिपल (डोंट रिपीट योरसेल्फ) में कहा गया है कि "ज्ञान के हर टुकड़े में एक प्रणाली के भीतर एक एकल, अस्पष्ट, आधिकारिक प्रतिनिधित्व होना चाहिए।" अधिकांश समय यह कोड को संदर्भित करता है, लेकिन इसे अक्सर प्रलेखन के लिए भी बढ़ाया जाता है।

यह कहा जाता है कि हर सॉफ्टवेयर सिस्टम में एक आर्किटेक्चर होता है चाहे आपने उसे चुना हो या नहीं। दूसरे शब्दों में, आपके द्वारा बनाए गए सॉफ़्टवेयर में एक संरचना है और "जैसा कि निर्मित" संरचना सॉफ़्टवेयर की वास्तुकला है। चूंकि एक निर्मित सॉफ्टवेयर सिस्टम एक आर्किटेक्चर के साथ आता है, क्या उस सिस्टम का आर्किटेक्चर विवरण बना रहा है जो DRY सिद्धांत का उल्लंघन है? आखिरकार, अगर आपको वास्तुकला को जानने की आवश्यकता है तो आप हमेशा कोड को देख सकते हैं ...


क्या आप वास्तव में विश्वास करते हैं कि आप कोड को देखकर वास्तुकला को समझ सकते हैं? कोड आपको सभी कार्यात्मक और गैर-संवैधानिक आवश्यकताओं, वास्तु व्यापार-नापसंद, परिनियोजन मुद्दे, व्यावसायिक संदर्भ, केस परिदृश्य, आदि का उपयोग करेगा? यदि आप कोड ट्रूली कर सकते हैं तो आपको बता देंगे कि यह एक तुच्छ प्रणाली का एक नरक है।
luis.espinal

@ luis.espinal, कोड और रनिंग सिस्टम से क्रमशः स्थिर और गतिशील संरचनाओं को समझाना संभव है। चाहे वे संरचनाएं किसी प्रणाली की वास्तुकला के समतुल्य हों या नहीं, यह आपके विचार के विद्यालय पर निर्भर करेगा। जैसा कि आपने बताया है, आप अभी भी किसी भी वास्तु चालकों सहित कुछ बड़े चूकों को याद कर रहे हैं और डिजाइन निर्णयों के पीछे तर्क भी शामिल कर सकते हैं।
माइकल

क्या विचारशील स्कूल एक प्रणाली की वास्तुकला के लिए कोड व्युत्पन्न संरचनाओं के बराबर है? अगर हमें पता है कि हम किसी भी वास्तु चालकों सहित कुछ बड़े चूकों को याद करेंगे, तो हम पूरी वास्तुकला को याद कर रहे हैं। यह तुच्छ रूप से साबित करता है कि स्थिर और गतिशील संरचनाएं जो अकेले कोड से विच्छेदित हो सकती हैं, वे किसी आर्किटेक्चर (विचार के स्कूल से स्वतंत्र रूप से) का प्रतिनिधित्व नहीं करती हैं। INCOSE के), वे उस कोड में स्पष्ट हैं जो केवल एक वास्तुकला का एक अंश है।
luis.espinal

इसका स्पष्ट उदाहरण। एक सिस्टम आर्किटेक्चर को मुझे विशिष्ट संख्या में मशीनों पर तैनात करने की आवश्यकता हो सकती है, जिसमें बाहरी इंटरफेस बंद हो जाते हैं और एक विशिष्ट क्रम में। अकेले कोड से प्राप्त स्थैतिक और गतिशील संरचनाएं शायद ही कभी (यदि सभी पर) कब्जा कर लेंगी, हालांकि स्पष्ट रूप से, ये एक सिस्टम आर्किटेक्चर की तैनाती और परिचालन पहलुओं का हिस्सा हैं। और किसी भी कोड व्युत्पन्न संरचना केवल एक सॉफ्टवेयर अनुप्रयोग (या घटक) वास्तुकला के स्थिर पहलुओं की वास्तविकताओं से संबंधित होगी । यह सिस्टम आर्किटेक्चर के लिए कभी नहीं हो सकता ।
luis.espinal

1
@ luis.espinal, मैं आपको इस प्रश्न का उत्तर प्रस्तुत करने के लिए आमंत्रित करता हूं! ऐसा लगता है कि आप एक उत्कृष्ट परिप्रेक्ष्य लाते हैं जो मुझे लगता है कि इस विषय में कुछ वास्तविक मूल्य जोड़ देगा। आप इस पर गाना बजानेवालों को उपदेश दे रहे हैं, तो क्यों न एक ऐसा जवाब बनाया जाए जो आपकी सोच को पूरी तरह से समझा दे ताकि सभी को फायदा हो सके? इसीलिए मैंने पहली बार में सवाल पूछा।
माइकल

जवाबों:


11

क्या आपके विचारों को कोड में नकल करना DRY सिद्धांत का उल्लंघन करता है?

Geez, यदि आप कोड को देखकर सिर्फ वास्तुकला जान सकते हैं, तो पहले स्थान पर "आर्किटेक्चर डिस्क्रिप्शन डॉक्यूमेंट्स" जैसी चीजें नहीं होंगी। यह एक पुनरावृत्ति नहीं है, यह सिस्टम विवरण का एक और स्तर है , जिसे कोड से तुच्छ रूप से घटाया नहीं जा सकता है, और इसके विपरीत। इसलिए इसका पूरा अधिकार है कि आप DRY को अपनाएं।


7

DRY को एक कठिन और तेज़ नियम के रूप में न लें। यह अच्छी बात है, लेकिन आप इसे केवल व्यवहार में ही समझ सकते हैं।

इसके अलावा, मुझे लगता है कि यह अच्छी तरह से नहीं लिखा गया है। "अपने आप को दोहराएं नहीं" समान रूप से महत्वपूर्ण मामले को कवर करने के लिए प्रतीत नहीं होता है कि एक अर्थपूर्ण या कार्यात्मक परिवर्तन करने के लिए आपको स्रोत पाठ को कई स्थानों पर संपादित करना होगा, अलग-अलग लेकिन समन्वित चीजों को कहना होगा।

इसे उल्लंघन न करने की आज्ञा के रूप में लेने के बजाय, यह समझना बेहतर है कि यह एक अच्छा विचार क्यों है और इसके लिए समझदार विकल्प बनाएं। कारण यह है कि कई स्थानों पर समन्वित संपादन करना बुरा है, यह है कि आप, संपादक, गलतियाँ करते हैं। बिना त्रुटि के परिवर्तन करने के लिए आप 100% विश्वसनीय नहीं हैं। यदि आपको 10 अलग-अलग स्रोत पाठ परिवर्तन करने हैं, और आपको उनमें से केवल 9 सही हैं, तो आपने बग में डाल दिया है । इसीलिए समन्वित परिवर्तनों की संख्या को कम करने के लिए स्रोत पाठ की व्यवस्था करना एक अच्छी बात है। यह कीड़े को कम करता है।

हम धर्म से संबंधित नहीं हैं जिसमें DRY आज्ञाओं में से एक है। यह सिर्फ एक आसान काम है, हालांकि थोड़ा भ्रामक है, कुछ सामान्य ज्ञान को समाप्‍त करने का तरीका।


4

एक वास्तुकला विवरण, या सॉफ़्टवेयर डिज़ाइन विवरण DRY का उल्लंघन करता है । हालांकि, एक बड़े संगठन में, जहां पिछले साल परियोजनाएं आती हैं, डेवलपर्स आते हैं और चले जाते हैं, और किसी भी एक व्यक्ति के लिए सभी विवरणों को अपने सिर में रखने के लिए सिस्टम बहुत बड़ा है, यह एक महत्वपूर्ण दस्तावेज है। "पुनरावृत्ति" की मात्रा को सिंक में रखने के लिए आवश्यक यह पूरी तरह से उस प्रयास के लिए लायक है जो इसे अगले अद्यतन या रखरखाव के दौरान बचाता है।


1
यह DRY की गलतफहमी या अंधा अनुप्रयोग है। एक वास्तुशिल्प विवरण इसका उल्लंघन नहीं है। यदि कोई आँख बंद करके इस तरीके से DRY लागू करता है, तो कुछ भी लेकिन कोड इसका उल्लंघन है ... और स्पष्ट रूप से यह उन लोगों का इरादा नहीं था जो इसके विचार के साथ आए थे।
luis.espinal

2

आर्किटेक्चर विवरण DRY सिद्धांत का उल्लंघन नहीं करता है।

आपका सॉफ़्टवेयर सिस्टम एक आर्किटेक्चर के साथ आता है, निश्चित रूप से। और यह कई फाइलों में, कई कक्षाओं में, कई बाहरी और विवरणों के साथ फैला हुआ है जो एक अवलोकन के लिए अनावश्यक हैं।

आपका आर्किटेक्चर दस्तावेज़ एक समाचार रिपोर्ट के पहले पैराग्राफ की तरह होना चाहिए: यह एक रूपरेखा, एक सारांश, परियोजना का एक रोडमैप है।


1

यदि आप दस्तावेज़ को तारीख करते हैं, तो यह लेखन के समय वास्तुकला का वर्णन करता है।

जबकि वर्तमान समय में कोड वास्तुकला का प्रतिनिधित्व करता है।

दो अलग-अलग चीजें - एक ही ज्ञान नहीं।

जब तक आप यह कहते हैं कि दस्तावेज़ लेखन के समय आर्किटेक्चर का प्रतिनिधित्व करता है, आप ज्ञान IMO की नकल नहीं कर रहे हैं क्योंकि इसका अलग-अलग ज्ञान यदि सिस्टम के बारे में किसी अन्य बिंदु पर है।


कोड कभी भी वास्तुकला का प्रतिनिधित्व नहीं करता है। यह सिर्फ वास्तुकला की अभिव्यक्ति है। आज परिवर्तित किया गया कोड आज भी कल की वास्तुकला का प्रतिनिधित्व कर सकता है। इसके अलावा, यह अपेक्षित (या संविदात्मक) वास्तुकला का प्रतिनिधित्व नहीं कर सकता है, जो कि आपको सबसे अधिक चिंता करने की आवश्यकता है। कोड आपको यह नहीं बताता है कि यह सही है या गलत, केवल यह चलता है। यह पता करने के लिए कि क्या यह सही है या गलत है, आपको इच्छित आर्किटेक्चर और आवश्यकताओं को देखना होगा जो सिस्टम को शुरू करने से रोकते हैं।
luis.espinal
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.