Федеральное агентство по образованию
РЕКЛАМНО-ТЕХНИЧЕСКОЕ ОПИСАНИЕ
Каркас для создания программных компонентов поддержки занятий лингвистической направленности в игровой форме
.02068999.00350-01 99 01
Листов 11
Разработчик:
_________/ /
19.01.2010 <пусто>
1. Функциональное назначение разработки, область применения, ее ограничения
Концепция
Главным пользователем каркаса является разработчик программного обеспечения, который использует каркас для достижения своих целей в процессе устранения дискомфорта потребителей будующего программного продукта, приведшего к необходимости создания последнего.
Разработанный каркас позволяет ускорить процесс разработки компонентов программного продукта за счёт того, что в нём уже заложена программа управления всеми необходимыми операциями происходящими в игровом процессе, в нём заложена парадигма потока управления. Разработчику, использующему каркас необходимо лишь уточнить в нём некоторые детали и заложить пару стратегий специфичных для решаемой задачи операций.
Пользователем разработанного на основе каркаса компонента также является разработчик. Можно назвать такой компонент детализированным каркасом, подчеркнув тем самым роль последнего. А вот пользователем продукта, построенного на основе этого компонента или компонентов будет уже не разработчик, но конечный пользователь, для которого создавался продукт.
Далее приводится описание архитектуры каркаса.
Взаимодействие с пользователем
Назовём внешним игровым субъектом каркаса в его детализированном состоянии, т. е. в состоянии, когда каркас подведён под нужды соответствующей задачи, объект Gamer, представлящего собой клиента для системы, реализуемой посредством компонента. Объект Gamer обращается к подсистеме, главным образом, через вызов операций StartGame() и MakeGameStep(), что соответственно указывает системе на необходимость начать игру и сделать игровой ход (смотри рис. 1).

Рисунок 1. "Диаграмма вариантов использования детализированного каркаса"
Структура
Структура разработанного каркаса представленна на рис. 2 и рис. 3.
Диаграмма классов представленна двумя уровнями. Это:
1. Уровень основных элементов,
2. Уровень управления процессом.
Элементы уровня основных элементов:
1. PlayerRole. Представляет собой тип игрока, роль которого может играть посредством системы, объект типа Gamer. Связан с CompetitorRole и UmpireRole через атрибуты Competitor и Umpire соответственно.
2. WordPuzzle. Тип, представляющий собой лингвистическую задачу, решаемую во время занятий в игровой форме. Атрибуты (в каркасе представлены в виде строковых переменных определённого формата):
· CompulsoryCondition - условие, которое необходимо соблюсти, чтоды решить задачу.
· InitialCondition – условие, с которого следует начать решение задачи.
· Secret – задача, которую нужно решить.
3. CompetitorRole. Тип роли, исполняемой вычислительной машиной, представляет собой соперника для объекта типа PlayerRole. Связан с PlayerRole и UmpireRole посредством атрибутов Player и Competitor соответственно. Связан с WordPuzzle посредством атрибута Puzzle (отсюда видно, что лингвистическая задача находится в его ведомости).
4. UmpireRole. Так же представляет собой тип роли, исполняемой вычислительной машиной и представляет собой судью игрового процесса. Связан с PlayerRole и CompetitorRole посредством атрибутов Player и Competitor соответственно. Остальные атрибуты:
· Statistics – статистика игрового процесса. Объект типа StepsStatistics.
· PuzzleState – состояние головоломки. Объект типа GamePuzzleState.
5. StepsStatistics. Тип статистики событий игрового процесса. Атрибуты:
· Questions. Объект типа PlayerQuestionsCatcher, фиксирующий вопросы (игровые ходы), сделанные игроком.
· States. Объект типа GamePuzzleStatesCatcher, фиксирующий состояния решения лингвистической задачи.
· TimeStamps. Объект типа TimeCatcher, фиксирующий время осуществления игровых ходов.
6. GamePuzzleState. Перечисление, состоящее из следующих элементов:
· NotCompleted – означает, что лингвистическая задача ещё не решена.
· AlmostCompleted – задача почти решена.
· Completed – задача решена.

