220 likes | 393 Views
Проблема переносимости приложений: сорок лет спустя. Алексей Хорошилов khoroshilov@ispras.ru. SECR-2008 24 октября 2008. Переносимость. Переносимость. между различными аппаратными платформами
E N D
Проблемапереносимости приложений:сорок лет спустя Алексей Хорошилов khoroshilov@ispras.ru SECR-2008 24 октября 2008
Переносимость • между различными аппаратными платформами • между различными операционными системами • между различными версиями одной операционной системы • между программными окружениями промежуточного уровня
Примеры из настоящего • MacOS • Школьный Linux
Переносимость между аппаратными платформами • На уровне исходных кодов • Интерпретируемые языки • Компилируемые языки • На бинарном уровне • Аппаратная эмуляция • Эмуляция в ОС • Эмулятор как независимое приложение • Динамическая трансляция
Взгляд с точки зрения доставки ПО • В исходных кодах • Компиляция при установке • Компиляция на лету • Интерпретация (ВМЯП) • Предкомпилированный код для нескольких платформ • Выбор на этапе установки • “Fat binary” • Динамическая трансляция • Эмуляция
Переносимость между операционными системами • Языки программирования • Стандартизация • Библиотеки-медиаторы • Слои совместимости • Виртуализация • Веб-приложения
Языки программирования • Стандартная библиотека времени исполнения • Не все особенности ОС скрываются ЯП • Пути в файловых системах Windows и Unix • Взаимодействие с внешним ПО
Стандартизация • На уровне исходного кода • POSIX • X Window System Application Interface • На бинарном уровне • OSF/1 • Linux Standard Base
SDL OpenGL XPCOM cairo OpenSSL gtk+ nss wxWidgets Qt glib apr nspr Библиотеки-медиаторы • Выделение платформенно-зависимого кода в отдельную библиотеку • Использование одной существующих библиотек:
Слои совместимости • wine – слой совместимости с WinAPI для Linux, MacOS, Solaris, FreeBSD,… • на бинарном уровне • cygwin - слой совместимости с Linux для ОС Windows • на уровне исходных кодов
Виртуализация • VMWare Workstation, … • Microsoft VirtualPC, … • Sun VirtualBox • Xen • Parallels Workstation, … • …
Недостатки • Снижение производительности • Удорожание процесса разработки • Усложнение архитектуры • Дополнительные требования к квалификации разработчиков • Дополнительное тестирование • Увеличение сроков разработки • Осложнение использования возможностей отдельных платформ • Зависимость от поставщиков дополнительных компонентов
А нужна ли переносимость? О.Роден Мыслитель, 1880
Риски, адресуемые переносимостью • Устаревание и выход из строя аппаратных и программных платформ, на которых базируется целевое ПО • Зависимость от поставщиков базового и промежуточного ПО • Недоступность целевого ПО для части потенциальных потребителей
Заказчики ПО • Парк аппаратного и программного обеспечения и перспективы его развития • Риски попадания в зависимость от поставщиков • Дополнительные затраты на обеспечение переносимости ПО
Разработчики ПО • Заказное ПО • Интересы заказчика • Собственные потребности по возможному переиспользованию • Коробочное ПО • Исследования рынка • Перспективы развития
Выводы • Переносимость ПО требуется не всегда • Чем больше время жизни ПО, тем актуальнее переносимость • Решение о необходимости обеспечения переносимости ПО необходимо осознанно принимать в зависимости от условий конкретного проекта
Спасибо! Алексей Хорошилов, ИСП РАН e-mail: khoroshilov@ispras.ru www: http://www.ispras.ru