सॉफ़्टवेयर अभिकल्प व सॉफ़्टवेयर गुणवत्ता

यह अध्याय सॉफ़्टवेयर अभिकल्प-सिद्धांत (अमूर्तन, वास्तुकला, मॉड्यूलरता, संसक्ति/युग्मन, चार अभिकल्प-क्रियाकलाप) व सॉफ़्टवेयर गुणवत्ता (मैककॉल के कारक, ISO 9126, गुणवत्ता-नियंत्रण बनाम आश्वासन, जोखिम-प्रबंधन, विश्वसनीयता), साथ ही आकलन व अनुसूचन (COCOMO, LOC/FP-आधारित आकार-निर्धारण) ढकता है।

अमूर्तन, मॉड्यूलरता, संसक्ति व युग्मन

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

  • इस उप-प्रकरण में नामित चार अभिकल्प-क्रियाकलाप — वस्तु-उन्मुख, आँकड़ा, वास्तुकलात्मक व उपयोगकर्ता-अंतरापृष्ठ अभिकल्प — प्रत्येक भिन्न चिंता संबोधित करता है: OO अभिकल्प क्लास/वस्तुएँ व उनके संबंध तय करता है, आँकड़ा अभिकल्प तय करता है कि सूचना कैसे संरचित व संचित है, वास्तुकलात्मक अभिकल्प समग्र संरचना व प्रमुख घटक/उनके संबंध तय करता है, व उपयोगकर्ता-अंतरापृष्ठ अभिकल्प तय करता है कि मानव वस्तुतः तंत्र से कैसे अंतःक्रिया करता है।

सॉफ़्टवेयर गुणवत्ता कारक: मैककॉल व ISO 9126

दो नामित गुणवत्ता-कारक ढाँचे
ढाँचासंरचना
मैककॉल के गुणवत्ता-कारककारकों को तीन परिप्रेक्ष्यों में समूहित करता है — उत्पाद प्रचालन (शुद्धता, विश्वसनीयता, दक्षता, अखंडता, प्रयोज्यता), उत्पाद संशोधन (रखरखाव-योग्यता, लचीलापन, परीक्षणीयता) व उत्पाद संक्रमण (पोर्टेबिलिटी, पुनर्प्रयोज्यता, अंतर-प्रचालनीयता) — पुराना पर ऐतिहासिक रूप से आधारभूत वर्गीकरण।
ISO 9126छह शीर्ष-स्तरीय विशेषताएँ नामित करता अंतरराष्ट्रीय मानक — प्रकार्यात्मकता, विश्वसनीयता, प्रयोज्यता, दक्षता, रखरखाव-योग्यता, पोर्टेबिलिटी — प्रत्येक उप-विशेषताओं में टूटा, सॉफ़्टवेयर गुणवत्ता हेतु मानकीकृत (एक विक्रेता के अपने के बजाय) शब्दावली प्रदान करते हुए।
⚠️ गुणवत्ता-नियंत्रण व गुणवत्ता-आश्वासन एक ही क्रियाकलाप नहीं हैं
गुणवत्ता आश्वासन (QA) प्रक्रिया-केंद्रित है: नियोजित, व्यवस्थित क्रियाकलापों का समुच्चय जो सुनिश्चित करना चाहता है कि प्रक्रिया स्वयं सही ढंग से अनुसरित हो व गुणवत्तापूर्ण सॉफ़्टवेयर उत्पन्न करने में सक्षम हो — यह बड़े पैमाने पर निवारक है। गुणवत्ता नियंत्रण (QC) उत्पाद-केंद्रित है: क्रियाकलाप (समीक्षा, परीक्षण) जो जाँचते हैं कि क्या कोई विशिष्ट कार्य-उत्पाद अपनी गुणवत्ता-अपेक्षाएँ पूरी करता है — यह बड़े पैमाने पर संसूचक है, पहले से डाले दोष खोजते हुए। जोखिम-प्रबंधन जोखिम पहचानता, विश्लेषित व प्राथमिकीकृत करता है; जोखिम शमन, अनुवीक्षण व प्रबंधन (RMMM) योजनाएँ आगे जाती हैं, जोखिम की प्रायिकता/प्रभाव घटाने हेतु ठोस कदम (शमन), जोखिम के वास्तविक होने के संकेतक ट्रैक करना (अनुवीक्षण), व वास्तविक होने पर आकस्मिक योजनाएँ निष्पादित करना (प्रबंधन) निर्दिष्ट करते हुए।

सॉफ़्टवेयर विश्वसनीयता