Рисунок 2. "Диаграмма классов каркаса уровня основных элементов"
Элементы уровня управления процессом:
1. GameCompetent. Тип объекта, представляющего сущность, знакомую с элементами процесса и принципами его организации. Связан с элементом типа GameRules посредством атрибута Rules. Связь с элементами типов Alphabet, KnowledgeHolder, LanguageOfParticipants осуществляется посредством атрибутов CharacterSet, HolderOfKnowledge и Language соответственно. Остальные атрибуты:
· Competitor. Объект типа CompetitorRole.
· Player. Объект типа PlayerRole.
· Umpire. Объект типа UmpireRole.
2. GameManager. Наследник элемента GameCompetent, обладающий всей его функциональностью и присущими ему атрибутами. Связан с элементом GameProcessState посредством приватного атрибута m_GameState. Содержит в себе описание события QuestionProcessed, на которое объект типа Gamer должен подписаться посредством стандартного делегата типа EventHandler, с передачей ему в качестве параметра аргументы типа QuestionProcessedEventArgs. Этот тип (QuestionProcessedEventArgs), наследованный от стандартного типа EventArgs, обладает такими атрибутами, как Answer (ответ, который следует передать объекту типа Gamer) и State (объект типа GamePuzzleState).
3. GameRules. Тип для описания правил игры. Содержит атрибут AllowRepeatQuestions, уточняющий, дозволено ли игроку повторять вопросы (делать игровые ходы).
4. KnowledgeHolder. Тип, описывающий объекты, способные управлять базой знаний. Имеет атрибут Vocabulary, представляющий собой список строковых элементов, и связан с элементом LanguageOfParticipants посредством приватного атрибута m_Language.
5. Alphabet. Основной атрибут – Characters. Представляет собой алфавит для выбранного языка.
6. GameProcessState. Описывает состояние игрового процесса. Перечисление, включающее в свой состав следующие элементы:
· Active – процесс в активном состоянии.
· Inactive – не в активном состоянии.
7. QuestionVerificationResult. Описывает результат проверки игрового хода. Перечисление, включающее в свой состав такие элементы, как:
· Correct – когда сделан корректный с точки зрения правил игры ход.
· Incorrect – когда сделан некорректный ход.
· Repeat – когда имело место повторение игрового хода.
8. LanguageOfParticipants. Содержит перечисление доступных языков, в данной версии каркаса состоит из следующих элементов:
· English
· Russian

Рисунок 3. "Диаграмма классов каркаса уровня управления процессом"
Поток управления
Детализация (или специфицирование под конкретный случай) каркаса происходит следующим образом. Создаётся новый тип (класс в терминах объектно-ориентированной парадигмы), производится операция наследования этим типом структуры и поведения, присущих классу GameManager. Разрабатываются стратегия проверки игрового хода, сделанного игроком (по отношению к системе представленном объектом типа Gamer) и стратегия ответа или иначе реакция на ход игрока. Помимо этого необходимо создать лингвистическую задачу и присвоить её представление свойству Puzzle атрибута Competitor, доступного благодаря наследованию от GameManager. Диаграмма последовательностей детализированного каркаса представлена на рис. 4.

Рисунок 4. "Диаграмма последовательностей детализации игрового каркаса"
Последовательность взаимодействия с детализированным каркасом (смотри рис. 5 и 6) предполагает следующие действия:
1. Создание экземпляра класса (обязанность объекта типа Gamer), наследованного от GameManager, который создаёт экземпляры следующих типов:
· PlayerRole. Имя создаваемого экземпляра – Player.
· CompetitorRole. Создаваемый экземпляр – Competitor.
· UmpireRole. Создаваемый экземпляр – Umpire.
· GameRules. Создаваемый экземпляр – Rules.
· Alphabet. Создаваемый экземпляр – CharacterSet.
· KnowledgeHolder. Создаваемый экземпляр – HolderOfKnowledge.
2. Запуск игры. Происходит посредством выполнения метода StartGame() на объекте типа GameManager, который в свою очередь делегирует эту операцию объекту Umpire типа UmpireRole. Объект Umpire в это время фиксирует начало запуска игры и производит соединение объектов Umpire, Competitor и Player друг с другом.
3. Осуществление игрового хода. Опять же операция проводится на объекте типа GameManager, который выполняет операцию MakeStep() на объекте типа PlayerRole, приводящую к следующей последовательности действий:
· Операция GetAnswer() на объекте типа CompetitorRole (Competitor).
· Операция SetPuzzleState() на объекте типа UmpireRole (Umpire).
· Операция UpdateStatistics() на том же объекте.
После этого происходит событие QuestionProcessed(), передающее объекту типа Gamer информацию о проделанном игровом ходе.

Рисунок 5. "Диаграмма сотрудничества объектов каркаса во время операции "Начать игру" "

Рисунок 6. "Диаграмма сотрудничества объектов каркаса во время операции "Сделать игровой ход"
2. Используемые программные средства
Для эксплуатации данного программного продукта особых требований к компьютерной технике не предъявляется. Операционная система Windows XP и выше, свободное пространство на жестком диске около 1 МБ, оперативная память от 512 МБ, наличие установленного пакета Microsoft Framework 3.0 (для ОС версий ниже Windows Vista).
3. Специальные условия применения и требования организационного, технического и технологического характера
Не имеются
4. Условия передачи документации на разработку или ее продажу
Передача материалов исследования для их использования, в каких либо
целях, происходит с письменного согласия автора.


