चार-दृष्टि सिद्धांत के संभावित कार्यान्वयन (या उदाहरण) क्या हैं?


22

माइकल ग्रुएनवाल्ड ने हाल ही में यह टिप्पणी पोस्ट की है :

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

अगर मैं गलत हूं तो मुझे सुधारो, लेकिन मुझे सिखाया गया कि "चार-आंखों वाला सिद्धांत" एक ऐसी चीज के बारे में है, जो "होने के लिए स्वीकृत है", कम से कम 2 मनुष्यों (और / या स्वचालित प्रक्रियाओं) ने अपना पूर्व आशीर्वाद दिया। या विकिपीडिया से "दो- (wo) मैन रूल" के बारे में शब्द (थोड़ा सही) का उपयोग करने के लिए :

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

विनियामक दायित्वों, बहुत निश्चित हैं, यहाँ विषय से दूर है, लेकिन "सुरक्षित-रक्षक" के संदर्भ में, इस चार-आंखों के सिद्धांत के संभावित वैचारिक कार्यान्वयन क्या हैं, जो शायद किसी भी मंच / ओएस / हार्डवेयर पर उपयोग किया जा सकता है?

जवाबों:


11

कोड पर कार्यान्वयन में से एक पुल अनुरोध मॉडल (पीआर) है जिसे गिटहब द्वारा लोकप्रिय किया गया है।

इसके पीछे मुख्य तर्क यह है कि उत्पाद के अनुरक्षकों के केवल एक छोटे सेट को कोड को रिलीज शाखा में विलय करने की अनुमति दी जाएगी। हर नई सुविधा / बगफिक्स एक नई शाखा पर होगी और एक बार किए जाने पर इसे पुल अनुरोध के रूप में परिभाषित किया जाएगा।

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

एक बार 4 आंखों के सिद्धांत के लिए स्वचालित परीक्षण पास हो जाने के बाद, इसमें परिवर्तन की समीक्षा करने और अनुमोदन करने से पहले स्पष्ट रूप से कम से कम 1 व्यक्ति (जो पीआर लेखक नहीं है) को 4 आंखों की समीक्षा करने के लिए व्यक्तियों की एक विन्यास योग्य संख्या की आवश्यकता होती है। परिवर्तन।

एक बार समीक्षकों की कोरम पूरा हो जाने के बाद या अभी भी एक अनुरक्षक द्वारा मैन्युअल मर्ज की आवश्यकता के लिए विकल्पों की एक विस्तृत श्रृंखला है।

समीक्षा और विलय करने की अनुमति को अलग किया जा सकता है जो अधिक लोगों को मर्ज स्थिति पर "वोट" का अधिकार देने में मदद करता है जबकि प्रतिबंधित करने की संभावना रखते हुए कि वास्तव में मर्ज कर सकते हैं।


कृपया अपने उत्तर (टाइपोस सामान) के मामूली संपादन की जाँच करें। यदि आप उन्हें पसंद नहीं करते हैं, तो बस रोलबैक या फिर से संपादित करें, ठीक है? इसके अलावा, मैंने इन पीआरओं के बारे में नहीं सोचा था, इसलिए मुझे लगता है कि बहुत ही लागू है। मैं इस जवाब को स्वीकार करने जा रहा हूं (मैंने इससे कुछ सीखा है, मेरे खुद के जवाब में चीजें मुझे खुद ही पता हैं)। हालांकि मैं भविष्य में गारंटी नहीं देता कि मैं अपना दिमाग बदल सकता हूं (अस्वीकार्य) एक बेहतर जवाब पोस्ट किया जाना चाहिए। के बारे में: "यह स्वचालित रूप से पीआर में कोड के साथ वास्तविक रिलीज (मास्टर) कोड से मर्ज पर परीक्षण करने की अनुमति देता है", मुझे वह नहीं मिला, क्या मुझे एक नया प्रश्न पोस्ट करना चाहिए?
Pierre.Vriens

@ पियरे आप जितनी बार चाहें अपना मन बदलने के लिए स्वतंत्र हैं :) प्रस्तावित कोड के परीक्षण के लिए, ट्रैविस सीआई (छूट के लिए) वास्तविक मास्टर के परिणाम पर चल सकते हैं, जिसमें पुल अनुरोध कोड में विलय हो गया है, इसलिए यह होगा यदि मर्ज असंभव है, या यदि travisci.yml में परिभाषित कमांड्स नॉन जीरो एग्जिट कोड लौटाते हैं तो असफल हो जाते हैं। FWIW, गूग्लिंग साउंड सबसे अच्छा तरीका IMHO, विषय बड़ा है
Tensibai

@ पियरे और संपादन के लिए, केवल एक बिंदु, 4 आँखों के सिद्धांत की समीक्षा के लिए 1 और व्यक्ति होना है, इसका मतलब है कि 2 व्यक्तियों ने परिवर्तन देखा (लेखक ने इसकी समीक्षा नहीं की), इसलिए व्यक्ति की चर संख्या पर एकवचन ( जैसा कि यह केवल एक ही हो सकता है, और फ्रेंच में शायद केवल एक विलक्षण है: पी)। मैं अंग्रेजी में उतना धाराप्रवाह नहीं हूं जितना मैं होना चाहता हूं, लेकिन मुझे लगता है कि पहला बिंदु वैध है (2 पाठक, 2 ने इसे एक समीक्षा के रूप में देखा), दूसरे के लिए मैं पक्षपाती हो सकता हूं :)
टेनेसीबाई

