सॉफ़्टवेयर प्रक्रिया प्रतिरूप व अपेक्षा अभियांत्रिकी

GATE CS का कोई सॉफ़्टवेयर अभियांत्रिकी खंड बिल्कुल नहीं है — इसके दस आधिकारिक खंड विविक्त गणित से कंप्यूटर संजाल तक चलते हैं, बीच में प्रक्रिया, अपेक्षा, अभिकल्प, गुणवत्ता, आकलन, परीक्षण या विन्यास-प्रबंधन पर कुछ नहीं। अतः इकाई 6 का सम्पूर्ण भाग ताज़ा लिखा गया है। यह अध्याय इसे प्रक्रिया प्रतिरूपों (एजाइल परिवार सहित) व अपेक्षा अभियांत्रिकी से खोलता है।

सामान्य प्रक्रिया प्रतिरूप: ढाँचा क्रियाकलाप, कार्य-समुच्चय व प्रतिरूप

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

निर्देशात्मक प्रक्रिया प्रतिरूप
प्रतिरूपआकार व यह कब उपयुक्त है
जलप्रपातकड़ाई से अनुक्रमिक चरण (अपेक्षाएँ → अभिकल्प → कार्यान्वयन → परीक्षण → रखरखाव), प्रत्येक अगले से पहले पूर्ण — तभी अच्छी तरह उपयुक्त जब अपेक्षाएँ स्थिर व पहले से पूर्णतः ज्ञात हों, क्योंकि चरण पीछे लौटना महँगा है।
वृद्धिशील प्रतिरूपतंत्र को कार्यक्षमता जोड़ती वृद्धियों की शृंखला में परिदान करता है — जलप्रपात के विपरीत, ग्राहक को शीघ्र कार्यशील (आंशिक) उत्पाद देता है।
सर्पिल प्रतिरूपसर्पिल के हर लूप पर स्पष्ट जोखिम-विश्लेषण के साथ पुनरावृत्त विकास संयोजित करता है — विशेष रूप से उन बड़े, उच्च-जोखिम प्रोजेक्टों हेतु चुना जाता है जहाँ जोखिम को शीघ्र पहचानना व प्रबंधित करना प्राथमिकता है।
घटक-आधारित विकासतंत्र को अधिकांशतः नए सिरे से बनाने के बजाय पूर्व-विद्यमान, पुनर्प्रयोज्य सॉफ़्टवेयर-घटकों से जोड़ता है — उपयुक्त घटक पहले से विद्यमान होने पर लागत व समय घटाता है।

एजाइल प्रक्रिया प्रतिरूप

  • एक्सट्रीम प्रोग्रामिंग (XP): बहुत छोटे विमोचन-चक्रों, युग्म-प्रोग्रामिंग (एक कार्यस्थल पर दो विकासकर्ता), परीक्षण-चालित विकास (कोड से पहले उसका परीक्षण लिखना), सतत एकीकरण, व 'ग्राहक सदा उपलब्ध है' पर बल देती है — अस्थिर अपेक्षाओं का छोटी, घनिष्ठ टीम का उत्तर।
  • स्क्रम: प्राथमिकता-क्रमित उत्पाद बैकलॉग से खींचते हुए कार्य को स्थिर-लंबाई स्प्रिंट (सामान्यतः 2–4 सप्ताह) में संगठित करता है; दैनिक संक्षिप्त खड़ी-बैठक (दैनिक स्क्रम) रुकावटों को शीघ्र उजागर करती है; तीन परिभाषित भूमिकाएँ — उत्पाद स्वामी (बैकलॉग व प्राथमिकताओं का स्वामी), स्क्रम मास्टर (प्रक्रिया सुगम बनाता है व बाधाएँ हटाता है) व विकास टीम (स्व-संगठित, वृद्धि परिदान करती है)।
  • अन्य नामित एजाइल प्रतिरूप: अनुकूली सॉफ़्टवेयर विकास कठोर नियोजन पर अटकल-सहयोग-अधिगम चक्रों को बल देता है; गतिक तंत्र विकास प्रतिरूप स्थिर समय व लागत, परिवर्तनशील विशेषताओं के इर्द-गिर्द बना पूर्ण जीवनचक्र-ढाँचा प्रदान करता है; विशेषता-चालित विकास कार्यों के बजाय ग्राहक-मूल्यवान विशेषताओं की सूची के इर्द-गिर्द नियोजित व निर्मित होता है; क्रिस्टल हल्की विधियों का परिवार है जो एक स्थिर प्रक्रिया के बजाय टीम-आकार व प्रोजेक्ट-क्रांतिकता के अनुरूप मापित होता है। सभी एजाइल घोषणापत्र की मूल वरीयता साझा करते हैं: प्रक्रिया व उपकरणों पर व्यक्ति व अंतःक्रिया, विस्तृत दस्तावेज़ीकरण पर कार्यशील सॉफ़्टवेयर, संविदा-वार्ता पर ग्राहक-सहयोग, कठोर योजना का अनुसरण करने पर परिवर्तन के प्रति अनुक्रिया।
