2008-09-21 22 views
5

टोयोटा विनिर्माण लाइनों में वे हमेशा जानते हैं कि एक हिस्सा किस मार्ग से यात्रा कर चुका है। बस इतना ही वे सुनिश्चित कर सकते हैं कि वे इसे ठीक कर सकते हैं कुछ गलत हो जाता है। क्या यह सॉफ्टवेयर में भी लागू है?सॉफ़्टवेयर में कभी भी अज्ञात मार्ग पर नहीं आते? [टोयोटा सिद्धांत]

सभी त्रुटि संदेशों को मुझे बताएं कि वे किस मार्ग पर गए थे। कुछ करते हैं, स्टैक ट्रेस के साथ त्रुटि संदेश। क्या यह एक सही व्याख्या है? क्या इसका इस्तेमाल कहीं और किया जा सकता है?

ठीक है, यहां पॉडकास्ट है। मुझे लगता है कि यह दिलचस्प

http://itc.conversationsnetwork.org/shows/detail3798.html

उत्तर

5

एक अच्छा विचार जहां व्यावहारिक। दुर्भाग्यवश, मशीन की स्थिति के पूरे इतिहास का ट्रैक रखना आम तौर पर मुश्किल है। आप बस प्रत्येक डेटा संरचना को टैग नहीं कर सकते हैं, जहां से आप इसे प्राप्त करते हैं, और की पूरी स्थिति ऑब्जेक्ट। आप केवल बाहरी घटनाओं को स्टोर करने में सक्षम हो सकते हैं और इस तरह से पुन: उत्पन्न कर सकते हैं कि सबकुछ कहां से आया था।

कुछ उदाहरण:

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

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

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

+0

अच्छा बिंदु। मैंने प्रसंस्करण उपकरण के लिए "जानकारी को चारों ओर रखें" दृष्टिकोण का भी उपयोग किया, ताकि आउटपुट से त्रुटियों के कारण आउटपुट भ्रष्ट हो या देर से असफल हो सके (उदाहरण के लिए इनपुट फ़ाइल की रेखा जहां त्रुटि माना जाता है)। – steffenj

+0

मार्क, मैं यह जवाब पढ़ रहा था और मैंने सोचा, "मैंने देखा है कि पहले किया गया है।" तब मैंने आपका नाम देखा, मुझे एहसास हुआ कि हमने साथ काम किया था। – Nosredna

0

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

2

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

यह असंभव होने के बिंदु पर एक विनिर्माण लाइन पर अधिक महंगा और समय लेने वाला है।

जितना संभव हो सके उतना अधिक जानकारी उपलब्ध होने पर पहली बार गलत बात नहीं होती है, लेकिन यह टोयोटा के रूप में मेरे लिए उतना महत्वपूर्ण नहीं है जितना मेरे लिए महत्वपूर्ण नहीं है।

0

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

0

इस बात को मुझे Google Video पर "समय में पीछे हटाना" के बारे में याद दिलाता है। मैं शायद ही कभी (कभी भी) डिबगर्स का उपयोग नहीं करता (और जोकुलर स्पीकर खड़ा नहीं हो सकता) इसलिए मैंने बात छोड़ दी। शायद यह आपके लिए दिलचस्प है?