Научно-технические ведомости СПбГПУ 3' 2011 Информатика. Телекоммуникации. Управление
УДК 004.4+004.5+004.7
М.А. Крышень, Ю.А. Богоявленский
ИНТЕРАКТИВНАЯ ВИЗУАЛИЗАЦИЯ ГРАФА ИКТ-ИНФРАСТРУКТУРЫ ОРГАНИЗАЦИИ
Высокая сложность ИКТ-инфраструктур (далее - Сетей) определяет необходимость разработки инструментов построения разнообразных, определяемых пользователем, интерактивных визуальных представлений графов Сетей и их связей с административной и пространственной структурами организации как на уровне элементарных единиц, так и на уровне их произвольных агрегаций. Такие инструменты позволят исследователям методов сетевого управления представлять в удобном виде структуру экспериментальных сетевых платформ (ЭП) [1] и наблюдаемых потоков данных, разрабатывать интерактивные модели, получать необходимые высокоуровневые представления Сетей.
В коммерческих системах, например IBM Tivoli [2] и HP Network Node Manager, набор визуализаций фиксирован. Универсальные системы, такие, как Graphviz [3] и Gephi [4], предоставляют больший выбор алгоритмов раскладки графов, а Gephi поддерживает интерактивность, но отсутствие интеграции с системами сетевого управления и ЭП затрудняет использование этих средств для визуализации Сетей.
Цель исследования - разработка инструмента, позволяющего получать разнообразные интерактивные визуальные представления графа Сети в соответствии с задачами, которые решают исследователи или системные администраторы. Визуализация должна поддерживать интерактивное изменение параметров раскладки, перемещение, масштабирование, сокрытие фрагментов и произвольное агрегирование.
В статье рассмотрен реализованный инструмент визуализации как подсистема экспериментальной платформы Nest [5], предназначенной для исследования моделей и методов сетевого управления. Новым в представленном подходе является использование для представления графа реализации трехструктурной объектной модели данных SON [6], представляющей Сеть, административную и пространственную структуры организации, а также описание преобразований объектов модели в визуальные представления с помощью разработанного авторами предметно-
ориентированного языка на базе Clojure (диалект Lisp для среды Java).
Объектная модель архитектуры организации. Система Nest основана на разработанной простой трехструктурной объектной модели данных SON, объединяющей три подмодели подсистем архитектуры организации - пространственную (S - Spatial), организационную (O - Organizational) и аппаратно-сетевую (N - Network). Диаграмма классов модели представлена на рис. 1. Класс Occupancy связывает три модели, описывая часть помещения, которое принадлежит одной организационной единице и содержит определенные устройства.
Объекты классов SON и отношения между ними образуют граф SON, представляющий граф Сети.
Предметно-ориентированный язык визуализации. Язык позволяет задать преобразование объектов модели в визуальные объекты. Преобразование определяется набором правил. Каждое правило - пара p f, где p - шаблон, который задается функцией, типом или набором свойств объекта, f - функция, отображающая последовательности выбираемых в соответствии с шаблоном объектов SON в визуальные объекты (рис. 2).
Для описания p и f используется синтаксис
Рис. 1. Диаграмма классов SON
Подграф SON
Визуальный объект
Шаблон
Выбор одного объекта:
тип,свойства
Выбор подграфа:
функция: объект SON —► последовательность объектов, path: список шаблонов —> функция
(path
...{: class Device
¡forwarding true}
Linklnterface
Networklnterface)
Рис. 2. Компоненты
языка Clojure, основанный на S-выражениях, и библиотека функций и макроопределений визуализации, включающая функции для выборки объектов SON и библиотеку интерактивных визуальных компонентов. Визуальные объекты описываются в декларативном стиле в виде комбинации функций библиотеки.
В примере (листинг 1) функция path возвращает функцию, объединяющую элементы структуры вдоль путей, заданных списком типов вершин. Выражение (path Room Occupancy) определяет правило для объекта класса Room (комната) и всех связанных с ним объектов класса Occupancy (часть комнаты, занятая определенной организационной единицей). В правой части правила определена функция, которая берет из списка объектов, соответствующих правилу, первый (комната), получает номер комнаты, создает текстовое поле (label), содержащее этот номер, добавляет фон (panel) и обрамление (border).
С ограничениями:
constrained, const-x, const-y
С интерактивным поведением:
expandable, combined
Агрегированное представление:
aggregate, stack, grid
гГ4®
О
Оз
Представление одного элемента: |
simple, verbose
Библиотека UI:
сложные — viewport, graph, группировка — hbox, vbox, простые — label, markup, image, border, panel правила визуализации
Во втором правиле для отображения устройства вместе с его интерфейсами сетевого и канального уровня использовано агрегированное представление объектов (aggregate) и задано ограничение (координата y должна иметь нулевое значение), которое будет учтено при размещении объектов на экране. Последнее правило задает для объектов типа Network (сеть) использование стандартного визуального представления.
В примере применены следующие элементы синтаксиса языка Clojure: #() - объявление анонимной функции с аргументом %, -> - последовательная запись вложенных форм (включение очередного выражения в следующую форму на вторую позицию). Пример визуализации для данного набора правил показан на рис. 3.
Для визуальных объектов можно определять действия, выполняемые в ответ на события ввода. В листинге 2 показана модификация второго правила из листинга 1. К агрегированному визу-
(path Room Occupancy)
#(-> % first .getNumber label (panel 5) border) (path Device LinkInterface NetworkInterface)
#(-> % aggregate (const-y 0)) Network default
Листинг 1: Пример правил
(path Device LinkInterface NetworkInterface) #(-> %
aggregate
(handle (:mouse-clicked _
(with-rules [{} default] (replace-elements %)))))
Листинг 2: Пример правил визуализации с обработкой событий
♦ Научно-технические ведомости СПбГПУ 3' 2011 Информатика. Телекоммуникации. Управление
Рис. 3. Пример визуализации и обозначения
(О) _ сеть; (Щ) - маршрутизатор; ([=]) - устройство; (О) - интерфейс канального уровня; (О)- интерфейс сетевого уровня
альному представлению устройства с его интерфейсами добавлен обработчик нажатия на кнопку мыши, который заменяет агрегированное представление стандартным визуальным представлением для каждого элемента. Для этого элементы заново добавляются в граф в контексте другого набора правил, который задан с помощью макроопределения with-rules. Новый набор состоит из одного правила «{} default».
Для размещения визуальных объектов на экране с учетом размеров вершин графа и ограничений разработан эффективный алгоритм раскладки графа, являющийся развитием алгоритмов, описанных в [7, 8]. Рассмотрение алгоритма раскладки выходит за рамки данной статьи.
Построение визуальных объектов. Для построения и отрисовки визуальных объектов и обработки событий ввода разработана многопоточная библиотека графического интерфейса пользователя Indyvon. Достоинством этой библиотеки является то, что ее базовые элементы интерфейса не имеют состояния (координат, размеров и положения в иерархии), а определяющие их данные вычисляются при отрисовке, фиксируются для обработки событий ввода и используются до завершения отрисовки следующего кадра.
Такой подход дает возможность строить динамические интерфейсы с большим числом интерактивных элементов, позволяя избежать дублирования и необходимости синхронизации состояния между приложением и библиотекой интерфейса. Этим преимуществом также обладает подход IMGUI [9], который используется при разработке компьютерных игр для описания
пользовательского интерфейса в императивном стиле. Предлагаемый в данной статье подход предполагает как императивное, так и декларативное описание интерфейса и допускает многопоточную работу.
Части интерфейса могут быть отрисованы асинхронно в параллельных потоках. Для исключения блокировок при этом используется метод тройной буферизации. В системе визуализации эта возможность использована для создания уменьшенного изображения всего графа сети. Синхронное построение уменьшенного изображения при каждом изменении графа вызвало бы существенное увеличение времени отклика на действия пользователя.
Реализация. Система визуализации реализована в виде подключаемого модуля для системы Nest. Классы объектной модели входят в ядро Nest. Для хранения объектов архитектуры организации используется объектно-реляционная проекция. Система Nest предоставляет абстрактный интерфейс для доступа к объектам SON, что позволяет модулю визуализации получать объекты как из базы данных, так и непосредственно от подсистемы автоматизированного построения графа сети.
Модуль визуализации реализован на языке Clojure с использованием доступных в нем средств параллельного программирования. От-рисовка графа сети, отрисовка миниатюры графа и раскладка графа выполняются параллельно. В реализации алгоритма раскладки вычисление сил, действующих на каждую вершину, выполняется параллельно для групп вершин (количество потоков зависит от количества доступных процес-
сорных ядер). Для управления модулем визуализации можно использовать интерактивную среду программирования REPL.
Система визуализации опробована на графе сети Петрозаводского государственного университета (ПетрГУ). Сетевая структура ПетрГУ представлена 4551 объектом SON, включая 1349 объектов сетевых устройств. Система визуализации позволила исследовать структуру сети ПетрГУ в интерактивном режиме.
Библиотека Indyvon составляет 1333 строки кода, исключая пустые строки и комментарии, модуль визуализации - 1650 строк кода.
Представлен метод визуализации, основанный на использовании предметно-ориентированного языка для описания преобразования объектов трехструктурной модели архитектуры организации в граф интерактивных визуальных объектов
и программная реализация метода в виде модуля экспериментальной платформы Nest.
Для работы с интерактивными визуальными объектами разработана библиотека Indyvon, базовые элементы интерфейса которой не имеют состояния, что позволяет строить динамические интерфейсы с большим числом интерактивных элементов и обеспечивает многопоточное выполнение. Функции и макроопределения библиотеки, обеспечивающие простое построение интерактивных объектов, составляют часть предметно-ориентированного языка визуализации.
Основной интерес для дальнейшего исследования представляет интеграция в систему визуализации различных дополнительных динамических данных о работе Сети: информация о потоках, информация регистрационных файлов различных сетевых служб, изменения графа Сети во времени.
СПИСОК ЛИТЕРАТУРЫ
1. Report of NSF Workshop on Network Research Testbeds. 2002 [Электронный ресурс] / Режим доступа: http://www-net.cs.umass.edu/testbed_workshop/testbed_ workshop_report_final.pdf
2. IBM Corp. IBM Tivoli Network Manager Version 3.7 Topology Visualization Guide, 2007 [Электронный ресУРс].
3. Ellson, J. Graphviz and dynagraph — static and dynamic graph drawing tools [Текст] / J. Ellson, E.R. Gansner, E. Koutsofios [et al.] // GRAPH DRAWING SOFTWARE. -Springer-Verlag, 2003. -P. 127-148.
4. Bastian, M. Gephi: An Open Source Software for Exploring and Manipulating Networks [Электронный ресурс] / M. Bastian, S. Heymann, M. Jacomy. -Режим доступа: http://www.aaai.org/ocs/index.php/ICWSM/09/ paper/view/154
5. Крышень, М.А. Проект Nest: структурное представление системы поставщика сетевых услуг [Текст]/ М.А. Крышень, А.С. Колосов, А.С.
Тидор, Ю.А. Богоявленский // Матер. межвуз. конкурса-конф. студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования». -СПб.: Изд-во СПбГПУ, 2008. -C. 49-51.
6. Крышень, М.А. Объектное представление и визуализация структуры поставщика сетевых услуг [Текст] / М.А. Крышень, А.С. Колосов, Ю.А. Богоявленский // Труды XV Всерос. науч.-метод. конф. Телематика 2008. -СПб.: 2008. -Т. 1. -С. 168-169.
7. Fruchterman, T.M.J. Graph drawing by force-directed placement [Text] / T.M.J. Fruchterman, E.M. Reingold // Softw. Pract. Exper. -1991. -Vol.21. -№11. -P. 1129-1164.
8. Hu,Y. Efficient and high quality force-directed graph drawing [Text] / Y. Hu // The Mathematica J. -2005. -Vol. 10. -P. 37-71.
9. Barrett,S. Immediage Mode GUIs [Text] / S. Barrett // Game Developer. -Sept. 2005. -P.34-36.
УДК 004.415
П.Д. Дробинцев, Р.И. Ким, В.П. Котляров
АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ СИМВОЛИЧЕСКИХ ТРАСС
В современном процессе разработки про- зуются методы верификации. Это связано с ра-граммного обеспечения (ПО) активно исполь- стущей сложностью разрабатываемого ПО, что