Разработка программного обеспечения проведения соревнований по программированию компьютерных игровых стратегий в среде MS Robotics Studio

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Разработка программного обеспечения проведения соревнований по программированию компьютерных игровых стратегий в среде MS Robotics Studio

Введение

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

Интересный способ привлечения юных дарований к науке можно увидеть во многих ВУЗах мира. Например, преподаватель Университета Мэсси Гураб Сэн Губта сделал небольших роботов-футболистов для обучения программированию своих студентов четверокурсников. Комбинация электроники и программного обеспечения — это как раз то, что нужно. Во многих американских университетах соревнования роботов уже поставлены на поток [1].

В последние годы соревнования среди роботов стали популярными и в России. Открытый робототехнический турнир на Кубок Политехнического музея является ежегодными соревнованиями роботов, проводящимися в рамках научно-познавательной программы «Каникулы роботов в Политехническом». Турнир включает соревнования различной степени сложности, в которых могут принимать участие как простейшие узконаправленные конструкции, созданные начинающими, так и комплексные робототехнические устройства со сложной программной частью[2]. В 2011 году состоялся III Всероссийский робототехнический фестиваль. Победителем соревнований по профессиональной робототехнике по направлению «Промышленная автоматизация» стала команда из Саратова «MobRob», которая будет представлять Россию на престижных международных соревнованиях по робототехнике: Азиатско-Тихоокеанского региона ABU ROBOCON-2011 в Таиланде [3].

Наиболее популярными роботами для программирования являются роботы LEGO Mindstorms NXT. LEGO Mindstorms — это особая серия конструкторов, обладающих практически неограниченными возможностями. С помощью программного блока и различных датчиков можно создать робота, способного выполнять любые действия. Робот lego программируется подключенным по USB к компьютеру [4]. Цена таких роботов даже в базовой комплектации превышает 10 000 рублей, что делает их недоступными большинству энтузиастов, желающих попробовать себя в области программирования роботов.

Альтернативным способом программирования роботов является программирования виртуальной модели, точной копии настоящего робота, в симуляционной среде, что позволяет сделать платформа Microsoft Robotics Developer Studio (MSRS). Среда разработки MSRS — это пакет разработчика для робототехники, ориентированный на программистов разных уровней. Визуальный язык программирования (VPL), входящий в состав MSRS, поможет писать простые программы начинающим энтузиастам. Симуляция виртуальных роботов позволит работать с техникой, которой еще нет, или выйти из положения, если использовать настоящего робота по каким-то причинам нельзя [5]. Важным фактором является то, что программа написанная на VPL для виртуального робота может исполняться и реальным роботом, оснащенным необходимыми приборами и сенсорами.

Целью дипломной работы является разработка программного обеспечения, предоставляющего возможность проведения соревнований по программированию компьютерных игровых стратегий на базе Microsoft Robotics Studio, включающего:

— Обеспечение возможности проведения турниров между роботами;

— Составление отчетов о проведенных турнирах;

Для достижения поставленной цели нужно решить следующие задачи:

1) Регистрация участников в системе;

2) Загрузка файлов участников на сервер;

3) Сохранение результатов соревнования в БД;

4) Формирование отчетов о турнирах;

5) Предоставление участнику соревнования информации для программирования роботов;

6) Запуск симуляции выполнения логики загруженных роботов.

1. Описание объекта управления

1.1 Структура объекта управления

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

Так как перед нами не стоит задача — автоматизировать какие-либо процессы, связанные со спецификой проведения соревнований, то нет необходимости анализировать их деятельность. Разработанная система предназначена для проведения студенческих соревнований по программированию компьютерных игровых стратегий на базе Microsoft Robotics Studio. Исходя из этого, можно сделать вывод, что нашей системой может пользоваться большое количество пользователей.

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

1.2 Функциональные особенности

Основные функции, которые необходимо чтобы предоставляла система её пользователям:

— регистрация участников в системе;

— загрузка проектов участников на сервер;

— загрузка файлов с сервера;

— выбор необходимой документации;

— запуск на выполнение необходимых проектов участников;

— сохранение результатов соревнований на сервере;

— формирование отчетов о прошедших турнирах;

— просмотр новостей о проекте, прошедших и предстоящих турнирах.

1.3 Пиковые нагрузки

Пиковые нагрузки возникают во время проведения турниров. В этот период от пользователей начинают в большем количестве поступать файлы проектов. Администраторами запускаются проекты участников для проведения турниров, в БД заносятся результаты проведенных соревнований, формируются отчеты о прошедших турнирах. В остальное время нагрузки на сервер равномерные, т.к. загрузка участниками своих проектов, а также их запуск на тестовое выполнение равномерен. Поддерживаемое максимальное количество одновременных пользователей — 1000 человек.

2. Обзор существующих систем проведения соревнований роботов

2.1 Java Robocode

Robocode — это обучающая игра с открытыми исходными кодами, разработанная Mathew Nelson и Flemming Larsen. Ее единственной целью было облегчение изучения языка программирования Java. Основным движущим элементом в обучении должна была стать конкуренция. Каждый участник пишет код на Java, который управляет небольшим танчиком, и сражается с другими такими же танками [6].

Проект Robocode был начат в середине 2000 г. и по замыслу его создателя должен быть стать развитием игры Robot Battle, адаптированным под язык Java. По мере развития проекта и написания кода для своих первых танков, автору пришла в голову гениальная мысль — совместить игровой процесс с обучением. Доступность и открытость модели Robocode позволяет любому начинающему программисту за несколько минут создать простой танк и приступить к его совершенствованию [7].

