सॉफ्टवेयर के एक टुकड़े को "इडियट प्रूफ़िंग" की प्रक्रिया का वर्णन करने का एक अच्छा तरीका क्या है [बंद]


13

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

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

यह कहने का एक अच्छा तरीका क्या है?


23
इसे कॉल करें, आईडी -10 टी प्रूफिंग
जारोड नेटल्स

2
Lol, मुझे 1337 का एहसास हुआ क्योंकि मैंने ID-10T को गुगला दिया था। मुझे असफल ...
21

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

3
कैसे बुनियादी इंजीनियरिंग के बारे में?
जे.के.

4
"कुछ भी मूर्ख नहीं बनाया जा सकता है, क्योंकि मूर्ख बहुत लानत हैं।"
M.Sameer

जवाबों:


27

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

वैकल्पिक रूप से, अगर यह एक असतत आइटम होना चाहिए (मुझे पता है कि कुछ संगठन शेड्यूलिंग के बारे में कैसे सोचते हैं), "इडियट प्रूफ यूआई" को "इनपुट वैलिडेशन लाइब्रेरी" में बदल दिया जाना चाहिए और शेड्यूल के सामने ले जाया जाना चाहिए।


2
+1। यदि आप इस तथ्य के बाद किसी भी प्रकार के इनपुट सत्यापन को जोड़ने का प्रयास कर रहे हैं, तो आप पहले से ही बहुत अधिक खो चुके हैं। कल्पना में एक स्थायी बिंदु के रूप में बेहतर है, "सॉफ्टवेयर को इनायत से कहीं भी अवैध इनपुट को संभालना चाहिए"। वास्तव में कैसे "इनायत" संभाल करने के लिए अमान्य इनपुट बहुत कुछ इस बात पर निर्भर करता है कि सॉफ्टवेयर उस विशेष बिंदु पर क्या कर रहा है। बहुत सरल यूआई के लिए (शायद एक एटीएम लगता है), यह संभव भी हो सकता है कि अमान्य इनपुट असंभव हो
बजे एक CVn

14
+1। इडियट-प्रूफिंग एक काम नहीं है। इडियट-प्रूफ अच्छी डिजाइन का परिणाम है।
एस.लॉट

4
इडियट-प्रूफिंग एक सतत प्रक्रिया है - क्योंकि ब्रह्मांड कभी-कभी अधिक-सरल बेवकूफ बनाता है
स्टीवन ए। लोव

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

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

10

उपयोगकर्ता इनपुट सत्यापन मैंने सोचा था कि एक पेशेवर शब्द होगा। हालांकि मुझे आंतरिक दस्तावेजों में उपयोग किए जाने पर बेवकूफ प्रूफिंग के साथ कुछ भी गलत नहीं दिखता है।


3
आपने मुझे "उपयोगकर्ता इनपुट सत्यापन" पर दिया था। इडियट प्रूफिंग एक अनप्रोफेशनल शब्द है, इसकी परवाह किए बिना कि इसका उपयोग कहां किया जाता है।
रॉबर्ट हार्वे

2
जो कुछ भी आप करते हैं, उसे लिखित रूप में न रखें।
जेफ

6

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

इसके लिए एक और अच्छा शब्द है - आप वास्तविक ग्राहकों को जिस तरह की चुनौतियां देंगे, उसके प्रति आप एक और अच्छा शब्द हैं।

दोनों शब्द शांत और औद्योगिक लगते हैं, उपयोगकर्ताओं या प्रोग्रामर को दोष नहीं देते हैं, और बिंदु को पार करते हैं।


BTW, यहाँ Metrowerks के पुराने शुभंकर अर्नोल्ड, वह व्यक्ति जो मैक प्रोग्रामर की मदद करता था और एक हीट ट्रीट भट्टी, एक फोर्ज और एक निहाई और छोटे स्लेज हैमर के साथ हमारे कोड को कड़ा करता था।


आम तौर पर हार्डिंग अंतर्निहित हार्डवेयर की दोष सहिष्णुता को संदर्भित करता है - या गामा किरणों के लिए प्रतिरोध; ;-) मजबूती का मतलब बहुत कुछ हो सकता है
स्टीवन ए। लोव

@ सीन: ठीक है, हाँ। लेकिन यह संचार के लिए है जो संभवतः एक गैर-तकनीकी दर्शक है, और यह सवाल वास्तव में है कि कैसे कार्य को "स्पिन" किया जाए ताकि यह उन लोगों के लिए स्वादिष्ट हो।
बॉब मर्फी

यह समझ आता है; गैर-तकनीकी दर्शकों ने शायद 'कठोर' लैपटॉप के लिए टीवी विज्ञापन देखे हैं। तो उन्हें लगता है कि आपके सॉफ़्टवेयर को कंक्रीट पर 3 फीट नीचे छोड़ना ठीक है ;-)
स्टीवन ए। लोव

