उपयोगकर्ता की कहानी बनाम आवश्यकता


33

उपयोगकर्ता कहानी कैप्चर करती है कि उपयोगकर्ता उच्च स्तर पर सिस्टम के साथ क्या करना चाहता है। मैं समझता हूं कि उपयोगकर्ता कहानी कई निम्न स्तर की आवश्यकताओं को आगे बढ़ाएगी। क्या उपयोगकर्ता कहानी सिस्टम के लिए उच्च स्तर की आवश्यकता के समान है?


"उपयोगकर्ता कहानी कैप्चर करती है कि उपयोगकर्ता उच्च स्तर पर सिस्टम के साथ क्या करना चाहता है"। मैं इसे विवादास्पद मानता हूं। यदि आप उच्च स्तर को फीचर स्तर के साथ प्रतिस्थापित करते हैं तो मैं स्वयं को सहमत पाता हूँ ।
8bitjunkie

जवाबों:


52

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

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

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

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

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

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


सभी उत्तरों ने मेरी समझ में मदद की, सभी को सही के रूप में चिह्नित करना चाहते थे :)
पुंटर विक्की

5
मैं असहमत हूं: आवश्यकताओं को इस बात पर ध्यान केंद्रित किया जाता है कि उपयोगकर्ता सिस्टम के साथ कैसे बातचीत करता है, व्हाट्सएप के उद्देश्य क्या हैं। वे पूरी तरह से अलग चीजें हैं।
स्केलीवेज़

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

1
@ शहज़ोल: अब बस मूर्खतापूर्ण है। कार्य कर रहे हैं जिस तरह से भी कार्यात्मक जरूरतों के रूप में किसी काम के होने के लिए दानेदार। कार्य अक्सर उच्च तकनीकी स्तरों पर कहे जाते हैं जैसे "जिबरलर लाइब्रेरी का उपयोग करके एक फ्रिंजल पार्सर को लागू करना"। हो सकता है कि आप थोड़े-थोड़े स्पेसिफिकेशंस जैसे थोड़े-थोड़े काम के लिए कोई केस कर सकते हों , लेकिन वे आवश्यकताओं के बाद आते हैं। उपयोगकर्ता कहानियां स्वीकृति मानदंड के साथ आने वाली हैं - वे वाटरफॉल / आरयूपी प्रकार के मॉडल में उपयोग की जाने वाली विस्तृत कार्यात्मक आवश्यकताओं की तरह हैं।
हारून

2
@Sklivvz: "क्या" आम तौर पर उपयोगकर्ता और सिस्टम के बीच एक अंतःक्रिया है। "मैं जवाबों पर कुल वोटों को देखने में सक्षम होना चाहता हूं" एक उपयोगकर्ता कहानी के मध्य भाग का एक विशिष्ट उदाहरण है, और एक कार्यात्मक आवश्यकता के लिए लगभग पहचाना जाता है ("उपयोगकर्ता को जवाबों पर कुल वोट देखने में सक्षम होना चाहिए") । "कौन" और "क्यों" एकमात्र भाग हैं जो ओस्टेंसिक रूप से अलग हैं, और उपयोगकर्ता की कहानियों के अलावा अन्य कई ट्रैकिंग सिस्टम / कार्यप्रणाली अपेक्षा करते हैं कि उन्हें भी प्रदान किया जाए।
Aaronaught

16