Суть соревнования заключается в организации боев роботов-танков. Каждый робот представляет собой отдельный класс, который наследует свойства и методы класса Robot. Таким образом, каждый робот может быть запрограммирован игроком на определенное поведение. После того, как игроки создали свои классы роботов, можно создать бой и выставить их друг против друга. В процессе игры роботы-танки могут двигаться по игровому полю, стрелять, узнавать месторасположение друг в друга, врезаться в стены и в других роботов, узнавать где находятся летящие пули и использовать всю мощь языка Java. На рисунке 2.1 приведен скриншот программы Robocode во время проведения турнира.

Рис. 2.1. Проведение соревнования роботов в Robocode

Интеллектуальный бой заключается в написании программы для управления танком на Java. Из основных возможностей игры можно отметить создание роботов, программирование их на Java, компиляция, запуск нескольких роботов в схватке и пошаговый просмотр битвы. У робота есть три подвижные части. Это тело, пушка и радар. Радар движется быстрее всех частей и отправляет соответствующее событие при обнаружении противника. Пушка имеет возможность выстрела, но команда выстрела дается из главного класса. Тело может поворачиваться, двигаться, высылать событие об ударе о стену [8].

2.2 Pascal Robotwar

RobotWar — игра для программистов, написанная Сайласом Уорнером. Каждый робот — это отдельная паскаль-программа, использующая свою собственную стратегию. В создаваемой игре необходимо поместить несколько роботов, а затем посмотреть, как они начнут войну за выживание с применением бомб, ракет, и прочих подручных материалов.

Основной составляющей игрового процесса было написание программы, управляющей роботом. После этого игрок мог выбрать нескольких роботов, которые будут сражаться друг с другом на арене, пока не останется только один. Игрок не мог принимать участия в битве или как-то управлять роботом.

Различные предопределенные функции и процедуры Паскаля позволяют роботу отслеживать свое местоположение на поле боя, следить за своим здоровьем и состоянием поврежденности, а также вычислять расстояние и угол до противника из текущей позиции. Каждый робот оснащен пушкой, для возможности обстрела противников ракетами и механизмами привода для перемещения по полю, и возможности избегания попадания выстрелов противников. При желании, роботы могут быть оснащены бомбами, комплектами для ремонта, различными типами брони и боеголовок, отклоняющими щитами и устройствами сокрытия.

Pascal RobotWars является отличным тренажером начинающих программистов, для повышения навыков программирования на Паскале и удовольствия в то же время. Тем не менее, Pascal RobotWars предполагает, что программист роботов уже знает язык программирования Pascal. На рисунке 2.2 приведен скриншот программы Pascal Robot во время проведения турнира.

Версия P-ROBOTS 4.0 имеет ряд значительных улучшений по сравнению с предыдущими версиями, включая интегрированную среду разработки или IDE, которая может быть использована для создания, редактирования и тестирования созданных роботов. При тестировании / компиляции робота с использованием интегрированной среды разработки, компилятор определяет любые ошибки в исходном коде, и устанавливает положение курсора на соответствующую позицию в редакторе, где возникла ошибка в исходном коде. Что существенно облегчает исправление ошибок. IDE может также использоваться для изменения структуры «турниров. Можно устанавливать различные характеристики, например увеличить скорость воспроизведения анимации, установить неограниченное количество препятствий и т. д. [9].

Рис. 2.2. Проведение соревнования роботов в Pascal Robot

2.3 Snake Battle

Snake Battle — компьютерная игра, разработанная компанией Gamos, в которой игроки соревнуются в программировании змей.

Битва происходит на клетчатом поле. Каждая «живая» змея состоит из головы, туловища и хвоста. Весь змеиный «интеллект», включая датчики для сканирования окружающей обстановки, находится, разумеется, в голове, а хвост является наиболее уязвимым местом. Наличие головы и хвоста обязательно для каждой змеи, то есть минимальная живая змея имеет длину две клетки.

В ходе боя возможны всего лишь два варианта движения змеи. Если голова змеи перемещается на пустую клетку, то все тело змеи перемещается вслед за головой, так что первая клетка туловища оказывается там, где раньше была голова, а хвост оказывается там, где была последняя клетка туловища [10].

Если же змея производит атаку на противника, то ее голова окажется на той клетке, где был хвост другой змеи, а все тело останется на месте. Таким образом, длина укусившей змеи увеличивается на единицу, а длина укушенной — на единицу уменьшается.

Змея не может перемещаться на клетку, занятую своим или чужим туловищем, а также за пределы игрового поля. Ход на клетку, ранее занятую своим хвостом, возможен, то есть вся змея перемещается одновременно, а не по одной клеточке. Змея всегда перемещается, если у нее есть такая возможность и остается на месте только, если все пути ее перемещения блокированы.

Таким образом, суммарная длина участников боя остается постоянной, а длина отдельно взятой змеи является показателем того, насколько успешно воюет именно она. Задача-максимум для пользователя состоит в том, чтобы его змея полностью «съела» всех противников, задача-минимум — добиться того, чтобы его змея имела максимальную длину. На рисунке 2.3 приведен скриншот программы Snake Battle во время проведения турнира.

В самой битве одновременно участвует от двух до четырех змей. Бой с участием четырех змей гораздо интереснее и менее предсказуем, чем с участием пары. Бой заканчивается в одном из четырех случаев:

— когда одна змея уничтожила всех противников;

— когда ни одна из змей не имеет хода;

— когда истекло время боя;

— по прерыванию пользователя: «конец боя».

Рис. 2.3. Проведение соревнования роботов в Pascal Robot

