ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] D-BUS API tracking in repositories
@ 2009-06-15 11:04 Alexander Bokovoy
  0 siblings, 0 replies; only message in thread
From: Alexander Bokovoy @ 2009-06-15 11:04 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Коллеги,

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

Попытаюсь объяснить ситуацию на примере того же D-BUS:
1. Для работы клиента и сервера между собой в D-BUS не требуется
наличие никаких внешних файлов описания интерфейсов, кроме
минимального файла конфигурации службы для ее запуска, если такая
служба еще не зарегистрирована в d-bus:
# Sample service description file
[D-BUS Service]
Names=org.freedesktop.ConfigurationDatabase;org.gnome.GConf;
Exec=/usr/libexec/gconfd-2
Все остальное не требует наличия каких-либо внешних средств. Во время
работы системы все ее свойства можно вывести путем интроспекции
интерфейсов.

2. Для получения свойств каждого интерфейса требуется запускать
приложение. Это невозможно в системе тестирования целостности
репозитария.
3. Каким образом можно организовать обнаружение изменений интерфейсов?

Мой текущий взгляд на проблему изложен ниже.
0. Используя пакетные зависимости и символы ELF можно достоверно
обнаружить компоненты пакетной базы, экспортирующие динамические
интерфейсы для статически связанных систем (меня интересуют сейчас
именно такие, вопросы скриптовых языков я преднамеренно опускаю).
1. Довольно часто в исходном коде приложений используются внешние
текстовые описания интерфейсов, аналогичные получаемым в процессе
интроспекции интерфейса в run-time. Некоторые приложения и среды
разработки используют их для генерирования исполняемого кода,
реализующего интерфейс и его использование.
2. Обнаружив компоненты, экспортирующие динамические интерфейсы, можно
выполнить анализ исходного кода на предмет наличия в них таких
описаний и на основании их составить базу интерфейсов репозитария
(первое приближение).
3. Для приложений, где такие текстовые описания интерфейсов не
используются необходимо придумать что-то еще.

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

-- 
/ Alexander Bokovoy

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-06-15 11:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-15 11:04 [devel] D-BUS API tracking in repositories Alexander Bokovoy

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git