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

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

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

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

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

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

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

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

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

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

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

स्रोत कोड
पोर्ट करने का प्रयास सी (प्रोग्रामिंग भाषा) और सी ++ जैसी प्रतीत होने वाली पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास काफी भिन्न हो सकता है। UNIX/32V (1979) के लेखकों ने बताया कि [t]he Bourne Shell|(Bourne) Shell [...] किसी भी अनुमानित पोर्टेबल प्रोग्राम के अब तक के सबसे बड़े रूपांतरण प्रयास की आवश्यकता है, साधारण कारण के लिए कि यह पोर्टेबल नहीं है। कभी-कभी प्रयास में स्रोत कोड को पुनः संकलित करना शामिल होता है, लेकिन कभी-कभी सॉफ़्टवेयर के प्रमुख भागों को फिर से लिखना आवश्यक होता है। कई भाषा विनिर्देश कार्यान्वयन परिभाषित व्यवहार का वर्णन करते हैं (उदाहरण के लिए सी में एक हस्ताक्षरित पूर्णांक को स्थानांतरित करना एक तार्किक बदलाव या अंकगणितीय बदलाव कर सकता है)। ऑपरेटिंग सिस्टम फ़ंक्शंस या तृतीय पक्ष लाइब्रेरी लक्ष्य सिस्टम पर उपलब्ध नहीं हो सकते हैं। कुछ कार्य एक लक्ष्य प्रणाली पर उपलब्ध हो सकते हैं, लेकिन थोड़ा अलग व्यवहार प्रदर्शित करते हैं (जैसे: यूटाइम EACCES के साथ विंडोज के तहत विफल हो जाता है, जब इसे निर्देशिका के लिए कहा जाता है)। प्रोग्राम कोड में ही अनपोर्टेबल चीजें भी हो सकती हैं, जैसे फाइलों को शामिल करने के रास्ते। पथ सीमांकक के रूप में ड्राइव अक्षर और बैकस्लैश सभी ऑपरेटिंग सिस्टम पर स्वीकार नहीं किए जाते हैं। कार्यान्वयन परिभाषित चीजें जैसे endianness और एक इंटीजर (कंप्यूटर विज्ञान) का आकार भी पोर्टिंग प्रयास को बढ़ा सकता है। व्यावहारिक रूप से C (प्रोग्रामिंग लैंग्वेज) और C++ जैसी भाषाओं का WOCA (एक बार लिखना, कहीं भी संकलित करना) होने का दावा तर्क संगत है।

यह भी देखें

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

स्रोत


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