Если раунд боя закончился естественным путем (то есть не по последней причине), то, можно снова выбрать опцию «начать бой» и продолжить сражение с участием тех же противников и с сохранением уже набранных очков. Так как фактор случайности играет существенную роль, результат однораундового боя не является особо показательным, так что стоит проводить не менее десяти раундов, для того чтобы достаточно объективно оценить силу противников [11].

2.4 Microsoft Robotics Developer Studio

Microsoft Robotics Developer Studio это среда моделирования и разработки программ управления роботами. Наибольший интерес в MSRS представляет среда визуального програмиирования (программа рисуется, а не пишется) и среда моделирования робота. MSRS очень удобен для изучения основ программирования роботов. Процесс создания программы управления роботом очень увлекателен и интересен. Данный продукт предназначен для академической, любительской или коммерческой разработки и поддерживает большое количество разнообразного аппаратного обеспечения роботов [12].

Microsoft® Robotics Studio (MSRS) позволяет создавать приложения для широкого спектра устройств на основе служб. Этот набор содержит среду выполнения, которая хорошо известна разработчикам Windows® Communication Framework (WCF). Кроме того, он содержит средство языка визуального программирования Visual Programming Language (VPL) и среду визуализации Visual Simulation Environment (VSE).

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

Среда выполнения MSRS состоит из двух частей более низкого уровня, которые основаны на CLR 2.0. Две указанные среды выполнения — служба DSS и среда CCR. DSS является облегченным вариантом ориентированной на службы среды выполнения, которая работает на принципах REST (Representation State Transfer), используемых в веб-технологиях. CCR является библиотекой Microsoft. NET Framework, поддерживающей асинхронную обработку процессов. Это особо важно для робототехнических приложений, в которых происходит постоянный обмен данными, поступающими к большому количеству датчиков и исполнительных механизмов и передаваемыми от них [13].

Основным компонентом для построения приложений Microsoft Robotics является служба DSS (DSS Service). По сути, службы DSS являются универсальной концепцией, которая может и должна применяться и вне контекста роботизации. DSS-службы имеют состояния, управляемые сообщениями. Эти сообщения поступают в службу через ее порты.

Сообщения, отправляемые службе, являются классами. NET, которые могут иметь содержательную часть, например, с информацией о том, изменять ли состояние и каким образом, или сведения о запрашиваемых параметрах состояния. Другие сообщения не оперируют с состоянием напрямую, но могут оказывать на него побочные эффекты. Службы обрабатывают такие сообщения, как CREATE, LOOKUP, UPDATE и др. Кроме того, вы сами можете определить сообщения, являющиеся расширениями базовых сообщений.

Порты являются средством взаимодействия служб с внешним миром. Они настраиваются на прием сообщений ограниченного числа типов, определяемых самими службами. Кроме того, порты применяются для внешних коммуникаций в таких случаях, как подписка на уведомления об определенных событиях, поступающие от службы [14].

Библиотека CCR была специально разработана для Microsoft Robotics Studio и входит в состав инсталляционного пакета MSRS.

Приложение, в контексте Robotics Studio, это композиция слабосвязанных параллельно выполняющихся компонент. Такой подход можно реализовать с помощью существующих примитивов многопоточного программирования. Сразу можно сказать, что процесс написание многопоточных приложений является далеко не тривиальным. Библиотек CCR создавалась с целью сделать многопоточное программирование гораздо более простым процессом. При использовании CCR нет необходимости вручную управлять потоками, блокировками, семафорами. Всё это используется в библиотеке, но просто скрыто от пользователя [15].

Наряду со средой исполнения, пакет MSRS содержит программу VPL, позволяющую создавать робототехнические приложения путем простого перетаскивания элементов в рабочую область.

VPL основан на программной модели потоков данных, которая хорошо подходит для программирования роботов и широко использует распределенные и параллельные вычисления. VPL состоит из блоков, которые обычно называют Activities. Потоки данных состоят из последовательно соединенных Activities. Блоки Activities могут обозначать различные вещи, например, содержать элементы контроля потоков данных, функции, созданный пользователем код и т. д. Написание программы в VPL заключается в соединении Activities. В VPL данные проходят через соединения Activities. На рисунке 2.4 приведен пример программы написанной на VPL.

Рис. 2.4. Пример программы на VPL

Еще одним важным модулем Robotics Studio является симуляционная среда (Visual Simulation environment — VSE). Microsoft Visual Simulation Environment (VSE) — среда визуализации в Microsoft Robotics Studio (MSRS), которая позволяет экспериментировать со сложными моделями, имеющими в своем составе большое количество роботов и объектов [16]. Она реализует потрясающую идею, а именно — о том, что для программирования роботов сами роботы, в принципе, и не нужны. На рисунке 2.5 приведен пример визуализации в VSE.

Симуляционная среда является графической 3D-моделью, отображающей действия роботов, и объекты, которые роботов окружают. Например, если в модели присутствует шарик, то можно подогнать робота к шарику и откатить этот шарик куда-нибудь.

Рис. 2.5. Пример визуализации в VSE

Физические моменты настолько глубоко продуманы, что становится возможным даже моделирование переворотов роботов, отрыва роботов от земли, столкновения объектов — все что угодно. Одним из примеров использования симуляционной среды является моделирование ринга сумо-роботов (которые стараются вытолкнуть друг друга за пределы ринга) [17].

2.5 Сравнительный анализ

Сравнительная характеристика Java Robocode, Pascal Robot, Snake Battle и среды Microsoft Robotics Developer Studio представлена в сводной таблице «Сравнительная характеристика существующих аналогов» Знаком «+» в таблице отмечено присутствие характеристики, знаком «-» — отсутствие.

Таблица 1. Сравнительная характеристика существующих аналогов

Robocode

Pascal Robot

Snake Battle

MSRS

Простота написания кода

+

-

-

+

Отображение действий в 3D

-

-

-

+

Возможность проведения турниров

+

+

+

-

Составление отчетов по турнирам

-

-

-

-

Встроенный редактор

+

+

-

+

Действие законов физики

-

-

-

+

Переносимость кода на реальные роботы

-

-

-

+

Ускорение времени проведения турнира

+

+

-

-

Возможность оценивания разработанных роботов

+

+

+

-

Использование большого количества сенсоров

-

-

-

+

В результате изучения предметной области и поиска аналогичных проектов было выявлено, что существуют несколько систем для проведения соревнований по компьютерным игровым стратегиям. У каждой системы есть как свои преимущества, так и свои недостатки.

Из сравнительной таблицы видно, что такие системы как Pascal Robot и Snake Battle являются давно устаревшими и обладают очень скудным функционалом. Процесс демонстрации компьютерных стратегий является малоинформативным и не тривиальным из-за качества изображения. Пользовательский интерфейс практически отсутствует.

Java Robotics является более приемлемой системой для проведения соревнований компьютерных игровых стратегий по сравнению с такими системами как Pascal Robot и Snake Battle. Улучшенная 2D графика, интуитивно понятный интерфейс, наглядность происходящих действий. Но данная система также не лишена недостатков. У роботов имеется незначительный набор приборов, используемый для программирования его поведения. В Java Robotics отсутствует возможность составления отчетов о проведенных турнирах, нет возможности отображения происходящего в 3D, на роботов не действуют законы физики и уж тем более программу, написанную для робота в среде Java Robotics нельзя применить к реально существующему роботу.

Сводная таблица явно демонстрирует, что платформа Microsoft Robotics Developer Studio представляет собой большой интерес создания программного обеспечения для проведения соревнований по программированию компьютерных игровых стратегий. Данная среда прекрасно подходит для программирования роботов, как реальных, так и виртуальных. Программа написанная для виртуального робота может применятся и к реальному роботу, оснащенным необходимым количеством сенсоров. Для этого необходимо только изменить манифест, указать новые порты для сервисов. Возможность демонстрации происходящих с роботами действий в формате 3D делает MSRS намного привлекательнее по сравнению с рассмотренными аналогами. Еще одной важной отличительной чертой среды Microsoft Robotics Developer Studio является наличие 3D physic-based движка, обеспечивающем реалистичность происходящего, все объекты симуляционного мира подчиняются физическим законам.

MSRS имеет ряд преимуществ над рассмотренными системами проведения соревнований компьютерных игровых стратегий, но в данной среде отсутствует главное, инфраструктура для проведения турниров между роботами, т. е. отсутствует внесение кода, разработанного участником в единую игровую среду, отсутствует возможность оценки разработанных роботов, по заданным критериям, Отсутствует возможность составления удобных отчетов о турнирах. Разработанное программное обеспечение в рамках данной дипломной работы решает эти проблемы, что делает платформу Microsoft Robotics Developer Studio лучшей системой для проведения соревнований, по отношению к рассмотренным аналогам.

3. Описание практической реализации по «проведение соревнований по программированию компьютерных игровых стратегий»

3.1 Функциональные особенности

Программное обеспечение «Проведение соревнований по программированию компьютерных игровых стратегий» является клиент-серверным приложением и обеспечивает выполнение следующих функций:

— регистрация участников соревнований в системе;

— аутентификация пользователей;

— загрузка на сервер проектов участников;

— возможность запуска на клиентской стороне собственных загруженных роботов;

— сохранение результатов соревнований на сервере;

— предоставление необходимой обучающей литературы;

— формирование отчетов по проведенным турнирам;

— предоставление пользователю новостей о проекте, предстоящих и прошедших турнирах;

— загрузка необходимых ресурсов с сервера на локальный компьютер.

Серверная часть приложения предоставляет следующие возможности:

— предоставление пользователю доступа к загруженным им проектам;

— возможность предоставить общий доступ к загруженным документам администраторам соревнований;

— надёжное хранение данных на сервере;

— запуск на выполнение проектов участников;

— сохранение результатов турнира в БД.

3.2 Входные и выходные данные

Входы:

1. Регистрация пользователя

Пользователь вводит следующие данные:

a) имя;

b) фамилия;

c) отчество;

d) контактный телефон;

e) город;

f) университет;

g) логин;

h) пароль.

2. Аутентификация пользователя

Пользователь вводит следующие данные:

a) логин;

b) пароль;

3. Загрузка проектов на сервер

Проект должен быть предоставлен следующим образом:

a) уникальное название;

b) формат — обязательно txt;

c) путь к файлу в локальной дисковой подсистеме;

4. Запуск проекта на выполнение

Запуск проекта на выполнение должен быть предоставлен следующим образом:

a) имя робота;

b) наименование карты;

Выходы:

1. Формирование отчетов по турнирам

Отчет можно представить следующим образом:

a) тип соревнования;

b) место;

c) имя робота;

d) наименование карты;

e) результат.

2. Логирование результатов соревнования

Данные для логирования можно представить следующим образом:

a) имя робота;

b) наименование карты;

c) результат.

3. Загрузка необходимых ресурсов на локальный компьютер

Результатом является загруженные на локальный компьютер в указанную директорию необходимые ресурсы.

Запросы:

1. запрос на запуск соревнования;

2. запрос на загрузку проектов на сервер;

3. запрос на загрузку необходимых ресурсов с сервера на локальный компьютер;