सॉफ़्टवेयर विश्वसनीयता निर्दिष्ट शर्तों के अंतर्गत निर्दिष्ट अवधि हेतु विफलता-रहित प्रचालन की प्रायिकता है — MTBF (विफलताओं के बीच औसत समय) व विफलता-दर/तीव्रता जैसे मापकों से मापी गई, व वृद्धि-प्रतिरूपों से प्रतिरूपित जो भविष्यवाणी करते हैं कि परीक्षण दोष खोजते व हटाते जारी रहने पर विश्वसनीयता कैसे सुधरती है।

सॉफ़्टवेयर आकार-निर्धारण, आकलन व COCOMO

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

ℹ️ COCOMO के तीन मोड प्रोजेक्ट-आकार व जटिलता से मापित होते हैं
रचनात्मक लागत प्रतिरूप प्रयास (व्यक्ति-मास) को a·(KLOC)^b के रूप में आकलित करता है, मोड से मापांकित: आर्गेनिक (सुसमझी समस्याओं पर छोटी, परिचित टीमें — न्यूनतम घातांक), सेमी-डिटैच्ड (मध्यम आकार/परिचय) व एम्बेडेड (कड़े हार्डवेयर/अंतरापृष्ठ प्रतिबंधों सहित बड़े, जटिल, कसकर-प्रतिबंधित प्रोजेक्ट — उच्चतम घातांक, क्योंकि कठिनतम प्रोजेक्टों हेतु प्रयास आकार के साथ रैखिक से तेज़ बढ़ता है)। प्रयास फिर विकास समय हेतु पृथक सूत्र में जाता है, व दोनों साथ स्टाफ़िंग/अनुसूचन चलाते हैं — समय-रेखा चार्ट (गैंट-शैली चार्ट) परिणामी अनुसूची बिछाने का मानक तरीका है।

