सॉफ्टवेयर इंजीनियरिंग क्या है? परिभाषा, मूल बातें, विशेषताएं
सॉफ्टवेयर इंजीनियरिंग क्या है?
सॉफ्टवेयर इंजीनियरिंग को उपयोगकर्ता की आवश्यकताओं का विश्लेषण करने और फिर उन आवश्यकताओं को पूरा करने वाले सॉफ्टवेयर अनुप्रयोगों को डिजाइन करने, निर्माण करने और परीक्षण करने की प्रक्रिया के रूप में परिभाषित किया जाता है।
आइए सॉफ्टवेयर इंजीनियरिंग की विभिन्न परिभाषाओं पर नजर डालें:
- IEEE अपने मानक 610.12-1990 में सॉफ्टवेयर इंजीनियरिंग को सॉफ्टवेयर के विकास, संचालन और रखरखाव के लिए एक व्यवस्थित, अनुशासित, गणना योग्य दृष्टिकोण के अनुप्रयोग के रूप में परिभाषित करता है।
- फ्रिट्ज़ बाउर ने इसे 'स्थापना और इस्तेमाल किए गए मानक इंजीनियरिंग सिद्धांतों के रूप में परिभाषित किया। यह आपको किफायती रूप से ऐसा सॉफ़्टवेयर प्राप्त करने में मदद करता है जो विश्वसनीय है और वास्तविक मशीनों पर कुशलतापूर्वक काम करता है।'
- बोहम सॉफ्टवेयर इंजीनियरिंग को परिभाषित करते हैं, जिसमें 'वैज्ञानिक ज्ञान का कंप्यूटर प्रोग्राम के रचनात्मक डिजाइन और निर्माण में व्यावहारिक अनुप्रयोग शामिल है। इसमें उन्हें विकसित करने, संचालित करने और बनाए रखने के लिए आवश्यक संबंधित दस्तावेज भी शामिल हैं।'
सॉफ्टवेयर इंजीनियरिंग क्यों? सॉफ्टवेयर संकट और उसका समाधान
सॉफ्टवेयर संकट क्या था?
- यह 1960 के दशक का अंतिम समय था जब कई सॉफ्टवेयर परियोजनाएं असफल हो गईं।
- कई सॉफ्टवेयर बजट से बाहर हो गए। आउटपुट एक अविश्वसनीय सॉफ्टवेयर था जिसका रखरखाव महंगा था।
- बड़े सॉफ्टवेयर का रखरखाव कठिन और काफी महंगा था।
- बहुत सारे सॉफ्टवेयर ग्राहकों की बढ़ती आवश्यकताओं को पूरा करने में सक्षम नहीं हैं।
- जब भी हार्डवेयर क्षमता बढ़ी, सॉफ्टवेयर परियोजनाओं की जटिलताएं भी बढ़ गईं।
- नये सॉफ्टवेयर बनाने की क्षमता की तुलना में नये सॉफ्टवेयर की मांग तेजी से बढ़ी।
उपरोक्त सभी मुद्दे 'सॉफ्टवेयर संकट' को जन्म देते हैं।
समाधान
समस्या का समाधान असंगठित कोडिंग प्रयास को सॉफ्टवेयर इंजीनियरिंग अनुशासन में बदलना था। इन इंजीनियरिंग मॉडलों ने कंपनियों को संचालन को सुव्यवस्थित करने और ग्राहकों की आवश्यकताओं को पूरा करने वाले सॉफ्टवेयर देने में मदद की।
- 1970 के दशक के अंत में सॉफ्टवेयर इंजीनियरिंग सिद्धांतों का व्यापक उपयोग देखा गया।
- 1980 के दशक में सॉफ्टवेयर इंजीनियरिंग प्रक्रिया का स्वचालन और (CASE) कंप्यूटर-सहायता प्राप्त सॉफ्टवेयर इंजीनियरिंग का विकास देखा गया।
- 1990 के दशक में आईएसओ 9001 की तरह ही गुणवत्ता और प्रक्रियाओं के मानक के रूप में परियोजनाओं के 'प्रबंधन' पहलुओं पर अधिक जोर दिया गया है।
सॉफ्टवेयर इंजीनियरिंग क्यों लोकप्रिय है?
सॉफ्टवेयर इंजीनियरिंग की लोकप्रियता के पीछे महत्वपूर्ण कारण इस प्रकार हैं:
- बड़े सॉफ्टवेयर - हमारे वास्तविक जीवन में, घर या इमारत की तुलना में दीवार बनाना काफी आरामदायक है। उसी तरह, जैसे-जैसे सॉफ्टवेयर का आकार बड़ा होता जाता है, सॉफ्टवेयर इंजीनियरिंग आपको सॉफ्टवेयर बनाने में मदद करती है।
- मापनीयता- यदि सॉफ्टवेयर विकास प्रक्रिया वैज्ञानिक और इंजीनियरिंग अवधारणाओं पर आधारित होती, तो मौजूदा सॉफ्टवेयर को स्केल करने के लिए नए सॉफ्टवेयर का पुनः निर्माण करना आसान होता।
- अनुकूलन क्षमताजब भी सॉफ्टवेयर प्रक्रिया वैज्ञानिक और इंजीनियरिंग पर आधारित थी, तो सॉफ्टवेयर इंजीनियरिंग की मदद से नए सॉफ्टवेयर को फिर से बनाना आसान था।
- लागत- हार्डवेयर उद्योग ने अपना कौशल दिखाया है और विशाल विनिर्माण ने कंप्यूटर और इलेक्ट्रॉनिक हार्डवेयर की लागत कम कर दी है।
- गतिशील प्रकृति- सॉफ़्टवेयर की प्रकृति हमेशा बढ़ती और अनुकूलित होती रहती है। यह उस वातावरण पर निर्भर करता है जिसमें उपयोगकर्ता काम करता है।
- गुणवत्ता प्रबंधन: गुणवत्तापूर्ण सॉफ्टवेयर उत्पाद प्रदान करने के लिए सॉफ्टवेयर विकास की बेहतर विधि प्रदान करता है।
अन्य विषयों के साथ सॉफ्टवेयर इंजीनियरिंग का संबंध
सॉफ्टवेयर इंजीनियरिंग अन्य विषयों से किस प्रकार संबंधित है, यहां देखें:
- कंप्यूटर विज्ञान: यह सॉफ्टवेयर के लिए वैज्ञानिक आधार प्रदान करता है क्योंकि इलेक्ट्रिकल इंजीनियरिंग मुख्य रूप से भौतिकी पर निर्भर करती है।
- प्रबंधन विज्ञान: सॉफ्टवेयर इंजीनियरिंग श्रम-गहन कार्य है जिसके लिए तकनीकी और प्रबंधकीय नियंत्रण दोनों की आवश्यकता होती है। इसलिए, प्रबंधन विज्ञान में इसका व्यापक रूप से उपयोग किया जाता है।
- अर्थशास्त्र: इस क्षेत्र में, सॉफ्टवेयर इंजीनियरिंग आपको संसाधन आकलन और लागत नियंत्रण में मदद करती है। कंप्यूटिंग सिस्टम को विकसित किया जाना चाहिए, और डेटा को दिए गए बजट के भीतर नियमित रूप से बनाए रखा जाना चाहिए।
- सिस्टम इंजीनियरिंग: अधिकांश सॉफ़्टवेयर एक बहुत बड़ी प्रणाली का घटक है। उदाहरण के लिए, उद्योग निगरानी प्रणाली में सॉफ़्टवेयर या हवाई जहाज़ पर उड़ान सॉफ़्टवेयर। इस प्रकार की प्रणालियों के अध्ययन के लिए सॉफ़्टवेयर इंजीनियरिंग विधियों को लागू किया जाना चाहिए।
सॉफ्टवेयर इंजीनियरिंग की चुनौतियाँ
सॉफ्टवेयर इंजीनियरों के सामने आने वाली कुछ महत्वपूर्ण चुनौतियाँ इस प्रकार हैं:
- अंतरिक्ष, विमानन, परमाणु ऊर्जा संयंत्र आदि जैसे सुरक्षा-महत्वपूर्ण क्षेत्रों में सॉफ्टवेयर विफलता की लागत बहुत अधिक हो सकती है, क्योंकि जीवन जोखिम में होता है।
- तेजी से काम पूरा करने की बाजार में बढ़ती मांग।
- नए अनुप्रयोगों के लिए सॉफ्टवेयर की बढ़ती जटिलता से निपटना आवश्यक है।
- सॉफ्टवेयर प्रणालियों की विविधता को एक दूसरे के साथ संवाद करना चाहिए।
सॉफ़्टवेयर उत्पादों के लिए विशेषताएँ
किसी भी सॉफ्टवेयर उत्पाद की विशेषताओं में वे विशेषताएं शामिल होती हैं जो उत्पाद द्वारा तब प्रदर्शित की जाती हैं जब उसे इंस्टॉल किया जाता है और उपयोग में लाया जाता है।
वे उत्पाद द्वारा प्रदान की जाने वाली सेवाएँ नहीं हैं। इसके बजाय, वे उत्पाद के गतिशील व्यवहार और उत्पाद के उपयोग से संबंधित हैं।
इन विशेषताओं के उदाहरण हैं:
Efficiency, reliability, robustness, maintainability, etc.
हालाँकि, इन विशेषताओं का सापेक्ष महत्व एक सॉफ्टवेयर सिस्टम से दूसरे में भिन्न होता है।
उत्पाद अभिलक्षण | विवरण |
---|---|
रख-रखाव | सॉफ्टवेयर को ग्राहकों की बदलती मांगों को पूरा करने के लिए विकसित किया जाना चाहिए। |
Dependability | निर्भरता में विभिन्न विशेषताएं शामिल हैं। भरोसेमंद सॉफ़्टवेयर को सिस्टम विफलता के समय कभी भी कोई शारीरिक या आर्थिक क्षति नहीं पहुंचानी चाहिए। |
दक्षता | सॉफ्टवेयर अनुप्रयोग को मेमोरी और प्रोसेसर चक्र जैसे सिस्टम संसाधनों का अधिक उपयोग करना चाहिए। |
प्रयोज्य | सॉफ्टवेयर एप्लीकेशन में विशिष्ट यूआई और दस्तावेज़ीकरण होना चाहिए। |
उपरोक्त विशेषता को अनुकूलित करना बहुत चुनौतीपूर्ण है। उदाहरण के लिए, बेहतर UI प्रदान करने से सिस्टम की दक्षता कम हो सकती है।
अच्छे सॉफ्टवेयर के लक्षण
किसी भी सॉफ्टवेयर का मूल्यांकन इस आधार पर किया जाना चाहिए कि वह क्या प्रदान करता है तथा उसे उपयोग करने में कौन सी विधियां आपकी मदद करती हैं।
प्रत्येक सॉफ्टवेयर को निम्नलिखित विशेषताओं को पूरा करना होगा:
- Operaराष्ट्रीय
- संक्रमणकालीन
- रखरखाव
सॉफ्टवेयर पेशेवरों द्वारा विकसित अच्छे सॉफ्टवेयर की कुछ महत्वपूर्ण विशेषताएं यहां दी गई हैं
Operaराष्ट्रीय
यह विशेषता हमें यह बताती है कि सॉफ्टवेयर किस प्रकार से कार्य करता है, जिसे निम्न आधार पर मापा जा सकता है:
- बजट
- दक्षता
- प्रयोज्य
- Dependability
- यथार्थता
- कार्यशीलता
- सुरक्षा
- सुरक्षा
संक्रमणकालीन
जब सॉफ्टवेयर को एक प्लेटफॉर्म से दूसरे प्लेटफॉर्म पर ले जाया जाता है तो यह एक आवश्यक पहलू है:
- इंटरोऑपरेबिलिटी
- रेस की क्षमता
- सुवाह्यता
- अनुकूलन क्षमता
रखरखाव
यह पहलू इस बात पर चर्चा करता है कि सॉफ्टवेयर में तेजी से बदलते परिवेश में स्वयं को अनुकूलित करने की कितनी अच्छी क्षमता है:
- लचीलापन
- रख-रखाव
- प्रतिरूपकता
- अनुमापकता
सारांश
- सॉफ्टवेयर इंजीनियरिंग उपयोगकर्ता की आवश्यकताओं का विश्लेषण करने और फिर सॉफ्टवेयर एप्लिकेशन को डिजाइन करने, निर्माण करने और परीक्षण करने की एक प्रक्रिया है जो उन आवश्यकताओं को पूरा करेगी
- सॉफ्टवेयर इंजीनियरिंग का उपयोग करने के महत्वपूर्ण कारण हैं: 1) बड़ा सॉफ्टवेयर, 2) स्केलेबिलिटी 3) अनुकूलनशीलता 4) लागत और 5) गतिशील प्रकृति।
- 1960 के दशक के अंत में कई सॉफ्टवेयर बजट से बाहर हो गए। इसलिए यह अविश्वसनीय सॉफ्टवेयर प्रदान करता है जिसका रखरखाव महंगा है।
- 1970 के दशक के अंत में सॉफ्टवेयर इंजीनियरिंग सिद्धांतों का व्यापक उपयोग देखा गया।
- सॉफ्टवेयर इंजीनियरिंग अवधारणा 1) कंप्यूटर विज्ञान 2) प्रबंधन विज्ञान 3) सिस्टम इंजीनियरिंग और 4) अर्थशास्त्र
- तेजी से काम पूरा करने की बढ़ती बाजार मांग सॉफ्टवेयर इंजीनियरिंग क्षेत्र की सबसे बड़ी चुनौती है।
- 1) रखरखाव, 2) निर्भरता, 3) दक्षता और, 4) प्रयोज्यता सॉफ्टवेयर उत्पादों की सबसे महत्वपूर्ण विशेषताएं हैं।
- अच्छे सॉफ्टवेयर की तीन सबसे महत्वपूर्ण विशेषताएं हैं 1) Opera2) संक्रमणकालीन 3) रखरखाव.