अहा, यही आपका मतलब है, अब मैं इसे प्राप्त करता हूं (और आपके उत्तर में अतिरिक्त स्पष्टीकरण को कॉपी / पेस्ट करने के लिए स्वतंत्रता ली है)। Btw: पूर्व एक mple (एन) में है, नहीं पूर्व (एफआर के रूप में) mple ...
Pierre.Vriens

@ पियरे.वीरेंस ने दोहरी भाषा के साथ ऑटो को सही ठहराया :)
तेंसिबाई

9

कोड समीक्षा

यह किसी व्यक्ति द्वारा लिखे गए कोड को देखने के लिए कम से कम 1 अन्य व्यक्ति के बारे में है, उदाहरण के लिए मूल्यांकन करने के लिए कि क्या यह कुछ पूर्वनिर्धारित मानदंडों को पूरा करता है जैसे:

  • कोडिंग मानक (इंडेंटेशन, आदि)।
  • इनलाइन प्रलेखन।
  • कोड की स्थिरता।
  • गलती संभालना।
  • पूर्णता (जैसे if/then/elseया case/whenनिर्माण सभी संभावित मामलों को कवर करता है)।

कुछ लक्ष्य वातावरण को अद्यतन करने के लिए स्वीकृतियां

यह कुछ व्यक्ति और / या स्वचालित प्रणाली से कम से कम 2 पुष्टिकरण होने के बारे में है इससे पहले कि इसे कुछ लक्षित वातावरण (जो लाइव हो सकता है, या कुछ मास्टर फ़ाइल / बेसलाइन लाइब्रेरी की तरह हो सकता है) को अपडेट करने की अनुमति है। कुछ उदाहरण निम्न हैं:

  • निष्पादन योग्य घटकों में स्रोत घटकों को बदलने (निर्माण) करते समय केवल चेतावनी के एक सीमित सेट की अनुमति होती है।
  • स्वचालित परीक्षण के कुछ सेट बिना किसी जांच के पूरे होने चाहिए।
  • कुछ मनुष्यों ने अपनी पूर्व स्वीकृति को इंगित किया होगा (और इसके बिना, लक्ष्य वातावरण को अपडेट करने का कोई भी प्रयास स्वचालित रूप से विफल हो जाएगा)।

6

ये ऐसी रणनीतियाँ / प्रतिमान हैं जिनके बारे में मैं सोच सकता हूँ:

कर्तव्य का अलग होना

DevOps, मेरे विचार से कम से कम, एक ही व्यक्ति में देव और ऑप दोनों का अवतार लेने का मतलब नहीं है। इसलिए यह अभी भी कर्तव्य को अलग करना संभव है कि कोड (देव) लिखने वाला व्यक्ति इसे निष्पादित नहीं कर रहा है (ऑप्स)।

उदाहरण के लिए, यदि एक SQL स्टेटमेंट को लाइव वातावरण पर निष्पादित किया जाना है, तो एक SQL लिखता है और दूसरा इसे निष्पादित करता है। यह जो लागू किया गया है वह एक निष्पादन की आवश्यकता है, जिसमें एसक्यूएल की समझ भी होती है और न कि केवल निष्पादित होती है।

ट्रिगर तैनात करें

जबकि लगातार तैनाती के लिए योग्यता है। अधिक विनियमित उद्योग में टीम अपने आप को तैनात करने के बजाय तैनाती को ट्रिगर करने के लिए एक और (अलग) पार्टी नियुक्त कर सकती है। चेकलिस्ट, स्वचालित परीक्षण, चेकसम तैनाती को ट्रिगर करने से पहले संभावित जांच हैं।

एक बार ट्रिगर होने के बाद, स्वचालन तैनाती को निष्पादित करने के लिए आगे बढ़ सकता है।

जोड़ा प्रोग्राम तैयार करना

व्यक्तिगत रूप से मैंने इस तकनीक को ऑडिटर को चेक और बैलेंस सिद्धांत को संतुष्ट करने के लिए एक विधि के रूप में उद्धृत नहीं किया है। लेकिन संभावित रूप से मुझे लगता है कि यह एक रणनीति हो सकती है।

एमएफए

मैं इस एक के साथ थोड़ा खींच सकता हूं, लेकिन यह संभव है कि किसी कारण से आप एक सिस्टम में एकतरफा प्रवेश नहीं चाहते हैं, कोई व्यक्ति पासवर्ड पकड़ सकता है और कोई अन्य व्यक्ति एक बार कोड के लिए टोकन या डिवाइस को पकड़ सकता है। ताकि, सिस्टम का आकलन करने के लिए 2 व्यक्ति मौजूद रहें।


इन दिलचस्प विविधताओं के लिए विलय! उस "जोड़ी प्रोग्रामिंग" के बारे में पहले कभी नहीं सुना, जो वास्तव में "4 हाथों" के साथ पियानो बजाने की भिन्नता जैसा लगता है!
Pierre.Vriens

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