4. запрос на просмотр обучающей литературы;

5. запрос на просмотр новостей.

3.3 Функциональные диаграммы и схема потоков данных ПО

Для наглядного представления работы и информационных потоков следует составить необходимые диаграммы. При проектировании системы необходимо чётко представлять структуру предметной области, и в этом могут помочь диаграммы стандарта IDEF.

Построение модели предметной области начинается с создания контекстной диаграммы IDEF0 — диаграммы самого высокого уровня в модели. На контекстной диаграмме присутствует всего один функциональный блок, соответствующей основной функции, реализуемой моделируемой системой (рис. 3. 1).

Рис. 3.1. Контекстная диаграмма разрабатываемого ПО

Цель моделирования: подготовка к внедрению системы проведения соревнований компьютерных игровых стратегий.

Точка зрения: пользователь.

Так как контекстная диаграмма зависит от того, чью точку зрения она представляет, то в данном случае следует выделить, что контекстная диаграмма отображает точку зрения пользователя. Данная диаграмма отображает процесс проведения соревнования. Для начала работы процесса на вход функционального блока должны быть переданы файлы структуры и поведения робота, а также файл с параметрами окружающей среды. В качестве управляющего воздействия выступают принципы и правила функционирования. Проведение соревнования связано с взаимодействием с пользователем либо администратором. На выходе работы процесса система выдаёт результаты прошедшего соревнования, а также место, которое занял участник.

Функцию, приведённую на контекстной диаграмме, можно разбить на более мелкие функции и описать их взаимодействие на диаграмме нижнего уровня (рис. 3. 2).

Рис. 3.2. Декомпозиция контекстной диаграммы

С помощью диаграммы, приведённой на рисунке 1.3 трудно понять, выполняются ли задачи синхронно или асинхронно, обязательно ли для начала выполнения новой функции нужно завершение всех остальных и т. д. Поэтому для подробного описания работы той или иной функции используются диаграммы IDEF3 (рис. 3. 3).

Диаграммы IDEF0 и IDEF3 основное внимание уделяют описанию функционирования системы, и не учитывают информационные потоки, существующие в ней. Для дополнения модели системы описанием информационных потоков, используются диаграммы потоков данных (Data Flow Diagrams, DFD). Модель DFD описывает процесс переработки информации от поступления в систему до выдачи пользователю. На рисунке 3.4 представлена модель информационных потоков процесса поиска документов.

Рис. 3.3. Детализированная IDEF3-диаграмма работы системы

Рис. 3.4. Диаграмма модели потоков данных

3.4 Выбор программного обеспечения

3. 4.1 Платформа Microsoft. NET

Для разработки программного обеспечения «Robotics Championship» была выбрана платформа Microsoft. NET Framework, язык программирования — C#.

Microsoft. NET Framework — программная платформа, выпущенная компанией Microsoft. Фактически представляет собой операционную систему внутри операционной системы. Отличительной особенностью. NET Framework является способность выполнять программы, написанные на разных языках программирования [18].

Microsoft. NET Framework обладает следующими функциональными способностями:

— Полноценная функциональная совместимость с существующим программным кодом;

— Полная и тотальная интеграция языков. В. NET поддерживается межъязыковое наследование, межъязыковая обработка исключений и межъязыковая отладка кода;

— Общий исполняющий механизм, разделяемый всеми поддерживающими. NET языками. Одним из аспектов этого механизма является наличие хорошо определенного набора типов, которые может понимать каждый поддерживающий. NET язык;

— Обширная библиотека базовых классов. Эта библиотека позволяет избегать сложностей, связанных с выполнением прямых вызовов к API, и предлагает согласованную объективную модель, которую могут использовать все поддерживающие. NET языки [19].

Microsoft. NET Framework состоит из двух частей: общеязыковой исполняющей среды (common language runtime, CLR) и библиотеки классов (Framework Class Library, FCL). CLR предоставляет модель программирования, используемую во всех типах приложений. У CLR собственный загрузчик файлов, диспетчер памяти (сборщик мусора), система безопасности (безопасность доступа к коду), пул потоков и другое. Кроме того, CLR предоставляет объектно-ориентированную модель программирования, определяющую, как выглядят и ведут себя типы и объекты.

FCL предоставляет объектно-ориентированный API-интерфейс, используемый всеми моделями приложений. В ней содержатся определения типов, которые позволяют разработчикам выполнять ввод / вывод, планирование задач в других потоках, создавать графические образы, сравнивать строки и т. п. Естественно, что все эти определения типов соответствуют существующей CLR в модели программирования [20].

Как уже упоминалось, в каркасе Framework. Net можно выделить два основных компонента, это статический компонент (библиотека классов каркаса, FCL) и динамический компонент (общеязыковая исполнительная среда, CLR).

Каркас является единым для всех языков среды. Поэтому, на каком бы языке программирования не велась разработка, она использует классы одной и той же библиотеки. Многие классы библиотеки, составляющие общее ядро, используются всеми языками. Отсюда единство интерфейса приложения, на каком бы языке оно не разрабатывалось, единство работы с коллекциями и другими контейнерами данных, единство связывания с различными хранилищами данных и прочая универсальность.

Важной частью библиотеки FCL являются классы, задающие примитивные типы — те типы, которые считаются встроенными в язык программирования. Типы каркаса покрывают все множество встроенных типов, встречающихся в языках программирования. Типы языка программирования проецируются на соответствующие типы каркаса. Тип, называемый в языке Visual Basic — Integer, а в языке C# - int, проецируется на один и тот же тип каркаса System. Int32. В каждом языке программирования, наряду с «родными» для языка названиями типов, разрешается пользоваться именами типов, принятыми в каркасе. Поэтому, по сути, все языки среды разработки могут пользоваться единой системой встроенных типов, что, конечно, способствует облегчению взаимодействия компонентов, написанных на разных языках.

