2008-09-29 15 views
5

से संबंधित दो प्रश्न मेरे पास स्क्रम के संबंध में दो संबंधित प्रश्न हैं।स्क्रम

हमारी कंपनी इसे लागू करने की कोशिश कर रही है और सुनिश्चित है कि हम हुप्स पर कूद रहे हैं।

दोनों प्रश्न हैं "किए गए साधन पूर्ण हो गए हैं!"

1) यह कार्य हैं जो/के लिए "पूर्ण" को परिभाषित करने के वास्तव में आसान है है - स्पष्ट परीक्षण स्वीकृति criterias - पूरी तरह से स्टैंडअलोन - परीक्षकों

द्वारा अंत में परीक्षण किया

क्या करने जैसे कार्यों के साथ किया जाना चाहिए: - वास्तुकला डिजाइन - पुनर्रचना - कुछ उपयोगिता वर्गों विकास

इसके साथ मुख्य मुद्दा यह है कि यह लगभग पूरी तरह से आंतरिक इकाई है और वहाँ जाँच/बाहर से यह परीक्षण करने के लिए कोई रास्ता नहीं है।

उदाहरण के रूप में सुविधा कार्यान्वयन बाइनरी की तरह है - यह किया गया है (और सभी परीक्षण मामलों को पास करता है) या यह नहीं किया गया है (कुछ परीक्षण मामलों को पास न करें)।

मेरे सिर पर सबसे अच्छी बात यह है कि एक और डेवलपर से उस कार्य की समीक्षा करने के लिए कहें। हालांकि, यह किसी भी तरह से निर्धारित करने का स्पष्ट तरीका प्रदान नहीं करता है, यह पूरी तरह से किया जाता है या नहीं।

तो सवाल यह है कि आप इस तरह के आंतरिक कार्यों के लिए "पूर्ण" कैसे परिभाषित करते हैं?

2) डीबग/बग सुधार कार्य

मुझे पता है कि चुस्त कार्यप्रणाली बड़े कार्यों के लिए सिफारिश नहीं करता। यदि कार्य बड़ा है, तो कम से कम , इसे छोटे कार्यों पर विभाजित किया जाना चाहिए।

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

मुझे पता है कि आमतौर पर झरना मॉडल की समस्या है। हालांकि, मुझे लगता है कि इससे छुटकारा पाना मुश्किल है (विशेष रूप से काफी बड़े बदलावों के लिए)।

क्या मुझे डीबग/फिक्स/सिस्टम एकाग्रता और आदि के लिए विशेष कार्य आवंटित करना चाहिए?

यदि मैं ऐसा करता हूं, तो आमतौर पर यह कार्य की तुलना में बस इतना बड़ा है और इसे छोटे कार्यों पर विभाजित करना मुश्किल है।

मुझे इस विशाल मोनोलिथ कार्य के कारण इस तरह से पसंद नहीं है।

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

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

आप इस समस्या को कैसे हल करते हैं?

सादर, विक्टर

+4

मैं इस प्रश्न को ऑफ-विषय के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह प्रोग्रामिंग के बारे में नहीं है। –

उत्तर

4

पहले भाग के लिए "वास्तुकला डिजाइन - पुनर्रचना - कुछ उपयोगिता वर्गों विकास" ये कभी नहीं "किया" कर रहे हैं क्योंकि आप उनसे क्या के रूप में तुम जाओ। टुकड़ों में।

आप पहली रिलीज जाने के लिए बस पर्याप्त वास्तुकला करना चाहते हैं। फिर, अगली रिलीज के लिए, थोड़ा और वास्तुकला।

रिफैक्टरिंग यह है कि आप उपयोगिता कक्षाओं को कैसे ढूंढते हैं (आप उपयोगिता वर्ग बनाने के लिए सेट नहीं हैं - आप उन्हें रिफैक्टरिंग के दौरान खोजते हैं)।

