सॉफ्टवेयर पोर्टेबिलिटी

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

पोर्टेबिलिटी के लिए कूटनीतियॉ
सॉफ्टवेयर पोर्टेबिलिटी में निम्नलिखित कूटनीतियॉ सम्मिलित हो सकती हैं:
 * स्थापित प्रोग्राम फ़ाइलों को मूल रूप से एक ही संरचना के दूसरे कंप्यूटर पर स्थानांतरित करना।
 * मूल रूप से समान संरचना के दूसरे कंप्यूटर पर वितरण फ़ाइलों से प्रोग्राम को पुनर्स्थापित करना।
 * स्रोत कोड से विभिन्न प्लेटफार्मों के लिए निष्पादन योग्य प्रोग्राम को सामान्यतः "पोर्टिंग" समझा जाता है।

समान सिस्टम
जब समान संचालन वाले सीपीयू मे दो कंप्यूटरों पर एक ही प्रकार के ऑपरेटिंग सिस्टम को स्थापित किया जाता हैं, तो उनके बीच प्रोग्राम फ़ाइलों को प्रयुक्त करने वाली फ़ाइलों को स्थानांतरित करना प्रायः संभव होता है।

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

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

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

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

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

स्रोत कोड पोर्ट करने का प्रयास
सी (प्रोग्रामिंग भाषा) और सी ++ जैसी पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास अपेक्षाकृत भिन्न हो सकता है। यूनिक्स/32वी (1979) के लेखकों ने बताया कि "टी बॉर्न शेल" किसी भी पोर्टेबल प्रोग्राम के अब तक के सबसे बड़े रूपांतरण प्रयास की आवश्यकता है, इसके सामान्य कारण के लिए कि यह पोर्टेबल नहीं है कभी-कभी प्रयास में स्रोत कोड को पुनः कंपाइल करना सम्मिलित होता है, लेकिन कभी-कभी सॉफ़्टवेयर के प्रमुख भागों को पुनः से लिखना आवश्यक होता है। कई भाषा विनिर्देश कार्यान्वयन परिभाषित प्रोग्राम का वर्णन करते हैं उदाहरण के लिए सी (प्रोग्रामिंग भाषा) में एक हस्ताक्षरित पूर्णांक को स्थानांतरित करना तार्किक या अंकगणितीय परिवर्तन कर सकता है। ऑपरेटिंग सिस्टम फ़ंक्शंस या तृतीय पक्ष लाइब्रेरी सिस्टम पर उपलब्ध नहीं हो सकते हैं। कुछ प्रोग्राम एक सॉफ़्टवेयर प्रणाली पर उपलब्ध हो सकते हैं, लेकिन अपेक्षाकृत अलग प्रतिक्रिया प्रदर्शित करते हैं जैसे: यूटाइम ईएसीसीईएस के साथ विंडोज के अंतर्गत विफल हो जाता है, जब इसे संचालन के लिए प्रयुक्त किया जाता है। तब प्रोग्राम कोड में ही अनपोर्टेबल सॉफ़्टवेयर भी हो सकते हैं, जैसे फाइलों को सम्मिलित करने के एड्रेस के रूप में स्रोत कोड और बैकस्लैश सभी ऑपरेटिंग सिस्टम पर स्वीकृत नहीं किए जाते हैं। कार्यान्वयन परिभाषित सॉफ़्टवेयर जैसे बाइट और एक प्रोग्राम का स्रोत कोड भी पोर्टिंग प्रयास को विस्तृत कर सकता है। सामान्यतः सी और सी++ जैसी भाषाओं का डब्ल्यूओसीए (एक बार लिखें, कहीं भी कंपाइल करें) होने का तर्क है।

यह भी देखें

 * सी (प्रोग्रामिंग भाषा)
 * क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर
 * डेटा पोर्टेबिलिटी
 * हार्डवेयर पर निर्भर सॉफ्टवेयर
 * इंटरोऑपरेबिलिटी
 * भाषा इंटरोऑपरेबिलिटी
 * पोर्टेबिलिटी परीक्षण
 * पोर्टिंग
 * स्रोत कंपाइलर

स्रोत


श्रेणी:सॉफ्टवेयर की गुणवत्ता