@Steven: Yup, और अगर उन्होंने नवीनतम Toshiba लैपटॉप वाणिज्यिक देखा है, तो उन्हें यह भी एहसास होगा कि यदि वे आपको सॉफ़्टवेयर को सख्त करने के लिए समय और संसाधन नहीं देते हैं, तो यह ज़ोंबी सर्वनाश के बारे में लाएगा। B ^)
बॉब मर्फी

4

रक्षात्मक प्रोग्रामिंग

क्या मुझे सिखाया गया था। वापस जब हमें लकड़ी से अपने चूतड़ों को काटना पड़ा।

यदि आप पीसी बनना चाहते हैं, तो इसे "अग्रिम" प्रोग्रामिंग कहें।


4

जब मैं सीख रहा था, तो हमने इसे बुलेट प्रूफिंग कहा ।

हालांकि मैंने जितनी भी अन्य व्यंजनाएं पढ़ी हैं वे सभी लागू होती हैं।



3

"इडियट प्रूफिंग" में दोनों शामिल होने चाहिए

  • यूआई को डिजाइन करना ताकि यह उपयोगकर्ता के अनुकूल हो और उपयोगकर्ता को उस तरीके से डेटा दर्ज करने की ओर ले जाए जो प्रोग्रामर उम्मीद करते हैं, और

  • अनपेक्षित डेटा मान दर्ज करके इंटरफ़ेस को तोड़ा जा सकता है या नहीं यह निर्धारित करने के लिए UI का परीक्षण।

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


आपने उस प्रश्न का उत्तर नहीं दिया जो पूछा गया था।
रॉबर्ट हार्वे

@ रॉबर्ट - मेरा मानना ​​है कि मैंने किया। "इडियट प्रूफिंग" कहने का अच्छा तरीका यह है कि "उपयोगकर्ता मित्रता को बेहतर बनाने के लिए डिज़ाइन की समीक्षा करें" या "परीक्षण करें कि इंटरफ़ेस अमान्य डेटा को हैंडल करता है" जिसके आधार पर "इडियट प्रूफिंग" का अर्थ है।
जस्टिन गुफा

ठीक है, यह समझ में आता है।
रॉबर्ट हार्वे

2

इडियट-प्रूफिंग में सरल इनपुट सत्यापन की तुलना में बहुत अधिक शामिल है। मैं इस तरह की बात को अपनी परिभाषा में शामिल नहीं करूंगा।

इनपुट सत्यापन एक ऐसी प्रक्रिया है जहाँ आप अवैध / निरर्थक मूल्यों को समाप्त करने के लिए उपयोगकर्ता डेटा को पवित्र और मान्य करते हैं। यह हमेशा आपके कार्यक्रम के बाहर से आने वाली किसी भी जानकारी के साथ किया जाना चाहिए ताकि स्पष्ट को खत्म करने के साथ-साथ खुद को हमलों से बचाया जा सके (जैसे कि एसक्यूएल इंजेक्शन हमले)।

मैं बेवकूफ-प्रूफिंग को तर्क का एक सेट मानूंगा, जिससे उपयोगकर्ता को गलती से उससे नुकसान हो सकता है / अन्यथा कानूनी साधनों के माध्यम से खुद को नुकसान पहुँचा सकता है।

उदाहरण के लिए, rmकमांड को अस्वीकार करने rm -rf /और करीबी वेरिएंट का सत्यापन या शुद्धता से कोई लेना-देना नहीं है। यह पूरी तरह से मान्य कमांड है। दुर्भाग्य से, यह एक कमांड है जो आपके सभी डेटा को यूनिक्स / लिनक्स में आपके सभी डेटा से मिटा सकता है। इडियट प्रूफिंग इस कमांड को अस्वीकार कर देगा और सुझाव देगा rm -rf --i-really-mean-this /, या यदि इंटरेक्टिव मोड में है, तो चेतावनी के बाद सकारात्मक प्रतिक्रिया में उपयोगकर्ता का प्रकार होगा।

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

इडियट-प्रूफिंग QA (सर्वश्रेष्ठ बेवकूफ बनने की कोशिश) और विकास (इन सभी परिदृश्यों और उनके आसपास डिजाइन करने की आशा करने की कोशिश) के बीच एक सहयोग है।

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


1

"सनिटी चेकिंग" बहुत बार बहुत अच्छी तरह से काम करता है ...


3
मेरे लिए, "पवित्रता की जाँच" का अर्थ उसी चीज़ के बारे में है जो "मुखर" है: यह सुनिश्चित करना कि आंतरिक स्थिति सही है। वास्तव में बाहरी इनपुट सत्यापन के समान नहीं है।
मेसन व्हीलर

