Спецификация требований


2.1. Первичный список требований (функциональные и ограничения)

В качестве внешнего формата заказчик определил каталог на сервере LDAP. В соответствии с изложенным выше, формально выделяется следующая функциональность Nest-LDAP: Для чтения и записи LDAP дерева, поставлены следующие условия:

Заказчиком была определена следующая объектная модель SAN-струкутуры, в соответствии с которой следует определить в рамках проекта внутренний формат представления сети:

Объектная модель SAN-структуры

Эта объектная модель представляет собой совокупность моделей административной, пространственной и сетевой структур (SAN-структуры).

Объектная модель сетевой структуры

Сетевые устройства представляются объектами класса Device. Каждое сетевое устройство имеет один или более интерфейсов канального уровня - объекты класса LinkInterface. Если устройство работает на сетевом уровне, то каждому канальному интерфейсу могут соответствовать один или более интерфейсов сетевого уровня - объекты класса NetworkInerface. Классы LinkInterface и NetworkInterface являются родительскими для классов, описывающих конкретные протоколов канального (EthernetInterface, PPPInterface) и сетевого (IPv4Interface, IPv6Interface) уровня соответственно. Возможно также добавление в модель других классов, наследующих LinkInterface или NetworkInerface для представления других протоколов.

Устройства связаны между собой посредством интерфейсов канального уровня (физические соединения) и объединены в сети, определенные механизмом маршрутизации, посредством интерфейсов сетевого уровня (логические связи). Физические соединения определяют структуру сети на канальном уровне.

Объектная структура администранивной и пространственной структур

Каждая из стуктур описывается набором объектов. Каждый класс объктов определяется своими атрибутами.

Основным классом, описывающим пространственную структуру является SpaceUnit - пространственная единица. Классами, наследующими его являются Building - здание, Floor - этаж и Room - комната.

Основным абстрактным классом, описывающим административную структуру, является AdmUnit - административная единица. Его наследуют два класса: CompositeAdmUnit и AdmLeaf. Класс AdmLeaf порождает листовые элементы административной структуры. Класс CompositeAdmUnit порождает все порождает все остальные объекты администативной структуры данной организации.

Связи между пространственной, административной и сетевой структурами

Между каждой из моделей структур - пространственной, административной и сетевой, определены взаимные связи, которые реализуются через классы, соответствующие Room, SimpleOU и Device. Типы связей показаны на рис. объектной структуры SAN-модели.

Представление структур в LDAP

Объектная модель SAN-структуры должна быть представлена в LDAP в виде набора записей, состоящих из атрибутов. Набор атрибутов определяется классом записи (см. объектную модель SAN-структуры). N-, A- и S- размещены в отдельных поддеревьях каталога LDAP.

В качестве внешнего формата заказчик определил каталог на сервере LDAP. В соответствии с изложенным выше, формально выделяется следующая функциональность Nest-LDAP:

В качестве языка программирования для реализации проекта заказчик определил Java.

В качестве программного интерфейса к LDAP заказчик определил JNDI.

В качестве инструмента документирования заказчик определил Javadoc.

В общем случае SAN-структура будет представлять собой граф. Для преобразования SAN-структуры в дерево заказчик предложил использовать следующие правила:

То есть, все записи сетевых устройств расположены в записях подсетей, к которым непосредственно подключены данные сетевые устройства, за исключением случая, когда сетевое устройство подключено к нескольким различным подсетям (через различные интерфейсы).

а также, формально выделяются следующие ограничения:



2.2. Модели требований (анализ и детализация требований)

Модель предметной области. Объекты и взаимосвязи между ними.

Модель предметной области отображена на диаграмме объектной моделью сети (см. выше).

Функциональная модель. Детальное описание каждой функции.