रॉन जेफ्रीस ने बहुत पहले एक उपयोगकर्ता की कहानियों के 3 सी के बारे में लिखा था ( http://xprogramming.com/articles/expcardconversationconfirmation/ ) एक कार्ड पर जोर देने के साथ (संक्षिप्त विवरण), एक ग्राहक की कहानी के बाद ग्राहकों और डिलीवरी टीम के बीच बातचीत कार्रवाई योग्य हो जाता है, और उस बातचीत के बाद एक कहानी की सहमति की पुष्टि होती है।

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

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

आप c2 विकि पर उपयोगकर्ता कहानियों के बारे में ज्ञान की एक सोने की डली पा सकते हैं ( http://xp.c2.com/UserStar.html )


7

उपयोगकर्ता की कहानियां और आवश्यकताएं बहुत अलग जानवर हैं।

आवश्यकताएँ

आवश्यकताएँ मानती हैं कि एप्लिकेशन का डिज़ाइन पहले से किया गया है, और यह विकास उस डिज़ाइन का कार्यान्वयन है। आवश्यकताएँ इसलिए ध्यान केंद्रित करती हैं कि कैसे कार्यक्षमता को लागू किया जाए।

आवश्यकता का उदाहरण:

  • निम्नलिखित फ़ील्ड के साथ उपयोगकर्ता संपर्क फ़ॉर्म बनाएँ: नाम, उपनाम, ईमेल, नि: शुल्क पाठ और सबमिट बटन। जब सबमिट बटन दबाया जाता है, तो हमारी सहायता टीम को एक ईमेल भेजा जाता है।

प्रयोक्ता कहानियां

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

एक कहानी का उदाहरण:

  • जिमी उपयोगकर्ता के रूप में मैं आपकी सहायता टीम से संपर्क करना चाहता हूं जब मैं साइट का ठीक से उपयोग नहीं कर सकता हूं ताकि वे मेरी मदद कर सकें।

अंतर क्या है?

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

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

अवसर की लागत

यदि आवश्यकता में छिपी हुई धारणाएं हैं, तो इसे प्राप्त करना बहुत कठिन हो सकता है। उदाहरण के लिए: क्या कोई मेल सर्वर उपलब्ध है? यदि नहीं, तो आवश्यकता को विकसित होने में अधिक समय लग सकता है। कुछ अन्य मामलों में डिजाइन के कारण एक ही लक्ष्य प्राप्त करने का एक सरल तरीका याद किया जा सकता है।

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

चपलता

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

यह हमें कहानियों और आवश्यकताओं के बीच एक और विशाल अंतर की ओर ले जाता है जो पदानुक्रम है । जैसा कि मैंने ऊपर उदाहरण दिया है, आवश्यकताओं को अपने स्वभाव से, कुछ प्राकृतिक पदानुक्रम में आदेश दिया जाना चाहिए ताकि निर्भरता पूरी हो। दूसरी ओर, कहानियाँ उद्देश्य पर ध्यान केंद्रित करती हैं और ऐसी कोई अड़चन नहीं होती है।

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


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

2
मुझे पूरा यकीन है कि मैंने उन्हें गलत नहीं समझा।
स्किलिविज

1
उदाहरण के लिए देखें: en.wikipedia.org/wiki/Requirement और en.wikipedia.org/wiki/User_story#Benefits
Sklivvz

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

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

6

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

ज़रूर, आप सेलेनियम सत्यापित कर सकते हैं कि कुछ नोड्स HTML में मौजूद हैं या स्क्रीन शॉट ले रहे हैं, या सत्यापित करें कि कुछ पिक्सेल हैं जहाँ आप आशा करते हैं कि वे हैं। लेकिन अगर भ्रामक पाठ है, या यह स्पष्ट नहीं है कि उपयोगकर्ता को सिस्टम का उपयोग कैसे करना चाहिए या उपयोगकर्ता के लिए यह पता लगाना कठिन है कि अपने लक्ष्य को कैसे प्राप्त किया जाए, तो अचानक आपके पास पूर्ण प्रणाली नहीं है। सिस्टम का उपयोग करने के लिए अब प्रशिक्षण की आवश्यकता है। उपयोगकर्ता परिदृश्यों के खिलाफ पूर्ण प्रणाली की समीक्षा करना मैन्युअल परीक्षण का एक महत्वपूर्ण घटक है।

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

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

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


धन्यवाद ग्लेन! लेकिन उस मामले के लिए सिस्टम या समाधान अज्ञेय की आवश्यकता या उपयोगकर्ता की कहानी नहीं होनी चाहिए? यह एक और सवाल है जो मैं एक उपयोगकर्ता की कहानी / आवश्यकता बनाते समय विचार करता रहता हूं, लेकिन कई मामलों में सफलतापूर्वक ऐसा करने में सक्षम नहीं हुआ
पंटर विक्की

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

3

एक Google खोज के दौरान इस पर ठोकर खाई और मुझे लगा कि मैं अपनी राय अंदर फेंक दूंगा।

आवश्यकता और उपयोगकर्ता कहानी के बीच वास्तव में कोई अंतर नहीं है। दोनों उपयोगकर्ता के दृष्टिकोण से वांछित परिणाम या लक्ष्य बता रहे हैं।

एकमात्र अंतर यह है कि यह लक्ष्य या परिणाम एक व्यापार विश्लेषक द्वारा कब्जा कर लिया गया है। इस मामले में यह शब्दांकन में है।

उदाहरण:

एक टीम लीड के रूप में मैं यह देखना चाहता हूं कि मेरी कौन सी टीम बंधक मामलों पर काम कर रही है ताकि मैं उनके प्रदर्शन पर नजर रख सकूं।

समाधान बंधक मामलों पर काम करने वाले टीम के सदस्यों को प्रदर्शित करेगा।

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

आवश्यकताएं अक्सर यह धारणा बनाती हैं कि हम समाधान के बारे में कुछ भी नहीं जानते हैं बस वांछित परिणाम हैं। हां यह सब कुछ समाधान को अज्ञेय बनाता है लेकिन क्या यह वास्तव में विकास चक्र में हमारी मदद करता है? अगर हम किसी चीज को जल्दी परिभाषित कर सकते हैं तो वह क्यों नहीं?

सभी में हालांकि मैं उपयोगकर्ता कहानियों और आवश्यकताओं के अंतर के बारे में चिंता नहीं करता। अंततः आप समाधान विकसित करने के लिए for.someone के लिए पर्याप्त जानकारी को परिभाषित करना चाहते हैं। एक उपयोगकर्ता कहानी जो बहुत उच्च स्तर की है, उसे बस वापस खटखटाया जाएगा और छोटी उपयोगकर्ता कहानियों में टूट जाने का अनुरोध किया जाएगा। "सिस्टम" की शैली के समान ही होगा। यदि संभवत: इसका पर्याप्त विस्तार न होने पर इसे अस्पष्ट भी माना जाएगा।

अंत में अपने डेवलपर्स और हितधारकों को उस से देखना और काम करना पसंद है।


3

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

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

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

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


2

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

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

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

मेरी अपनी टीम में, हम निम्नलिखित का उपयोग करते हैं:

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

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

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

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


2

मेरा मानना ​​है कि हर कोई पिछले अनुभव के आधार पर हर चीज को अलग-अलग तरीके से लागू करेगा और लेबल करेगा और जो भी कंपनी उस काम के लिए काम करेगी, वह बहस करने लायक नहीं है।

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

एक उदाहरण उपयोगकर्ता कहानी हो सकती है:

एक व्यवस्थापक उपयोगकर्ता के रूप में मैं अपने ग्राहकों के डेटा को ग्रिड में सूचीबद्ध देखना चाहता हूं

और एक "कार्य" हो सकता है:

  1. एक ग्रिड बनाएं जो प्रदर्शित किए जाने वाले डेटा को सूचीबद्ध करता है

  2. ग्रिड पर सॉर्टिंग सक्षम करें जो चयनित कॉलम को छांटेगा

अब प्रत्येक कार्य अनुमानित है और उसके संबंधित स्प्रिंट में पूरा किया गया है।

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

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

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

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

और मुझे विश्वास है कि इन दिनों शर्तें सभी मिश्रित और मिलनसार हैं .. जो बिल्कुल भी मायने नहीं रखता है


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

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

@Aaronaught - आप बिल्कुल सही हैं .. हालाँकि, एजाइल XP कार्यप्रणाली से उपजा है और आपके द्वारा बताई गई प्रक्रिया दोनों दुनिया के सर्वश्रेष्ठ में से एक हाइब्रिड उधार है .. एक हाथ से, आपके पास "प्रलेखन-प्रकाश" है और दूसरी तरफ आपके पास "प्रलेखन-भारी" है। ढूँढना संतुलन अपनी प्रक्रिया को परिभाषित कंपनी द्वारा निर्धारित किया जाएगा ..
hanzolo

@ssbrewster - मैं भी आपसे सहमत हूँ। प्रत्येक कार्यप्रणाली, जलप्रपात और फुर्तीली के शुद्ध रूप में, एक को लिखित आवश्यकताओं के दस्तावेज़ीकरण और सत्यापन की आवश्यकता होगी, दूसरे को बहुत कम आवश्यकता होगी यदि कोई दस्तावेज़ीकरण और विकास प्रयासों का सत्यापन।
हेंजोलो

1
@ssbrewster यह सिर्फ विवश करने की गुंजाइश के बारे में नहीं है, यह कहने में सक्षम होने के बारे में है कि कोई कहानी वास्तव में कब की जाती है। यदि आप व्यवसाय से कुछ हाथ लहराए बिना उस निर्णय को नहीं कर सकते हैं, तो आपके पास लगातार गुणवत्ता के उत्पादों को बाहर करने, या वेग जैसी चीजों को सटीक रूप से मापने का कोई मौका नहीं है। हम स्वीकृति परीक्षणों में प्रलेखित होने के लिए स्वीकृति मानदंड पसंद करते हैं - लेकिन वे अभी भी नीचे लिखे गए हैं
हारून
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.