Проблема переносимости приложений: сорок лет спустя
DESCRIPTION
Проблема переносимости приложений: сорок лет спустя. Алексей Хорошилов [email protected]. SECR-2008 24 октября 2008. Переносимость. Переносимость. между различными аппаратными платформами - PowerPoint PPT PresentationTRANSCRIPT
Проблемапереносимости приложений:сорок лет спустя
SECR-2008 24 октября 2008
Алексей Хорошилов[email protected]
2
ApplicationApplication
Status
File Edit View Help
Переносимость
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
Библиотеки-медиаторы
glib nsprapr
nss
SDL OpenGL
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
Переносимость ПО требуется не всегда Чем больше время жизни ПО, тем
актуальнее переносимость Решение о необходимости обеспечения
переносимости ПО необходимо осознанно принимать в зависимости от условий конкретного проекта
Выводы