Переносимость программного обеспечения - Software portability

Портативность в компьютерное программирование высокого уровня удобство использования того же программного обеспечения в разных средах. Необходимым условием переносимости является обобщенное абстракция между логикой приложения и системные интерфейсы. Когда программное обеспечение с одинаковой функциональностью производится для нескольких вычислительные платформы, мобильность - ключевой фактор снижения затрат на разработку.

Стратегии переносимости

Переносимость программного обеспечения может включать:

  • Перенос установленных программных файлов на другой компьютер с той же архитектурой.
  • Переустановка программы из файлов дистрибутива на другой компьютер с той же архитектурой.
  • Строительство исполняемый файл программы для разных платформ от исходный код; это то, что обычно понимается под "перенос ".

Подобные системы

Когда операционные системы одного семейства установлены на двух компьютерах с процессоры с похожими наборы инструкций часто между ними можно передавать файлы, реализующие программные файлы.

В простейшем случае файл или файлы можно просто скопировать с одной машины на другую. Однако во многих случаях программное обеспечение установлены на компьютере способом, который зависит от его детального оборудования, программного обеспечения и настроек, с драйверы устройств для определенных устройств, используя установленную операционную систему и вспомогательные программные компоненты, а также используя различные диски или же каталоги.

В некоторых случаях программное обеспечение, обычно описываемое как "портативное программное обеспечение ", специально разработан для работы на разных компьютерах с совместимыми операционными системами и процессорами без какой-либо машинно-зависимой установки. Перенос - это не что иное, как перенос указанных каталогов и их содержимого. Программное обеспечение, установленное на переносном массовое хранилище такие устройства, как USB-накопители может использоваться на любом совместимом компьютере, просто подключив запоминающее устройство, и сохраняет всю информацию о конфигурации на съемном устройстве. Информация об оборудовании и программном обеспечении часто хранится в файлы конфигурации в указанных местах (например, реестр на машинах, работающих Майкрософт Виндоус ).

Программное обеспечение, которое не является переносимым в этом смысле, необходимо будет передать с модификациями для поддержки среды на целевой машине.

Разные процессоры

По состоянию на 2011 г. большинство настольных и портативных компьютеров использовали микропроцессоры совместим с 32- и 64-битными x86 наборы инструкций. В портативных устройствах меньшего размера используются процессоры с разными и несовместимыми наборами команд, например: РУКА. Разница между большими и меньшими устройствами такова, что подробные операции программного обеспечения различаются; приложение, предназначенное для отображения на большом экране, не может быть просто перенесено на смартфон карманного размера с крошечным экраном, даже если функциональные возможности аналогичны.

Веб-приложения должны быть независимыми от процессора, поэтому переносимость может быть достигнута с помощью методов веб-программирования, написания JavaScript. Такая программа может работать в обычном веб-браузере. Такой веб-приложения по соображениям безопасности должен иметь ограниченный контроль над главным компьютером, особенно в отношении чтения и записи файлов. Не-веб-программы, установленные на компьютер обычным образом, могут иметь больший контроль и, тем не менее, обеспечивать переносимость системы путем связывания с переносными библиотеками, обеспечивающими одинаковый интерфейс в разных системах.

Переносимость исходного кода

Программное обеспечение можно скомпилировать и связаны из исходного кода для различных операционных систем и процессоров, если они написаны на языке программирования, поддерживающем компиляцию для платформ. Обычно это задача разработчиков программы; обычные пользователи не имеют ни доступа к исходному коду, ни необходимых навыков.

В Открытый исходный код в таких средах, как Linux, исходный код доступен всем. Раньше исходный код часто распространялся в стандартизованном формате и мог быть встроен в исполняемый код с помощью стандартного Сделать инструмент для любой конкретной системы умеренно осведомленными пользователями, если во время сборки не произошло никаких ошибок. Немного Дистрибутивы Linux распространять программное обеспечение среди пользователей в исходной форме. В этих случаях обычно нет необходимости в детальной адаптации программного обеспечения к системе; он распространяется таким образом, чтобы изменяет процесс компиляции в соответствии с системой.

Усилия по переносу исходного кода

Даже с кажущимися портативными языками вроде C и C ++ усилия по переносу исходного кода могут значительно различаться. Авторы UNIX / 32V (1979) сообщил, что "[т] он (Борн) оболочка [...] требуются самые большие усилия по преобразованию любой предположительно переносимой программы по той простой причине, что она не переносима ».[1]

Иногда усилия заключаются в перекомпиляции исходного кода, но иногда необходимо переписать основные части программного обеспечения. Многие языковые спецификации описывают поведение, определяемое реализацией (например, сдвиг вправо целого числа со знаком в C может логичный или арифметика сдвиг). Функции операционной системы или сторонние библиотеки могут быть недоступны в целевой системе. Некоторые функции могут быть доступны в целевой системе, но демонстрируют немного другое поведение (например: utime () не работает под Windows с EACCES, когда он вызывается для каталога). Сам программный код также может содержать непереносимые вещи, например пути к включаемым файлам. Буквы дисков и обратная косая черта в качестве разделителя пути принимаются не во всех операционных системах. Реализация определяет такие вещи, как порядок байтов и размер int может также увеличить усилия по переносу. На практике требование языков, например C и C ++, чтобы иметь WOCA (написать один раз, компилировать где угодно ) спорен.

Смотрите также

Рекомендации

  1. ^ Томас Б. Лондон и Джон Ф. Рейзер (1978). Операционная система Unix для компьютера DEC VAX-11/780. Внутренняя записка Bell Labs 78-1353-4.

Источники

  • Муни (1997). «Обеспечение переносимости программного процесса» (PDF). Университет Западной Вирджинии. Кафедра статистики и информатики. Архивировано из оригинал (PDF) на 2008-07-25. Получено 2008-03-17. Цитировать журнал требует | журнал = (помощь)
  • Гарен (2007). «Переносимость программного обеспечения: варианты взвешивания, выбор». Журнал CPA. 77 (11): 3.
  • Лехи (1995). «Перенос программного обеспечения UNIX: от загрузки до отладки» (PDF). Получено 2010-05-27. Цитировать журнал требует | журнал = (помощь)