रिफैक्टरिंग एक रिलीज से पहले, आवश्यकतानुसार, टुकड़ों में आप कुछ करते हैं। या कार्यक्षमता के एक बड़े टुकड़े के हिस्से के रूप में। या जब आपको एक परीक्षा लिखने में परेशानी होती है। या जब आपको पास करने के लिए परीक्षा प्राप्त करने में परेशानी होती है और "डीबग" की आवश्यकता होती है।

इन चीजों के छोटे टुकड़े परियोजना के जीवन के माध्यम से बार-बार किए जाते हैं। वे वास्तव में "उम्मीदवारों को छोड़ नहीं सकते" इसलिए वे केवल दौड़ (या स्पिंट्स के कुछ हिस्सों) हैं जो रिलीज होने की प्रक्रिया में किए जाते हैं।

+1

'आर्किटेक्चर, रीफैक्टरिंग, यूटिलिटी क्लासेस' ये कभी नहीं किए जाते हैं क्योंकि वे कभी भी स्पष्ट कार्य नहीं होते हैं - ये आपके कुछ अभ्यास/उपकरण हैं जिन्हें आप वास्तविक कार्य करने के लिए नियोजित करते हैं। अच्छा उत्तर! – quamrana

+1

ठीक है। उत्पाद जारी किया गया है। बड़े मॉड्यूल के साथ ऐसे मामले में क्या किया जाना चाहिए, जब बड़े मॉड्यूल को फिर से डिजाइन किया जाना चाहिए? –

0

"क्या मुझे डीबग/फिक्स/सिस्टम एकीकरण और आदि के लिए विशेष कार्य आवंटित करना चाहिए?"

वैसे ही आपने वाटरफॉल पद्धति के साथ ऐसा नहीं किया जहां वास्तव में कुछ भी नहीं हुआ।

याद रखें, आप बिल्डिंग और वृद्धिशील रूप से परीक्षण कर रहे हैं। प्रत्येक स्प्रिंट का परीक्षण और अलग से डिबग किया जाता है।

जब आप रिलीज़ उम्मीदवार के पास जाते हैं, तो आप उस रिलीज पर कुछ अतिरिक्त परीक्षण करना चाहेंगे। परीक्षण से बग की खोज होती है जो बैकलॉग की ओर जाता है। आम तौर पर यह उच्च प्राथमिकता वाले बैकलॉग है जिसे रिलीज से पहले तय किया जाना चाहिए।

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

रिलीज परीक्षण कितना बड़ा है? बहुत नहीं। आप पहले से ही प्रत्येक स्प्रिंट का परीक्षण कर चुके हैं ... बहुत अधिक आश्चर्य नहीं होना चाहिए।

+0

ठीक है। क्या हो रहा है अगर कुछ आधा नहीं किया जाता है (उदाहरण के लिए मॉड्यूल रीडिज़ाइन)? यह सिर्फ एक स्प्रिंट में फिट नहीं होगा। –

+0

नीचे देखें - ऐसा कुछ ढूंढना मुश्किल है जिसे प्रबंधित करने योग्य स्पिंट में नहीं टूटा जा सकता है। –

0

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

रिफैक्टरिंग भी उपयोगकर्ता की कहानी प्राप्त करने के संदर्भ में किया जाना चाहिए। "स्टोरीएक्टर क्लाइंट क्लास स्टोरी बी का समर्थन करने के लिए कई फोन नंबर सक्षम करने के लिए" कुछ ऐसा है जिसे ग्राहक वर्ग कई फोन नंबरों का समर्थन करता है।

+0

समझ गया (उपयोगकर्ता की कहानी के लिए डिजाइन के बारे में)। "जब आपने कहानी ए के लिए एक आर्किटेक्चर बनाया है, तो आप उस कार्य के साथ कर रहे हैं।" हालांकि, अगर इसे जांचने का कोई तरीका नहीं है, तो आप तुरंत "पूर्ण" कह सकते हैं। –

