− Сформулировать общие требования к функциональному поведению проектируемой системы.
− Разработать исходную концептуальную модель системы для ее последующей детализации в форме логических и физических моделей.
− Подготовить исходную документацию для взаимодействия разработчиков системы с ее заказчиками и пользователями.
Актер (actor) - согласованное множество ролей, которые играют внешние сущности по отношению к вариантам использования при взаимодействии с ними (это может быть любой объект, субъект или система, взаимодействующая с моделируемой бизнес-системой извне, т.е. человек, техническое устройство, программа и т.п.) .
Вариант использования - внешняя спецификация последовательности действий, которые система или другая сущность могут выполнять в процессе взаимодействия с актерами (он определяет набор действий, совершаемый системой при диалоге с актером).
Цель спецификации варианта использования заключается в том, чтобы зафиксировать некоторый аспект или фрагмент поведения проектируемой системы без указания особенностей реализации данной функциональности. В этом смысле каждый вариант использования соответствует отдельному сервису, который предоставляет моделируемая система по запросу актера, т. е. определяет один из способов применения системы. Сервис, который инициализируется по запросу актера, должен представлять собой законченную последовательность действий. Это означает, что после того как система закончит обработку запроса актера, она должна возвратиться в исходное состояние, в котором снова готова к выполнению следующих запросов.
На рисунке 15 приведена диаграмма вариантов использования для разрабатываемой системы (она соответствует функциональной спецификации, приведенной в таблице 1).
В возможности пользователя входит:
создать лабиринт. Чтобы создать лабиринт, пользователь должен задать соответствующие параметры, такие как ширина, высота, тема оформления лабиринта. Также, необходимым условием является расставление входа и выхода (автоматически или вручную);
найти путь. Пользователь может осуществить поиск пути из лабиринта в соответствии с выбранным алгоритмом;
сохранить лабиринт в файл;
загрузить лабиринт из файла;
просмотр справочной информации о системе и об авторах.
Сценарий - определенная последовательность действий, которая описывает действия актеров и поведение моделируемой системы в форме обычного текста.
В контексте языка UML сценарий используется для дополнительной иллюстрации взаимодействия актеров и вариантов использования.
Рассмотрим сценарии варианта использования «Установить параметры лабиринта» и «Поиск пути» для автоматизированной системы построения лабиринта и поиска выхода из него.
Вариант использования: Установить параметры лабиринта.
Краткое описание. Даёт возможность пользователю
задать параметры лабиринта, которые будут использованы при дальнейшей работе
программы.
Рисунок 15 - Диаграмма вариантов использования
системы
Актант. Пользователь.
Предусловия. Компьютер пользователя включён, приложение «Лабиринт» запущено. На экране - окно приложения с блоками «Параметры лабиринта», «Поиск пути» и полем для лабиринта.
Основной поток событий.
В лабиринте находятся активный блок «тема» (лето, осень, зима, весна), поле «высота», поле «ширина», кнопка «создать шаблон», неактивные блоки «расстановка входа/выхода» и «поиск пути», кнопки «расставить», «сгенерировать», «искать путь». Пользователь выбирает тему, задает высоту и ширину и щелкает кнопку «Создать шаблон».
А1: Щёлкнута кнопка « ».
Система создает шаблон лабиринта и отображает его на поле, блок «расстановка входа/выхода» и кнопка «расставить» становятся активными.
Пользователь выбирает способ расстановки входа и выхода «Автоматически» и щелкает кнопку «Расставить».
А2: Пользователь расставляет вход и выход вручную.
Система определяет координаты входа и выхода и отображает их на поле (по периметру и не в углах). Кнопка «Сгенерировать» становится активной.
Пользователь щелкает кнопку «Сгенерировать».
Система генерирует лабиринт на поле. Вариант использования завершается успешно.
Альтернативы.
А1: Щёлкнута кнопка « ».
А1.1 Система закрывает окно приложения и выводит на экран главное окно операционной системы. Вариант использования завершается.
А2: Пользователь расставляет вход и выход вручную.
А 2.1 Пользователь устанавливает вход в лабиринт.
А 2.2 Пользователь устанавливает выход из лабиринта.
А 2.3 Система проверяет расстановку входа и выхода.
А 2.3.1 Вход и выход успешно расставлены. Осуществляется переход к п.5 основного потока событий.
А 2.3.2 Вход и выход расставлены неверно.
А 2.3.2.1 Система выводит сообщение о неверной расстановке и просит повторить попытку.
А 2.3.2.2 Осуществляется переход к п.3 основного потока событий.
Постусловия. При успешном завершении на экране - главная форма приложения с лабиринтом, сгенерированным в соответствии с заданными пользователем параметрами.
Вариант использования: Поиск пути
Краткое описание. Даёт возможность пользователю найти путь в лабиринте, сгенерированном пользователем или загруженном из файла.
Актант. Пользователь.
Предусловия. Компьютер пользователя включён, приложение «Лабиринт» запущено. На экране - окно приложения с блоками «Параметры лабиринта», «Поиск пути» и сгенерированным лабиринтом.
Основной поток событий.
В блоке «поиск пути» отображены доступные алгоритмы «Волновой» и «Одной руки». Пользователь выбирает один из алгоритмов и щелкает кнопку «Искать путь».
Система осуществляет поиск пути, и в соответствии с выбранным алгоритмом отображает его на лабиринте. Вариант использования завершается успешно.
Постусловия. При успешном завершении на экране -
главная форма приложения с лабиринтом, сгенерированным в соответствии с
заданными пользователем параметрами, на котором отображен путь, найденный в
соответствии с выбранным алгоритмом.
.4.3 Диаграмма состояний
Диаграмма состояний описывает процесс изменения состояний только одного класса, а точнее - одного экземпляра определенного класса, т. е. моделирует все возможные изменения в состоянии конкретного объекта. [2]
Главное предназначение этой диаграммы - описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение элемента модели в течение его жизненного цикла. Диаграмма состояний представляет динамическое поведение сущностей, на основе спецификации их реакции на восприятие некоторых конкретных событий.
На рисунке 16 представлена диаграмма состояний
системы, на которой изображены все возможные состояния и переходы. После
запуска приложения пользователь может либо загрузить лабиринт, либо перейти
непосредственно к созданию лабиринта. Для этого он должен задать параметры
лабиринта, после чего создать шаблон, расставить вход и выход и сгенерировать
лабиринт. После генерации пользователь может сохранить лабиринт либо продолжить
работу с ним и найти путь в нем. Вызов справочной информации доступен на любом
этапе работы программы.
Рисунок 16 - Диаграмма состояний системы
.4.4 Диаграмма деятельности
Диаграммы деятельности - это один из пяти видов диаграмм, применяемых в UML для моделирования динамических аспектов поведения системы. Диаграмма деятельности - это, по существу, блок-схема, которая показывает, как поток управления переходит от одной деятельности к другой. Как правило, они применяются, чтобы промоделировать последовательные (а иногда и параллельные) шаги вычислительного процесса. Диаграммы деятельности могут использоваться самостоятельно для визуализации, специфицирования, конструирования и документирования динамики совокупности объектов, но они пригодны также и для моделирования потока управления при выполнении некоторой операции.
На рисунке 17 представлена диаграмма
деятельности, соответствующая варианту использования «Установить параметры
лабиринта». Чтобы сгенерировать лабиринт, пользователь должен: выбрать тему
оформления, задать высоту и ширину лабиринта, выбрать способ расставления входа
и выхода (автоматически или вручную).
Рисунок 17 - Диаграмма деятельности для варианта
использования «Установить параметры лабиринта»
.4.5 Диаграмма последовательности
Диаграмма последовательности (sequence diagram) - диаграмма, на которой показаны взаимодействия объектов, упорядоченные по времени их проявления.
На диаграмме последовательности изображаются объекты, которые непосредственно участвуют во взаимодействии, при этом никакие статические связи с другими объектами не визуализируются. Для диаграммы последовательности ключевым моментом является именно динамика взаимодействия объектов во времени. При этом диаграмма последовательности имеет как бы два измерения. Одно - слева направо в виде вертикальных линий, каждая из которых изображает линию жизни отдельного объекта, участвующего во взаимодействии. Второе измерение диаграммы последовательности - вертикальная временная ось, направленная сверху вниз.
На рисунке 18 представлена диаграмма последовательности для варианта использования «Установить параметры лабиринта».
Пользователь задает параметры (тема оформления,
высота, ширина) на форме задания параметров лабиринта, после чего нажимает
кнопку «Создать шаблон». Этот шаблон создается в классе лабиринт и отображается
на поле для лабиринта. Затем происходит возврат на форму задания параметров,
где пользователь выбирает способ расстановки входа и выхода (автоматически или
вручную). Координаты входа/выхода передаются в класс лабиринт, после чего на
поле происходит отображение координат на поле. Далее пользователь нажимает
кнопку «Сгенерировать лабиринт», в классе происходит его создание.
Рисунок 18 - Диаграмма последовательности для
варианта использования «Установить параметры лабиринта»
.5 Выбор и обоснование комплекса
программных средств
.5.1 Выбор языка программирования и среды разработки
Для реализации проекта по созданию автоматизированной системы построения лабиринта и поиска выхода из него, языком программирования был выбран С#, среда разработки Visual Studio 2013.
Среда разработки Visual Studio, поставляемая вместе с .NET, предоставляет необходимый инструментарий для эффективного и быстрого создания приложений с графическим интерфейсом.
Появление технологии .NET повлекло за собой массовую реконструкцию некоторых языков программирования, стремящихся использовать те или иные возможности платформы, такие как C++ и Visual Basic. Microsoft решили предложить разработчикам альтернативу - язык, ориентированный специально .NET и создали C#. Сами разработчики языка описывают его, как простой, современный, объектно-ориентированный и безопасный язык программирования. Синтаксически C# напоминает C++ и Java, что позволило программистам за достаточно короткое время изучить тонкости нового языка.
Несмотря на то, что C# и .NET предназначены в первую очередь для веб-разработки, их также активно применяют для создания приложений, которые должны устанавливаться на машине конечного пользователя, где и будет выполняться вся обработка данных. Разработку таких приложений обеспечивает библиотека Windows Forms, позволяющая проектировать графический интерфейс. Система, описанная в данной работе, разработана именно с помощью библиотеки Windows Forms.
Обоснование выбора языка программирования
Язык программирования C# претендует на подлинную объектную ориентированность.
Язык программирования C# призван реализовать компонентно-ориентированный подход к программированию, который способствует меньшей машинно-архитектурной зависимости результирующего программного кода, большей гибкости, переносимости и легкости повторного использования программ.
Принципиально важным отличием от предшественников является изначальная ориентация на безопасность кода.
Расширенная поддержка событийно-ориентированного программирования.
Язык программирования C# является «родным» для
создания приложений в среде Microsoft .NET, поскольку наиболее тесно и
эффективно интегрирован с ней.
.5.2 Выбор операционной системы
Разрабатываемая программная система будет поддерживаться на операционных системах семейства Windows. К основным преимуществам Windows относят:
) Единый пользовательский интерфейс;
) Многозадачность;
) Стабильность работы;
) Удобство пользовательского интерфейса;
) Большое количество поддерживаемых приложений;
) Распространенность ОС.
3. Реализация системы
.1 Разработка и описание интерфейса
пользователя
В целях предоставления пользователю удобного пользования системой был разработан графический интерфейс, максимально простой и интуитивно понятный.
На рисунке 19 представлен вид главной формы
приложения.
Рисунок 19 - Главная форма приложения
На основной форме приложения существуют поля, необходимые для создания лабиринта. Пока не создан шаблон лабиринта, остальные пункты на панели пользователю недоступны. Для создания шаблона необходимо задать параметры лабиринта и щелкнуть по кнопке «Создать шаблон».
Для того, чтобы расставить вход/выход, необходимо выбрать соответствующий способ их расстановки и нажать кнопку «Расставить». После этого нужно нажать кнопку «Сгенерировать» для генерации лабиринта на поле справа.
После генерации лабиринта необходимо выбрать
алгоритм поиска пути в нем.
3.1.1 Разработка и описание пользовательского меню
Меню приложения «Файл» включает следующие пункты:
«Сохранить лабиринт»;
«Загрузить лабиринт»
Меню приложения «Справка» включает следующие пункты:
«Сведения о системе»;
«Информация о разработчиках».
При выборе пункта «Загрузить лабиринт» откроется диалоговое окно для загрузки существующих файлов с лабиринтом. Пункт меню «Сохранить лабиринт» недоступен, если никакой лабиринт еще не создан.
При выборе пункта меню «Сведения о системе»
откроется справка в формате html с кратким описанием программы. При выборе
пункта меню «Информация о разработчиках» на экран будет выведена справка о
разработчиках программы в формате rtf.
.1.2 Описание контрольного примера
Рассмотрим в качестве примера создание лабиринта размерами 21х21 клетку и поиск пути в нем с помощью алгоритма «правой руки».
Для создания шаблона необходимо задать данные размеры в соответствующих полях ширины и высоты, которые отмечены на рисунке 20, и нажать кнопку «Создать шаблон». На поле справа появляется сетка размерами 21х21 клетку, а поле вход/выход становится доступным.
После создания шаблона для того, чтобы перейти
непосредственно к генерации лабиринта, необходимо выбрать способ расстановки и
расставить на поле вход и выход из лабиринта.