रिलेटिव कॉस्ट एफिशिएंसी ऑफ (स्वीकार्यता) टेस्ट ड्रिवेन डेवलपमेंट


15

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

यहाँ छवि विवरण दर्ज करें

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

ग्राहक से और अधिक प्रयास की आवश्यकता है? क्या उन्हें परियोजना से संबंधित तरीके को बदलना होगा, खासकर यदि वे बड़े डिजाइन के लिए उपयोग किए जाते हैं? क्या समग्र रूप से ग्राहक को आवश्यक घंटों की संख्या में वृद्धि होती है, या क्या यह वास्तव में घटता है?

मुझे लगता है कि समय का अनुमान एक TDD परियोजना की शुरुआत में (एक सॉफ्टवेयर विकास योजना नहीं है) की शुरुआत में एक पुनरावृत्त TDD प्रक्रिया में बहुत अस्पष्ट हो जाएगा। क्या एक बिंदु, कहते हैं, एक परियोजना में 20%, जहां आत्मविश्वास पर्याप्त बढ़ जाता है कि ग्राहक को अधिक या कम स्थिर समय और धन का अनुमान अंततः प्रदान किया जा सकता है?

नोट: मैं यहाँ व्यक्तिपरक राय या सिद्धांतों की तलाश नहीं कर रहा हूँ, इसलिए कृपया अटकलें न लगाएं। मैं TDD में वास्तविक दुनिया के अनुभव के लिए और अधिक देख रहा हूँ।


मुझे यकीन है कि कोई वास्तविक दुनिया डेटा नहीं है। आप केवल व्यक्तिपरक राय और सिद्धांतों को प्राप्त करते हैं जो कि pepeple के वास्तविक दुनिया के अनुभव पर आधारित है।
युफोरिक

1
@ यूफोरिक: मैं वास्तविक दुनिया के अनुभव के आधार पर वस्तुनिष्ठ टिप्पणियों और वास्तविकताओं की तलाश कर रहा हूं। क्षमा करें, मैंने यह स्पष्ट नहीं किया। हालाँकि, मुझे हार्ड नंबरों की आवश्यकता नहीं है; मैं इस तरह के सामान्य इंप्रेशन को स्वीकार करूंगा: "जबकि हमारा विकास समय काफी बढ़ गया था, हमारी रखरखाव लागत कम हो गई क्योंकि सॉफ्टवेयर अधिक विश्वसनीय था और ग्राहक सॉफ्टवेयर को बेहतर समझ रहे थे क्योंकि उन्होंने विकास के प्रयास में पूरे डिजाइन में भाग लिया था।"
रॉबर्ट हार्वे

2
तो, क्या यह एक राय आधारित प्रश्न है? यह निश्चित रूप से एक जैसा लगता है
B soundsовић


@ B @овиЈ: मेरे प्रश्न निकाय में अंतिम पैराग्राफ देखें।
रॉबर्ट हार्वे

जवाबों:


11

पहली बात जो बताई जानी चाहिए, वह यह है कि टीडीडी सॉफ्टवेयर की गुणवत्ता (उपयोगकर्ता की दृष्टि से) जरूरी नहीं बढ़ाता है। यह चांदी की गोली नहीं है। यह रामबाण नहीं है। बग की संख्या कम करना हम TDD क्यों नहीं करते हैं।

टीडीडी मुख्य रूप से किया जाता है क्योंकि इससे बेहतर कोड होता है। विशेष रूप से, TDD कोड में परिणाम होता है जो बदलना आसान है

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

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

अच्छी इकाई परीक्षण निम्नलिखित लाभ देते हैं:

  1. यूनिट परीक्षण अनजाने दुष्प्रभावों के डेवलपर्स को चेतावनी देते हैं।
  2. यूनिट परीक्षण पुरानी, ​​परिपक्व प्रणालियों पर नई कार्यक्षमता के तेजी से विकास के लिए अनुमति देते हैं।
  3. यूनिट परीक्षण नए डेवलपर्स को कोड की तेज और अधिक सटीक समझ देता है।

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

संक्षेपित करते हुए:

संस्करण 1 पर विकास धीमा हो सकता है। संस्करण 2-10 पर विकास तेजी से होगा।


