कीवर्डहरू -

नेपालमा सफ्टवेयर इञ्जिनियरिङ र यसको क्षेत्र

नेपालमा सफ्टवेयर इञ्जिनियरिङ र यसको क्षेत्र

सरोज शाक्य


प्रविधिको प्रयोगले भइरहेका अकल्पनीय परिवर्तनहरूका पछाडि सफ्टवेयरको सबैभन्दा ठूलो भूमिका छ । कुरा गरिरहनुपर्दैन कि, कम्प्युटर, मोबाइल, रोबोटजस्ता प्रविधि सफ्टवेयरले नै चल्ने गरेका हुन् । सफ्टवेयरको अथाह सम्भावना भएको क्षेत्र हो । नेपालमा पनि देश समृद्ध बनाउन सक्ने क्षेत्र हो,  सफ्टवेयर । सफ्टवेयर इञ्जिनियरिङ अध्ययन गर्ने विद्यार्थीहरूले धेरै सम्भावनाहरू बोकेका हुन्छन् ।

सफ्टवेयर इञ्जिनियरिङ त्यस्तो क्षेत्र हो, जुन नितान्त समग्र सफ्टवेयर डेभलपमेन्ट प्रक्रियामा केन्द्रित छ । सफ्टवेयर इञ्जिनियरहरू त्यस्ता इञ्जिनियरहरू हुन्, जसले सफ्टवेयर सिष्टमहरूको विश्लेषण, डिजाइन, निर्माण, परीक्षण र मेन्टेनेन्स गर्ने कुरामा विशेषज्ञता हासिल गर्छन् ।


सफ्टवेयर इञ्जिनियरिङ त्यस्तो क्षेत्र हो, जुन नितान्त समग्र सफ्टवेयर डेभलपमेन्ट प्रक्रियामा केन्द्रित छ । सफ्टवेयर इञ्जिनियरहरू त्यस्ता इञ्जिनियरहरू हुन्, जसले सफ्टवेयर सिष्टमहरूको विश्लेषण, डिजाइन, निर्माण, परीक्षण र मेन्टेनेन्स गर्ने कुरामा विशेषज्ञता हासिल गर्छन् । यस प्रकारका सिष्टमहरूमा त्यस्ता सिष्टमहरू पर्दछन्, जसले इलेक्ट्रिकल तथा मेकानिकल डिभाइसहरू, कम्प्युटरमा आधारित कम्युनिकेशन सिष्टमहरू, अन्य इञ्जिनियरिङ प्रडक्ट डिजाइन गर्ने कम्प्युटर सिष्टम, फाइनान्सियल तथा इन्फर्मेशन सिष्टमहरूको नियन्त्रण गर्दछ ।


एकजना सफ्टवेयर इञ्जिनियरको भूमिका कम्प्युटर हार्डवेयरको डिजाइन गर्ने कुरामा नभई हार्डवेयरको छनोट गर्ने कुरामा हुन्छ । उसको मुख्य काम भनेकै कुनै सिष्टम चलाउन आवश्यक सफ्टवेयर कम्पोनेन्टहरूको डिजाइन गर्नु हो । यसर्थ, सफ्टवेयर इञ्जिनियरहरूले तल छलफल गरिएका कामहरू गर्ने कुरामा आफूलाई तयार गर्नु आवश्यक छ, जुन कम्प्युटरमा आधरित सिष्टमहरूको विकासका लागि महŒवपूर्ण छन् ।


सफ्टवेयर इञ्जिनियरले गर्नुपर्ने कामहरू

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

सबै इञ्जिनियरहरूजस्तै, सफ्टवेयर इञ्जिनियरहरू पनि सफ्टवेयर सोलुशन हिस्साका रूपमा प्रयोग, सुरक्षा र भरपर्दोपनका लागि जिम्मेवार हन्छन् । उनीहरूले डिजाइन गरेका सिष्टमहरू कस्टमरसामु प्रयोगका लागि पु¥याइसकेपछि तिनले पूर्ण रूपमा काम गर्दछन् भन्ने कुरामा विश्वस्त हुनका लागि सफ्टवेयर इञ्जिनियरहरूमा बेसिक म्याथम्याटिक्स र साइन्सका साथै अनुशासित परीक्षण र अनुसरणको प्रयोग गर्न सक्षम हुनुपर्छ । मुख्य जोड भनेको कुशल कस्ट इफेक्टिब सफ्टवेयर सिष्टमको उत्पादनमा हो, जुन समयमा डेलिभर गरिनुका साथै कम लातगमा उत्पादन गर्न सकियोस् ।


सफ्टवेयर इञ्जिनियरले सिष्टम र यसका डकुमेन्टेशनहरू एकनास राखून् भन्ने अपेक्षा गरिन्छ । यसैगरी, अवश्यकताअनुरूप प्रोग्रामले गर्ने कामका लागि हार्डवेयर कन्फिगरेशन उपयक्त छ कि छैन, सिष्टमले सबै रियल टाइम समयसीमा र अन्य आवश्यक पर्फर्मेन्स पूरा गर्न सक्छ कि सक्दैन भन्ने कुरा पनि सफ्टवेयर इञ्जिनियरले हेर्नुपर्ने हुन्छ ।