@ मेसन, मुझे लगता है कि सिस्टम के राज्य की जाँच के रूप में, सभी बिंदुओं पर, वैध इनपुट के लिए जो समझ में आता है। उदाहरण के लिए, जाँच करना कि अंतिम तिथि, प्रारंभ तिथि के बाद है, कचरा इनपुट आदि की जाँच के अलावा, मैं आपकी बात भी देखता हूँ और आपसे सहमत हूँ।
मार्लन


1

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


1

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

सुरक्षा उपाय केवल बाहरी आक्रमणों के खिलाफ उपयोगकर्ताओं की सुरक्षा के लिए एक तरीका नहीं है, बल्कि खुद के खिलाफ भी है। हम अपूर्ण उपयोगकर्ताओं के साथ एक अपूर्ण दुनिया में रहते हैं।


1

गोल्ड-प्लेटिंग किसी भी तरह से (GUI या अन्य) एंड-यूज़र इंटरफ़ेस अनुभव को बेहतर बनाने के बारे में बात करते समय विनम्र (और बहुत सकारात्मक लगने वाला) शब्द है ।

इडियट-प्रूफिंग, जैसा कि आप कहते हैं, डिजाइन या वर्कफ़्लो में सुधार के साथ-साथ उस प्रक्रिया का सबसे बड़ा हिस्सा है (थिंक एंड-यूज़र फीडबैक ऑफर)।

यहां विचार यह है कि आप उस शब्द का उपयोग काम के वातावरण में स्वतंत्र रूप से कर सकते हैं और इसे एक मूल्यवान प्रक्रिया (एक बार पूरा होने के बाद) दोनों प्रबंधन और उपयोगकर्ताओं द्वारा देखा जा सकता है, भले ही इसमें कुछ समय लग सकता है (और इस तरह आमतौर पर कुछ पैसे खर्च होते हैं)।

इस (अक्सर अंत-चक्र) प्रक्रिया से संबंधित कई अन्य शब्द इसे इस प्रक्रिया की तरह बनाते हैं:

  • तात्पर्य उपयोगकर्ताओं (अक्सर प्रबंधन; ;-) गूंगा हैं
  • हासिल करना कठिन है
  • थोड़ा नेट वर्थ है

सोने को प्रक्रिया के साथ जोड़कर (धातु आमतौर पर "लागत" के बजाय "मूल्य" के बराबर होता है), मैंने देखा है कि प्रक्रिया को कुछ प्रबंधकों की मानसिकता में निवेश से खर्च में बदल दिया गया है।

इसकी तरह खुले तौर पर कहा जाता है कि जब तक यह नहीं किया जाता है, तब तक स्टील का वह भद्दा टुकड़ा गहने नहीं है। लेकिन एक बार इसकी प्रतिज्ञा ... फिर इसकी मूल्यवान।


मैं देखता हूं कि यह शब्द आपके दर्शकों के लिए कैसे काम करता है। अधिकांश प्रबंधकों के लिए, सोना-चढ़ाना परियोजना से पहली चीज होगी। दूसरे शब्दों में, आवश्यक भागों नहीं।
गिल्बर्ट ले ब्लैंक

अजीब - मुझे "गोल्ड प्लेटिंग" शब्द दिखाई देता है, जिसका अर्थ है कि आप अपना समय बर्बाद कर रहे हैं जो कुछ ऐसा नहीं करता है जो कोई कार्यात्मक सुधार नहीं करता है । मान्य इनपुट सुनिश्चित करना आदि करता है प्रस्ताव कार्यात्मक सुधार और इसलिए (मेरी परिभाषा के द्वारा) सोना चढ़ाना नहीं है।
ChrisF

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

मेरे अनुभव में, गोल्ड-प्लेटिंग का उपयोग आम तौर पर अनावश्यक विशेषताओं के साथ सॉफ्टवेयर लॉरेन का वर्णन करने के लिए किया जाता है , अर्थात ब्लोटवेयर के पर्याय के रूप में ।
मार्क बूथ

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

1

ज्यादातर अक्सर निर्माण प्रक्रियाओं के संबंध में उपयोग किया जाता है लेकिन मुझे लगता है कि वास्तव में अच्छा फिट पोका-योक है :

"[पोका यो-के] एक जापानी शब्द है जिसका अर्थ है" विफल-सुरक्षित "या" गलती-प्रूफिंग "

इसे मूल रूप से बाका-योक के रूप में वर्णित किया गया था, लेकिन इसका अर्थ है "मूर्ख-प्रूफिंग" (या "बेवकूफ-प्रूफिंग") नाम को बदलकर पोका-योक कर दिया गया था।

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


1

बड़ी दुकानों में एक सामान्य शब्द गुणवत्ता आश्वासन (QA) भी है

इसका एक सामान्य, उद्देश्य पर अस्पष्ट, जिसे आप अपने रिलीज के चक्र में अपने विशिष्ट अर्थ में ढाल सकते हैं।


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