Тестирование софта - статьи


Информация об объектах, описанных в LSB


Для стандарта LSB в качестве хранилища объектов, описываемых стандартом, основной информации о них и связей между ними используется так называемая база данных стандарта LSB (LSB Specification Database). Более точно, в этой базе данных содержится информация о следующих объектах:

  • библиотеки (таблица Library);
  • классы (таблица ClassInfo);
  • интерфейсы - LSB является бинарным стандартом и описывает интерфейсы, предоставляемые каждой библиотекой. Все интерфейсы хранятся в таблице Interface и могут иметь следующие типы:
    • Function (функции);
    • Data (данные);
    • Common ("общие интерфейсы", к которым относятся stdin, stdout и им подобные);
    • Alias (интерфейсы, являющиеся синонимами других интерфейсов);
  • заголовочные файлы (таблица Header);
  • константы (таблица Constant);
  • типы данных (таблица Type);
  • команды (таблица Command; под командами здесь понимаются как встроенные команды shell, так и различные утилиты);
  • секции исполняемых файлов формата ELF (таблицы ElfSections и SectionTypes);
  • теги rpm-файлов (таблица RpmTag).

Рис.1.ER-диаграмма сущностей, описываемых стандартом LSB.

Также в базе данных хранятся связи между указанными объектами - каждая константа привязана к заголовочному файлу, в котором она объявляется, интерфейс - к библиотеке, в которой он содержится, либо к классу, если это метод класса, и т.д. ER-диаграмма существующей базы данных приведена на Рис. 1. Все сущности группируются в так называемые модули согласно своему назначению (например, модуль LSB_Сpp содержит все, относящееся к стандартной библиотеке C++, LSB_Toolkit_Qt3 - все, относящееся к библиотеке Qt3, и т.д.). Информация о форматах файлов ELF и RPM относится к модулю LSB_Core, однако база данных этого факта никак не отражает - об этом "знают" только скрипты, генерирующие текст стандарта.

Связи типа "многие ко многим" реализуются посредством использования отдельных таблиц. Самой сложной структурой обладает взаимосвязь таблиц ClassInfo и Interface. Для ее реализации используется несколько вспомогательных таблиц, содержащих информацию о виртуальных таблицах класса (таблица Vtable; каждый класс может иметь одну либо две виртуальные таблицы) и о наследовании (таблица BaseTypes реализует обычное наследование, при описании множественного наследования используется также таблица VMIBaseTypes).

Для удобства интерфейсы и классы, входящие в одну библиотеку, разбиваются на группы согласно их назначению.


Начало  Назад  Вперед