software engineering challenges,scale,quality and productivity in hindi सॉफ्टवेयर इंजीनियरिंग चुनौतियां, पैमाना, गुणवत्ता और उत्पादकता।

 

सॉफ्टवेयर इंजीनियरिंग चुनौतियां(software engineering challenges)


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

software engineering challenges,scale,quality and productivity in hindi सॉफ्टवेयर इंजीनियरिंग चुनौतियां, पैमाना, गुणवत्ता और उत्पादकता।


औद्योगिक शक्ति सॉफ्टवेयर का उद्देश्य क्लाइंट की किसी समस्या को हल करना है। (हम क्लाइंट शब्द का उपयोग बहुत सामान्य अर्थ में करते हैं जिसका अर्थ है वे लोग जिनकी ज़रूरतें सॉफ्टवेयर द्वारा पूरी की जानी हैं।) इसलिए समस्या कुछ उपयोगकर्ताओं या क्लाइंट की ज़रूरतों को पूरा करने के लिए (व्यवस्थित रूप से) सॉफ्टवेयर विकसित करना है।


हालाँकि मूल समस्या क्लाइंट को संतुष्ट करने के लिए व्यवस्थित रूप से सॉफ्टवेयर विकसित करना है, लेकिन कुछ कारक हैं जो समस्या को हल करने के लिए चुने गए दृष्टिकोणों को प्रभावित करते हैं। ये कारक प्राथमिक शक्तियाँ हैं जो सॉफ्टवेयर इंजीनियरिंग के क्षेत्र में प्रगति और विकास को संचालित करती हैं।  हम इन्हें सॉफ्टवेयर इंजीनियरिंग के लिए प्राथमिक चुनौतियों के रूप में मानते हैं और यहाँ कुछ प्रमुख चुनौतियों पर चर्चा करते हैं।



पैमाना(scale)


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


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


औद्योगिक शक्ति सॉफ्टवेयर का उद्देश्य क्लाइंट की किसी समस्या को हल करना है। (हम क्लाइंट शब्द का उपयोग बहुत सामान्य अर्थ में करते हैं जिसका अर्थ है वे लोग जिनकी ज़रूरतें सॉफ्टवेयर द्वारा पूरी की जानी हैं।) इसलिए समस्या कुछ उपयोगकर्ताओं या क्लाइंट की ज़रूरतों को पूरा करने के लिए (व्यवस्थित रूप से) सॉफ्टवेयर विकसित करना है।


हालाँकि मूल समस्या क्लाइंट को संतुष्ट करने के लिए व्यवस्थित रूप से सॉफ्टवेयर विकसित करना है, लेकिन कुछ कारक हैं जो समस्या को हल करने के लिए चुने गए दृष्टिकोणों को प्रभावित करते हैं। ये कारक प्राथमिक शक्तियाँ हैं जो सॉफ्टवेयर इंजीनियरिंग के क्षेत्र में प्रगति और विकास को संचालित करती हैं।  हम इन्हें सॉफ्टवेयर इंजीनियरिंग के लिए प्राथमिक चुनौतियों के रूप में मानते हैं और यहाँ कुछ प्रमुख चुनौतियों पर चर्चा करते हैं।



पैमाना(scale)


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


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


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


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


• कार्यक्षमता। सॉफ़्टवेयर का उपयोग करते समय बताई गई और निहित आवश्यकताओं को पूरा करने वाले फ़ंक्शन प्रदान करने की क्षमता


• विश्वसनीयता। प्रदर्शन के निर्दिष्ट स्तर को बनाए रखने की क्षमता


• प्रयोज्यता। समझे जाने, सीखे जाने और उपयोग किए जाने की क्षमता


• दक्षता। उपयोग किए गए संसाधनों की मात्रा के सापेक्ष उचित प्रदर्शन प्रदान करने की क्षमता


• रखरखाव। सुधार, सुधार या अनुकूलन करने के उद्देश्यों के लिए संशोधित की जाने वाली क्षमता


• पोर्टेबिलिटी। उत्पाद में इस उद्देश्य के लिए प्रदान किए गए कार्यों या साधनों के अलावा अन्य क्रियाकलापों या साधनों को लागू किए बिना विभिन्न निर्दिष्ट वातावरणों के लिए अनुकूलित होने की क्षमता


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


Faq 

Question -1 सॉफ्टवेयर इंजीनियर मै कौन सी चुनौतियों होती है?

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


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



कोई टिप्पणी नहीं

Blogger द्वारा संचालित.