आरोनोएट द्वारा पहले से ही एक उत्कृष्ट उत्तर है, लेकिन चूंकि अन्य उत्तर थे, अब हटा दिए गए, जो कि एक गैर-कार्यात्मक आवश्यकता के बारे में पूरी तरह से गलत थे, मुझे लगता है कि गलतियों के बारे में बचने के लिए कुछ स्पष्टीकरण जोड़ना उपयोगी होगा। गैर-कार्यात्मक आवश्यकता है
एक गैर-कार्यात्मक आवश्यकता "एक गुणवत्ता या संपत्ति है जो उत्पाद के पास होनी चाहिए" is । जेम्स टेलर बताता है कि एक गैर-कार्यात्मक आवश्यकता "[...] [फिर भी] एक आवश्यकता है, और यह ग्राहक के लिए महत्वपूर्ण है-कभी-कभी एक कार्यात्मक आवश्यकता से भी अधिक महत्वपूर्ण" । वह फिर दो उदाहरण देता है: उत्पाद का लोगो, और उपकरण की सटीकता और विश्वसनीयता। उन दोनों उदाहरणों से पता चलता है कि:
- गैर-कार्यात्मक आवश्यकताएं एक विपणन जिबर-जैबर नहीं हैं जैसे: "इंटरनेट आजकल महत्वपूर्ण है और हम एक वेबसाइट चाहते हैं"।
- गैर-कार्यात्मक आवश्यकताएं ग्राहकों को चिंतित करती हैं, क्योंकि वे अपनी उत्पादकता और उत्पाद का उपयोग करने की क्षमता को भारी रूप से प्रभावित कर सकते हैं।
- गैर-कार्यात्मक आवश्यकताएं पूरी तरह से उद्देश्यपूर्ण हैं।
अंतिम बिंदु आवश्यक है। यदि आवश्यकता व्यक्तिपरक है, तो आवश्यकताओं की सूची में इसका कोई लेना देना नहीं है। जो व्यक्तिपरक है, उससे सत्यापन परीक्षण करना असंभव होगा । आवश्यकताओं की सूची का एकमात्र उद्देश्य ग्राहक की गैर-अस्पष्ट अपेक्षाओं की गणना करना है। "मैं चाहता हूं कि यह वर्ग लाल हो" एक आवश्यकता है। "मैं चाहता हूं कि यह वर्ग एक अच्छा रंग हो" एक इच्छा है जिसे स्पष्टीकरण की आवश्यकता है।
याद रखें कि आवश्यकताओं की सूची एक अनुबंध की तरह है (और ज्यादातर मामलों में अनुबंध का एक हिस्सा है)। यह ग्राहक और विकास कंपनी द्वारा हस्ताक्षरित है, और मुकदमेबाजी के मामले में, यह कानूनी रूप से यह निर्धारित करने के लिए उपयोग किया जाएगा कि आपने अपना काम सही ढंग से किया है या नहीं। क्या होगा यदि मैं आपको एक सॉफ़्टवेयर उत्पाद ऑर्डर करता हूं, तो निर्दिष्ट करें कि "उत्पाद महान होना चाहिए", और उत्पाद के किए जाने पर भुगतान करने से इंकार कर दें, क्योंकि मेरे लिए, आपने जो वास्तव में किया है वह एक महान उत्पाद नहीं है ?
तो, आइए कुछ उदाहरण देखें।
1. सॉफ्टवेयर उत्पाद अंतिम उपयोगकर्ता के लिए उत्तरदायी है।
यह कोई आवश्यकता नहीं है। क्रियात्मक नहीं है। गैर-कार्यात्मक नहीं। यह सिर्फ एक आवश्यकता नहीं है। बिलकुल। इसका शून्य मान है। आप जाँच कर सकते हैं कि सॉफ़्टवेयर सिस्टम सत्यापन परीक्षण के दौरान इस आवश्यकता को पूरा करता है या नहीं। न तो आप - क्यूए विभाग, न ही ग्राहक।
2. उपयोगकर्ता के आँकड़ों को पुनः लोड करने का समय 100 एमएस से 90% कम है। जब परिशिष्ट G भाग 2 में निर्दिष्ट प्रदर्शन और सीपीयू के लिए 10% से नीचे लोड, मेमोरी के लिए 50% से नीचे और कोई सक्रिय आर / डब्ल्यू डिस्क संचालन के साथ मशीन पर परीक्षण नहीं किया गया।
यह एक आवश्यकता है। यदि परिशिष्ट जी भाग 2 पर्याप्त सटीक है, तो मैं मशीन को समान हार्डवेयर के साथ ले जा सकता हूं और क्यूए विभाग में सत्यापन परीक्षण कर सकता हूं, और मैं हमेशा एक द्विआधारी परिणाम प्राप्त करूंगा: पारित या विफल।
क्या यह एक कार्यात्मक आवश्यकता है? नहीं, ये निर्दिष्ट नहीं करता क्या प्रणाली करना चाहिए। संभवतः पहले एक कार्यात्मक आवश्यकता थी, यह निर्दिष्ट करते हुए कि सॉफ्टवेयर एप्लिकेशन को उपयोगकर्ता के आंकड़ों को फिर से लोड करने में सक्षम होना चाहिए।
क्या यह एक गैर-कार्यात्मक आवश्यकता है? यह है। यह एक संपत्ति को निर्दिष्ट करता है जो एक उत्पाद होना चाहिए, अर्थात प्रतिशत सीमा को देखते हुए अधिकतम / औसत प्रतिक्रिया समय।
3. आवेदन C # में लिखा गया है।
क्या यह एक आवश्यकता है? हम वास्तव में एक संदर्भ के बिना नहीं जानते। यह मुख्य डेवलपर की इच्छा हो सकती है, जो इस आवश्यकता को सम्मिलित करके, बाद में अपने सहयोगियों के साथ भाषा का उपयोग करने के बारे में चर्चा से बचने के लिए। यह हार्डवेयर / सॉफ्टवेयर, विरासत या संगतता तत्वों के आधार पर एक आवश्यकता भी हो सकती है। हम नहीं जानते।
4. उत्पाद का C # कोडबेस Microsoft न्यूनतम अनुशंसित नियम और Microsoft वैश्वीकरण नियम का अनुसरण करता है।
यह बड़ी अजीब बात है। व्यक्तिगत रूप से, मैं इसे एक आवश्यकता नहीं कहूंगा, और मानकों और सर्वोत्तम प्रथाओं को निर्दिष्ट करते हुए इसे एक अलग दस्तावेज़ में डाल दूंगा।
5. आवेदन की मुख्य विंडो में गुलाबी (#fcc) भरे हुए हलकों के साथ एक नीला (# 00f) 10px बॉर्डर है, उन सर्कल को सीमा के अंदरूनी किनारे पर रखा जा रहा है और व्यास 3px है, जो एक दूसरे से 20px अलग हैं।
यह एक आवश्यकता है, और एक गैर-कार्यात्मक है। यह कुछ ऐसा निर्दिष्ट करता है जिसे हम सत्यापन परीक्षण के दौरान परीक्षण कर सकते हैं, और यह उत्पाद की एक संपत्ति को निर्दिष्ट करता है, न कि उस उत्पाद को जो करने का इरादा है।
6. वाहन ट्रैकिंग सिस्टम tracking 0.016 मील प्रति घंटे की सटीकता के साथ गति को मापता है।
एक गैर-कार्यात्मक आवश्यकता भी। यह सिस्टम की परिशुद्धता की माप योग्य सीमा देता है। यह नहीं बताता है कि सिस्टम को क्या करना चाहिए, लेकिन यह बताता है कि यह कितना सटीक काम कर रहा है। लेकिन रुकें? यह बताता है कि वाहन ट्रैकिंग सिस्टम गति को मापता है, है न? तो यह एक कार्यात्मक आवश्यकता भी है? ठीक है, नहीं, चूंकि हम माप की शुद्धता पर एक उच्चारण करते हैं, इस तथ्य पर नहीं कि माप किया जाता है।
7. व्हीकल ट्रैकिंग सिस्टम वाहन की गति को मापता है।
अब यह एक कार्यात्मक आवश्यकता है। यह नहीं बताता कि सिस्टम कैसे काम करता है, लेकिन यह क्या कर रहा है। कार्यात्मक आवश्यकताओं के माध्यम से, हम यह जान सकते हैं कि वाहन ट्रैकिंग सिस्टम गति, बैटरी शक्ति को मापता है, I का दबाव पता नहीं है कि रोशनी क्या है और क्या है या नहीं।
8. वेबसाइट के पन्नों में 850 ms हैं। लोड करने के लिए।
यह कोई आवश्यकता नहीं है। एक होने की कोशिश करता है, लेकिन पूरी तरह से अमान्य है। आप यह कैसे करेंगे? कौन से पृष्ठ? सब? क्वाड-कोर क्लाइंट मशीन पर एक स्थानीय 1Gbps नेटवर्क के माध्यम से और SSDs के साथ आठ-कोर सर्वर का उपयोग 2% या पुराने और भद्दे लैपटॉप के एक मॉडेम के माध्यम से किया जाता है, जबकि वेबसाइट को 99% पर उपयोग किए जाने वाले एक छोटे सर्वर द्वारा होस्ट किया जा रहा है। ? "लोड करने के लिए" का क्या अर्थ है? क्या इसका मतलब पेज डाउनलोड करना है? इसे डाउनलोड और प्रदर्शित करना? कुछ बड़े डेटा के साथ POST अनुरोध भेजना, फिर प्रतिक्रिया लोड करना और उसे प्रदर्शित करना?
निष्कर्ष निकालने के लिए, एक गैर-कार्यात्मक आवश्यकता हमेशा एक आवश्यकता होती है, जिसका अर्थ है कि यह किसी ऐसी चीज का वर्णन करता है जो पूरी तरह से उद्देश्यपूर्ण है और एक स्वचालित या मैनुअल सत्यापन परीक्षण के माध्यम से जांच की जा सकती है, लेकिन यह बताने के बजाय कि सिस्टम क्या कर रहा है, यह बताता है कि सिस्टम कैसे है कुछ कर रहा है या सिस्टम खुद कैसे है ।
Ies प्रबंध सूचना प्रौद्योगिकी परियोजनाएं: सॉफ्टवेयर, हार्डवेयर, और एकीकरण पहल, जेम्स टेलर, आईएसबीएन के लिए परियोजना प्रबंधन रणनीतियों को लागू करना: 0814408117।