1
मुझे "बेहतर कोड" का स्पष्ट रूप से उपयोग करना पसंद है, जो "सॉफ़्टवेयर की गुणवत्ता" को बढ़ाने से अलग है, यानी कोड में प्रोग्रामर के मूल्य जो आवश्यक हैं, वह जरूरी नहीं है कि वह वही करे जो ग्राहक चाहता है।

1
आवश्यकताओं को स्पष्ट करने के लिए सामने स्वीकार्यता परीक्षण और इकाई परीक्षण नहीं हैं?
रॉबर्ट हार्वे

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

1
मुझे स्पष्ट करना चाहिए, हम यहाँ TDD के बारे में बात कर रहे हैं, न कि कोई SCRUM कार्यान्वयन जो TDD को शामिल करता है। अलगाव में, TDD सभी परीक्षण लिखने के बारे में है ताकि आप बेहतर कोड लिख सकें और बाद में तेजी से और अधिक सुरक्षित रूप से रिफ्लेक्टर कर सकें।
स्टीफन

1
@ स्टीफन: शायद मुझे यह स्पष्ट करना चाहिए था कि मैं TDD के स्वाद के बारे में बात कर रहा हूं जो आवश्यकताओं को इकट्ठा करने की प्रक्रिया के हिस्से के रूप में स्वीकृति परीक्षणों को शामिल करता है। मैंने प्रश्न को स्पष्ट करने के लिए एक ग्राफिक जोड़ा है।
रॉबर्ट हार्वे

6

टेस्ट-ड्रिवेन डेवलपमेंट के बारे में सॉफ्टवेयर बनाने में एक अध्याय है , जो यहां चर्चा किए गए पेपर का हवाला देता है

केस की पढ़ाई माइक्रोसॉफ्ट में तीन और एक आईबीएम में विकास टीमों के साथ की गई जिन्होंने टीडीडी को अपनाया। केस स्टडीज के परिणामों से संकेत मिलता है कि चार उत्पादों की पूर्व-रिलीज़ दोष घनत्व 40% और 90% के बीच समान परियोजनाओं के सापेक्ष घट गई जो टीडीडी अभ्यास का उपयोग नहीं करते थे। विशेष रूप से, टीमों ने TDD को अपनाने के बाद प्रारंभिक विकास समय में 15–35% वृद्धि का अनुभव किया।

क्या ये परिणाम आपके मामले के लिए सामान्य हैं, ज़ाहिर है, TDD के समर्थकों का तर्क स्पष्ट है और TDD के विरोधियों का तर्क असत्य होगा।


4
उस अध्ययन के साथ समस्या यह है कि उन्होंने TDD को अपनाने से पहले कोड का परीक्षण नहीं किया। टीडीडी एक जादूई उपकरण नहीं है जो केवल इसे अपनाकर दोषों की संख्या में
40-90

1
@ B magicовиЈ मुझे नहीं लगता कि वे उस कागज में कहीं भी "जादू" का दावा करते हैं। उनका दावा है कि कुछ टीमों ने टीडीडी को अपनाया, कुछ टीमों ने ऐसा नहीं किया, उन्हें "समान" काम दिया गया और कुछ दोष घनत्व और विकास समय दर्ज किए गए। यदि उन्होंने गैर-टीडीडी टीमों को इकाई परीक्षण लिखने के लिए वैसे भी मजबूर किया था ताकि सभी के पास इकाई परीक्षण हों, तो यह पारिस्थितिक रूप से मान्य अध्ययन नहीं होगा।

एक पारिस्थितिक रूप से मान्य अध्ययन? Sorta आप क्या माप रहे हैं पर निर्भर करता है। यदि आप यह जानना चाहते हैं कि क्या आपके परीक्षणों को सामने वाले को लिखना है, तो सभी को केवल टीडीडी समूह नहीं, बल्कि इकाई परीक्षण लिखना होगा।
रॉबर्ट हार्वे

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

2
सौभाग्य से मैंने नहीं कहा कि वे थे।

5

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