Частью библиотеки стали не только простые встроенные типы, но и структурные типы, задающие организацию данных — строки, массивы, перечисления, структуры (записи). Это также способствует унификации и реальному сближению языков программирования.

Существенно расширился набор возможных архитектурных типов построения приложений. Помимо традиционных Windows- и консольных приложений, появилась возможность построения Web-приложений. Большое внимание уделяется возможности создания повторно используемых компонентов — разрешается строить библиотеки классов, библиотеки элементов управления и библиотеки Web-элементов управления. Популярным архитектурным типом являются Web-службы, ставшие сегодня благодаря открытому стандарту одним из основных видов повторно используемых компонентов. Для языков C#, J#, Visual Basic, поддерживаемых Microsoft, предлагается одинаковый набор из 12 архитектурных типов приложений. Несколько особняком стоит Visual С++, сохраняющий возможность работы не только с библиотекой FCL, но и с библиотеками MFC и ATL, и с построением соответствующих MFC и ATL-проектов. Компиляторы языков, поставляемых другими фирмами, создают проекты, которые удовлетворяют общим требованиям среды, сохраняя свою индивидуальность.

Число классов библиотеки FCL велико (несколько тысяч). Поэтому понадобился способ их структуризации. Логически классы с близкой функциональностью объединяются в группы, называемые пространством имен (Namespace). Для динамического компонента CLR физической единицей, объединяющей классы и другие ресурсы, является сборка (assembly).

Основным пространством имен библиотеки FCL является пространство System, содержащее как классы, так и другие вложенные пространства имен. Так, уже упоминавшийся примитивный тип Int32 непосредственно вложен в пространство имен System и его полное имя, включающее имя пространства — System. Int32.

В пространство System вложен целый ряд других пространств имен. Например, в пространстве System. Collections находятся классы и интерфейсы, поддерживающие работу с коллекциями объектов — списками, очередями, словарями. В пространство System. Collections, в свою очередь, вложено пространство имен Specialized, содержащие классы со специализацией, например, коллекции, элементами которых являются только строки. Пространство System. Windows. Forms содержит классы, используемые при создании Windows-приложений. Класс Form из этого пространства задает форму — окно, заполняемое элементами управления, графикой, обеспечивающее интерактивное взаимодействие с пользователем [21].

Среда CLR управляет памятью, выполнением потоков, выполнением кода, проверкой безопасности кода, компиляцией и другими системными службами. Эти средства являются внутренними для управляемого кода, который выполняется в среде CLR.

Среда выполнения обеспечивает управление доступом для кода. Например, пользователи могут доверить исполняемому приложению, внедренному в веб-страницу, воспроизведение анимации на экране или звукозаписи, не позволяя ему при этом получить доступ к личным данным, файловой системе или сети. Таким образом, средства безопасности CLR предоставляют подлинному развернутому в Интернете программному обеспечению исключительно богатые функции.

Управляемая среда выполнения исключает многие часто возникающие проблемы с программным обеспечением. Например, среда выполнения автоматически управляет размещением объектов и ссылками на объекты, освобождая их, когда они больше не используются. Автоматическое управление памятью исключает две наиболее часто возникающие ошибки приложений: утечки памяти и недействительные ссылки на память.

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

И наконец, среда выполнения может размещаться в высокопроизводительных серверных приложениях, таких как Microsoft® SQL Server™ и Internet Information Services (IIS). Такая инфраструктура позволяет использовать управляемый код для написания собственной логики программ, пользуясь при этом высочайшей производительностью лучших производственных серверов, которые поддерживают размещение среды выполнения [22].

3.4.2 Выбор языка программирования

Для реализации ПО был выбран язык программирования C#. Разработанное П О взаимодействует со средой Microsoft Robotics Developer Studio. Написание сервисов для платформы MSRS возможно только с помощью языка C#.

Из-за того, что платформа. NET так радикально отличается от предыдущих технологий, Microsoft разработала специально под нее новый язык программирования C#. В него входит много полезных особенностей — простота, объектная ориентированность, типовая защищенность, «сборка мусора», поддержка совместимости версий и многое другое. Данные возможности позволяют быстро и легко разрабатывать приложения, особенно COM приложения и Web сервисы. При создании C#, его авторы учитывали достижения многих других языков программирования: C++, C, Java, SmallTalk, Delphi, Visual Basic и т. д. По причине того, что C# разрабатывался с чистого листа, у его авторов была возможность оставить в прошлом все неудобные и неприятные особенности любого из предшествующих ему языков. В результате получился простой, удобный и современный язык, по мощности не уступающий С++, но существенно повышающий продуктивность разработок.

Ввиду очень удобного объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов — от высокоуровневой бизнес логики до системных приложений, использующих низкоуровневый код. Также следует отметить, что C# является и Web ориентированным — используя простые встроенные конструкции языка разрабатываемы компоненты могут быть легко превращены в Web сервисы, к которым можно будет обращаться из Internet посредством любого языка на любой операционной системе. Дополнительные возможности и преимущества перед другими языками приносит в C# использование передовых Web технологий, таких как: XML (Extensible Markup Language) и SOAP (Simple Object Access Protocol). Среда разработки Web сервисов позволяет программисту смотреть на существующие сегодня Web приложения, как на родные C# объекты, что дает возможность разработчикам соотнести имеющиеся Web сервисы с их познаниями в объектно-ориентированном программировании [23].

Ниже приведен частичный перечень базовых функциональных возможностей языка C#, которые присутствуют во всех его версиях:

— Не требует никаких указателей;

— Автоматическое управление памятью посредством сборки мусора;

— Формальные синтаксические конструкции для классов, интерфейсов, структур, перечислений и делегатов;

— Аналогичная С++ возможность перегружать операции для пользовательских типов, но без лишних сложностей;

— Поддержка программирования на базе атрибутов. Это направление в технологиях разработки позволяет снабжать типы и их членов аннотациями и тем самым еще больше уточнять их поведение.

С выходом версии. NET 2.0 язык программирования C# был обновлен так, чтобы он мог поддерживать все новые возможности. Наиболее заметные добавления перечислены ниже:

— Возможность создания обобщенных типов и обобщенных членов;

— Поддержка для анонимных методов, которые позволяют предоставить встраиваемую функцию везде, где требуется тип делегата;

— Многочисленные упрощения в модели «делегат-событие»;

— Возможность определения одного типа в нескольких файлах кода с помощью ключевого слова partial.

В NET 3.5 язык программирования C# был оснащен еще большим количеством дополнительных функциональных возможностей, наиболее важные из которых перечислены ниже:

— Поддержка запросов LINQ;

— Возможность расширять функциональные возможности существующего типа с помощью методов расширения;

— Возможность использовать ламбда-операцию;

— Новый синтаксис для инициализации объектов [24].

3.4.3 Выбор СУБД

Выбор системы управления баз данных (СУБД) представляет собой сложную многопараметрическую задачу и является одним из важных этапов при разработке программного обеспечения. На сегодняшний день для построения информационных систем применяются различные СУБД, различающиеся как своими возможностями, так и требованиями к вычислительным ресурсам. При выборе системы управления баз данных необходимо выбрать базу данных, которая в наибольшей степени соответствуют предъявляемым к информационной системе требованиям.

При выборе СУБД необходимо обратить внимание на следующие показатели:

— Производительность и масштабируемость;

— Максимальное количество пользователей, одновременно обращающихся к БД;

— Серверная операционная система;

— Надежность;

— Производительность труда разработчиков.

Сравнительная характеристика наиболее распространенных СУБД представлена в сводной таблице «Сравнительная характеристика СУБД».

Таблица 2. Сравнительная характеристика СУБД

Access

MS SQL

MySQL

Oracle

Поддержка многопользовательского подключения

нет

да

да

да

Скорость работы

низкая

высокая

высокая

высокая

Механизмы доступа к данным

OLE/ADO DB, ODBC

ODBC, OLE DB/ADO, ADO. NET, LINQ to SQL

ODBC, OLE DB/ADO, ADO. NET, LINQ to SQL

ODBC, JDBC и ADO/OLE DB

Стоимость администрирования

Низкая

Приемлемая

Приемлемая

Высокая

Требования к аппаратной платформе

Низкие

Приемлемые

Приемлемые

Высокие

Из сравнительной таблицы видно, что такие СУБД как Microsoft SQL Server 2008 и MySQL отвечают всем необходимым требованиям, а именно:

— Поддержка многопользовательского подключения;

— Высокая скорость работы;

— Низка трудоемкость поддержания работоспособности СУБД;

— Поддержка использования технологии LINQ To SQL;

— Высокая надежность хранения данных.

Выбор сделан в пользу MS SQL Server 2008, так как Microsoft SQL Server 2008 превосходит MySQL как платформу данных во всех существенных областях. Он обеспечивает доступ к обширным ресурсам, ведущую в отрасли производительность и масштабируемость корпоративного класса, высочайший уровень безопасности, высочайший уровень доступности, комплексную платформу бизнес-аналитики (BI) — и все при довольно низкой совокупной стоимости владения (TCO) [25].

3.4.4 Microsoft SQL Server 2008

Microsoft SQL Server — система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов — Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка [26].

Система SQL Server 2008 отталкивается от концепции платформы данных Майкрософт: она упрощает управление любыми данными в любом месте и в любой момент времени. Она позволяет хранить в базах данных информацию, полученную из структурированных, полуструктурированных и неструктурированных источников, таких как изображения и музыка. В SQL Server 2008 имеется большой набор интегрированных служб, расширяющих возможности использования данных: вы можете составлять запросы, выполнять поиск, проводить синхронизацию, делать отчеты, анализировать данные. Все данные хранятся на основных серверах, входящих в состав центра обработки данных. К ним осуществляется доступ с настольных компьютеров и мобильных устройств. Таким образом, вы полностью контролируете данные независимо от того, где вы их сохранили.

Система SQL Server 2008 позволяет обращаться к данным из любого приложения, разработанного с применением технологий Microsoft. NET и Visual Studio, а также в пределах сервисно-ориентированной архитектуры и бизнес-процессов — через Microsoft BizTalk Server. Сотрудники, отвечающие за сбор и анализ информации, могут работать с данными, не покидая привычных приложений, которыми они пользуются каждый день, например приложений выпуска 2007 системы Microsoft Office. SQL Server 2008 позволяет создать надежную, производительную, интеллектуальную платформу, отвечающую всем требованиям по работе с данными [27].

3.4.5 Microsoft Silverlight

Microsoft Silverlight — это программная платформа, включающая в себя плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA (Rich Internet application) [28].

Silverlight позволяет создавать насыщенные, визуально привлекательные веб-страницы, работающие в различных обозревателях, устройствах и настольных операционных системах (например Apple Macintosh). Ключом к возможностям Silverlight, как и ко всей технологии представления WPF (Windows Presentation Foundation) платформы Microsoft. NET Framework 3. 0, является XAML (eXtensible Application Markup Language, расширяемый язык разметки приложений).

