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

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

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

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

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

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

सॉफ्टवेयर जो इस अर्थ में पोर्टेबल नहीं है, उसे गंतव्य मशीन पर पर्यावरण का समर्थन करने के लिए संशोधनों के साथ स्थानांतरित करना होगा।

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

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

स्रोत कोड पोर्टेबिलिटी
सॉफ़्टवेयर को संकलित किया जा सकता है और विभिन्न ऑपरेटिंग सिस्टम और प्रोसेसर के लिए स्रोत कोड से लिंक किया जा सकता है यदि प्लेटफॉर्म के लिए संकलन का समर्थन करने वाली प्रोग्रामिंग भाषा में लिखा गया हो। यह समान्यतः प्रोग्राम डेवलपर्स के लिए एक कार्य है; विशिष्ट उपयोगकर्ताओं के पास न तो स्रोत कोड तक पहुंच होती है और न ही आवश्यक कौशल।

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

स्रोत कोड पोर्ट करने का प्रयास
सी (प्रोग्रामिंग भाषा) और सी ++ जैसी पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास काफी भिन्न हो सकता है। यूनिक्स/32वी (1979) के लेखकों ने बताया कि "[t]वह (बॉर्न) शेल [...] किसी भी कथित पोर्टेबल प्रोग्राम के अब तक के सबसे बड़े रूपांतरण प्रयास की आवश्यकता है, साधारण कारण के लिए कि यह पोर्टेबल नहीं है।"

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

यह भी देखें

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

स्रोत


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