विशेष रूप से, यह है कि प्रोजेक्ट टाइमलाइन का उपयोग कैसे किया जाता है (और अभी भी एक ही संगठन में अन्य टीमों / उत्पादों पर खेलते हैं):

  • विश्लेषण और कार्यान्वयन के 4 सप्ताह तक
  • प्रतिगमन परीक्षण, बग फिक्सिंग, स्थिरीकरण और रिलीज प्रीप के 2 सप्ताह
  • ज्ञात दोषों को ठीक करने के 1-2 सप्ताह
  • कोड सफाई और उत्पादन के बाद के मुद्दों / समर्थन (अज्ञात दोष / अनियोजित आउटेज) के 2-3 सप्ताह

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

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

इसके विपरीत, उस प्रारंभिक रिलीज के बाद से हर रिलीज में प्रारंभिक स्वीकृति मानदंड और स्वीकृति परीक्षण होते हैं, और हमारे वर्तमान पुनरावृत्तियों इस तरह दिखते हैं:

  • विश्लेषण और कार्यान्वयन के 8 दिन
  • स्थिरीकरण के 2 दिन
  • उत्पादन के बाद समर्थन और सफाई के 0-2 संयुक्त दिन

दूसरे शब्दों में, हमने 55-65% रखरखाव ओवरहेड से 20-30% रखरखाव ओवरहेड तक प्रगति की। एक ही टीम, एक ही उत्पाद, मुख्य अंतर प्रगतिशील सुधार और हमारे स्वीकृति परीक्षणों को व्यवस्थित बनाने में है।

उन्हें बनाए रखने की लागत, प्रति स्प्रिंट, एक क्यूए विश्लेषक के लिए 3-5 दिन और एक डेवलपर के लिए 1-2 दिन है। हमारी टीम में 4 डेवलपर्स और 2 क्यूए विश्लेषक हैं, इसलिए (यूएक्स, प्रोजेक्ट मैनेजमेंट आदि की गिनती नहीं), जो कि 60 में से अधिकतम 7 मानव-दिन हैं, जिन्हें मैं सिर्फ 15% कार्यान्वयन ओवरहेड तक ले जाऊंगा सुरक्षित पक्ष।

हम प्रत्येक स्वीकृति अवधि का 15% स्वचालित स्वीकृति परीक्षणों को विकसित करने में खर्च करते हैं, और इस प्रक्रिया में प्रत्येक रिलीज़ के 70% को प्रतिगमन परीक्षण करने और पूर्व-उत्पादन और पोस्ट-प्रोडक्शन बग को ठीक करने में सक्षम होते हैं।

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

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

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

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

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

PS हमारे मामले में, "ग्राहक" से कोई अतिरिक्त प्रयास की आवश्यकता नहीं है, लेकिन हमारे पास एक समर्पित, पूर्णकालिक उत्पाद स्वामी है जो वास्तव में स्वीकृति मानदंड लिखता है। यदि आप "कंसल्टिंग" व्यवसाय में हैं, तो मुझे संदेह है कि उपयोगी स्वीकृति मानदंड लिखने के लिए अंतिम उपयोगकर्ताओं को प्राप्त करना अधिक कठिन हो सकता है। एक उत्पाद स्वामी / उत्पाद प्रबंधक ATDD करने के लिए एक बहुत ही आवश्यक तत्व की तरह लगता है और हालाँकि मैं एक बार फिर से केवल अपने अनुभव से बोल सकता हूँ, मैंने कभी भी ATDD के बारे में नहीं सुना है कि उस भूमिका को पूरा करने के लिए किसी के बिना सफलतापूर्वक अभ्यास किया जाए।


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

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

1

संसाधन की आवश्यकताएं

आपके अनुभव में, टीडीडी के तहत एक सॉफ्टवेयर परियोजना को पूरा करने के लिए संसाधन आवश्यकताओं पर समग्र प्रभाव है, जैसा कि अधिक "पारंपरिक" विकास विधियों के विपरीत है?

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

  • बड़े रिफ्लेक्टर
  • मंच / पैकेज उन्नयन
  • मंच प्रवास
  • टूलचैन अपग्रेड

यह एक ऐसी टीम मान रहा है जो इस प्रक्रिया से जुड़ी और प्रथाओं से परिचित है।

ग्राहक की भागीदारी

ग्राहक से और अधिक प्रयास की आवश्यकता है?

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

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