⚠️ एजाइल 'कोई प्रक्रिया नहीं' नहीं है — यह प्राथमिकताओं का भिन्न समुच्चय है
एक आम गलत-पठन यह है कि एजाइल विधियों में बिल्कुल कोई अनुशासन या नियोजन नहीं होता। वस्तुतः स्क्रम में स्थिर कर्मकांड (स्प्रिंट नियोजन, दैनिक स्क्रम, स्प्रिंट समीक्षा, पूर्वदर्शन) व परिभाषित भूमिकाएँ हैं, व XP में कड़े अभियांत्रिकी अभ्यास (TDD, युग्म-प्रोग्रामिंग, सतत एकीकरण) हैं — एजाइल भारी, अनुक्रमिक, दस्तावेज़-चालित प्रक्रिया का व्यापार हल्की, पुनरावृत्त, कार्यशील-सॉफ़्टवेयर-चालित प्रक्रिया से करता है, अनुशासन का अराजकता से नहीं।

प्रकार्यात्मक व अप्रकार्यात्मक अपेक्षाएँ, प्रयोग-स्थिति व SRS

प्रकार्यात्मक अपेक्षा बताती है कि तंत्र को क्या करना ही चाहिए (विशिष्ट व्यवहार या विशेषता — 'तंत्र उपयोगकर्ता को पासवर्ड पुनर्निर्धारित करने देगा'); अप्रकार्यात्मक अपेक्षा बताती है कि वह करते हुए तंत्र को कौन-सा गुण या प्रतिबंध संतुष्ट करना है (प्रदर्शन, सुरक्षा, प्रयोज्यता, विश्वसनीयता, पोर्टेबिलिटी — 'तंत्र सामान्य भार में 2 सेकंड के भीतर अनुक्रिया देगा')। अपेक्षा-प्राप्ति इन्हें हितधारकों से एकत्र करती है (साक्षात्कार, प्रश्नावली, प्रेक्षण, प्रोटोटाइपन); अपेक्षा विश्लेषण व प्रतिरूपण इन्हें संगठित व परिष्कृत करता है (प्रायः प्रयोग-स्थिति से — किसी अभिकर्ता व तंत्र के बीच नामित अंतःक्रिया, मुख्य सफलता-परिदृश्य व उसके वैकल्पिक/अपवाद प्रवाहों से वर्णित); अपेक्षा समीक्षा एकत्रित समुच्चय को पूर्णता, संगति व परीक्षणीयता हेतु जाँचती है इससे पहले कि वह सॉफ़्टवेयर अपेक्षा विनिर्देशन (SRS) दस्तावेज़ में स्थिर हो जाए, जो हितधारकों व विकासकर्ताओं के बीच क्या बनेगा इसका औपचारिक संविदा है।

⚠️ प्रदर्शन-लक्ष्य अप्रकार्यात्मक है भले ही यह वह संख्या लगे जो तंत्र 'करता' है
परीक्षण यह नहीं कि कथन में क्रिया या संख्या है या नहीं — यह है कि क्या कथन व्यवहार के किसी पृथक अंश (प्रकार्यात्मक) का वर्णन करता है या उस व्यवहार को दिखाने योग्य किसी गुण (अप्रकार्यात्मक) का। 'तंत्र कर की गणना करेगा' प्रकार्यात्मक है; 'तंत्र 100 मिसे से कम में कर की गणना करेगा' प्रकार्यात्मक अपेक्षा को उस पर अप्रकार्यात्मक प्रतिबंध सहित बाँधता है, और प्रश्न कभी-कभी परखते हैं कि क्या अभ्यर्थी ऐसे संयुक्त कथन के दोनों आधे भाग पृथक कर सकता है या नहीं।