Технология ASP. NET стала вехой на пути разработчика к быстрому созданию качественных веб-приложений с помощью парадигмы разработки на стороне сервера и оптимально подобранных инструментов серии Visual Studio. Самым большим барьером для веб-приложений стал интерфейс пользователя, где технические ограничения помешали предоставить то же удобство, что и клиентские приложения для ПК, работающие с локальными данными.

Объект XMLHttpRequest, выпущенный Майкрософт в составе Internet Explorer 5 в 2000 г., открыл дорогу для технологии Asynchronous JavaScript и XML (AJAX), позволившей веб-приложениям более динамично реагировать на действия пользователя, обновляя небольшие части веб-страницы и не требуя ее полной перезагрузки. Инновационные решения, построенные на основе AJAX, например карты Windows Live Local, приблизили веб-приложения к уровню удобства обычных клиентских программ.

Технология Silverlight — следующий шаг на пути расширения возможностей, которые разработчики и дизайнеры могут предоставить потребителям. Она дает дизайнерам возможность выразить свои творческие идеи и сохранить результат в том формате, который можно сразу же публиковать в Интернете. Дизайнеры могли и раньше проектировать веб-страницы, предоставляющие богатые возможности пользователю, но программисты, реализующие их замыслы, были вынуждены считаться с ограничениями веб-платформ. В рамках модели Silverlight любое созданное дизайнерами решение сохраняется в виде XAML. Этот XAML-документ впоследствии автоматически встраивается в веб-страницу с помощью среды выполнения Silverlight. В результате дизайнер и программист могут работать над конечным результатом более слаженно, чем когда-либо ранее.

Поскольку технически XAML — это XML, он представляет собой простой текст, а значит, не вызывает конфликтов с брандмауэрами, легко доступен для просмотра, и при этом описывает различное содержимое. Некоторые технологии — Java, ActiveX, Flash — в настоящее время широко применяются в дополнение к языкам DHTML, CSS и JavaScript и расширяют содержимое веб-страниц, но их роднит один недостаток — данные передаются в обозреватель в двоичном виде. Такую информацию сложно проверить на предмет безопасности, не говоря уже о сложности ее обновления — для реализации любых изменений требуется переустановка всего приложения, что неудобно для пользователя и зачастую приводит к торможению веб-страниц. При изменении содержимого страницы средствами Silverlight новый XAML-файл создается на стороне сервера. При следующем просмотре страницы происходит загрузка этого файла, а значит, потребность в переустановке отпадает.

Сердцем технологии Silverlight является модуль расширения для обозревателя, который обрабатывает XAML и отображает итоговое изображение в поле обозревателя. Загрузочный файл невелик (менее 2 MБ), и может быть установлен при посещении пользователем узла с содержимым, создававшимся с использованием Silverlight. Модуль предоставляет разработчикам доступ к функциям XAML-страницы на языке JavaScript, таким образом, становится возможным взаимодействие с содержимым на уровне страницы и разработчик может, например, создать обработчики событий или управлять содержимым XAML-страницы с помощью JavaScript-кода [29].

3.4.6 Visual Programming Language (VPL)

Программирование роботов в среде Microsoft Robotics Developer Studio осуществляется с помощью визуального языка программирования Visual Programming Language (VPL).

Microsoft Visual Programming Language — язык визуального и поточного программирования, разработанный корпорацией Microsoft для платформы Microsoft Robotics Developer Studio. Microsoft Visual Programming Language выделяется среди прочих языков программирования Microsoft, таких как например, Visual Basic и C#, тем, что он единственный является настоящим языком визуального программирования.

VPL основан на программной модели потоков данных, которая хорошо подходит для программирования роботов и широко использует распределенные и параллельные вычисления. VPL состоит из блоков, которые называют Activities (Активность). Потоки данных состоят из последовательно соединенных Activities. Блоки Activities могут обозначать различные вещи, например, содержать элементы контроля потоков данных, функции, созданный пользователем код и т. д. Написание программы в VPL заключается в соединении Activities. В VPL данные проходят через соединения Activities. На рисунке 3.5 приведен пример потока данных.

Рис. 3.5. Пример потока данных в VPL

Блоки Activities соединяются через кружки и треугольники. Они называются соединительными разъемами (connection pins). Разъемы слева — входные, справа — выходные. Когда подключается входной разъем, то необходимо выбрать действие / оператор к которому происходит обращение. Когда Activities получает входное сообщение, оно активируется, обрабатывает входные данные и запускает код.

У Activities два выходных разъема. Треугольный разъем предназначен для вывода результатов. Выводимый результат дается как ответ на специальный запрос (наподобие вызова функции и возвращения значения или отправки письма и получения ответа на него). Круглый разъем предназначен для отправки сообщений. Сообщения обычно отправляются в результате изменения внутреннего состояния или каких-то событий. Activities также позволяют отправлять сообщения в ответ на входящие сообщения. Важно отметить, что вывод результата происходит один раз, а сообщения отправляются неоднократно [30].

Для составления программы в VPL используется два типа блоков Activities: Basic Activities и Services. Блоки Basic Activities служат для организации алгоритмической части программы. Это блоки циклов, ветвления, объединения, коллекций и другие. Блоки Services — это DSS сервисы, они позволяют взаимодействовать с аппаратной частью робота. Также можно писать свои собственные блоки DSS Services.

ПоказатьСвернуть
Заполнить форму текущей работой