यो कोर्सले सफ्टवेयर डेभलपमेन्टको अब्जेक्ट ओरिएन्टेड अप्रोचमा जोड दिन्छ, जसलाई इन्डष्ट्रीले वर्तमान र भविष्यको प्रविधिको मुख्य रूपमा स्वीकार गरेको छ ।  ठूला स्केलका सिष्टमहरू (दुवै फिजिकल कम्पोनेन्ट्स–हार्डवेयर र लजिकल कम्पोनेन्ट्स–सफ्टवेयर)को एनलाइसिस, डिजाइन र इम्प्लिमेन्ट गर्न वर्तमान अप्रोचहरूबारे बृहत् शिक्षा प्रदान गर्दछ ।

यसका साथै हार्डवेयर र अपेरिटङ सिष्टमजस्ता कम्प्युटर साइन्सको परम्परागत पक्षहरूको ज्ञान पनि राखिन्छ । प्रभावकारी ह्युमन कम्प्युटर इन्टरएक्सन ( HCI) को डिजाइनमा थप जोड दिँदै यो कोर्सले बिग डाटा टेक्नोलोजिज, क्लाउड कम्प्युटिङ तथा मल्टिमिडिया, मोबाइल र वेबमा आधारित सिष्टमजस्ता हालै विकास भएका इमर्जिङ ट्रेन्डहरूलाई पनि समेट्छ ।


कोर्सका उद्देश्यहरू
सफ्टवेयर डेभलपमेन्ट प्रोसेसबारे गहन ज्ञान प्रदान गर्न यो कोर्स डिजाइन गरिएको छ, जसले विद्यार्थीलाई धेरै ठूलो स्केलका सफ्टवेयर सिष्टमहरूको समष्टिगत डिजाइन, कोडिङ र परीक्षण गर्ने कार्यमा महŒवपूर्ण भूमिका निर्वाह गर्ने व्यक्तिका रूपमा काम गर्ने अनुमति प्रदान गर्दछ । सफ्टवेयर इञ्जिनियरिङ प्रोग्राम अध्ययन गर्ने ग्य्राजुएट्सले सफ्टवेयर इञ्जिनियरिङ अभ्यास र सिद्धान्तहरूमा विशेषज्ञता हासिल गर्नेछन् । यहा“ विद्यार्थीेले म्याथम्याटिक्स, कम्प्युटर साइन्स र फिजिक्सबारे आधारभूत ज्ञान हासिल गर्नेछन्, जसले सफ्टवेयर इञ्जिनियरिङ विधाको शैक्षिक जग बसाल्छ ।


सफ्टवेयर इञ्जिनियरिङ प्रोग्रामका ग्य्राजुएट्सहरूले म्याथम्याटिक्सको प्रायोग गर्न सिक्छन्, जुन सफ्टवेयर तथा एप्लिकेशन दृष्टिकोणबाट डिजिटल सिष्टमलाई व्याख्या र विश्लेषण गर्ने आधार हो । उनीहरूले भरपर्दो सफ्टवेयर निर्माणका लागि आवश्यक कम्प्युटर साइन्सको क्षेत्रको ठोस ज्ञान प्राप्त गर्छन् । ठूला तहका प्रोजेक्टमा काम गर्ने सफ्टवेयर टिमका लागि आवश्यक भरपूर सीपहरू विद्यार्थीले पाउ“छन् ।


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


यो करिकुलमले लक्षित विद्यार्थीहरूलाई वर्तमान सफ्टवेयर इञ्जिनियरिङ विधाका म्यानेजमेन्ट सिद्धान्तहरूमा आधारित एनलाइसिस, डिजाइन, इम्प्लिमेन्टेशन तथा मेन्टेनेन्स, टेक्निकहरू (अप्रोच तथा नोशन) र टुल्स (सफ्टवेयर इञ्जिनियरिङ इन्भायरोनमेन्ट)बारे ज्ञान हासिल गर्न मद्दत गर्नेछ । साथै यो कोर्सको डिजाइन सिष्टम एनलाइसिस, डिजाइन तथा इम्प्लिमेन्टेशनका लागि प्रशस्त उच्च तहको टेक्निकल स्किल उपलब्ध गर्ने हिसाबले गरिएको छ, जुन अल्ट्रा मोडर्न कम्प्युटर एडेड सफ्टवेयर इञ्जिनियरिङ टुल्स ( CASE) को मद्दतले कुशल सफ्टवेयर डेभलप गर्न आवश्यक पर्छ ।


कहा“ पढ्न पाइन्छ ?
सफ्टवेयर इञ्जिनियरिङ कोर्स नेपालमा दुईओटा कलेजमा मात्र सञ्चालनमा छ । ललितपुर बालकुमारीस्थित एनसिआइटी र पोखराको गण्डकी कलेजमा यो कोर्स अध्ययन गर्र्न सकिन्छ । कम्प्युटर इञ्जिनियरिङ सोसरहको शुल्कमा यो कोर्स अध्ययन गर्न सकिने ह“ुदा यही क्षेत्रमा करिअर विकास गर्न चाहनेहरूका लागि एकदमै राम्रो कोर्स तथा शैक्षिक कार्यक्रमका रूपमा यो स्थापित छ ।


(लेखक एनसिआइटी कलेजका मास्टर्स कार्यक्रमका संयोजक हुन् ।)