उन बग्स का इलाज कैसे करें जो उपयोगकर्ताओं ने सोचा था कि एक विशेषता थी?


15

प्रश्न :

बग को संबोधित करने का उचित तरीका क्या है जो एक अंतिम उपयोगकर्ता ने सोचा था कि यह एक विशेषता है?

विस्तार :

मैं अनुमान लगा रहा हूं कि यदि उपयोगकर्ताओं के एक बड़े प्रतिशत ने इसे एक विशेषता के रूप में अपेक्षित किया है, तो इसे "स्थिर" या "स्थिर" छोड़ दिया जाना चाहिए? हालांकि, क्या होगा अगर बहुत कम प्रतिशत उपयोगकर्ता इसकी एक विशेषता होने की उम्मीद करते हैं ... 0.1% या 1% कहें, और यह बग निश्चित होना चाहिए।

सैद्धांतिक रूप से, चूंकि यह एक मामूली बग फिक्स है, इसलिए इसे PATCH के रूप में अर्हक माना जा सकता है जैसा कि अर्थ वर्जनिंग: xyZ हालांकि, चूंकि यह बैकवर्ड कम्पैटिबिलिटी (यहां तक ​​कि सिर्फ कुछ उपयोगकर्ताओं के लिए) को तोड़ता है, इसलिए यह MAJOR वृद्धि होनी चाहिए: Xyz Correct? क्या यह अभी भी एक PATCH के रूप में योग्य है (क्योंकि यह एक विशेषता के रूप में इरादा नहीं था) जब तक यह प्रलेखित है?

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


8
सभी बग सुविधाएँ नहीं हैं? ;)
लॉरेंस Aiello

2
नए संस्करण में एक स्विच प्रदान करें जो डिफ़ॉल्ट रूप से बंद है, और चालू होने पर पुराने व्यवहार का अनुकरण करेगा? हर समय होता है। कोई खबर है, पर इस कदम
rwong


कभी-कभी एक सुविधा बग से अधिक कुछ नहीं है जैसा कि विपणन विभाग द्वारा वर्णित है।
डेन पीचेलमैन

आंतरिक रूप से उपयोग की जाने वाली लाइब्रेरी में एक बग को स्पष्ट करने के लिए मूल पोस्ट अपडेट किया गया; मुझे लगता है कि यह ग्राहकों को बेचे जाने वाले उत्पाद के बग से अलग मामला है क्योंकि यह वर्कफ़्लो या प्रयोज्य को प्रभावित नहीं करता है।
रोबोडुडे666

जवाबों:


7

मैं अनुमान लगा रहा हूं कि यदि उपयोगकर्ताओं के एक बड़े प्रतिशत ने इसे एक विशेषता के रूप में अपेक्षित किया है, तो इसे "स्थिर" या "स्थिर" छोड़ दिया जाना चाहिए?

क्या बग मूल्य जोड़ता है? यदि ऐसा है, तो यह एक विशेषता से अधिक है। कभी-कभी "बग" मान-जोड़ "सुविधा" के रूप में समाप्त हो सकता है।

यह वास्तव में निर्णायक रूप से उत्तर देना मुश्किल है क्योंकि हर एक स्थिति अलग होगी।

इस विशिष्ट मामले में, यह आंतरिक रूप से उपयोग की जाने वाली लाइब्रेरी के एपीआई में एक बग है जो अन्य डेवलपर्स उपयोग करते हैं।

इस मामले में, मैं पश्चगामी संगतता के संबंध में आपके अगले ब्रेकिंग परिवर्तन के हिस्से के रूप में एक फिक्स शामिल करूंगा। आप वास्तव में ज्यादातर वातावरण में लगातार ऐसा नहीं कर सकते हैं और शायद इसके लिए समय-सारिणी / समय-सीमा है।

एक डेवलपर के रूप में मैं जिस चीज से निपटना चाहता हूं वह एक एपीआई है जिसमें गलत या असंगत व्यवहार है। कीड़े इसे माना जाता है।

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


10

मैं इसे और अधिक स्थिर बनाने की सलाह दूंगा। उपयोगकर्ता आपके सॉफ़्टवेयर क्या करते हैं, इसके बारे में विहित स्रोत हैं। अगर वे इसे चाहते हैं, और इस पर भरोसा करने के लिए आए हैं, तो मैं इसे दोगुना करने के बारे में सोचूंगा।

इसका एक अच्छा उदाहरण वीडियो गेम "ट्राइब्स" में "स्कीइंग" मैकेनिक है। मूल रूप से एक बग में भौतिकी इंजन ने एक पहाड़ी पर कूदने का काम कैसे किया, इसने कोर गेम यांत्रिकी में से एक को समाप्त कर दिया। आप इसके बारे में अधिक थोड़ा पढ़ सकते हैं यहाँ , अगर आप उत्सुक हैं।



2
एक और शानदार वीडियो गेम उदाहरण स्ट्रीट फाइटर के पुराने संस्करणों में कदमों को रद्द करने की क्षमता है ( en.wikipedia.org/wiki/… )। मूल रूप से एक बग, यह एक "सुविधा" होने के लिए आरोही है।
माइकल