+0

"कहानी के साथ संपन्न" का अर्थ है "कहानी के साथ जगह में पर्याप्त वास्तुकला"। वास्तुकला कहानी कार्यान्वयन का समर्थन करता है। अब और नहीं। –

0

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

प्रत्येक स्प्रिंट कुछ ऐसा बनाता है जिसे रिलीज़ किया जा सकता है। शायद यह नहीं होगा, लेकिन यह हो सकता है।

तो, जब आपके पास बड़े रीडिज़ाइन होते हैं, तो आपको एक समय में हाथी को एक छोटा टुकड़ा खाना पड़ेगा। सबसे पहले, उच्चतम मूल्य देखें - सबसे महत्वपूर्ण - उन उपयोगकर्ताओं को सबसे बड़ी वापसी जो आप कर सकते हैं, कर सकते हैं, और रिलीज़ कर सकते हैं।

लेकिन - आप कहते हैं - ऐसा कोई छोटा टुकड़ा नहीं है; कुछ टुकड़े जारी किए जाने से पहले प्रत्येक टुकड़े को बड़े पैमाने पर फिर से डिजाइन की आवश्यकता होती है।

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

फिर आप अस्थायी इंटरफेस, पुल और गोंद को संशोधित करते हैं ताकि आप अगले स्प्रिंट को समाप्त कर सकें।

हां, आपने कुछ कोड जोड़ा है। लेकिन, आपने स्प्रिंट भी बनाए हैं जिन्हें आप परीक्षण और रिलीज़ कर सकते हैं। स्पिंट जो पूर्ण हैं और कोई भी उम्मीदवार रिलीज हो सकता है।

0

लगता है जैसे आप उपयोगकर्ता की कहानी और कार्य की परिभाषा को धुंधला कर रहे हैं। बस:

  • उपयोगकर्ता कहानियां मूल्य जोड़ें। वे उत्पाद निर्माता द्वारा बनाए गए हैं।

  • कार्य मान बनाने के लिए किए गए कार्य हैं। वे इंजीनियरों द्वारा बनाए गए हैं।

तुम कह वे स्पष्ट स्वीकृति मानदंडों होना आवश्यक है, वे स्टैंडअलोन रहे द्वारा उपयोगकर्ता कहानी के मुख्य भागों से किसी न किसी, और वे परीक्षण किया जा सकता।

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

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

0

हमने "पीछे के दृश्य" कोड के साथ समान मुद्दों में भाग लिया है। मेरा मतलब है "पीछे के दृश्य" से, कोई स्पष्ट या टेस्टेबल व्यावसायिक मूल्य नहीं है।

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

आमतौर पर स्क्रम के साथ, आप व्यवसाय कार्यक्षमता का एक टुकड़ा ढूंढ रहे होंगे जो "पूर्ण" निर्धारित करने के लिए कोड का एक टुकड़ा इस्तेमाल करता है।

0

रीफैक्टरिंग जैसे तकनीकी कार्यों के लिए, आप जांच सकते हैं कि रिफैक्टरिंग वास्तव में क्या किया गया था, उदाहरण के लिए एक्स एक्स में कोई भी f() विधि नहीं है, या कोई और foobar() फ़ंक्शन नहीं है।

टीम की ओर और टीम के अंदर भी भरोसा होना चाहिए। यदि कार्य वास्तव में किया जाता है तो आप समीक्षा क्यों करना चाहते हैं? क्या आपको ऐसी परिस्थितियों का सामना करना पड़ा जहां कोई दावा करता था कि कोई कार्य किया गया था, जवाब नहीं था?


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

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

यहां twenty ways to split a story हैं जो कई छोटे बैकलॉग आइटम रखने में मदद कर सकते हैं, वास्तव में अनुशंसित और सुरक्षित तरीका है।

संबंधित मुद्दे