Переносимость программного обеспечения
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2011 г. ) |

Переносимость программного обеспечения – это цель разработки, позволяющая исходный код легко запускать на различных платформах . Помощью переносимости является обобщенная абстракция между логикой приложения и системными интерфейсами . Когда программное обеспечение с одинаковой функциональностью создается для нескольких вычислительных платформ , мобильность является ключевым вопросом снижения затрат на разработку.
Стратегии
[ редактировать ]Переносимость программного обеспечения может включать в себя:
- Перенос установленных файлов программы на другой компьютер практически той же архитектуры.
- Переустановка программы из файлов дистрибутива на другой компьютер практически той же архитектуры.
- Сборка исполняемых программ для разных платформ из исходного кода ; это то, что обычно понимают под « портированием ».
Подобные системы
[ редактировать ]Когда операционные системы одного семейства установлены на двух компьютерах с процессорами с одинаковыми наборами инструкций, часто можно переносить между ними файлы, реализующие программные файлы.
В простейшем случае файл или файлы можно просто скопировать с одного компьютера на другой. Однако во многих случаях программное обеспечение устанавливается на компьютер способом, который зависит от его детального оборудования, программного обеспечения и настройки, с драйверами устройств для конкретных устройств, с использованием установленной операционной системы и вспомогательных компонентов программного обеспечения, а также с использованием разных дисков или каталогов. .
В некоторых случаях программное обеспечение, обычно называемое « портативным программным обеспечением », специально разработано для работы на разных компьютерах с совместимыми операционными системами и процессорами без какой-либо установки, зависящей от машины. Портирование — это не более чем перенос указанных каталогов и их содержимого. Программное обеспечение, установленное на портативных запоминающих устройствах, таких как USB-накопители, можно использовать на любом совместимом компьютере, просто подключив запоминающее устройство, и сохраняя всю информацию о конфигурации на съемном устройстве. Информация об аппаратном и программном обеспечении часто хранится в файлах конфигурации в определенных местах, например реестре Windows в ).
Программное обеспечение, которое в этом смысле не является переносимым, должно быть значительно изменено для поддержки среды на целевой машине.
Различные процессоры
[ редактировать ]По состоянию на 2011 год в большинстве настольных и портативных компьютеров использовались микропроцессоры , совместимые с 32- и 64-битными наборами команд x86 . В портативных устройствах меньшего размера используются процессоры с разными и несовместимыми наборами инструкций, например ARM . Разница между большими и меньшими устройствами такова, что детали работы программного обеспечения различаются; приложение, предназначенное для удобного отображения на большом экране, не может быть просто перенесено на карманный смартфон с крошечным экраном, даже если его функциональность аналогична.
Веб-приложения должны быть независимыми от процессора, поэтому переносимость может быть достигнута с помощью методов веб-программирования и написания на JavaScript . Такая программа может работать в обычном веб-браузере. По соображениям безопасности такие веб-приложения должны иметь ограниченный контроль над главным компьютером, особенно в отношении чтения и записи файлов. Не-веб-программы, установленные на компьютер обычным способом, могут иметь больший контроль и при этом обеспечивать переносимость системы за счет связи с переносимыми библиотеками, обеспечивающими один и тот же интерфейс в разных системах.
Переносимость исходного кода
[ редактировать ]Программное обеспечение можно скомпилировать и связать из исходного кода для различных операционных систем и процессоров, если оно написано на языке программирования, поддерживающем компиляцию для платформ. Обычно это задача разработчиков программы; типичные пользователи не имеют ни доступа к исходному коду, ни необходимых навыков.
В средах с открытым исходным кодом , таких как Linux, исходный код доступен всем. Раньше исходный код часто распространялся в стандартизированном формате и мог быть встроен в исполняемый код с помощью стандартного инструмента Make для любой конкретной системы пользователями средней квалификации, если во время сборки не возникало ошибок. Некоторые дистрибутивы Linux распространяют программное обеспечение среди пользователей в исходной форме. В этих случаях обычно нет необходимости в детальной адаптации программного обеспечения к системе; он распространяется таким образом, что процесс компиляции модифицируется в соответствии с системой .
Попытка портировать исходный код
[ редактировать ]Даже в таких, казалось бы, переносимых языках, как C и C++ , усилия по переносу исходного кода могут значительно различаться. Авторы UNIX/32V (1979) сообщили, что « оболочка (Bourne) [...] потребовала самых больших усилий по преобразованию среди всех предположительно переносимых программ по той простой причине, что она не является переносимой». [1]
Иногда усилия заключаются в перекомпиляции исходного кода, но иногда необходимо переписать основные части программного обеспечения. Многие спецификации языка описывают поведение, определяемое реализацией (например, сдвиг вправо целого числа со знаком в C может выполнять логический или арифметический сдвиг). Функции операционной системы или сторонние библиотеки могут быть недоступны в целевой системе. Некоторые функции могут быть доступны в целевой системе, но вести себя несколько иначе, например: utime()
не работает под Windows с EACCES, когда он вызывается для каталога). Программный код может содержать непереносимые элементы, например пути к включаемым файлам, буквы дисков или обратную косую черту. Определенные реализацией вещи, такие как порядок байтов и размер int, также могут увеличить усилия по портированию. На практике утверждение языков, таких как C и C++ , о наличии WOCA ( написать один раз, компилировать где угодно ) является спорным.
См. также
[ редактировать ]- Си (язык программирования)
- Кроссплатформенное программное обеспечение
- Переносимость данных
- Аппаратно-зависимое программное обеспечение
- Совместимость
- Совместимость языков
- Тестирование переносимости
- Портирование
- Компилятор исходного кода
Ссылки
[ редактировать ]- ^ Томас Б. Лондон и Джон Ф. Райзер (1978). Операционная система Unix для компьютера DEC VAX-11/780 . Внутренняя памятка Bell Labs 78-1353-4.
Источники
[ редактировать ]- Муни (1997). «Переносимость процесса разработки программного обеспечения» (PDF) . (помощь) . Университет Западной Вирджинии. Кафедра статистики и информатики. Архивировано из оригинала (PDF) 25 июля 2008 г. Проверено 17 марта 2008 г.
- Гарен (2007). «Переносимость программного обеспечения: взвешивание вариантов, принятие решений» . Журнал CPA . 77 (11): 3. Архивировано из оригинала 8 июля 2010 г.
- Лихи (1995). «Портирование программного обеспечения UNIX: от загрузки до отладки» (PDF) . (помощь) . Проверено 27 мая 2010 г.