Проблема переносимости приложений: сорок лет спустя SECR октября 2008 Алексей Хорошилов
2 Переносимость
3 между различными аппаратными платформами между различными операционными системами между различными версиями одной операционной системы между программными окружениями промежуточного уровня Переносимость
4 MacOS Школьный Linux Примеры из настоящего
5 Переносимость между аппаратными платформами На уровне исходных кодов Интерпретируемые языки Компилируемые языки На бинарном уровне Аппаратная эмуляция Эмуляция в ОС Эмулятор как независимое приложение Динамическая трансляция
6 Взгляд с точки зрения доставки ПО В исходных кодах Компиляция при установке Компиляция на лету Интерпретация (ВМЯП) Предкомпилированный код для нескольких платформ Выбор на этапе установки Fat binary Динамическая трансляция Эмуляция
7 Переносимость между операционными системами Языки программирования Стандартизация Библиотеки-медиаторы Слои совместимости Виртуализация Веб-приложения
8 Языки программирования Стандартная библиотека времени исполнения Не все особенности ОС скрываются ЯП Пути в файловых системах Windows и Unix Взаимодействие с внешним ПО
9 Стандартизация На уровне исходного кода POSIX X Window System Application Interface На бинарном уровне OSF/1 Linux Standard Base
10 Библиотеки-медиаторы glibnsprapr nss SDLOpenGL gtk+ QtwxWidgets XPCOM OpenSSL cairo Выделение платформенно-зависимого кода в отдельную библиотеку Использование одной существующих библиотек:
11 Слои совместимости wine – слой совместимости с WinAPI для Linux, MacOS, Solaris, FreeBSD,… на бинарном уровне cygwin - слой совместимости с Linux для ОС Windows на уровне исходных кодов
12 Виртуализация VMWare Workstation, … Microsoft VirtualPC, … Sun VirtualBox Xen Parallels Workstation, … …
13 Веб-приложения
14 Примеры переносимого ПО Языки программирования Ориентация на стандарты Медиаторы сторонних разработчиков Собственные медиаторы Слои совместимости Java приложения Python, perl,… POSIX приложения Skype (библиотека Qt) Mozilla Firefox (nss, nspr,...) Apache (apr, …) Google Picasa (wine)
15 Недостатки Снижение производительности Удорожание процесса разработки Усложнение архитектуры Дополнительные требования к квалификации разработчиков Дополнительное тестирование Увеличение сроков разработки Осложнение использования возможностей отдельных платформ Зависимость от поставщиков дополнительных компонентов
16 Ориентация на стандарты Медиаторы сторонних разработчиков Собственные медиаторы Слои совместимости Виртуали- зация Производи- тельность + ±± - Удорожание разработки ±±-± + Увеличение сроков разработки ±±-± + Особенности платформ - ±± + Зависимость от поставщиков + -±-- Недостатки
17 А нужна ли переносимость? О.Роден Мыслитель, 1880
18 Риски, адресуемые переносимостью Устаревание и выход из строя аппаратных и программных платформ, на которых базируется целевое ПО Зависимость от поставщиков базового и промежуточного ПО Недоступность целевого ПО для части потенциальных потребителей
19 Заказчики ПО Парк аппаратного и программного обеспечения и перспективы его развития Риски попадания в зависимость от поставщиков Дополнительные затраты на обеспечение переносимости ПО
20 Разработчики ПО Заказное ПО Интересы заказчика Собственные потребности по возможному переиспользованию Коробочное ПО Исследования рынка Перспективы развития
21 Переносимость ПО требуется не всегда Чем больше время жизни ПО, тем актуальнее переносимость Решение о необходимости обеспечения переносимости ПО необходимо осознанно принимать в зависимости от условий конкретного проекта Выводы
22 Спасибо! Алексей Хорошилов, ИСП РАН www: