stringtranslate.com

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

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

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

Стратегии

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

Похожие системы

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

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

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

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

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

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

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

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

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

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

Попытка перенести исходный код

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

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

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

Ссылки

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

Источники