Skip to main content
Global

10.3: सॉफ्टवेयर डेवलपमेंट

  • Page ID
    169488
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    सॉफ़्टवेयर डेवलपमेंट

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

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

    साइडबार: परियोजना प्रबंधन गुणवत्ता त्रिकोण

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

    प्रत्येक कोने पर शब्दों के दायरे, समय और लागत के साथ त्रिभुज और केंद्र में गुणवत्ता
    चित्र 10.6 प्रोजेक्ट मैनेजमेंट क्वालिटी ट्रायंगल। Mapto द्वारा की गई छवि को सार्वजनिक डोमेन लाइसेंस प्राप्त है

    तो इसका क्या मतलब है कि आप केवल तीन में से दो को संबोधित कर सकते हैं? इसका अर्थ है कि तैयार उत्पाद की गुणवत्ता तीन चर पर निर्भर करती है: स्कोप, शेड्यूल और आवंटित बजट। इन तीन चर में से किसी में भी परिवर्तन अन्य दो को प्रभावित करता है, इसलिए, गुणवत्ता।

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

    प्रोग्रामिंग की भाषाएँ

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

    भाषाओं को वर्गीकृत करने का कोई एक तरीका नहीं है। फिर भी, उन्हें अक्सर टाइप (यानी, क्वेरी, स्क्रिप्टिंग), या कालानुक्रमिक रूप से वर्ष के अनुसार समूहीकृत किया जाता है जब इसे पेश किया गया था (यानी, ई। फोरट्रान को 1954 के दशक में पेश किया गया था), उनकी “पीढ़ी” द्वारा, मशीन कोड में इसका अनुवाद कैसे किया गया था, या इसे कैसे निष्पादित किया गया था। हम इस अध्याय में कुछ श्रेणियों के बारे में चर्चा करेंगे।

    प्रोग्रामिंग भाषाओं की पीढ़ी

    शुरुआती भाषाएं उस प्रकार के हार्डवेयर के लिए विशिष्ट थीं जिन्हें प्रोग्राम किया जाना था; प्रत्येक प्रकार के कंप्यूटर हार्डवेयर की एक अलग निम्न-स्तरीय प्रोग्रामिंग भाषा थी (वास्तव में, आज भी, निचले स्तर पर अंतर हैं, हालांकि उच्च-स्तरीय प्रोग्रामिंग भाषाएं अब उन्हें अस्पष्ट करती हैं)। इन शुरुआती भाषाओं में, सटीक निर्देशों को लाइन दर लाइन दर्ज करना था - एक थकाऊ प्रक्रिया।

    इन पीढ़ियों के बीच कुछ अंतरों को स्पष्ट करने के लिए कुछ सामान्य विशेषताओं को संक्षेप में प्रस्तुत किया गया है:

    पहली पीढ़ी (1GL)

    दूसरी पीढ़ी (2GL)

    तीसरी पीढ़ी (3GL)

    चौथी पीढ़ी (4GL)

    पांचवीं पीढ़ी (5GL)

    समय शुरू किया गया (est)।

    1940 या उससे पहले

    1950 के दशक

    1950 से 1970 के दशक

    १९७०-१९९० के दशक

    1980 से 1900 के दशक

    निर्देश

    वे 0s और 1s के बाइनरी नंबरों से बने होते हैं

    सिंटैक्स के एक सेट का उपयोग करें जो मानव और प्रोग्रामर द्वारा पठनीय है

    सिंटैक्स अधिक संरचित है और यह अधिक मानव-जैसी भाषा से बना है

    सिंटैक्स गैर-प्रोग्रामर के अनुकूल है

    अभी भी प्रगति पर है।

    कैटेगरी

    मशीन पर निर्भर

    मशीन कोड

    मशीन पर निर्भर

    निम्न स्तर, विधानसभा भाषाएँ

    मशीन स्वतंत्र

    ऊँचा स्तर

    मशीन स्वतंत्र

    उच्च स्तरीय अमूर्तता,

    एडवांस 3GLs

    लॉजिक प्रोग्रामिंग

    फ़ायदा

    बहुत तेज़, 0s और 1s के लिए 'अनुवाद' की कोई ज़रूरत नहीं है

    कोड को मशीन कोड सीखने की तुलना में प्रोग्रामर द्वारा आसानी से पढ़ा और लिखा जा सकता है

    अधिक मशीन-स्वतंत्र

    प्रोग्रामर के लिए अधिक अनुकूल

    सामान्य उद्देश्य

    सीखने में आसान

    प्रोग्राम लिखने के लिए प्रोग्रामर की आवश्यकता नहीं हो सकती है

    नुकसान

    मशीन पर निर्भर, पोर्टेबल नहीं

    मशीन कोड में परिवर्तित होना चाहिए, फिर भी मशीन-निर्भर

    मशीन कोड में अनुवाद करने के लिए कई कदम उठा सकते हैं

    अधिक विशिष्ट

    अभी भी गोद लेने के शुरुआती चरण में

    आज का उपयोग

    यदि हार्डवेयर से सीधे बातचीत करने की आवश्यकता हो जैसे कि ड्राइवर (यानी, USB ड्राइवर)

    यदि हार्डवेयर से सीधे बातचीत करने की आवश्यकता हो जैसे कि ड्राइवर (यानी, USB ड्राइवर)

    आधुनिक 3GL का अधिक उपयोग किया जाता है।

    शुरुआती 3GL का उपयोग मौजूदा व्यावसायिक कार्यक्रमों या वैज्ञानिक कार्यक्रमों को बनाए रखने के लिए किया जाता है

    डेटाबेस, वेब डेवलपमेंट

    सीमित

    विज़ुअल टूल, आर्टिफिशियल इंटेलिजेंस रिसर्च

    उदाहरण

    मशीन की भाषा

    विधानसभा की भाषा

    शुरुआती 3GLs: COBOL, फोरट्रान

    आधुनिक 3PLs: C, C ++, जावा, जावास्क्रिप्ट

    पर्ल, पीएचपी, पायथन, एसक्यूएल, रूबी

    बुध, OPS5

    Satista.com ने बताया कि 2020 की शुरुआत में, जावास्क्रिप्ट दुनिया भर के डेवलपर्स में सबसे ज्यादा इस्तेमाल की जाने वाली भाषा थी। पूरी सूची देखने के लिए, कृपया अधिक जानकारी के लिए Statista.com पर जाएं

    साइडबार: भाषाओं के उदाहरण

    पहली पीढ़ी की भाषा: मशीन कोड। मशीन कोड में, बाइनरी कोड का उपयोग करके वास्तविक वाले और शून्य (बिट्स) को सीधे सेट करके प्रोग्रामिंग की जाती है। यहां एक उदाहरण प्रोग्राम है जो

    मशीन भाषा का उपयोग करके 1234 और 4321 जोड़ता है:

    10111001

    00000000

    11010010

    10100001

    00000100

    00000000

    10001001

    00000000

    00001110

    १०००१०१

    00000000

    0001110

    00000000

    0001110

    00000000

    00000010

    10111001

    00000000

    11100001

    00000011

    00010000

    11000011

    10001001

    १०१०००११

    00001110

    00000100

    00000010

    00000000

    दूसरी पीढ़ी की भाषा। असेंबली भाषा मशीन-कोड निर्देशों के लिए अंग्रेजी जैसे वाक्यांश देती है, जिससे प्रोग्राम करना आसान हो जाता है। एक असेंबली-भाषा प्रोग्राम को एक असेंबलर के माध्यम से चलाया जाना चाहिए, जो इसे मशीन कोड में परिवर्तित करता है। यहां एक उदाहरण प्रोग्राम दिया गया है जो असेंबली भाषा का उपयोग करके 1234 और 4321 को जोड़ता है:

    MOV CX,1234 MOV विज्ञापन: [0], सीएक्स मोव सीएक्स, 4321 एमओवी मैक्स, डीएस: [0]

    MOV BOX, DS: [2] कुल्हाड़ी, बॉक्स जोड़ें

    MOV विज्ञापन: [4], अधिकतम

    तीसरी पीढ़ी की भाषाएं उनके द्वारा चलाए जाने वाले हार्डवेयर के प्रकार के लिए विशिष्ट नहीं हैं और बहुत अधिक बोली जाने वाली भाषाओं की तरह हैं। अधिकांश तीसरी पीढ़ी की भाषाओं को संकलित किया जाना चाहिए, एक प्रक्रिया जो उन्हें मशीन कोड में परिवर्तित करती है। प्रसिद्ध तीसरी पीढ़ी की भाषाओं में BASIC, C, Pascal और Java शामिल हैं। बेसिक का उपयोग करते हुए यहां एक उदाहरण दिया गया है:

    A=1234 बी = 4321 सी=ए+बी अंत

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

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

    संकलित बनाम व्याख्या की गई

    अपनी पीढ़ी के आधार पर एक प्रोग्रामिंग भाषा को वर्गीकृत करने के अलावा, इसे संकलित या व्याख्या की गई भाषा के रूप में भी वर्गीकृत किया जा सकता है। जैसा कि हमने सीखा है, एक कंप्यूटर भाषा मानव-पठनीय रूप में लिखी गई है। संकलित भाषा में, प्रोग्राम कोड को मशीन-पठनीय रूप में अनुवादित किया जाता है जिसे निष्पादन योग्य कहा जाता है जिसे हार्डवेयर पर चलाया जा सकता है। कुछ प्रसिद्ध संकलित भाषाओं में C, C ++ और COBOL शामिल हैं।

    एक व्याख्या की गई भाषा को निष्पादित करने के लिए एक रनटाइम प्रोग्राम स्थापित करने की आवश्यकता होती है। यह रनटाइम प्रोग्राम तब लाइन द्वारा प्रोग्राम कोड लाइन की व्याख्या करता है और इसे चलाता है। व्याख्या की गई भाषाओं के साथ काम करना आम तौर पर आसान होता है लेकिन धीमी होती हैं और उन्हें अधिक सिस्टम संसाधनों की आवश्यकता होती है। लोकप्रिय व्याख्या की गई भाषाओं के उदाहरणों में BASIC, PHP, PERL और पायथन शामिल हैं। HTML और Javascript जैसी वेब भाषाओं को भी व्याख्यायित माना जाएगा क्योंकि उन्हें चलाने के लिए ब्राउज़र की आवश्यकता होती है।

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

    प्रक्रियात्मक बनाम ऑब्जेक्ट ओरिएंटेड

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

    उदाहरण के लिए, मानव-संसाधन प्रणाली में, “कर्मचारी” ऑब्जेक्ट की आवश्यकता होगी। यदि प्रोग्राम को किसी कर्मचारी के संबंध में डेटा पुनर्प्राप्त करने या सेट करने की आवश्यकता होती है, तो यह पहले प्रोग्राम में एक कर्मचारी ऑब्जेक्ट बनाएगा और फिर आवश्यक मानों को सेट या पुनर्प्राप्त करेगा। प्रत्येक ऑब्जेक्ट में गुण होते हैं, जो ऑब्जेक्ट से जुड़े वर्णनात्मक फ़ील्ड होते हैं। नीचे दिए गए उदाहरण में, एक कर्मचारी ऑब्जेक्ट में “नाम,” “कर्मचारी संख्या,” “जन्मतिथि” और “किराए की तिथि” गुण हैं। किसी ऑब्जेक्ट में “विधियाँ” भी होती हैं, जो ऑब्जेक्ट से संबंधित क्रियाएं कर सकती हैं। उदाहरण में, दो तरीके हैं। पहला “ComputePay ()” है, जो कर्मचारी को बकाया वर्तमान राशि वापस करेगा। दूसरा “listEmployes ()” है, जो इस कर्मचारी को रिपोर्ट करने वाले कर्मचारियों की एक सूची को पुनः प्राप्त करेगा।

    कर्मचारी ऑब्जेक्ट

    ऑब्जेक्ट: कर्मचारी

    प्रथम_नाम

    अंतिम नाम

    कर्मचारी_आईडी

    जन्म दिन

    डेट_ऑफ_हायर

    कंप्यूटपे ()

    कर्मचारियों की सूची ()

    प्रोग्रामिंग टूल

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

    एकीकृत विकास पर्यावरण (IDE)

    अधिकांश प्रोग्रामिंग भाषाओं के लिए, एक IDE का उपयोग किया जा सकता है। एक IDE प्रोग्रामर के लिए विभिन्न उपकरण प्रदान करता है, सभी एक ही स्थान पर एक सुसंगत उपयोगकर्ता इंटरफ़ेस के साथ। आईडीई में आमतौर पर शामिल हैं

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

    Satista.com की रिपोर्ट है कि 2018 और 2019 से दुनिया भर में 80% सॉफ़्टवेयर डेवलपर्स GitHub जैसे स्रोत कोड सहयोग टूल का उपयोग करते हैं, 77% एक स्टैंडअलोन IDE जैसे कि Eclipse का उपयोग करते हैं, 69% Microsoft Visual Studio का उपयोग करते हैं। पूरी सूची के लिए, कृपया statista.com पर जाएं

    कंप्यूटर एडेड सॉफ्टवेयर इंजीनियरिंग (CASE) टूल्स

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

    बनाएँ बनाम खरीदें या सब्सक्राइब करें

    जब कोई संगठन यह तय करता है कि एक नया सॉफ़्टवेयर प्रोग्राम विकसित करने की आवश्यकता है, तो उन्हें यह निर्धारित करना होगा कि क्या इसे स्वयं बनाना या किसी बाहरी कंपनी से इसे खरीदना अधिक समझ में आता है। यह “बिल्ड बनाम खरीद” निर्णय है। इस 'खरीद' निर्णय में अब इसे एकमुश्त खरीदने के बजाय सदस्यता लेने का विकल्प शामिल है।

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

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

    सब्सक्राइब करने के लिए एक हाइब्रिड समाधान है। सदस्यता का अर्थ है कि व्यक्तिगत रूप से उत्पादों को बेचने के बजाय, विक्रेता अब एक सदस्यता मॉडल प्रदान करते हैं जिसे उपयोगकर्ता समय-समय पर किराए पर ले सकते हैं और भुगतान कर सकते हैं, जैसे कि मासिक, वार्षिक। किराए पर लेने वाले मॉडल का इस्तेमाल कई अन्य उद्योगों जैसे फिल्मों, किताबों में किया गया है और हाल ही में उच्च तकनीक उद्योगों में स्थानांतरित किया गया है। कंपनियां और उपभोक्ता अब लगभग हर चीज की सदस्यता ले सकते हैं, जैसा कि हमने पहले के अध्यायों में चर्चा की थी, आपके ईमेल प्लेटफ़ॉर्म जैसे कि Google Drive या Microsoft OneDrive में अतिरिक्त संग्रहण से लेकर Quickbooks, Microsoft Office 365 जैसे सॉफ़्टवेयर से लेकर Amazon AWS जैसी होस्टिंग और वेब सहायता सेवाओं तक। विक्रेताओं को एक बार की बिक्री को आवर्ती बिक्री में बदलने और ग्राहकों की वफादारी बढ़ाने से लाभ होता है। ग्राहकों को अपडेट इंस्टॉल करने के सिरदर्द से लाभ होता है, सॉफ़्टवेयर समर्थन और अपडेट का स्वचालित रूप से ध्यान रखा जाता है, यह जानकर कि सॉफ़्टवेयर को नई सुविधाओं के साथ अपडेट किया जाना जारी है। सब्सक्रिप्शन मॉडल अब उपभोक्ताओं और व्यवसायों दोनों के लिए एक प्रचलित विकल्प है।

    भले ही कोई संगठन खरीदने या सदस्यता लेने का फैसला करता है, फिर भी इसे बनाने की लागतों और लाभों की तुलना करने के लिए कई समान विश्लेषणों से गुजरना समझ में आता है। यह एक महत्वपूर्ण निर्णय है जो संगठन पर दीर्घकालिक रणनीतिक प्रभाव डाल सकता है।

    वेब सेवाएँ

    अध्याय 3 में कहा गया है कि क्लाउड कंप्यूटिंग के कदम से सॉफ़्टवेयर को सेवा के रूप में देखा जा सकता है। एक विकल्प कंपनियों के पास इन दिनों कोड लिखने के बजाय अन्य कंपनियों द्वारा प्रदान किए गए कार्यों को लाइसेंस देने के लिए है। इन्हें वेब सेवाएँ कहा जाता है, और वे किसी वेबसाइट पर कार्यक्षमता को जोड़ने को बहुत सरल बना सकते हैं।

    उदाहरण के लिए, मान लीजिए कि कोई कंपनी किसी ऐसे व्यक्ति का स्थान दिखाने वाला नक्शा प्रदान करना चाहती है, जिसने अपनी सहायता लाइन को कॉल किया है। Google Maps API वेब सेवाओं का उपयोग करके, वे अपने एप्लिकेशन में Google मानचित्र का निर्माण कर सकते हैं। या एक जूता कंपनी अपने खुदरा विक्रेताओं के लिए जूते के आकार की वेब सेवा प्रदान करके ऑनलाइन जूते बेचना आसान बना सकती है जिसे खुदरा विक्रेता अपनी वेबसाइट पर सीधे एम्बेड कर सकते हैं।

    वेब सेवाएँ “बिल्ड बनाम खरीदें” के बीच की रेखाओं को धुंधला कर सकती हैं। कंपनियां खुद एक सॉफ़्टवेयर एप्लिकेशन बनाने का विकल्प चुन सकती हैं, लेकिन फिर अपने सिस्टम को पूरक करने के लिए विक्रेताओं से कार्यक्षमता खरीद सकती हैं।

    एंड-यूज़र कंप्यूटिंग या शैडो आईटी

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

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

    एंड-यूज़र कंप्यूटिंग के अपने नुकसान भी हैं। यदि किसी संगठन के भीतर विभाग हैं

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

    विभागों के बीच संचार एंड-यूज़र कंप्यूटिंग के सफल उपयोग की दिशा में एक लंबा रास्ता तय करेगा।

    साइडबार: मोबाइल ऐप बनाना

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

    मोबाइल फोन के उदय के साथ, मोबाइल ऐप डेवलपमेंट नामक एक नए प्रकार का सॉफ़्टवेयर विकास अस्तित्व में आया। Satista.com का अनुमान है कि मोबाइल ऐप्स का राजस्व 2014 में $98B से बढ़कर 2023 तक $935B से अधिक हो जाएगा। इसका मतलब है कि मोबाइल ऐप डेवलपर्स की जरूरत भी बढ़ गई है।

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

    हालाँकि, ऐसे विशिष्ट अंतर हैं जिन पर प्रोग्रामर को मोबाइल उपकरणों के लिए ऐप्स बनाने पर विचार करना चाहिए। वे हैं:

    • अलग-अलग स्क्रीन आकार के अनुकूल होने के लिए उपयोगकर्ता इंटरफ़ेस अलग-अलग होना चाहिए
    • डेस्कटॉप पर कीबोर्ड और माउस के बजाय पॉइंटर्स के रूप में उंगलियों का उपयोग या टेक्स्ट टाइप करने के लिए
    • प्रत्येक स्टोर में ऐप को शामिल करने के लिए OS विक्रेता से विशिष्ट आवश्यकताओं को पूरा किया जाना चाहिए (यानी, Apple का ऐप स्टोर या Android का Play Store)
    • डेटा को सिंक करने के लिए डेस्कटॉप या क्लाउड के साथ एकीकरण
    • अन्य अंतर्निहित हार्डवेयर जैसे कैमरा, बायोमेट्रिक या मोशन सेंसर के साथ कड़ा एकीकरण।
    • कम उपलब्ध मेमोरी, स्टोरेज स्पेस और प्रोसेसिंग पावर

    मोबाइल ऐप अब लगभग हर चीज के लिए उपलब्ध हैं और आगे भी बढ़ते जा रहे हैं।

    सन्दर्भ:

    दुनिया भर में डेवलपर्स के बीच जावास्क्रिप्ट सबसे ज्यादा इस्तेमाल की जाने वाली भाषा थी (2020)। 10 दिसंबर, 2020 को Satitica.com से लिया गया

    गूगल मैप्स प्लेटफ़ॉर्म दस्तावेज़ीकरण। 10 दिसंबर, 2020 को https://developers.google.com/maps/documentation से लिया गया

    2018 और 2019 (2020) से दुनिया भर में सॉफ्टवेयर डेवलपर्स द्वारा उपयोग किए जाने वाले प्रोग्रामिंग/डेवलपमेंट टूल। 10 दिसंबर, 2020 को S tatista.com से लिया गया

    2014 से 2023 (2010) में विश्वव्यापी मोबाइल ऐप राजस्व 10 दिसंबर, 2020 को Statista.com से लिया गया