सॉफ्टवेयर विकास के वृद्धिशील और पुनरावृत्ति दृष्टिकोण के बीच अंतर क्या है?


17

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

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

ऐसा लगता है कि दोनों विधियाँ सिस्टम का एक हिस्सा बनाने के बारे में हैं, सभी परीक्षण मामलों को पारित करने के लिए इसे परिष्कृत करते हुए, सिस्टम के एक अन्य घटक को जोड़ते हुए और इसे फिर से परिष्कृत करते हुए, ये दोहराया जाता है कि सिस्टम समाप्त हो गया है।

डिजाइनिंग सॉफ्टवेयर के इन दो तरीकों के बीच वास्तविक अंतर क्या है

पुनरावृति और वृद्धिशील डिजाइन दृष्टिकोण बनाने के लिए इन दो तरीकों को कैसे जोड़ना संभव है

जवाबों:


13

वृद्धिशील दृष्टिकोण कदम का एक सेट संख्या का उपयोग करता है और विकास प्रगति की एक रेखीय पथ में शुरू से लेकर अंत हो जाता है।

वृद्धिशील विकास डिजाइन, कार्यान्वयन, परीक्षण / सत्यापन, रखरखाव से चरणों में किया जाता है। इन्हें उप-चरणों में तोड़ा जा सकता है लेकिन अधिकांश वृद्धिशील मॉडल उसी पैटर्न का अनुसरण करते हैं। झरना मॉडल एक पारंपरिक वृद्धिशील विकास दृष्टिकोण है।

Iterative दृष्टिकोण कदम की कोई निर्धारित संख्या है, बल्कि विकास चक्र में किया जाता है।

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


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

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

tl; dr - यदि आप इंक्रीमेंटल मॉडल के तहत एक निबंध लिख रहे थे, तो आप उस समय एक वाक्य को पूरा करने के लिए शुरू से ही इसे पूरी तरह से लिखने का प्रयास करेंगे। यदि आपने इसे Iterative मॉडल के तहत लिखा है, तो आप एक त्वरित मोटा मसौदा तैयार करेंगे और इसे संशोधन चरणों के सेट के माध्यम से सुधारने का काम करेंगे।


अपडेट करें:

मैंने अधिक व्यावहारिक उदाहरण के लिए 'वृद्धिशील दृष्टिकोण' के लिए अपनी परिभाषा को संशोधित किया।

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

चरण निम्नानुसार हैं:

  • अनुबंध प्रदान किया गया
  • प्रारंभिक डिजाइन की समीक्षा
  • महत्वपूर्ण डिजाइन की समीक्षा
  • विशिष्टता फ्रीज
  • विकास
  • फील्डिंग / एकता
  • सत्यापन
  • विश्वसनीयता परीक्षण

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

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

वृद्धी समय / संसाधनों को कोड के विनिर्देशन के रूप में मान कर व्यर्थ समय / संसाधनों का प्रयास करता है। कई संशोधन चरणों के माध्यम से कागजी कल्पना चलाने के बजाय, कोड स्वयं संशोधन के कई चक्रों से गुजरता है।


अच्छा उदाहरण के लिए +1, हालांकि वृद्धिशील वर्णन मेरे लिए गलत लगता है
बसिलेव्स

@ बैसिलव्स क्या यह बेहतर है?
इवान प्लाइस

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

0

किसी भी विशेषण के साथ, और सॉफ्टवेयर विकास में अधिकांश चीजें ... यह निर्भर करता है!

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

तो सॉफ्टवेयर विकास के लिए एक दृष्टिकोण के रूप में विशेष रूप से जवाब दे ..

सवाल गलत है। यह एक या दूसरे का नहीं है। आप उन्हें सीधे तुलना नहीं कर सकते क्योंकि वे प्रक्रिया के विभिन्न भागों को संदर्भित करते हैं।

Iterative सॉफ्टवेयर का विकास इसकी प्रकृति वृद्धिशीलता द्वारा होता है। वृद्धिशील सॉफ्टवेयर विकास को पुनरावृत्त होना जरूरी नहीं है।

एक वृद्धि एक छोटी सी चाल है, उम्मीद है कि आगे। यह उस कार्य के प्रत्येक चरण का संदर्भ देने का एक तरीका है जो किया जाता है।

एक चलना काम का एक चक्र है।

इसलिए, एक पुनरावृत्ति का उपयोग उस समग्र विकास चक्र को संदर्भित करता है। वेतन वृद्धि कार्य के प्रत्येक व्यक्तिगत चरण को संदर्भित करता है। एक पुनरावृत्ति एक वृद्धि का उत्पादन करेगा, जो एक या एक से अधिक वास्तविक वेतन वृद्धि सॉफ्टवेयर (आमतौर पर अधिक) से बना है।

निष्कर्ष के तौर पर...

Iterative सॉफ्टवेयर डेवलपमेंट एक विशेष प्रकार का सॉफ्टवेयर डेवलपमेंट है, जो परंपरागत जलप्रपात दृष्टिकोण के विपरीत पुनरावृत्तियों में काम करता है। स्क्रम एक अच्छा उदाहरण है।

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

और अंत में, निश्चित रूप से, यह निर्भर करता है कि शब्द का उपयोग कब किया जाता है, जो अक्सर स्पीकर, महीने के समय आदि के हिसाब से काफी भिन्न होता है!

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

उम्मीद है की यह मदद करेगा।

यह लेख उदाहरणों के साथ इसका अच्छी तरह से वर्णन करता है।

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