Описание функций системы Nest-LDAP:
  • Функция добавления нового элемента SAN структуры:
    • Вход: данные об элементе SAN структуры
    • Выход: объект класса SAN структуры
  • Функция удаления элемента SAN структуры:
    • Вход: объект класса SAN структуры
  • Функция записи элемента SAN-структуры:
    • Вход: ссылка на элемент SAN структуры
    • Выход: новый объект на сервере LDAP
  • Функция чтения элемента дерева LDAP:
    • Вход: путь до нужного объекта
    • Выход: объект SAN структуры
  • Функция поиска элемента в дерева LDAP:
    • Вход: значения атрибутов, которыми должны обладать элементы дерева
    • Выход: объект(ы) SAN структуры, имеющие заданные атрибуты


Высокоуровневая модель архитектуры.

Высокоуровневая структура.

Пояснения:
Подсистема NEST-LDAP предоставляет возможность пользователю NEST работы с деревом LDAP. При этом пользователь не догадывается о внутренней структуре модуля работы с деревом, а лишь имеет возможность записать/прочитать либо все дерево, либо какую-ту его часть, найти определенный объек в дереве и вести в дереве лог динамически изменяющейся сети.



2.3. Критерии аттестации системы

Набор базовых высокоуровневых тестов, которые будут проверяться при аттестации ПО и удостоверяют его соответствие требованиям заказчика

Тест 1:Соединение с сервером.
Описание: Для соединения с сервером потребуются права администратора (username, password) и ip-адрес LDAP сервера. В случае если, какое-либо из вводных данных окажется неправильным, то будет сгенерировано исключение (AuthenticationException), описанное в Java JNDI.

Тест 2:Корректность преобразования Дерево LDAP ---> SAN-Структура.
Описание: Для проверки на чтение информации из LDAP сервера, будет применяться добавление файла с данными, которые должны будут в последствии считаться (инструментe ldapadd). Так же будет использоваться обозреватель Jarek Gawor's LDAP Browser\Editor, для просмотра содержания сервера и последующего сравнения с выводимой информацией программы (модуля NEST-LDAP).

Входные данные:
  1. Дерево, соответствующее графу SAN-структуры.

Пошаговое описание:
  1. Запись дерева на сервер, через инструмент ldapadd.
  2. Чтение SAN-структуры с сервера модулем NEST-LDAP.
  3. Вывод информации о всех элементах SAN-структуры на стандартный выход.
  4. Просмотр содержимого сервера LDAP, используя Jarek Gawor's LDAP Browser\Editor
  5. Вручную, сравнение данных, выведенных подсистемой, с данными в обозревателе.


Тест 3:Корректность преобразования SAN-Структура ---> Дерево LDAP.
Описание: Для проверки на запись будут введены данные, запись которых будет проверяться обозревателем Jarek Gawor's LDAP Browser\Editor на наличие ошибок и неточностей.

Входные данные:
  1. Граф сети.

Пошаговое описание:
  1. Запись SAN-структуры через NEST-LDAP в дерево на сервере LDAP.
  2. Просмотр содержимого сервера LDAP, используя Jarek Gawor's LDAP Browser\Editor
  3. Вручную, сравнение исходных данных и данных, отображенных обозревателем.


Тест4:Взаимная однозначность преобразования Структура Сети <---> Дерево LDAP.
Описание: Для проверки на запись будут введены данные на сервер и одновременно сохранены в отдельном файле. После чтения и вывода данных, находящихся на сервере, будет проведена проверка на идентичность считавшихся с сервера данных и записанных в отдельный файл.

Входные данные:
  1. Граф сети.

Пошаговое описание:
  1. Вывод информации о всех элементах SAN-структуры в файл #1.
  2. Запись SAN-структуры на сервер, через NEST-LDAP.
  3. Чтение SAN-структуры с сервера, через NEST-LDAP.
  4. Вывод прочитанной с сервера SAN-структуры в файл #2
  5. Сравнение файлов #1 и #2 на идентичность с помощью утилиты сравнения
Тест5:Производительность по времени чтения/записи на сервер LDAP
Описание: Последовательное увеличение SAN-структуры и замерение времени, при записи и чтении структуры на сервер LDAP. Первоначальный размер сети - 100 элементов, максимальный - 10000. На каждой итерации структура увеличивается на 100 элементов.

Входные данные:
  1. Граф сети от 100 до 10000 элементов.