परियोजना का अनुमान

मुझे लगता है कि समय का अनुमान एक TDD परियोजना की शुरुआत में (एक सॉफ्टवेयर विकास योजना नहीं है) की शुरुआत में एक पुनरावृत्त TDD प्रक्रिया में बहुत अस्पष्ट हो जाएगा।

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

उदाहरण के लिए:

मेरी टीम के "स्प्रिंट" एक सप्ताह लंबे हैं और हमारे पास एक औसत और एसटीडी है। पिछले 14 सप्ताह का विचलन। यदि परियोजना 120 अंक की है, तो हमारे पास 25 और एसटीडी का मतलब है। 6 का विचलन तब एक परियोजना के पूरा होने का अनुमान है:

Project Total / (Mean Velocity - (2 * Std. Deviation) = 95% Time Estimate
120           / (25            - (2 * 6             ) = 9.2 weeks

हम 2 एसटीडी का उपयोग करते हैं। हमारे 95% विश्वास अनुमान के लिए अंगूठे का विचलन नियम। व्यवहार में हम आम तौर पर पहली कक्षा के तहत परियोजना को पूरा करते हैं। विचलन, लेकिन हमारे मतलब पर। यह आमतौर पर शोधन, परिवर्तन आदि के कारण होता है।


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

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

-1

सामने के परीक्षणों की आवश्यकता होती है, ऐसा लगता है कि इसे पूरा करने के लिए अधिक डेवलपर घंटे की आवश्यकता होगी। विकास के प्रयासों में कितना वृद्धि होती है, या बग्स के अप-फ्रंट उन्मूलन के कारण वास्तव में घट जाती है?

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

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

ग्राहक से और अधिक प्रयास की आवश्यकता है? क्या उन्हें परियोजना से संबंधित तरीके को बदलना होगा, खासकर यदि वे बड़े डिजाइन के लिए उपयोग किए जाते हैं? क्या समग्र रूप से ग्राहक को आवश्यक घंटों की संख्या में वृद्धि होती है, या क्या यह वास्तव में घटता है?

यह बात नहीं होनी चाहिए। आवश्यकताओं को जो भी करना चाहिए वह जितना संभव हो उतना अच्छा करना चाहिए।

यदि आप विकास के चुस्त तरीके से करते हैं, तो इसका मतलब बड़ा डिजाइन सामने नहीं है। लेकिन, बेहतर आवश्यकताओं, वास्तुकला और डिजाइन किया जाता है - कोड की गुणवत्ता में वृद्धि होगी, और सॉफ्टवेयर को खत्म करने का समय घट जाएगा।

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


1
जैसा कि मैं इसे समझता हूं, टीडीडी और बीडीयूएफ आम तौर पर एक दूसरे के साथ संगत नहीं हैं।
रॉबर्ट हार्वे

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

@RobertHarvey राइट, लेकिन अगर वे BDUF करना चाहते हैं - यह उनकी पसंद है। यदि आप वास्तव में चुस्त हैं, तो आप उनके डिजाइन में सुधार करने के लिए स्वतंत्र हैं, और अभी भी टीडीडी करते हैं।
B40ови।

इसलिए आप कहते हैं कि यदि मैं इकाई परीक्षण लिखता हूं तो मेरा कोड पूरी तरह से परीक्षण किया जाएगा और यदि सभी परीक्षण पास होते हैं, तो इसका मतलब है कि सॉफ्टवेयर बग मुक्त है (या कम से कम बेहतर)। तो मुझे बस अपने सॉफ्टवेयर के हर तरीके का परीक्षण करने की आवश्यकता है जैसे "फ़ंक्शन testSqr () {int a = 3; assertTrue (mySqr (a) == 9);} mySqr (int a) {return 9?}" फ़ंक्शन करें
Dainius

@Dainius नहीं, फिर से पढ़ें। 100% कोड कवरेज बग मुक्त नहीं है। हां, आपको हर विधि का परीक्षण करने की आवश्यकता है। बेशक, यूनिट टेस्टिंग डेटा बेस एक्सेस, GUI, आदि का कोई मतलब नहीं है। यूनिट परीक्षण उन लोगों के लिए नहीं हैं।
B:овиЈ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.