मुख्य बिंदु

  • मॉड्यूलों के भीतर उच्च संसक्ति व उनके बीच निम्न युग्मन साझा लक्ष्य है — एक के बिना दूसरा फिर भी बुरा अभिकल्प है।
  • मैककॉल के कारक प्रचालन/संशोधन/संक्रमण के अंतर्गत समूहित हैं; ISO 9126 छह अंतरराष्ट्रीय-मानक विशेषताएँ नामित करता है।
  • गुणवत्ता आश्वासन प्रक्रिया-केंद्रित व निवारक है; गुणवत्ता नियंत्रण उत्पाद-केंद्रित व संसूचक है — भिन्न क्रियाकलाप, पर्यायवाची नहीं।
  • फलन-बिंदु भाषा-स्वतंत्र हैं व केवल अपेक्षाओं से गिनने योग्य, LOC-आधारित आकार-निर्धारण के विपरीत।
  • COCOMO के आर्गेनिक/सेमी-डिटैच्ड/एम्बेडेड मोड प्रोजेक्ट-आकार व प्रतिबंध-कसावट से प्रयास मापते हैं, एम्बेडेड प्रोजेक्टों का प्रयास आकार के साथ सबसे तेज़ बढ़ते हुए।

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

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

  1. सुअभिकल्पित मॉड्यूल वह है जिसमें है:

    1. इसके भीतर उच्च संसक्ति व अन्य मॉड्यूलों से निम्न युग्मन
    2. इसके भीतर निम्न संसक्ति व अन्य मॉड्यूलों से उच्च युग्मन
    3. किसी भी अन्य मॉड्यूल से बिल्कुल कोई संबंध नहीं
    4. एक स्थान पर उत्तरदायित्वों की अधिकतम संभव संख्या
    उत्तर देखें

    उत्तर: A — इसके भीतर उच्च संसक्ति व अन्य मॉड्यूलों से निम्न युग्मन

    उच्च आंतरिक संसक्ति (एक सुपरिभाषित काम करता मॉड्यूल) व निम्न बाह्य युग्मन (अन्य मॉड्यूलों पर न्यूनतम निर्भरता) सुअभिकल्पित मॉड्यूलरता के साझा लक्ष्य के रूप में साथ अनुसरित किए जाते हैं।
  2. मैककॉल के गुणवत्ता-कारकों में, रखरखाव-योग्यता, लचीलापन व परीक्षणीयता समूहित हैं:

    1. उत्पाद संशोधन
    2. उत्पाद प्रचालन
    3. उत्पाद संक्रमण
    4. इनमें से किसी श्रेणी में नहीं
    उत्तर देखें

    उत्तर: A — उत्पाद संशोधन

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

    1. प्रक्रिया-केंद्रित व बड़े पैमाने पर निवारक
    2. उत्पाद-केंद्रित व बड़े पैमाने पर संसूचक, विशिष्ट कार्य-उत्पाद जाँचते हुए
    3. हर पक्ष में गुणवत्ता नियंत्रण के समान
    4. केवल हार्डवेयर से संबंधित, सॉफ़्टवेयर से कभी नहीं
    उत्तर देखें

    उत्तर: A — प्रक्रिया-केंद्रित व बड़े पैमाने पर निवारक

    गुणवत्ता आश्वासन दोषों को होने से पहले रोकने हेतु प्रक्रिया को लक्षित करता है; विशिष्ट परिदेय की उत्पाद-केंद्रित, संसूचक जाँच (समीक्षा, परीक्षण) इसके बजाय गुणवत्ता नियंत्रण का काम है।
  4. LOC-आधारित आकार-निर्धारण की तुलना में, फलन-बिंदु (FP) आधारित आकार-निर्धारण का यह लाभ है कि यह:

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

    उत्तर: A — भाषा-स्वतंत्र है व किसी कोड के लिखे जाने से पहले अपेक्षाओं से गिना जा सकता है

    फलन-बिंदु उपयोगकर्ता-दृश्य प्रकार्यात्मक तत्व जटिलता से भारित गिनते हैं, जो केवल अपेक्षाओं/विनिर्देशन से पहचाने जा सकते हैं — LOC के विपरीत, जो कोड विद्यमान होने तक ज्ञात नहीं हो सकता व उसी प्रकार्यता हेतु भाषा/शैली से बदलता है।
  5. COCOMO में, EMBEDDED-मोड प्रोजेक्ट (बड़ा, जटिल, कसकर प्रतिबंधित) का प्रयास-घातांक, ORGANIC-मोड प्रोजेक्ट की तुलना में:

    1. उच्चतर है, अतः प्रयास आकार के साथ रैखिक से तेज़ बढ़ता है
    2. सदा ठीक शून्य है
    3. हर मोड हेतु समान है
    4. ऋणात्मक है, अर्थात् प्रयास आकार के साथ घटता है
    उत्तर देखें

    उत्तर: A — उच्चतर है, अतः प्रयास आकार के साथ रैखिक से तेज़ बढ़ता है

    प्रयास = a·(KLOC)^b में एम्बेडेड मोड का उच्चतर घातांक यह दर्शाता है कि सादे आर्गेनिक प्रोजेक्ट की तुलना में, कठिनतम, सर्वाधिक कसकर-प्रतिबंधित प्रोजेक्टों में आकार बढ़ने पर प्रयास असमानुपातिक रूप से तेज़ बढ़ता है।
  6. इस उप-प्रकरण हेतु नामित चार अभिकल्प-क्रियाकलापों में निम्नलिखित में कौन हैं? (एक से अधिक विकल्प सही हो सकते हैं।)

    1. वास्तुकलात्मक अभिकल्प
    2. उपयोगकर्ता-अंतरापृष्ठ अभिकल्प
    3. आँकड़ा अभिकल्प
    4. विपणन अभिकल्प
    उत्तर देखें

    उत्तर: A — वास्तुकलात्मक अभिकल्प; B — उपयोगकर्ता-अंतरापृष्ठ अभिकल्प; C — आँकड़ा अभिकल्प

    वस्तु-उन्मुख, आँकड़ा, वास्तुकलात्मक व उपयोगकर्ता-अंतरापृष्ठ अभिकल्प चार नामित क्रियाकलाप हैं; विपणन बिल्कुल कोई सॉफ़्टवेयर अभिकल्प-क्रियाकलाप नहीं है।
  7. उस विश्वसनीयता-मापक का नाम बताइए जो एक विफलता व अगली के बीच बीते औसत समय के रूप में परिभाषित है।

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

    उत्तर देखें

    उत्तर: MTBF

    MTBF (विफलताओं के बीच औसत समय) विफलता-दर/तीव्रता के साथ मानक विश्वसनीयता-मापक है, व विश्वसनीयता-वृद्धि प्रतिरूप भविष्यवाणी करते हैं कि परीक्षण दोष हटाने पर यह कैसे सुधरता है।
  8. अभिकल्प-सिद्धांत के रूप में, सूचना-आच्छादन का मुख्यतः अर्थ है:

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

    उत्तर: A — किसी मॉड्यूल के आंतरिक अभिकल्प-निर्णय अन्य मॉड्यूलों को दृश्य या उन पर निर्भर होने योग्य नहीं होते

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