इस पोस्ट What is Software Engineering in Hindi में हम चर्चा करेंगे कि सॉफ्टवेयर इंजीनियरिंग क्या है, इसके objectives, principles, challenges और course के बारे में। पोस्ट को अंत तक पढ़ने के बाद आपको Software Engineering के बारे में पूरी जानकारी हो जाएगी।
Jump to
सॉफ्टवेयर इंजीनियरिंग क्या है
सॉफ्टवेयर इंजीनियरिंग के उद्देश्य
सॉफ्टवेयर इंजीनियरिंग के सिद्धांत
सॉफ्टवेयर इंजीनियरिंग की चुनौतियां
सॉफ्टवेयर इंजीनियरिंग का इतिहास
सॉफ्टवेयर इंजीनियरिंग कोर्स क्या है
What is Software Engineering in Hindi? (सॉफ्टवेयर इंजीनियरिंग क्या है)
Software Engineering कंप्यूटर साइंस की एक शाखा है जो software development से सम्बंधित है। यहाँ उस प्रक्रिया का अध्ययन होता है जिसका उपयोग करके हम systematic और disciplined तरीके से किसी software (s/w) को develop और maintain करना सीखते है।
इसे हम एक तरह ही engineering approach भी कह सकते है किसी software को develop करने के लिए। Software Engineering को और अच्छे से जानने के लिए आइये इन दो शब्दों सॉफ्टवेयर और इंजीनियरिंग को थोड़ा विस्तार से समझे।
Software कई सारे programs का set होता है, जो कंप्यूटर जैसे डिवाइस पर विभिन्न तरह के कार्य को कण्ट्रोल और मैनेज करता है। हार्डवेयर के जैसे सॉफ्टवेयर को हम छू नहीं सकते क्युकी यह आभासी होता है। इसे किसी विशेष ग्राहक के लिए या फिर किसी कंपनी के लिए बनाया जाता है।
Engineering प्रोडक्ट को साइंटिफिक विधियों और सिद्धांतों से बनाना ही Engineering है। इसके अंतर्गत हमारे द्वारा साइंटिफिक तरीके से किसी प्रोडक्ट को plan, design और develop करते है।
Engineering क्षेत्र में किसी भी प्रोडक्ट को बनाने के लिए 6 स्टेप्स का इस्तेमाल किया जाता है। जिसे The Engineering Design Process कहा जाता है।
- Ask – किसी भी प्रोडक्ट को बनाने से पहले प्रोडक्ट क्यों बनाना चाहिए और उसकी सीमा या प्रतिबंध किया होगा, इसके बारे में पूछना या फिर जानना।
- Imagine – प्रोडक्ट बनने के बाद किया हो सकता है, किन बाधाओं का सामना करना पड़ सकता है उसके बारे में विचार कल्पना करना।
- Plan – प्रोडक्ट को कैसे बनाना है उसके बारे में सोच कर प्लान बनाना।
- Create – प्लान के अनुसार प्रोडक्ट को बनाना।
- Test – प्रोडक्ट को टेस्ट करना।
- Improve – उसमे सुधार लाना।
अगर इन दोनों परिभाषाओं को जोड़ दे तो साइंटिफिक नियम और सिद्धांतों के अनुसार किसी सॉफ्टवेयर का डेवलपमेंट ही है सॉफ्टवेयर इंजीनियरिंग। दूसरे शब्दों में किसी यूजर या फिर कंपनी की जरुरत के अनुसार सॉफ्टवेयर का निर्माण करना सॉफ्टवेयर इंजीनियरिंग कहलाता है।
Objectives of Software Engineering in Hindi
Software Engineering का मुख्य objective (उद्देश्य) high-quality software को develop करना है और उसके लिये आपको कई requirements को पूरा करना होगा जो निम्नलिखित है:
Maintainability (रखरखाव): आपने जो s/w develop किया है अगर उसमे कोई problem आती है तो क्या आप उसे fix कर पाएंगे। अर्थात उसको maintain करना आसान होना चाहिए।
Testability (परीक्षण योग्यता): आपने जो s/w बनाया है क्या आप उसके प्रत्येक function को test कर पा रहे है।
Portability: इसका अर्थ है कि हमारे द्वारा बनाया गया s/w अन्य machines पर भी अच्छे से चलना चाहिए। ऐसा न हो कि उसे हमारे अलावा अन्य मशीन पर उपयोग करने में client को समस्या का सामना करना पड़ें।
Reusability (पुनप्रयोग): हमारे द्वारा बनाया गया s/w ऐसा होना चाहिये जिसके code को हम आवश्यकता पड़ने पर reuse कर पाए।
Correctness: आपने s/w जिस task को करने के लिये बनाया था क्या यह उसे पूरा कर रहा है। अर्थात क्या यह वही काम कर रहा है जिस काम के लिए आपने इसे बनाया था।
Reliability (विश्वसनीयता): इसका अर्थ हुआ कि जिस task के लिये हमने s/w को बनाया है इसने उस काम को हर बार उसी reliability के साथ पूरा करना चाहिए।
Principles of Software Engineering in Hindi
David Hooker ने सात principles का प्रस्ताव रखा, जिन्हें software engineering के core principles कहा जाता है, जो निम्नलिखित है।
The reason it all exists (कारण यह सब मौजूद है) – एक complete software वह है जो customers के साथ-साथ clients के दृष्टिकोण से भी सभी requirements को पूरा करे। इसलिए s/w project शुरू करने से पहले यह सुनिश्चित कर लें कि उसका एक business उद्देश्य हो।
Keep simple but perfect (सरल लेकिन परिपूर्ण रखें) – s/w design यथासम्भव simple होना चाहिए। यदि system में बहुत अधिक interfaces हैं, तो इस प्रकार के सिस्टम को बनाना और implement करना मुश्किल है। इसलिये design simple होना चाहिये, लेकिन इसका मतलब यह नहीं है कि requirements को skip कर दिया जाए।
Maintain the vision (दृष्टि बनाए रखें) – project की सफलता के लिये clear vision की requirement होती है। आपको पता होना चाहिये कि आप क्या बना रहे हैं।
What you produce, other will consume (आप जो उत्पादन करेंगे, दूसरे उसे उपभोग करेंगे) – team में अन्य members उस s/w का उपयोग कर सकते हैं जिसको analyzed, designed और constructed टीम में एक व्यक्ति द्वारा किया जाता है। customer feedback के आधार पर development के बाद improvement भी किया जाएगा।
Be open to the future (भविष्य के लिए खुले रहें) – किसी भी समस्या का समाधान generalized होना चाहिए specific नहीं। क्योंकि generalized solution अन्य applications के लिए भी reused किये जा सकते है। कहने का मतलब है कि आपको भविष्य में किसी भी change के लिये तैयार रहना चाहिए।
Plan ahead for use (उपयोग के लिये आगे की योजना बनाएं) – reusability अच्छी quality वाले software की एक property है। reusable software का use अन्य applications के development में किया जा सकता है। ऐसे s/w बनाने के लिये object oriented programming languages का उपयोग लोकप्रिय रूप से किया जाता है।
Think for better solution (बेहतर समाधान के लिये सोचें) – जब हम किसी चीज के बारे में सोचते हैं और हमें समाधान मिल जाए तो हमें और बेहतर समाधान के लिये सोचना चाहिए। क्योंकि एक better idea पहले discussion में नही आ सकता।
Challenges of Software Engineering in Hindi
Software Engineering एक अच्छी तरह से परिभाषित और व्यवस्थित दृष्टिकोण है किसी सॉफ्टवेयर को बनाने के लिये। इस दृष्टिकोण को उच्च गुणवत्ता वाले सॉफ्टवेयर के उत्पादन का सबसे प्रभावी तरीका माना जाता है, लेकिन अभी भी Software Engineering के सामने कुछ गम्भीर चुनोतियाँ है।
इनमें से कुछ चुनौतियां निम्नलिखित है:
- Technology में जो तेजी से changes आ रहे है वो एक बड़ी चुनौती है software engineers के लिए। जैसे-जैसे emerging economies विकसित हो रही हैं और लोगों को new technologies आसानी से उपलब्ध हो रही है, जिसके कारण business और society भी बहुत तेजी से बदल रहे है। इसलिए आपको अपने मौजूदा software को बदलने और नए software को विकसित करने में सक्षम होना चाहिये।
- Software Engineering का उद्देश्य ये भी है कि हमारा मकसद ऐसा product बनाना होना चाहिए जो customers की demands को पूरा कर सके।
- आज के समय customers की demands इतनी बढ़ चुकी है कि software के द्वारा सभी requirements की पूर्ति करना एक बड़ा challenge है।
- जैसे जैसे project का size बढ़ता है हम development के कुछ informal method से formal method की ओर बढ़ते है। तब हमें software development के लिये अधिक resources, methods, tools, techniques और management activities की आवश्यकता होती है। तो किसी project को scale करना भी अपने आप मे एक बड़ा challenge है।
- अक्सर ग्राहकों के लिये यह व्यक्त करना बहुत कठिन होता है कि वे किसी product में क्या चाहते हैं। वो आपको बता नही सकते जब तक वे कुछ ऐसा नही देख लेते जो उन्होंने मांगा था। तो ग्राहक की निरंतर बदलती आवश्यकताएं भी एक चुनौती है।
- Software Engineering के सामने यह एक चुनौती है कि कैसे सुनिश्चित किया जाए कि सफल परिणाम दोहराए जा सकते हैं और गुणवत्ता और उत्पादकता में कुछ हद तक स्थिरता हो सकती है। तो consistency और repeatability भी एक बड़ी चुनौती है।
- Same methods का use करना सभी प्रकार के software development के लिए suitable नही है। उदाहरण के लिये आप उस methods से large-scale projects को develop नही कर सकते जिससे आपने low और medium scale project को develop किया था।
- Security और trust भी बड़ी चुनोतियाँ में से एक है। चूंकि s/w हमारे जीवन के सभी पहलुओं से जुड़ा है, इसलिए यह जरूरी है कि हम उस पर भरोसा कर सके। यह web page या web service interface के माध्यम से access किए गए remote software के लिए विशेष रूप से सच है। हमें यह सुनिश्चित करना होगा कि unauthorized user हमारे software को access न कर पाए ताकि data security maintained रहे।
सॉफ्टवेयर इंजीनियरिंग का इतिहास और इसकी आवश्यकता
जैसे जैसे सॉफ्टवेयर की जरुरत बढ़ती गयी, वैसे ही लोग सॉफ्टवेयर इंजीनियर के महत्त्व को भी समझने लगे। अभी हम पहले कुछ समस्या का सामना करेंगे और धीरे धीरे उसके समाधान के लिए सॉफ्टवेयर इंजीनियरिंग का विकास करेंगे।
पहले s/w पर लोग ज्यादा ध्यान नहीं देते थे, कंप्यूटर को कैसे जल्दी से जल्दी फ़ास्ट प्रोसेस किया जाये इसी पर ध्यान देते थे। मतलब पहले लोग हार्डवेयर के उप्पर ज्यादा ध्यान देते थे। अगर कोई s/w काम नहीं करता था तो वे उसे रिप्लेस भी कर देते थे। इसके चलते s/w का विकास नहीं हो पा रहा था।
सालो पहले s/w का मूल्य हार्डवेयर से बहुत कम था। इसके कारण लोग s/w development को समय की बर्बादी मानते थे और इसे कंप्यूटर का एक छोटा सा हिस्सा माना जाता था। इसे चलते उस समय s/w का सही तरीके से विकास हो नहीं पा रहा था।
जैसे जैसे समय बदला कंप्यूटर में लोगो की रुचि बढ़ी तब लोगो को विभिन्न क्षेत्रों में अलग-अलग सॉफ्टवेयर की जरुरत महसूस हुई और इसके चलते s/w में विकास लाने के लिए प्रोग्रामिंग लैंग्वेज ज्यादा से ज्यादा जटिल होते गयी। प्रोग्राम लिखने और लोगो की अपेक्षाओं को पूरा करने के लिए विभिन्न संसाधनों की आवश्यकता पड़ी।
प्रोग्राम जितने जटिल होते गए, उसे लिखने में ज्यादा से ज्यादा समय लगने लगा। इसके साथ साथ उनकी लागत भी बढ़ने लगी। धीरे धीरे लगभग हर काम के लिए सॉफ्टवेयर की जरुरत हुयी और इसके लिए बहुत बड़े-बड़े s/w बनाने पड़ रहे थे। इसे बनाने में अधिक समय भी लग रहा था। कई सॉफ्टवेयर को बनाने में महीना और कई को बनाने में तो साल भी लगने लगा।
कंप्यूटर धीरे धीरे रोजमर्रा के महत्वपूर्ण कामो को भी संभालने लगे। जैसे ECG , XRAY और भी कई मेडिकल कामो में। ऐसे s/w में सठिक तथ्य की जरुरत होती है। इससे सॉफ्टवेयर की क्वालिटी में ज्यादा से ज्यादा विकास होने लगा।
धीरे धीरे कंप्यूटर s/w बहुत ही ज्यादा महँगा होने लगा। हार्डवेयर से दो गुना चार गुना लागत ज्यादा लगने लगा सॉफ्टवेयर में। लोगो की जरुरत जितनी बढ़ने लगी उतनी ही इसकी लागत भी बढ़ने लगी।
सॉफ्टवेयर की मांग बढ़ने से इसे डेवेलप करने की विधि में भी बदलाब करना जरुरी था। प्रोग्रामर्स, क्लाइंट को सॉफ्टवेयर कैसा चाहिए वो समझ नहीं पा रहे थे इससे क्लाइंट असंतोष महूसस कर रहा था। तभी धीरे धीरे सॉफ्टवेयर इंजिनीरिंग की जरुरत महसूस हुयी।
सॉफ्टवेयर इंजीनियरिंग में एक प्रोसेस के तहत सॉफ्टवेयर को तैयार किया जाता है। इसमें client की जरूरतों को खास तौर पर ध्यान में रखा जाता है। इससे s/w कंप्यूटर हार्डवेयर से काफी सस्ता हो गया। लोगो को इसकी जरूरत भी महसूस हुयी और सॉफ्टवेयर कंप्यूटर के लिए कितना जरुरी है इस बात को भी वो समझने लगे।
Software Engineering Course in Hindi (सॉफ्टवेयर इंजीनियरिंग कोर्स क्या है)
Software Engineering Course आज के समय अन्य इंजीनियरिंग कोर्स के मुकाबले सबसे लोकप्रिय हैं। यह कोर्स software development से सम्बंधित होता है जिसके अंतर्गत आपको engineering principles और programming languages के बारे में अध्ययन कराया जाता है।
Qualification की बात करे तो इस कोर्स को करने के लिये आपने PCM (Physics, Chemistry, Mathematics) सब्जेक्ट के साथ अपनी 12th की परीक्षा 60% अंको से पास की होनी चाहिए। इस कोर्स को पूरा कर लेने के बाद आप एक software engineer बनते है जिसका काम s/w applications को design, develop, test और maintain करना होता है।
अगर आपने 12th पूरा कर लिया है तो कई सारे Software engineering courses है जिनमें से आप किसी एक को चुन सकते है:
- B Tech (Bachelor of Technology)
- M Tech Software Engineering
- ME in Software Engineering
- M Sc in Software Systems
- Ph D in Software Engineering
- Diploma in Computer Programming and Software Engg
- Diploma in Software Engineering
Conclusion (संक्षेप में)
क्या है सॉफ्टवेयर इंजीनियरिंग? यह एक ऐसी तकनीक है जिसके माध्यम से हम कंप्यूटर सिस्टम और किसी भी अन्य इलेक्ट्रॉनिक उपकरणों के लिये उच्च-गुणवत्ता वाले सॉफ्टवेयर बना अथवा विकसित कर सकते है। दूसरे शब्दों में Software Engineering एक ऐसी प्रकिया है जिसमें यूजर की जरूरतों का विश्लेषण किया जाता है और s/w को उनकी जरुरतों के आधार पर डिजाइन किया जाता है।
तो उम्मीद है, इस पोस्ट What is Software Engineering in Hindi को पढ़ने के बाद आपके इस विषय से सम्बंधित सभी शंकाये दूर हो गयी होगी। पोस्ट से सम्बंधित कोई सवाल या सुझाव हो तो कृपया हमें कमेंट के माध्यम से बताए।
पोस्ट ज्ञानवर्धक लगी हो तो कृपया इसे Social Media पर Share जरूर करे, ताकि आपके माध्यम से अन्य लोगों तक यह जानकारी पहुंच पाए।
Nice
धन्यवाद, अंकित 😊
Thanks a lot आपने बहुत ही अच्छे तरीके से पूरा Process बताया है। चाहे वो Course के बारे में हो या Job के बारे में, इससे लोगो को काफी Help होगी। आज की Date में Software Engineering की Demand काफी बढ़ भी गई है। इसलिए Competition भी बढ़ गया है। जिसके चलते इस Field में Job पाने के लिए Interview सही से Clear करना बहुत ज़रूरी है। जिसके लिए कुछ चीजों का पता होना ज़रूरी है। जोकि मैंने अपने खुद के Experience से सीखा है।