Пошаговое описание:
  1. Генерация SAN-структуры
  2. Запись SAN-структуры на сервер, через NEST-LDAP, замеряя при этом время записи.
  3. Чтение SAN-структуры с сервер, через NEST-LDAP, замеряя при этом время чтения.
  4. Если размер SAN-структуры менее 10000 элементов, то увеличить размер на 100 элементов и вернуться к первому шагу.
Тест6:Корректность выполнения запросов на выборку элементов SAN-структуры
Описание: Функциональность подсистемы NEST-LDAP предоставляет возможность пользователю осуществлять поиск в дереве LDAP. При выполнении теста задается определенным образом элемент SAN-структуры (это могут быть его атрибуты), в результате чего программа должна вернуть все такие элементы SAN-структуры, соответствующие заданному образцу.

Входные данные:
  1. Образец поиска по элементам SAN-структуры в дереве LDAP.
Выходные данные:
  1. Все такие элементы SAN-структуры, соответствующие образцу.

Тест7:Производительность выполнения запросов на большую выборку элементов SAN-структуры.
Описание: Тест проверяет количество времени затраченное на то, чтобы получить выборку элементов.

Входные данные:
  1. Образец поиска по элементам SAN-структуры в дереве LDAP.
Выходные данные:
  1. Все такие элементы SAN-структуры, соответствующие образцу.
  2. Время, затраченное на поиск.

Тест8:Прикладной программный интерфейс
Описание: Тест заключается в создании примера пользовательской программы, использующей модуль NEST-LDAP. В программе должны быть применены все варианты работы NEST-LDAP, т.е. вызваны все методы входящие в интерфейс NEST-LDAP. Программа должна безошибочно транслироваться и корректно работать.

Перечень и краткое описание дополнительных инструментов:
  • ldapadd - средство, для добавления вхождений в LDAP.
  • Jarek Gawor's LDAP Browser\Editor - Java программа, позволяющая просматривать содержимое LDAP сервера.
  • Утилита сравнения файлов, аналогичная cmp под Unix.

Перечень дополнительных, предназначенных только для тестирования, подсистем NEST-LDAP:

2.4. Глоссарий терминов

Служба каталогов - программный комплекс для хранения и каталоголизации информации (похоже на обычную БД, но с уклоном, скорее, на чтение данных нежели на их добавление и их изменение). Обычно DS базируется на клиент-серверной архитектуре. Служба каталога должна предоставлять простой централизованный доступ к данным, которые могут использоваться различными приложениями.

LDAP (Lightweight Directory Access Protocol) - протокол для работы службы каталогов, обеспечивающий любому приложению доступ к информации в каталоге. Доступ осуществляется по TCP/IP. LDAP позволяет производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, удалени, изменения записей.

JNDI (Java Naming and Directory Interface) - это клиентский API, который обеспечивает функции управления и наименования. JNDI был создан для обеспечения абстракций, представляющих наиболее общие для клиентов служб имен и управления элементы. JNDI не задумывался как альтернатива существующим системам наименования и управления. Наоборот, он создан для обеспечения стандартного интерфейса для доступа к общепринятым системам типа DNS, LDAP. JNDI представляет собой интерфейс, который с помощью своего API скрывает детали реализации различных систем наименования и управления. Это позволяет многочисленным системам существовать и даже сотрудничать в рамках одного клиента JNDI. С помощью этого интерфейса пользователь может перемещаться от одной системы управления и наименования к другой, при этом думая, что он работает с одной логической объединенной службой имен.

Javadoc - утиита используемая для генерации HTML-документации по исходному коду, входящая в стандартную поставку JDK.

JavaBeans - это технология создания и использования программных компонент (обычно визуальных, хотя не обязательно). В JavaBean программные компоненты, которые являются как бы кирпичиками программы, называются Beans (в переводе . бобы). В исходной документации по javaBeans от Sun определено: "Целью технологии JavaBeans является определение модели программных компонент такой, что фирмы-разработчики ( third party firms ) могут создавать и устанавливать Java-компоненты, которые могут быть скомпонованы конечными пользователями в законченные приложения".

Valid HTML 4.01! Valid CSS! Yellow Pages HotLog