वेब अभियांत्रिकी व औपचारिक विधियाँ

  • वेब अभियांत्रिकी विशेष रूप से वेब-आधारित अनुप्रयोग बनाने पर व्यवस्थित सॉफ़्टवेयर-अभियांत्रिकी अनुशासन लागू करती है, जो पारंपरिक सॉफ़्टवेयर से इसमें भिन्न है कि इसे क्लाइंट-युक्तियों/ब्राउज़रों की कहीं व्यापक व कम पूर्वानुमेय परास, सतत (संस्करण/विमोचन-आधारित के बजाय) विकास, व वह विषय-वस्तु भी लेखा में लेनी है जो स्वयं अनुप्रयोग के कोड से स्वतंत्र रूप से बदलती है।
  • औपचारिक विधियाँ किसी तंत्र के व्यवहार को अस्पष्टता-रहित वर्णित करने व, जहाँ संभव हो, उसके गुण (शुद्धता, कुछ त्रुटि-वर्गों का अभाव) सिद्ध करने हेतु गणितीय रूप से यथार्थ विनिर्देशन-भाषाएँ (उदा० Z संकेतन, VDM) प्रयोग करती हैं, केवल उन्हें परखने के बजाय — पूर्ण रूप से लागू करना महँगा, अतः सामान्यतः उन सुरक्षा- या संरक्षा-क्रांतिक घटकों हेतु आरक्षित जहाँ अवशिष्ट दोष की लागत असामान्य रूप से उच्च हो।

मुख्य बिंदु

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

अभ्यास प्रश्न (8)

उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।

  1. जलप्रपात प्रतिरूप उन प्रोजेक्टों हेतु सर्वाधिक उपयुक्त है जहाँ:

    1. अपेक्षाएँ स्थिर व पहले से पूर्णतः ज्ञात हों
    2. अपेक्षाएँ विकास के दौरान निरंतर बदलती रहें
    3. बिल्कुल कोई अपेक्षा विद्यमान न हो
    4. टीम के पास ग्राहक तक कोई पहुँच न हो
    उत्तर देखें

    उत्तर: A — अपेक्षाएँ स्थिर व पहले से पूर्णतः ज्ञात हों

    जलप्रपात के कड़ाई से अनुक्रमिक चरण किसी पूर्व चरण में लौटना महँगा बनाते हैं, अतः यह तभी सर्वाधिक उपयुक्त है जब अपेक्षाएँ विकास आरंभ होने से पहले ही तय हों, उसके साथ विकसित होने के बजाय।
  2. सर्पिल प्रतिरूप सादे पुनरावृत्त प्रतिरूप से मुख्यतः इसमें भिन्न है:

    1. सर्पिल के हर लूप पर स्पष्ट जोखिम-विश्लेषण
    2. किसी भी नियोजन का पूर्ण अभाव
    3. केवल ठीक एक पुनरावृत्ति चाहना
    4. किसी भी ग्राहक-संलिप्तता को वर्जित करना
    उत्तर देखें

    उत्तर: A — सर्पिल के हर लूप पर स्पष्ट जोखिम-विश्लेषण

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

    1. उत्पाद स्वामी
    2. स्क्रम मास्टर
    3. विकास टीम
    4. प्रोजेक्ट-प्रायोजक का लेखा-परीक्षक
    उत्तर देखें

    उत्तर: A — उत्पाद स्वामी

    उत्पाद स्वामी बैकलॉग व उसकी प्राथमिकताओं का स्वामी है; स्क्रम मास्टर प्रक्रिया सुगम बनाता है व बाधाएँ हटाता है; विकास टीम स्व-संगठित है व वृद्धि परिदान करती है — भिन्न उत्तरदायित्वों वाली तीन पृथक भूमिकाएँ।
  4. परीक्षण-चालित विकास, एक्सट्रीम प्रोग्रामिंग से संबद्ध अभ्यास, इसका अर्थ है:

    1. किसी कार्यक्षमता का कोड लिखने से पहले उसका परीक्षण लिखना
    2. बिल्कुल कोई परीक्षण कभी न लिखना
    3. केवल पूरा उत्पाद पूर्ण होने के बाद परीक्षण करना
    4. ग्राहक से सारा कोड लिखवाना
    उत्तर देखें

    उत्तर: A — किसी कार्यक्षमता का कोड लिखने से पहले उसका परीक्षण लिखना

    TDD में, अपेक्षित व्यवहार परिभाषित करने हेतु पहले एक विफल होने वाला परीक्षण लिखा जाता है, व फिर उस परीक्षण को पास कराने हेतु विशेष रूप से कोड लिखा जाता है — कोड लिखकर बाद में उसे परखने के विपरीत।
  5. 'तंत्र सामान्य भार में 2 सेकंड के भीतर अनुक्रिया देगा' का सर्वोत्तम वर्गीकरण है:

    1. अप्रकार्यात्मक अपेक्षा
    2. प्रकार्यात्मक अपेक्षा
    3. प्रयोग-स्थिति
    4. प्रक्रिया-प्रतिरूप
    उत्तर देखें

    उत्तर: A — अप्रकार्यात्मक अपेक्षा

    यह कथन उस गुण (प्रदर्शन) का वर्णन करता है जो तंत्र के व्यवहार को दिखाना है, स्वयं व्यवहार के किसी पृथक अंश का नहीं, जो अप्रकार्यात्मक अपेक्षा की परिभाषित कसौटी है।
  6. अपेक्षा-प्रतिरूपण में प्रयोग-स्थिति का सर्वोत्तम वर्णन है:

    1. किसी अभिकर्ता व तंत्र के बीच नामित अंतःक्रिया, मुख्य सफलता-परिदृश्य व उसके वैकल्पिक प्रवाहों से वर्णित
    2. पूर्ण, परखा गया स्रोत-कोड का अंश
    3. केवल अप्रकार्यात्मक प्रदर्शन-प्रतिबंध का कथन
    4. बिना किसी पाठ्य-वर्णन वाला आरेख
    उत्तर देखें

    उत्तर: A — किसी अभिकर्ता व तंत्र के बीच नामित अंतःक्रिया, मुख्य सफलता-परिदृश्य व उसके वैकल्पिक प्रवाहों से वर्णित

    प्रयोग-स्थिति अभिकर्ता के परिप्रेक्ष्य से लक्ष्य-निर्देशित अंतःक्रिया पकड़ती है, यह भी सम्मिलित करते हुए कि जब सब अपेक्षा अनुसार हो तो क्या होता है व अपवादात्मक/वैकल्पिक पथों में क्या — प्रकार्यात्मक अपेक्षाएँ प्राप्त व संगठित करने का संरचित तरीका।
  7. कठोर जलप्रपात प्रक्रिया से भिन्न, एजाइल सॉफ़्टवेयर विकास के विषय में निम्नलिखित में कौन सत्य हैं? (एक से अधिक विकल्प सही हो सकते हैं।)

    1. यह विस्तृत दस्तावेज़ीकरण पर कार्यशील सॉफ़्टवेयर को वरीयता देता है
    2. यह कठोर योजना का अनुसरण करने पर परिवर्तन के प्रति अनुक्रिया को वरीयता देता है
    3. इसकी बिल्कुल कोई परिभाषित भूमिका, कर्मकांड या अभियांत्रिकी अभ्यास नहीं है
    4. यह सामान्यतः एक लंबे अनुक्रमिक पास के बजाय छोटे, पुनरावृत्त चक्रों में परिदान करता है
    उत्तर देखें

    उत्तर: A — यह विस्तृत दस्तावेज़ीकरण पर कार्यशील सॉफ़्टवेयर को वरीयता देता है; B — यह कठोर योजना का अनुसरण करने पर परिवर्तन के प्रति अनुक्रिया को वरीयता देता है; D — यह सामान्यतः एक लंबे अनुक्रमिक पास के बजाय छोटे, पुनरावृत्त चक्रों में परिदान करता है

    एजाइल विधियाँ अपने ही ढंग से अत्यधिक अनुशासित हैं — स्क्रम में स्थिर कर्मकांड व भूमिकाएँ हैं, XP में कड़े अभियांत्रिकी अभ्यास हैं — अतः 'बिल्कुल कोई अनुशासन नहीं' एजाइल का वास्तविक गुण नहीं बल्कि मानक गलत-पठन है।
  8. उस औपचारिक दस्तावेज़ का नाम बताइए जो एकत्रित, समीक्षित अपेक्षाओं को हितधारकों व विकासकर्ताओं के बीच इस विषय में औपचारिक संविदा में स्थिर करता है कि क्या बनेगा।

    संख्यात्मक उत्तर — मान टाइप करें।

    उत्तर देखें

    उत्तर: SRS

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