इकाई 2 / 12

आवश्यकताएँ विश्लेषण और सॉफ्टवेयर डिज़ाइन

लाभ:

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

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

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

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

अस्पष्ट अनुरोध से लेकर परीक्षण योग्य आवश्यकता तक

एक अच्छी आवश्यकता मापने योग्य और सत्यापन योग्य है। "सिस्टम को तेज़ न होने दें", बल्कि "खोज परिणामों को 500 एमएस के भीतर वापस आने दें"। अनिश्चितता को कम करने के लिए AI का उपयोग करने का चरण-दर-चरण तरीका यहां दिया गया है:

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

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

उपयोगकर्ता कहानी + स्वीकृति मानदंड संकेत: "निम्नलिखित स्पष्ट आवश्यकता को निवेश सिद्धांतों का अनुपालन करने वाली उपयोगकर्ता कहानियों में विभाजित करें। प्रत्येक कहानी के लिए 3-5 परीक्षण योग्य स्वीकृति मानदंड लिखें (दिया-जब-तब प्रारूप में)। कम से कम 2 नकारात्मक परिदृश्य जोड़ें (अनधिकृत पहुंच, खाली डेटा)। आवश्यकता: [यहां स्पष्ट आवश्यकता लिखें]"

एआई के साथ डिजाइन निर्णयों की तुलना करना

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

डिज़ाइन तुलना संकेत: "मैं 'उपयोगकर्ता को ईमेल अधिसूचना भेजें' सुविधा डिज़ाइन कर रहा हूं। दो दृष्टिकोणों की तुलना करें: (ए) HTTP अनुरोध के दौरान सिंक्रोनस डिलीवरी, (बी) संदेश कतार में डालकर पृष्ठभूमि में एसिंक्रोनस डिलीवरी। निम्नलिखित अक्षों पर एक तालिका बनाएं: उपयोगकर्ता प्रतीक्षा समय, गलती सहनशीलता, जटिलता, बुनियादी ढांचे की लागत, डिबगिंग में कठिनाई। 2 वाक्यों में सारांशित करें कि मैं किस मामले में अंत में किसे चुनूंगा। मेरे लिए निर्णय न लें।"

अक्ष

तुल्यकालिक संचरण

अतुल्यकालिक (कतार)

उपयोगकर्ता प्रतीक्षा समय

लंबा (शिपमेंट की प्रतीक्षा में)

लघु (तुरंत लौटाता है)

दोष सहनशीलता

कम (यदि अनुरोध भेजा जाए तो विस्फोट हो जाता है)

उच्च (पुनः प्रयास संभव)

जटिलता

कम

मध्यम-उच्च (कतार बुनियादी ढांचा)

बुनियादी ढांचे की लागत

कम

अतिरिक्त घटकों की आवश्यकता है

यह कहां फिट बैठता है

कम मात्रा, सरल अनुप्रयोग

उच्च मात्रा, महत्वपूर्ण डिलीवरी

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

कमजोर संकेत/मजबूत संकेत

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

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

मिनी मामले

केस 1 - छिपी हुई धारणा। एक टीम सीधे "उपयोगकर्ता प्रोफ़ाइल फ़ोटो अपलोड कर सकता है" अनुरोध को कोड करती है। एक अन्य टीम ने एआई से अनिश्चितता के बारे में पूछा: "अधिकतम आकार? अनुमत प्रारूप? अनुपयुक्त सामग्री नियंत्रण? पुरानी तस्वीर हटाएं?" यह जैसे 8 प्रश्न उत्पन्न करता है। पहली टीम को उत्पादन में समस्या के बारे में तब पता चलता है जब 20 एमबी फ़ाइलें सर्वर में भर जाती हैं; दूसरी टीम इसे डिजाइन में हल करती है।

केस 2 - गलत पैमाने की धारणा। एआई रिपोर्टिंग सुविधा के लिए एक जटिल कैशिंग परत का प्रस्ताव करता है। जब इंजीनियर बताता है कि वास्तविक डेटा प्रति दिन केवल 30 रिपोर्ट है, तो एआई सुझाव को सरल बनाता है। पैमाने को निर्दिष्ट नहीं करने से अनावश्यक जटिलता की कीमत चुकानी पड़ती है; निर्दिष्ट करने से 2 सप्ताह का अनावश्यक कार्य बच जाता है।

केस 3 - स्वीकृति मानदंड अंतर। "यदि भुगतान विफल हो गया तो क्या होगा?" चूँकि प्रश्न कभी नहीं पूछा गया था, असफल भुगतान के मामले में ऑर्डर सिस्टम अभी भी ऑर्डर को "पुष्टि" के रूप में चिह्नित करेगा। एआई द्वारा उत्पन्न नकारात्मक परिदृश्यों की सूची इस अंतर को दर्शाती है; 1 पंक्ति स्वीकृति मानदंड वास्तविक धन हानि को रोकता है।

सामान्य गलतियाँ

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

सारांश

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

आवेदन कार्य

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

चेकलिस्ट

  • [ ] कोड में अनुरोध भेजने से पहले मैंने प्रश्नों के रूप में अस्पष्टताओं को हटा दिया।
  • [ ] मैंने एआई को संदर्भ (पैमाना, अधिकार, प्रदर्शन, कानूनी बाधा) दिया।
  • [ ] मैंने उपयोगकर्ता कहानियों को परीक्षण योग्य स्वीकृति मानदंडों में तोड़ दिया।
  • [ ] मैंने कम से कम एक नकारात्मक पक्ष/किनारे वाला परिदृश्य जोड़ा।
  • [ ] मैंने ट्रेड-ऑफ़ तालिका के साथ डिज़ाइन निर्णय का मूल्यांकन किया।
  • [ ] मैंने अपने संदर्भ के आधार पर अंतिम निर्णय लिया, मैंने इसे एआई पर नहीं छोड़ा।