8

चूंकि बग एक लाइब्रेरी में है, इसलिए यहां एक और तरीका है जिसे आप ले सकते हैं:

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

  2. केवल क्लोन में बग को ठीक करें (और अन्य सभी इंटरफ़ेस परिवर्तन लागू करें जो आप उस समय चाहते हैं)।

  3. मूल फ़ंक्शन को पदावनत घोषित करें।

  4. कुछ आगामी प्रमुख रिलीज़ में मूल फ़ंक्शन को निकालें।

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


1
इस विशेष मामले में, "टूटा" फ़ंक्शन अनिश्चित काल तक रह सकता है क्योंकि यह मौलिक रूप से अलग (और मूल्यवान) व्यवहार प्रदान करता है।
रबरडक

सिमेंटिक वर्जनिंग का उपयोग करके यह क्लोन किसी नए प्रमुख संस्करण की तुलना में बेहतर कैसे करता है?
कैट

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

4

इस विशिष्ट मामले में, यह आंतरिक रूप से उपयोग की जाने वाली लाइब्रेरी के एपीआई में एक बग है जो अन्य डेवलपर्स उपयोग करते हैं।

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

  • क्या बग को ठीक करना वास्तव में महत्वपूर्ण है, उदाहरण के लिए क्योंकि बग तय नहीं होने की स्थिति में आपके एपीआई के उपयोगकर्ताओं को अपने एप्लिकेशन क्रैश करने देने का एक उच्च जोखिम है? या यह सिर्फ एपीआई की स्थिरता के बारे में है?

  • या मौजूदा सॉफ़्टवेयर को स्थिर रखना अधिक महत्वपूर्ण है, और आपकी लाइब्रेरी पीछे की ओर संगत है?

प्रश्न का उत्तर हमेशा सरल नहीं होता है, आपको अपने एपीआई के संभावित उपयोगकर्ताओं की संख्या को ध्यान में रखना होगा, काम की संभावित मात्रा में उन्हें अपने सॉफ़्टवेयर को बदलना होगा, सॉफ्टवेयर की मात्रा जो आपके एपीआई को बदलने पर टूट जाएगी , लेकिन अगर आप एपीआई को ठीक नहीं करते हैं, तो इसके जोखिम भी हो सकते हैं ।

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

(और हां, यदि आप एक एपीआई परिवर्तन करने जा रहे हैं जो पीछे की ओर संगत नहीं है, तो आपके संस्करण संख्याओं को यह स्पष्ट रूप से व्यक्त करना चाहिए, इससे कोई फर्क नहीं पड़ता कि आप इसे "बगफिक्स" नाम देते हैं या नहीं)।


1

इसे गले लगाने। यह आपके पूरे उत्पाद को बना सकता है।

GunZ: द्वंद्वयुद्ध (एक ऑनलाइन गेम) में एक बग था जिसे आप शोषण कर सकते थे और लगातार पूरे गेमप्ले (जिसे के-स्टाइल कहा जाता है, इसे YouTube पर देखें) को बदलने के लिए लगातार दुरुपयोग कर सकते हैं। इसने पूरे खेल को और अधिक चुनौतीपूर्ण बना दिया; इसने कौशल लिया और इसे सिर्फ अद्भुत और मजेदार बना दिया .. इतना मजेदार कि यहां तक ​​कि मध्यस्थों ने खुले तौर पर इसे अपनी मुख्य नाटक शैली के रूप में इस्तेमाल किया।
यह खेल बना दिया है।
मैं वर्षों में नहीं खेला, लेकिन इस दिन, एक गेमर के रूप में, यह अब तक के मेरे पसंदीदा खेलों में से एक है क्योंकि यह बहुत कौशल-आधारित है और बस इतना मजेदार है, और यह सब एक बग के कारण अभी भी अजीब है।

उन्होंने इसे अंततः ठीक कर दिया, लेकिन लोगों को इससे इतनी नफरत थी कि देवताओं ने इसे गंभीरता से वापस ले लिया।

इसलिए मेरा जवाब स्थिर है और इसे बनाए रखना (यदि आवश्यक हो तो रिफ्लेक्टर)।


उस सुंदर कहानी के बारे में कहा जा रहा है, मुझे नहीं लगता कि कोई भी उत्तर उस चीज के लिए लागू होता है जिसका सीधा फायदा नहीं है। यदि आपका बग किसी घटना का कारण बनता है जो लाभ का कारण बनता है, तो यह आमतौर पर बग को ठीक करने के लिए चालाक होगा, और जो कुछ भी हो सकता है उसे प्राप्त करने का एक और तरीका ढूंढना होगा। यदि यह दायरे से बाहर है, तो इसे केवल दायरे से बाहर रहने के लिए छोड़ दें, या इसे शुरू करने के लिए एक और मॉड्यूल (शायद एक छोटा) बनाएं। मूल रूप से: एकल जिम्मेदारी सिद्धांत का उल्लंघन न करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.