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

विषय - सूची:

Anonim

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

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

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

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

इस सॉफ्टवेयर इंजीनियरिंग ट्यूटोरियल में, आप सीखेंगे:

  • सॉफ्टवेयर इंजीनियरिंग क्या है?
  • क्यों सॉफ्टवेयर इंजीनियरिंग? सॉफ्टवेयर संकट और इसका समाधान
  • क्यों सॉफ्टवेयर इंजीनियरिंग लोकप्रिय है?
  • अन्य अनुशासन के साथ सॉफ्टवेयर इंजीनियरिंग का संबंध
  • सॉफ्टवेयर इंजीनियरिंग की चुनौतियां
  • सॉफ्टवेयर उत्पादों के लिए विशेषताएँ
  • अच्छे सॉफ्टवेयर के लक्षण

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

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

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

उपरोक्त सभी मुद्दे 'सॉफ्टवेयर संकट' की ओर ले जाते हैं।

समाधान

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

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

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

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

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

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

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

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

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

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

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

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

किसी भी सॉफ़्टवेयर उत्पाद की विशेषताओं में ऐसी सुविधाएँ शामिल होती हैं जो उत्पाद द्वारा प्रदर्शित होती हैं जब इसे स्थापित किया जाता है और उपयोग में लाया जाता है।

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

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

Efficiency, reliability, robustness, maintainability, etc.

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

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

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

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

किसी भी सॉफ्टवेयर को इस बात से आंका जाना चाहिए कि यह क्या प्रदान करता है और वे कौन से तरीके हैं जो आपको इसका उपयोग करने में मदद करते हैं।

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

  • आपरेशनल
  • संक्रमणकालीन
  • रखरखाव

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

आपरेशनल

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

  • बजट
  • दक्षता
  • प्रयोज्य
  • निर्भरता
  • यथार्थता
  • कार्यक्षमता
  • सुरक्षा
  • सुरक्षा

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

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

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

रखरखाव

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

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

सारांश

  • सॉफ़्टवेयर इंजीनियरिंग उपयोगकर्ता की आवश्यकताओं का विश्लेषण करने और फिर डिज़ाइन करने, निर्माण करने और सॉफ़्टवेयर एप्लिकेशन का परीक्षण करने की एक प्रक्रिया है जो उस आवश्यकताओं को पूरा करेगी
  • सॉफ्टवेयर इंजीनियरिंग का उपयोग करने के लिए महत्वपूर्ण कारण हैं: 1) बड़े सॉफ्टवेयर, 2) स्केलेबिलिटी 3) अनुकूलन 4) लागत और 5) गतिशील प्रकृति।
  • 1960 के दशक के उत्तरार्ध में कई सॉफ्टवेयर बजट से अधिक हो गए। इसलिए यह अविश्वसनीय सॉफ्टवेयर प्रदान करता है जो रखरखाव के लिए महंगा है।
  • 1970 के दशक के उत्तरार्ध में सॉफ्टवेयर इंजीनियरिंग सिद्धांतों के व्यापक उपयोग देखे गए।
  • सॉफ्टवेयर इंजीनियरिंग अवधारणा 1) कंप्यूटर विज्ञान 2) प्रबंधन विज्ञान 3) सिस्टम इंजीनियरिंग और 4) अर्थशास्त्र
  • तेजी से बदलाव के समय के लिए बाजार की बढ़ती मांग सॉफ्टवेयर इंजीनियरिंग क्षेत्र की सबसे बड़ी चुनौती है।
  • 1) रखरखाव, 2) निर्भरता, 3) दक्षता और, 4) उपयोगिता सॉफ्टवेयर उत्पादों के सबसे महत्वपूर्ण गुण हैं।
  • अच्छे सॉफ्टवेयर के तीन सबसे महत्वपूर्ण लक्षण हैं 1) ऑपरेशनल 2) ट्रांजिशनल 3) मेंटेनेंस।