Разработка программного обеспечения проведения соревнований по программированию компьютерных игровых стратегий в среде MS Robotics Studio - Дипломная работа
Пиковые нагрузки во время проведения турниров. Анализ существующих систем проведения соревнований роботов: Java Robocode, Pascal Robotwar, Snake Battle, Microsoft Robotics Developer Studio. Соревнования по программированию компьютерных игровых стратегий.
При низкой оригинальности работы "Разработка программного обеспечения проведения соревнований по программированию компьютерных игровых стратегий в среде MS Robotics Studio", Вы можете повысить уникальность этой работы до 80-100%
В результате выполнения дипломной работы было разработано программное обеспечение «Проведение соревнований по программированию компьютерных игровых стратегий». Для создания ПО «Проведение соревнований по программированию компьютерных игровых стратегий» было применено современное средство разработки Visual Studio 2010 Ultimate, язык программирования. В качестве платформы использовалась система управления базами данных MS SQL Server 2008, предоставляющая возможности многопользовательского подключения, гибкого администрирования и жесткого контроля за состоянием системы.
Введение
В настоящее время все большую популярность в мире приобретают соревнования роботов. При этом подобные мероприятия - не что иное, как путь к повышению качества образования студентов, продвижению робототехники, а также к привлечению внимания талантливой молодежи к сфере высоких технологий.
Интересный способ привлечения юных дарований к науке можно увидеть во многих ВУЗАХ мира. Например, преподаватель Университета Мэсси Гураб Сэн Губта сделал небольших роботов-футболистов для обучения программированию своих студентов четверокурсников. Комбинация электроники и программного обеспечения - это как раз то, что нужно. Во многих американских университетах соревнования роботов уже поставлены на поток [1].
В последние годы соревнования среди роботов стали популярными и в России. Открытый робототехнический турнир на Кубок Политехнического музея является ежегодными соревнованиями роботов, проводящимися в рамках научно-познавательной программы «Каникулы роботов в Политехническом». Турнир включает соревнования различной степени сложности, в которых могут принимать участие как простейшие узконаправленные конструкции, созданные начинающими, так и комплексные робототехнические устройства со сложной программной частью[2]. В 2011 году состоялся III Всероссийский робототехнический фестиваль. Победителем соревнований по профессиональной робототехнике по направлению «Промышленная автоматизация» стала команда из Саратова «MOBROB», которая будет представлять Россию на престижных международных соревнованиях по робототехнике: Азиатско-Тихоокеанского региона ABU ROBOCON-2011 в Таиланде [3].
Наиболее популярными роботами для программирования являются роботы LEGO Mindstorms NXT. LEGO Mindstorms - это особая серия конструкторов, обладающих практически неограниченными возможностями. С помощью программного блока и различных датчиков можно создать робота, способного выполнять любые действия. Робот lego программируется подключенным по USB к компьютеру [4]. Цена таких роботов даже в базовой комплектации превышает 10000 рублей, что делает их недоступными большинству энтузиастов, желающих попробовать себя в области программирования роботов.
Альтернативным способом программирования роботов является программирования виртуальной модели, точной копии настоящего робота, в симуляционной среде, что позволяет сделать платформа 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 представлена в сводной таблице «Сравнительная характеристика существующих аналогов» Знаком « » в таблице отмечено присутствие характеристики, знаком «-» - отсутствие.
В результате изучения предметной области и поиска аналогичных проектов было выявлено, что существуют несколько систем для проведения соревнований по компьютерным игровым стратегиям. У каждой системы есть как свои преимущества, так и свои недостатки.
Из сравнительной таблицы видно, что такие системы как 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 и т.д. П
Вывод
В результате выполнения дипломной работы было разработано программное обеспечение «Проведение соревнований по программированию компьютерных игровых стратегий». Реализованное программное обеспечение отвечает всем предъявленным требованиям по функциональности, надежности и безопасности.
Для создания ПО «Проведение соревнований по программированию компьютерных игровых стратегий» было применено современное средство разработки Visual Studio 2010 Ultimate, язык программирования. Net C#, позволяющее оформлять приложения соответственно всем парадигмам объектно-ориентированного программирования. В качестве платформы использовалась система управления базами данных MS SQL Server 2008, предоставляющая возможности многопользовательского подключения, гибкого администрирования и жесткого контроля за состоянием системы. Для программирования роботов использовалась платформа Microsoft Robotics Developer Studio. Созданное ПО представляет из себя клиент-серверную модель.
В ходе выполнения работы были применены знания по исследованию предметной области, проектированию баз данных, концептуальному моделированию и разработке программного обеспечения.
Разработанное программное обеспечение может быть использовано для проведения студенческих соревнований по программированию компьютерных игровых стратегий.
Список литературы
1. Современные тренажерные технологии. [Электронный ресурс]. - Режим доступа: http://www.traintech.ru/ru/public/index.php? path=robots03.
2. Открытый робототехнический турнир на Кубок Политехнического музея. [Электронноый ресурс]. - Режим доступа: http://myrobot.ru/sport/index.php? n=Tournament. Info.
3. Всероссийский робототехнический фестиваль. [Электронный ресурс]. - Режим доступа: http://robosport.ru/info/maininfo/maininfo_119.html.
4. LEGO Mindstorms. [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/LEGO_Mindstorms.
5. Sara Morgan Programming Microsoft Robotics Studio. - Microsoft Press, 2008. - 5-9 c.
6. Robocode. [Электронный ресурс]. - Режим доступа: http://habrahabr.ru/blogs/subconsciousness/59784/.
7. Еще раз о Robocode. [Электронный ресурс]. - Режим доступа: http://is.ifmo.ru/aboutus/5/.
8. Объектно-ориентированное программирование с явным выделением состояний. [Электронный ресурс]. - Режим доступа: http://is.ifmo.ru/download/robocode2.pdf.
10. Snake Battle. [Электронный ресурс]. - Режим доступа: http://almanzor.chat.ru/snake/snake.html.
11. Змеиный бой (Snake Battle). [Электронный ресурс]. - Режим доступа: http://ioesoftware.narod.ru/svodchtire.htm.
12. Microsoft Robotics. [Электронный ресурс]. - Режим доступа: http://robotics.ivolga.tv/.
13. Моделирование мира с помощью Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: http://msdn.microsoft.com/ru-ru/magazine/cc546547.aspx.
14. Автоматизация в доме с помощью Microsoft Robotics Developer Studio 2008. [Электронный ресурс]. - Режим доступа: http://blogs.msdn.com/b/ rucoding4fun/archive/2008/05/23/microsoft-robotics-developer-studio-2008.aspx.
15. Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: http://ru.vlab.wikia.com/wiki/Microsoft_Robotics_Studio.
16. Visual Simulation Environment. [Электронный ресурс]. - Режим доступа: http://cadprofi.ru/wiki/index.php/Visual_Simulation_Environment.
17. Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: http://insiderobot.blogspot.com/2008/01/microsoft-robotics-studio.html.
18. NET Framework. [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/.NET_Framework.
19. Эндрю Троелсен Язык программирования C# 2008 и платформа.NET3.5. - СПБ: Питер, 2010 - 48 с.
20. Рихтер Дж. CLR via C# Программирование на платфоркме. Net Framework 2.0 на языке C#. - СПБ: Питер, 2007 - 15 с.
22. Общие сведения об основных понятиях платформы.NET Framework. [Электронный ресурс]. - Режим доступа: http://msdn.microsoft.com/library/zw4w595w.aspx.
23. Введение в C#. [Электронный ресурс]. - Режим доступа: http://www.c-help.net/3.html.
24. Эндрю Троелсен Язык программирования C# 2008 и платформа.NET3.5. - СПБ: Питер, 2010 - 50-51 с.
25. Сравнение SQL Server с MYSQL. - [Электронный ресурс]. - Режим доступа: http://www.microsoft.com/sqlserver/2008/ru /compare-mysql.aspx.
26. Microsoft SQL Server. - [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Microsoft_SQL_Server.
27. Обзор Microsoft SQL Server. - [Электронный ресурс]. - Режим доступа: http://www.microsoft.com/sqlserver/2008/ru/ru/overview.aspx.
28. Silverlight. - [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Silverlight.
29. Знакомство с Silverlight. - [Электронный ресурс]. - Режим доступа: http://msdn.microsoft.com/ru-ru/library/bb404300.aspx.
30. Johns K., Taylor T. Professional Microsoft Robotics Studio. - 2008. - W. 471-476. соревнование компьютерный турнир стратегия
Размещено на
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы