सॉफ्टवेयर इंजीनियरिंग क्या है? विशेषताएं, परिभाषा

⚡ स्मार्ट सारांश

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

  • 📘 मूल परिभाषा: सॉफ्टवेयर इंजीनियरिंग विश्वसनीय सॉफ्टवेयर को विकसित करने, संचालित करने और बनाए रखने के लिए व्यवस्थित, अनुशासित इंजीनियरिंग सिद्धांतों को लागू करती है।
  • ⚠️ सॉफ्टवेयर संकट: 1960 के दशक के उत्तरार्ध में परियोजनाओं की विफलता और बढ़ती लागत ने एक संरचित इंजीनियरिंग अनुशासन की आवश्यकता को जन्म दिया।
  • 📈 यह क्यों मायने रखता है: यह सुसंगत गुणवत्ता प्रबंधन के साथ बड़े, स्केलेबल, अनुकूलनीय और लागत प्रभावी सॉफ्टवेयर को सक्षम बनाता है।
  • 🔗 संबंधित विषय: यह कंप्यूटर विज्ञान, प्रबंधन विज्ञान, अर्थशास्त्र और सिस्टम इंजीनियरिंग पर आधारित है।
  • अच्छा सॉफ्टवेयर: उच्च गुणवत्ता वाला सॉफ्टवेयर परिवर्तनशील परिवेशों में भी संचालनीय, परिवर्तनशील और रखरखाव योग्य होता है।

सॉफ्टवेयर इंजीनियरिंग क्या है?

सॉफ्टवेयर इंजीनियरिंग क्या है?

सॉफ्टवेयर इंजीनियरिंग को उपयोगकर्ता की आवश्यकताओं का विश्लेषण करने और फिर उन आवश्यकताओं को पूरा करने वाले सॉफ्टवेयर एप्लिकेशन को डिजाइन करने, बनाने और परीक्षण करने की प्रक्रिया के रूप में परिभाषित किया जाता है।

आइए सॉफ्टवेयर इंजीनियरिंग की विभिन्न परिभाषाओं पर एक नजर डालें:

  • आईईईई ने अपने मानक 610.12-1990 में सॉफ्टवेयर इंजीनियरिंग को सॉफ्टवेयर के विकास, संचालन और रखरखाव के लिए एक व्यवस्थित, अनुशासित और गणना योग्य दृष्टिकोण के अनुप्रयोग के रूप में परिभाषित किया है।
  • फ्रिट्ज बाउर ने इसे "मानक इंजीनियरिंग सिद्धांतों की स्थापना और उपयोग" के रूप में परिभाषित किया। उन्होंने कहा, "यह आपको किफायती तरीके से ऐसा सॉफ्टवेयर प्राप्त करने में मदद करता है जो विश्वसनीय हो और वास्तविक मशीनों पर कुशलतापूर्वक काम करे।"
  • बोहम सॉफ्टवेयर इंजीनियरिंग को "कंप्यूटर प्रोग्रामों के रचनात्मक डिजाइन और निर्माण के लिए वैज्ञानिक ज्ञान का व्यावहारिक अनुप्रयोग" के रूप में परिभाषित करते हैं। इसमें विकास के लिए आवश्यक संबंधित दस्तावेज़ीकरण भी शामिल है।pingउनका संचालन और रखरखाव करना।"

सॉफ्टवेयर इंजीनियरिंग क्यों? सॉफ्टवेयर संकट और उसका समाधान

सॉफ्टवेयर संकट क्या था?

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

उपरोक्त सभी मुद्दों के कारण ही 'सॉफ्टवेयर संकट' उत्पन्न हुआ।

समाधान

इस समस्या का समाधान अव्यवस्थित कोडिंग प्रयासों को सॉफ्टवेयर इंजीनियरिंग अनुशासन में परिवर्तित करना था। इन इंजीनियरिंग मॉडलों ने कंपनियों को संचालन को सुव्यवस्थित करने और ग्राहकों की आवश्यकताओं को पूरा करने वाला सॉफ्टवेयर प्रदान करने में मदद की।

  • 1970 के दशक के उत्तरार्ध में सॉफ्टवेयर इंजीनियरिंग सिद्धांतों का व्यापक उपयोग देखने को मिला।
  • 1980 के दशक में सॉफ्टवेयर इंजीनियरिंग प्रक्रिया का स्वचालन हुआ और कंप्यूटर-एडेड सॉफ्टवेयर इंजीनियरिंग (CASE) का विकास हुआ।
  • 1990 के दशक में परियोजनाओं के 'प्रबंधन' पहलुओं और गुणवत्ता और प्रक्रियाओं के मानकों पर अधिक जोर दिया गया, ठीक उसी तरह जैसे आईएसओ 9001 में किया गया था।

सॉफ्टवेयर इंजीनियरिंग क्यों लोकप्रिय है?

सॉफ्टवेयर इंजीनियरिंग की लोकप्रियता के पीछे महत्वपूर्ण कारण इस प्रकार हैं:

सॉफ्टवेयर इंजीनियरिंग क्यों लोकप्रिय है?

  • बड़े सॉफ्टवेयर – असल जिंदगी में, घर या इमारत बनाने की तुलना में दीवार बनाना कहीं ज्यादा आसान होता है। ठीक उसी तरह, जैसे-जैसे सॉफ्टवेयर का आकार बढ़ता जाता है, सॉफ्टवेयर इंजीनियरिंग सॉफ्टवेयर बनाने में आपकी मदद करती है।
  • अनुमापकता – यदि सॉफ्टवेयर विकास प्रक्रिया वैज्ञानिक और इंजीनियरिंग अवधारणाओं पर आधारित है, तो मौजूदा सॉफ्टवेयर को स्केल करने के लिए नया सॉफ्टवेयर बनाना आसान होता है।
  • अनुकूलन क्षमता – जब सॉफ्टवेयर प्रक्रिया वैज्ञानिक और इंजीनियरिंग सिद्धांतों पर आधारित होती है, तो सॉफ्टवेयर इंजीनियरिंग की मदद से नया सॉफ्टवेयर बनाना आसान होता है।
  • लागत हार्डवेयर उद्योग ने अपनी कुशलता का प्रदर्शन किया है, और बड़े पैमाने पर उत्पादन से कंप्यूटर और इलेक्ट्रॉनिक हार्डवेयर की लागत कम हो गई है।
  • गतिशील प्रकृति सॉफ्टवेयर की निरंतर बढ़ती और बदलती प्रकृति। यह उस वातावरण पर निर्भर करता है जिसमें उपयोगकर्ता काम करता है।
  • गुणवत्ता प्रबंधन – गुणवत्तापूर्ण सॉफ्टवेयर उत्पाद प्रदान करने के लिए सॉफ्टवेयर विकास का एक बेहतर तरीका प्रदान करता है।

अन्य विषयों के साथ सॉफ्टवेयर इंजीनियरिंग का संबंध

सॉफ्टवेयर इंजीनियरिंग अन्य विषयों से किस प्रकार संबंधित है, यह यहाँ बताया गया है:

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

सॉफ्टवेयर इंजीनियरिंग की चुनौतियाँ

सॉफ्टवेयर इंजीनियरों के सामने आने वाली कुछ महत्वपूर्ण चुनौतियाँ इस प्रकार हैं:

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

सॉफ़्टवेयर उत्पादों के लिए विशेषताएँ

किसी भी सॉफ्टवेयर उत्पाद की विशेषताओं में वे विशेषताएं शामिल होती हैं जो उत्पाद के स्थापित होने और उपयोग में आने पर प्रदर्शित होती हैं।

ये उत्पाद द्वारा प्रदान की जाने वाली सेवाएं नहीं हैं। बल्कि, ये उत्पाद के गतिशील व्यवहार और उत्पाद के उपयोग से संबंधित हैं।

इन विशेषताओं के उदाहरण हैं:

Efficiency, reliability, robustness, maintainability, etc.

हालाँकि, इन विशेषताओं का सापेक्ष महत्व एक सॉफ्टवेयर सिस्टम से दूसरे में भिन्न होता है।

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

उपरोक्त विशेषताओं को अनुकूलित करना बहुत चुनौतीपूर्ण है। उदाहरण के लिए, बेहतर यूजर इंटरफेस प्रदान करने से सिस्टम की दक्षता कम हो सकती है।

अच्छे सॉफ्टवेयर के लक्षण

किसी भी सॉफ्टवेयर का मूल्यांकन उसके द्वारा प्रदान की जाने वाली सुविधाओं और उसे उपयोग करने में सहायक तरीकों के आधार पर किया जाना चाहिए।

प्रत्येक सॉफ्टवेयर को निम्नलिखित विशेषताओं को पूरा करना होगा:

  • Operaराष्ट्रीय
  • संक्रमणकालीन
  • रखरखाव

सॉफ्टवेयर पेशेवरों द्वारा विकसित अच्छे सॉफ्टवेयर की कुछ महत्वपूर्ण विशेषताएं यहां दी गई हैं।

Operaराष्ट्रीय

यह विशेषता हमें यह जानने में मदद करती है कि सॉफ्टवेयर संचालन में कितना अच्छा काम करता है, जिसे निम्नलिखित आधारों पर मापा जा सकता है:

  • बजट
  • दक्षता
  • प्रयोज्य
  • Dependability
  • यथार्थता
  • कार्यशीलता
  • सुरक्षा
  • सुरक्षा

संक्रमणकालीन

जब सॉफ्टवेयर को एक प्लेटफॉर्म से दूसरे प्लेटफॉर्म पर ले जाया जाता है तो यह एक आवश्यक पहलू है:

  • इंटरोऑपरेबिलिटी
  • रेस की क्षमता
  • सुवाह्यता
  • अनुकूलन क्षमता

रखरखाव

यह पहलू इस बात पर प्रकाश डालता है कि सॉफ्टवेयर तेजी से बदलते परिवेश में खुद को कितनी अच्छी तरह से अनुकूलित करने में सक्षम है:

  • लचीलापन
  • रख-रखाव
  • प्रतिरूपकता
  • अनुमापकता

अक्सर पूछे जाने वाले प्रश्न

कृत्रिम बुद्धिमत्ता कोड निर्माण, स्वचालित परीक्षण और बग पहचान में सहायता करती है। यह नियमित कार्यों को संभालती है, जिससे इंजीनियर डिजाइन, आर्किटेक्चर और जटिल समस्या-समाधान पर ध्यान केंद्रित कर सकते हैं, जबकि गुणवत्ता और शुद्धता के लिए मानवीय समीक्षा आवश्यक रहती है।

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

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

मूल जीवनचक्र में आवश्यकता विश्लेषण, डिज़ाइन, कोडिंग, परीक्षण, परिनियोजन और रखरखाव शामिल हैं। प्रत्येक चरण पिछले चरण पर आधारित होता है ताकि यह सुनिश्चित किया जा सके कि अंतिम सॉफ़्टवेयर विश्वसनीय, रखरखाव योग्य और उपयोगकर्ता की आवश्यकताओं को पूरा करता हो।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: