सॉफ्टवेयर अभियान्त्रिकी

सॉफ्टवेयर अभियान्त्रिकी (Software Engineering) अभियान्त्रिकी कि वह शाखा है जिसमे संगणक के सॉफ्टवेयर एवं संचालन प्रणाली की डिजाइन, रचना, विकास, परीक्षण तथा रखरखाव आदि का अध्ययन किया जाता है।

सॉफ्टवेयर इंजीनियर  का अर्थ है व्यवस्थित, अनुशासन-बद्ध, परिमाणात्मक, रुप से सॉफ्टवेर का विकास, संचालन, और रखरखाव, और इन प्रस्तावों का अध्धयन करना ताकि प्रोद्योगिकी का प्रयोग सॉफ्टवेर क्षेत्र में किया जा सके| "सॉफ्टवेर अभियान्तिकी" शब्द सर्वप्रथम १९६८ में नाटो के सॉफ्टवेर अभियान्तिकी सम्मेलन में प्रयोग में लाया गया था जोकि उस समय के "सॉफ्टवेर संकट" को सुलझाने के लिए आयोजित किया गया था| तबसे ये एक ऐसे व्यवसाय के रूप में विकसित हो चुका है जो उच्च गुणवत्ता के सॉफ्टवेर विकसित करने के लिए समर्पित है जो सस्ते, सरलता से रखरखाव करने योग्य, और तेज़ी से बनाये जा सके| चूँकि अन्य अभियान्तिकी शाखाओं की तुलना में "सॉफ्टवेर अभियान्तिकी" एक नया क्षेत्र है, इसलिए इस क्षेत्र में बहुत काम किया जाना बाकी है और इस बात को लेकर बहुत वाद-विवाद है की वास्तव में ये है क्या, और ये भी की क्या ये अभियान्तिकी के क्षेत्र में रखे जाने योग्य है भी| ये क्षेत्र में इतनी तीव्रता से वृद्धि हुई है की इसे अब केवल प्रोग्रामिंग तक ही सीमित नहीं रखा जा सकता| "सॉफ्टवेर अभियान्तिकी" के स्थान पर सॉफ्टवेर उद्योग में "सॉफ्टवेर विकास" शब्द का भी प्रयोग किया जाता है जो अभियान्तिकी शब्द को सॉफ्टवेर विकास के लिए संकुचित मानते हैं| 
एक नया व्यवसाय होने के पश्चात् भी ये भारत में एक पसंदीदा व्यवसाय और जीवन वृत्त(करियर) है और पिछले कई वर्षों में लाखों भारतीय युवक-युवतियां इस क्षेत्र में काम करने के लिए आगे आयें हैं| एक अनुमान के अनुसार भारत में ही इस उद्योग में २२ लाख लोग कार्यरत है|

इतिहास 
यद्यपि "सॉफ्टवेर अभियान्तिकी" शब्द १९६८ में एक सम्मलेन में प्रयोग में लाया गया था, लेकिन जिन समस्याओं को ये संबोधित करता है वो बहुत पहले की है| सॉफ्टवेर अभियान्तिकी का इतिहास जटिल रूप से कंप्यूटर हार्डवेयर और कंप्यूटर सॉफ्टवेर के इतिहासों से गुथा हुआ है|
सन् १९४१ में जब प्रथम डिजीटल कंप्यूटर अस्तित्व में आया, तब उसे चलाने वाले अनुदेश एक यन्त्र में होते थे जो तारो द्बारा कंप्यूटर से जुड़ा होता था| लेकिन शीघ्र ही व्यवसायियो ने ये अनुभव किया की ये ख़ाका अधिक लचीला नहीं है और तब "संग्रहित निर्देश संरचना" या वॉन निउमन स्थापत्य का विकास हुआ| 
१९५० से प्रोग्रामिंग भाषाएँ विकसित होने लगीं और ये भी मतिहीनता की और एक महत्वपूर्ण बढ़त थी| फौरट्रैन, अलगोल, और कोबोल जैसी प्रमुख भाषाएँ १९५० के अंतिम वर्षों में आई जो वैज्ञानिक, प्रतीकगणितीय, और व्यावसायिक समस्याओं को सुलझाने के लिया बनी थी। सॉफ्टवेयर इंजीनियरिंग डिजाइन, विकास और सॉफ्टवेयर के रखरखाव के लिए इंजीनियरिंग के एक विस्तृत अध्ययन है। सॉफ्टवेयर इंजीनियरिंग कम गुणवत्ता सॉफ्टवेयर परियोजनाओं के मुद्दों को संबोधित करने के लिए शुरू की गई थी। जब एक सॉफ्टवेयर आम तौर पर timelines, बजट, और गुणवत्ता का स्तर कम से अधिक समस्याएँ उत्पन्न होती हैं। यह सुनिश्चित करता है कि अनुप्रयोग लगातार, सही ढंग से, समय पर और बजट पर और आवश्यकताओं के भीतर बनाया गया है। सॉफ्टवेयर इंजीनियरिंग की मांग भी उपयोगकर्ता आवश्यकताओं और जिस पर काम कर रहे हो करने के लिए आवेदन करना है वातावरण में परिवर्तन की भारी दर को पूरा करने के लिए उभरा।

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

1) आपरेशनल:-यह कितना अच्छा एक सॉफ्टवेयर कहता है बजट, प्रयोज्य, क्षमता, शुद्धता, कार्यक्षमता, dependability, सुरक्षा और सुरक्षा की तरह कार्रवाई पर काम करता है।

2) संक्रमणकालीन: - परिवर्ती महत्वपूर्ण है, जब कोई अनुप्रयोग एक प्लेटफार्म से दूसरे करने के लिए स्थानांतरित कर दिया गया है। तो, सुवाह्यता, पुन: प्रयोज्य और अनुकूलन क्षमता इस क्षेत्र में आते हैं।

3) रखरखाव: - यह कितना अच्छा एक सॉफ्टवेयर को निर्दिष्ट करता है बदलते वातावरण में काम करता है। प्रतिरूपकता, maintainability, लचीलापन और scalability रखरखाव भाग में आते हैं।

या सॉफ्टवेयर विकास Lifecycle SDLC चरणों में प्रस्तावित सॉफ्टवेयर अनुप्रयोग, इस तरह के रूप में विकसित करने के लिए सॉफ्टवेयर इंजीनियरिंग की एक श्रृंखला है:

1) संचार

2) आवश्यकता सभा

3) व्यवहार्यता अध्ययन

4) प्रणाली विश्लेषण

5) सॉफ्टवेयर डिजाइन

6) कोडिंग

7) परीक्षण

8) एकीकरण

9) कार्यान्वयन

10) संचालन और रखरखाव

11) स्वभाव

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

इन्हें भी देखें 
 संगणक अभियान्त्रिकी

बाहरी कड़ियाँ 
 Guide to the Software Engineering Body of Knowledge
 Computer Software Engineers - Definition and statistics from the U.S. Bureau of Labor Statistics
 IEEE Software Engineering Online
 A Student's Guide to Software Engineering Projects - a free online guide for students taking SE project courses
 सॉफ्टवेर टेक्नोलॉजी पार्क्स ऑफ़ इंडिया इंदौर

कंप्यूटर
सॉफ्टवेयर
अभियान्त्रिकी
सॉफ्टवेयर अभियान्त्रिकी