Секрет древней игры го. Почему компьютер до сих пор не обыграл человека? Описание прецедентов

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

1. Анализ предметной области

1.1 Постановка задачи

1.2 Алгоритмическое представление правил игры

1.3 Спецификация требований

1.4 Модель вариантов использования

1.4.1 Построение диаграммы прецедентов

1.5 Обзор инструментов разработки

1.6 Анализ аналогов

1.7 Выводы по главе

2. Проектирование игры

2.1 Модель проектирования

2.1.1 Архитектура игры

2.2 Разработка графического интерфейса пользователя.

2.2.1 Структура интерфейса

2.2.2 Главное меню

2.2.3 Экран игры

2.3 Реализация интерфейса в среде Unity

2.3.1 Главное меню

2.3.2 Экран игры

2.6 Выводы по главе

3. Разработка

3.1 Перемещение карт

3.2 Игровое поле игрока

3.3 Реализация алгоритма поведения компьютера.

3.4 Выводы по главе

Заключение

Библиографический список

ПРИЛОЖЕНИЕ A. Свойства базовой версии игры «Эволюция».

ПРИЛОЖЕНИЕ Б. Алгоритмическое описание правил игры.

ПРИЛОЖЕНИЕ В. Исходный код алгоритма поведения компьютера.

Введение

За последние 20 лет наблюдаются стремительные тенденции в развитии рынка видеоигр. Начиная свой путь от игровых автоматов, данная сфера постепенно охватила почти все цифровые устройства, которыми ежедневно пользуется каждый из нас: компьютеры, планшеты и мобильные телефоны. Помимо этого, существует также рынок настольных игр, который имеет значительное количество фанатов и интересных проектов. Исследования данной области показали, что около 62% людей, увлекающихся играми, предпочитают играть на компьютере, мобильном телефоне или планшете, около 14% любят играть в настольные игры в компании друзей, остальные 24%, предпочитают и то и другое . Данная разница в показателях говорит о потере интереса к настольным играм, что в свою очередь обусловлено следующими факторами:

· большинство людей не могут поиграть в настольную игру из-за отсутствия времени, места или необходимой компании, так как почти все настольные игры предназначены для игры от 2х до 4х человек;

· нет возможности попрактиковаться в одиночку и найти для себя новые выигрышные стратегии;

· коробка с настольной игрой может занимать много места, а некоторые карточки или фишки могут испортиться или потеряться.

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

В рамках выпускной квалификационной работы рассматривается настольная игра «Эволюция» - это симулятор развития жизни на Земле, основанный на дарвиновском принципе естественного отбора. Каждый игрок развивает собственную популяцию живых существ, наделяя их разнообразными свойствами -- приспособлениями к условиям окружающей среды.

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

В настоящее время существует большое количество различных инструментов для разработки компьютерных или мобильных игр. У каждого из них есть свои особенности, свои плюсы и минусы. Наиболее предпочтительным для реализации игры «Эволюция» оказался движок Unity, по причине его бесплатного распространения, огромного сообщества и возможности создавать кроссплатформенные игры на высокоуровневом языке программирования C#.

Объектом данного исследования является настольная игра «Эволюция», предметом исследования - разработка компьютерной версии данной игры с использованием игрового движка Unity.

Целью работы является разработка компьютерной версии настольной игры «Эволюция» на игровом движке Unity.

Для достижения данной цели необходимо выполнить следующие задачи:

1. Изучить правила настольной игры «Эволюция» и на их основе определить функциональные требования и описать сценарий использования.

2. Спроектировать архитектуру разрабатываемой игры.

3. Разработать дизайн игровых объектов и графический интерфейс пользователя.

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

На этапе анализа используются такие методы исследования, как абстракция и декомпозиция для представления объекта в виде системы. Для описания взаимодействия всех элементов системы используются объектно-ориентированный анализ и проектирование.

1. Анализ предметной области

1.1 Постановка задачи

«Эволюция» -- это настольная игра, для компании от 2х до 4х человек, где каждый игрок развивает собственную популяцию живых существ, наделяя их разнообразными свойствами необходимыми для выживания. Свойства помогают животным в борьбе за пищевые ресурсы, запасы которых ограничены. Существа, которым не досталось пищи, погибают, а выжившие позволяют ввести в игру ещё больше животных и свойств. Победителем становится тот из соперников, чья популяция будет к концу игры самой развитой и многочисленной .

Животные и их свойства представлены в игре в виде карточек. Где с одной стороны изображен символ животного - ящерица, а с другой различные свойства, такие как: «Хищник», «Водоплавающее», «Симбиоз», «Норное» и т.д. Всего в базовой версии игры существует 19 различных свойств (см. Приложение 1). Каждая карта, лежащая на поле игрока символом животного вверх, является одним из его существ. Свойства подкладываются под животное, таким образом, что бы другим игрокам было видно какими свойствами оно обладает. На некоторых картах указано сразу два свойства: в таком случае игрок должен выбрать, каким из них он хочет наделить своё существо. Когда животное погибает от голода или становится съеденным другим животным со свойством «Хищник», оно вместе со всеми свойствами отправляется в сброс игрока.

Начало игры. Колода с картами перемешивается. Каждому участнику выдается по шесть карт. Партия длится несколько раундов, пока не закончатся карты в колоде. Каждый раунд состоит из четырех этапов:

? фаза развития;

? фаза определения кормовой базы;

? фаза питания;

? фаза вымирания и получения новых карт.

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

Фаза питания. Во время этого этапа игроки по очереди берут из кормовой базы одну фишку еды и используют на любое своё существо, которое ещё не накормлено. Для обычных животных необходима одна фишка еды красного цвета, чтобы оно считалось накормленными, но некоторые свойства увеличивают эту потребность. Также фишки еды можно получить, путем применения таких свойств, как «Хищник» или «Пиратство» в данном случае фишка дополнительной еды будет синего цвета. Накормленное животное не может получить новые фишки еды, кроме случая, когда на нем применяется свойство «Жирового запас», при действии данного свойства фишка еды красного цвета преобразуется в желтую фишку. Если все животные игрока накормлены и их «Жировой запас» заполнен, игрок больше не может брать фишки еды из кормовой базы или получать их в результате применения свойств. Однако если в кормовой базе остались фишки еды и у игрока еще есть ненакормленные животные или животные с незаполненным «Жировым запасом», он обязан брать фишки из кормовой базы. Когда все животные накормлены и их «Жировой запас» заполнен, либо закончилась кормовая база и игроки сыграли все свойства, которые хотели использовать в эту фазу хода - фаза питания завершается.

Рис. 1.1. Алгоритм игрового процесса.

Данная схема включает в себя следующие подпроцессы:

1. Инициализация. Содержит алгоритмы определения права первого хода и выдачи начального числа карт всем игрокам.

2. Фаза развития. Содержит алгоритм размещения карт на столе, в виде животных и их свойств.

3. Фаза определения кормовой базы. Содержит алгоритм определения количества фишек еды, которое будет доступно игрокам в «фазу питания».

4. Фаза питания. Содержит алгоритмы кормления и применения свойств животных.

5. Фаза вымирания и получения новых карт. Содержит алгоритмы перемещения ненакормленных животных в сброс, определения количества и выдачи новых карт.

6. Завершение игры. Данная схема содержит алгоритм подсчета очков и определения победителя.

Подробные схемы подпроцессов находятся в приложении Б. Алгоритмическое описание правил игры.

1.3 Спецификация требований

Разрабатываемая игра является полным аналогом настольной игры Эволюция, поэтому в первую очередь весь игровой процесс должен соответствовать и происходить по правилам оригинальной (настольной) игры.

Бизнес требования:

? игра против компьютера;

? выбор количества игроков.

Функциональные требования:

Требования, предъявляемые к системе, с точки зрения правил игры:

? выдавать карты;

? хранить актуальную информацию о текущих картах на руках игроков и их животных со всеми свойствами, лежащими на игровом поле;

? рассчитывать очередность хода;

? определять и передавать право на первый ход;

? рассчитывать взаимодействие между различными свойствами;

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

? помещать карты в сброс;

? хранить информацию о картах находящихся в сбросе игрока;

? считать итоговые очки и определять победителя;

Требования, предъявляемые к системе, с точки зрения игрока:

? начать новую игру;

? положить карту в виде животного;

? положить карту, как свойство;

? пропустить ход;

? взять фишку еды из кормовой базы;

? положить фишку еды на своё животное;

? активировать\ применить свойство;

? закончить игру.

1.4 Модель вариантов использования

1.4.1 Построение диаграммы прецедентов

Визуализация требований реализована с помощью use-case диаграммы (см. рисунок 1.2.).

Рис. 1.2. Диаграмма прецедентов.

1.4.2 Документирование прецедентов

Документирование прецедентов представлено ниже в таблицах (см . таблицы 1.1. - 1.15).

Таблица 1.1. Прецедент «Создать новую игру».

Таблица 1.2. Прецедент «Задать параметры».

Краткое описание

Прецедент позволяет пользователю задать параметры создаваемой игры и начать игровой процесс.

Исполнители

Предусловия

Пользователь нажал кнопку «Новая игра»

Основной поток

1. Игрок выбирает используемый набор карт:

Стандартный набор (84 карты) - по умолчанию.

Дополнение «Время летать» (+42 карты).

2. Игрок выбирает количество игроков:

2 игрока - по умолчанию.

3 игрока.

4 игрока.

3. Игрок нажимает кнопку «Создать игру».

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

Альтернативные потоки

Постусловия

Параметры настроены.

Таблица 1.3.Прецедент «Сохранить игру».

Краткое описание

Исполнитель

Предусловия

Основной поток

2. Система выводит окно, в котором игроку предоставляется возможность выбрать место, куда сохранить файл в формате txt.

3. Игрок выбирает путь, название файла и подтверждает сохранение.

4. Система сохраняет игру на диск и выдает игроку сообщение.

5. Система предлагает продолжить игру.

Альтернативные потоки

А1. Недостаточно места на диске.

a. Система выводит сообщение, что недостаточно места на диске для записи.

Постусловия

Конфигурация и текущее состояние игры сохранены в файл на жестком диске

Таблица 1.4.Прецедент «Продолжить игру».

Краткое описание

Прецедент позволяет продолжить ранее сохраненную игру.

Исполнитель

Предусловия

Наличие на диске файла с сохраненной конфигурацией игры.

Основной поток

1. Игрок запускает систему.

2. Игрок нажимает на кнопку «Продолжить игру».

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

4. Игрок выбирает файл и подтверждает открытие.

А1. Файл неверной структуры.

5. Система восстанавливает конфигурацию, состояние и количество игроков из файла и загружает игровое поле.

Альтернативные потоки

А1. Файл неверной структуры.

a. Система выводит сообщение о том, что файл поврежден.

b. Система возвращается к 3-ому пункту.

Постусловия

Конфигурация игры восстановлена.

Таблица 1.5.Прецедент «Закончить игру».

Краткое описание

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

Исполнитель

Предусловия

Основной поток

Находясь в главном меню:

1. Игрок нажимает кнопку «Выйти».

2. Система запрашивает подтверждение выхода «Да\Нет»

3. Система завершает свое выполнение и выходит на рабочий стол.

При нахождении в игре:

1. Игрок нажимает кнопку «Выйти в меню».

2. Система запрашивает подтверждение выхода «Да\Нет».

3. Система выходит в главное меню.

Альтернативные потоки

Постусловия

Игра завершилась.

Таблица 1.6.Прецедент «Играть».

Краткое описание

Прецедент представляет собой игровой процесс.

Исполнитель

Предусловия

Выполнен прецедент «Создать новую игру».

Основной поток

Начало игры:

1. Система определяет очередность хода (Выполняет жеребьевку на основе ДСЧ).

2. Система передает право первого хода игроку, выбранному в результате жеребьевки.

3. Выполняется прецедент «Получить карты» для новой игры.

Фаза развития:

А2. Игрок уже пропустил ход.

5. Игрок делает ход.

А3. Игрок решает сходить.

А4. У игрока нет карт на руках.

6. Система переводит очередь на другого игрока.

Фаза определения кормовой базы:

7. Система при помощи ДСЧ определяет количество фишек еды, которое будет доступно на фазе питания.

8. Фишки еды появляются на игровом поле.

Фаза питания:

А7. Игрок уже пропустил ход.

9. Игрок делает ход.

А9. Игрок решает сходить.

А5. Игрок нажимает на кнопку «Пропустить ход».

10. Система переводит очередь на следующего игрока.

Фаза вымирания:

11. Выполняется прецедент «Получить карты» в фазу вымирания.

Завершение игры:

12. Система подсчитывает очки, набранные игроками.

13. Система выводит общий результат всех игроков.

14. Появляются кнопки «Создать новую игру» \ «Выйти в меню».

Альтернативные потоки

А1. Все игроки получили карты.

a. Игра переходит на шаг 3.

А2. Игрок уже пропустил ход.

А3. У игрока нет карт на руках.

А4. Игрок решает сходить.

a. Выполняется прецедент «Сделать ход» в фазу развития.

А5. Игрок нажимает на кнопку «Пропустить ход».

a. Выполняется прецедент «Пропустить ход».

А6. Все игроки пропустили ход в фазе развития.

a. Игра переходит на шаг 5.

А7. Игрок уже пропустил ход.

a. Прецедент переходит к шагу 8.

А8. У игрока нет карт на столе.

a. Выполняется прецедент «Пропустить ход».

А9. Игрок решает сходить.

a. Выполняется прецедент «Сделать ход» в фазу питания.

А10. Все игроки пропустили ход в фазу питания.

a. Игра переходит на шаг 9.

А11. Прецедент «Получить карты» в фазу вымирания завершен.

А11.1. Ни один из игроков не получил новых карт.

a. Право первого хода переходит следующему игроку.

b. Игра возвращается на шаг 3.

А11.1. Ни один из игроков не получил новых карт в фазу вымирания.

a. Игра переходит на шаг 10.

А12. Игрок набрал больше всех очков.

a. Выполняется прецедент «Выиграть».

А13. Игрок, вместе с другим игроком, набрал одинаковое количество очков, но больше, чем у остальных игроков.

a. Система дополнительно подсчитывает очки по животным находящимся в сбросе игроков.

b. Если игрок набрал больше очков, чем соперник - выполняется прецедент «Выиграть».

c. Если игрок набрал меньше очков, чем соперник - выполняется прецедент «Проиграть».

А14. Игрок набрал меньше очков, чем другой игрок.

А15. Игрок нажал кнопку «Создать новую игру».

a. Выполняется прецедент «Создать игру».

А16. Игрок нажал кнопку «Выйти в меню».

a. Выполняется прецедент «Завершить игру».

Точка расширения

· Прецедент «Выиграть».

· Прецедент «Проиграть».

Постусловия

Сыграна партия игры.

Таблица 1.7. Прецедент «Получить карты».

Краткое описание

Прецедент позволяет игроку получить новые карты из колоды.

Предусловия

Выполнен прецедент «Создать новую игру».

Основной поток

Для новой игры:

1. Система выдает игроку 6 карт из общей колоды.

В фазу вымирания:

А1. Все игроки получили необходимое число карт, либо закончились карты в колоде.

А2. Ненакормленные животные игрока помещены в сброс и определено количество необходимых для выдачи карт.

1. Система помещает ненакормленных животных в сброс игрока.

2. Система определяет количество необходимых для выдачи карт, равное числу выживших животных игрока + 1.

3. Система выдает игроку одну карту из необходимого количества.

4. Система переводит очередь на следующего игрока.

5. Выполняется прецедент «Получить карты» в фазу вымирания.

Альтернативные потоки

А1. Все игроки получили нужное число карт, либо закончились карты в колоде.

a. Прецедент завершается.

А2. Ненакормленные животные игрока помещены в сброс и определено количество выживших животных.

a. Прецедент переходит к шагу 3.

А3. У игрока нет выживших животных и нет карт на руках.

А3.1. В колоде нет карт.

a. Система определяет количество необходимых для выдачи карт, равное 6.

А3.1. В колоде нет карт.

a. Выполняется прецедент «Проиграть».

b. Прецедент переходит к шагу 4.

А4. Игроку выдано всё необходимое количество карт.

a. Прецедент переходит к шагу 4.

Постусловия

Игрок получил новые карты.

Таблица 1.8.Прецедент «Выиграть».

Таблица 1.9.Прецедент «Проиграть».

Таблица 1.10.Прецедент «Пропустить ход».

Краткое описание

Прецедент пропускает ход игрока.

Предусловия

Игрок обладает правом хода.

Основной поток

1. Система завершает ход игрока. В текущей фазе игрок больше не будет получать право хода.

Альтернативные потоки

А1. Игра находится на фазе питания, есть фишки в кормовой базе и у игрока есть ненакормленные животные или животные с незаполненным жировым запасом.

a. Система выводит сообщение о том, что игрок не может пропустить ход, т.к. обязан взять фишку еды.

b. Прецедент завершается.

Постусловия

Игрок пропускает ход и больше не может ходить в текущую фазу.

Таблица 1.11.Прецедент «Сделать ход».

Краткое описание

Прецедент позволяет игроку сделать ход.

Предусловия

Игрок обладает правом хода.

Основной поток

Фаза развития:

Фаза питания:

А5. Игрок применяет свойство.

Альтернативные потоки

А1. Игрок кладет карту в виде животного.

a. Выполняется прецедент «Положить карту в виде животного».

А2. Игрок кладет карту, как свойство.

a. Выполняется прецедент «Положить карту, как свойство».

b. Прецедент «Сделать ход» завершается.

А3. В кормовой базе не осталось фишек еды. У игрока нет свойств, которые можно применить.

a. Выполняется прецедент «Пропустить ход».

А4. Игрок берет фишку еды из кормовой базы.

a. Выполняется прецедент «Взять фишку еды».

А5. Игрок применяет свойство.

a. Выполняется прецедент «Применить свойство».

А5.1. У игрока нет свойств, которые можно применить.

a. Прецедент «Сделать ход» завершается.

Постусловия

Игрок делает ход в текущую фазу.

Таблица 1.12.Прецедент «Положить карту в виде животного».

Краткое описание

Прецедент позволяет игроку создать новое животное.

Предусловия

Игрок имеет право хода.

Основной поток

А1. Игрок отпустил карту.

2. Игрок перетаскивает карту на свободное место своего игрового поля.

3. Система выделяет место и информирует игрока о том, что карта будет положена в виде животного игрока.

А2. Карта находится над другой картой своего игрового поля или поля противника.

4. Игрок отпускает карту.

5. Карта располагается на игровом поле игрока изображением животного вверх.

Альтернативные потоки

А1. Игрок отпустил карту.

А2. Игрок отпустил карту над другой картой своего игрового поля или поля противника.

a. Выполняется прецедент «Положить карту как свойство» с шага 3.

А3. Игрок отпустил карту над игровым полем противника.

Постусловия

На игровом поле текущего игрока появилась карта животного.

Таблица 1.13.Прецедент «Положить карту как свойство».

Краткое описание

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

Предусловия

Игрок имеет право хода.

Основной поток

1. Игрок нажимает на выбранную карту и удерживает её.

А1. Игрок отпустил карту.

2. Игрок перетаскивает карту на животное на своем игровом поле.

3. Система выделяет карту животного и информирует игрока о том, что карта будет расположена, как свойство этого животного.

4. Игрок отпускает карту.

5. Над выбранным животным появляется название и признаки свойства.

Альтернативные потоки

А1. Игрок отпустил карту.

a. Карта не меняет положения и остается на «руках» у игрока.

А2. Игрок отпустил карту на пустое место своего игрового поля.

a. Выполняется прецедент «Положить карту в виде животного» с шага 3.

А3. Игрок отпустил карту на пустое место игрового поля противника.

a. Карта возвращается обратно в «руки» игрока.

А4. Игрок отпустил карту над животным противника.

a. Если свойство может применяться на животных других игроков, то прецедент переходит к шагу 5.

b. Если свойство не может применяться на животных других игроков, то система информирует игрока о том, что данное свойство может быть применено только на своих животных, карта возвращается обратно в «руки» игрока.

А5. Свойство на карте относится к парным.

a. Система применяет свойство к выбранному животному и запрашивает указать второе животное игрока.

b. Игрок указывает 2е животное.

c. Система располагает указанные карты рядом друг с другом.

d. Над выбранными животными появляется название свойства и соединительная линия между этими свойствами.

А5.1. У игрока только 1 животное.

a. Система информирует игрока о том, что парное свойство не может быть размещено, т.к. у игрока не достаточно карт животных.

b. Карта возвращается обратно в «руки» игрока.

А6. На карте имеется 2 свойства на выбор.

a. Система выводит модальное окно с вариантами свойств.

b. Игрок нажимает на выбранное свойство.

c. Прецедент переходит к шагу 5.

A7. Свойство не может быть применено дважды на одну карту животного.

a. Система информирует игрока о том, что свойство не может быть размещено дважды на одно и то же животное.

Постусловия

На игровом поле игрока к карте животного добавляется название и признаки свойства, которыми оно обладает.

Таблица 1.14.Прецедент «Взять фишку еды».

Краткое описание

Прецедент позволяет игроку накормить одно из его животных.

Предусловия

Игрок имеет право хода.

Основной поток

1. Игрок нажимает на фишку еды в кормовой базе и удерживает её.

А1. Игрок отпустил фишку.

2. Игрок перетаскивает фишку еды на животное на своем игровом поле.

3. Система выделяет карту животного и информирует игрока о том, что данное животное получит +1 к запасу пищи.

4. Игрок отпускает фишку еды.

5. У выбранного животного устанавливается отметка о получении фишки еды, запас пищи пополняется на +1 единицу.

Альтернативные потоки

А1. Игрок отпустил фишку.

a. Фишка не меняет положения и остается в кормовой базе.

А2. Животное игрока уже накормлено.

a. Система выделяет карту животного и информирует игрока о том, что данное животное не может получить новую фишку еды, т.к. является полностью накормленным.

b. Если игрок отпускает фишку еды, то фишка возвращается в кормовую базу.

А3. Игрок отпустил фишку еды вне своего игрового поля.

А4. Игрок отпустил фишку вне карты животного на своем игровом поле.

a. Фишка возвращается в кормовую базу.

Постусловия

Текущее животное игрока пополняет запас пищи на 1 единицу.

Таблица 1.15.Прецедент «Применить свойство».

Краткое описание

Прецедент позволяет игроку активировать свойство своего животного.

Предусловия

Игрок имеет право хода.

Основной поток

1. Система подсвечивает свойства животного, которые могут быть активированы.

2. Игрок нажимает на доступное свойство.

3. Система обрабатывает выбранное свойство и отображает результат применения на игровом поле, либо сообщает его игроку.

Альтернативные потоки

А1. Использовано свойство «Хищник».

a. Система подсвечивает животных, которые могут быть атакованы.

b. Игрок выбирает животное, которое собирается атаковать.

c. Система проверяет защитные свойства этого животного.

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

e. Если свойств нет или оно не сработало - животное считается съеденным и пропадает с поля. Животное атаковавшего игрока получает 2 единицы еды.

А2. Свойство может применяться один раз за раунд.

a. Система помечает свойство, как использованное, такое свойство больше не может применяться в этом раунде.

Постусловия

Активируется свойство животного, принадлежащего игроку.

1.5 Обзор инструментов разработки

В качестве среды для разработки компьютерной игры «Эволюция» был выбран игровой движок Unity. Unity - это мультиплатформенный инструмент для разработки 2D/3D игр и интерактивного контента. На сегодняшний день доступна 5 версия движка, в которой реализованы все самые последние 3D и 2D технологии. Одной из таких технологий является UI System, которая содержит классы, значительно упрощающие работу с 2D элементами. . Данная технология наиболее подходит для создания игрового пространства и интерактивного интерфейса компьютерной игры «Эволюция». Базовый набор UI элементов и их назначение представлены в таблице 1.16.

Таблица 1.16. Базовый набор UI элементов в Unity.

Название UI элемента

Назначение

Отображение

Представляет собой абстрактное пространство в котором производится настройка и отрисовка UI. Все элементы UI должны быть дочерними для Сanvas.

Область для группировки элементов. Может содержать фоновое изображение или цвет.

Представляет собой графический объект загруженный на сцену, который может использоваться для декорации уровня, в качестве, 2D объекта игры, иконки и т.д.

Компонент Text, также известный как Label, имеет область для ввода текста, который будет отображен. Есть возможность задать шрифт, его стиль и размер. Присутствуют опции для установки параметров выравнивания; настройки горизонтального и вертикального переполнения, которые управляют поведением текста, когда он не влезает по ширине или высоте в отведенный ему прямоугольник.

Кнопка состоит из картинки и текста, а так же специального скрипта кнопки. Текст расположен, как отдельный элемент внутри кнопки. Можно настроить отображение кнопки в различных состояниях: обычное состояние, состояние при наведении, состояние при нажатии и состояние при блоке кнопки. Содержит событие нажатия кнопки.

Данный объект позволяет пользователю выбрать одну опцию из списка опций.

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

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

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

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

Предоставляет возможность пользователю вводить текст. Содержит 2 события: изменение текста и конец изменения текста.

Одной из главных особенностей игрового движка Unity является удобный и полностью настраиваемый интерфейс, который сочетает в себе редактор сцен, игровых объектов, скриптов, анимации, а также предоставляет возможность мгновенного запуска и отладки разрабатываемого приложения или игры . На рисунке 1.3. изображен скриншот окна редактора. Все ресурсы и объекты могут перемещаться при помощи Drag-and-Drop методов.

Рис. 1.3. Окно редактора Unity.

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

1. Scene View. В данном окне можно перемещаться по игровому миру, передвигать и вращать объекты сцены, а также изменять их масштаб.

2. Game View. Представляет собой изображение игрового мира, отрисованное из установленной камеры. Здесь можно посмотреть, как будет выглядеть игра для игрока. Также можно запустить и проверить игру.

3. Project Window. В данном окне можно работать со всеми ресурсами проекта: изображениями, шрифтами, скриптами, сохраненными объектами, сценами и т.д. Unity поддерживает огромное количество различных форматов мультимедии.

4. Hierarchy Window. Представляет собой иерархию игровых объектов расположенных на текущей сцене.

5. Inspector Window. Позволяет просмотреть, изменить и удалить свойства\скрипты текущего выбранного объекта. А также добавить объекту новые свойства\скрипты.

6. Toolbar. Содержит инструменты для трансформации игровых объектов в окне Scene View, Кнопки запуска и остановки приложения в окне Game View, выпадающее меню Layout которое отвечает за расположение окон в редакторе.

7. Console Window. Обеспечивает вывод в лог сообщений, предупреждений и ошибок.

Unity также обладает следующими преимуществами:

1. Открытость документации. Unity поставляется с полной документацией и примерами по каждой функции движка, к которой можно обратиться в любой момент.

2. Сообщество разработчиков. Unity обладает активным онлайн сообществом, готовым помочь новым пользователям. Также разработчики Unity Technology часто прислушиваются к пользователям и добавляют по их запросам новые функции в игровой движок. Кроме этого существует множество официальных и неофициальных видео-курсов помогающих разобраться с аспектами разработки игр на данном игровом движке .

3. Кроссплатформенность. Один и тот же код, написанный на движке Unity, с минимальными изменениями может быть перенесен на различные платформы (PC, Mac, Android, iOS, Web, игровые консоли). Это огромный плюс, который сокращает время на разработку игры в несколько раз.

4. Asset Store. Unity имеет собственный магазин, где можно найти огромное количество различных плагинов и ресурсов для создания игры. Разумеется, какие-то из них бесплатные, какие-то платные, но все они собраны в одном месте с удобным поиском и возможностью загрузить, интегрировать и получить сразу рабочий функционал .

В качестве инструмента для написания программного кода была выбрана среда Visual Studio 2015. В данной работе Visual Studio используется как лучшая альтернатива MonoDevelop, которая в игровом движке Unity представлена по умолчанию.

В качестве языка программирования был выбран высокоуровневый язык программирования C# .

1.6 Анализ аналогов

В ходе исследования предметной области был найден единственный на данный момент рабочий аналог компьютерной реализации настольной игры «Эволюция». Интерфейс данного аналога изображен на рисунке 1.4.

Рис. 1.4. Интерфейс пользователя игры-аналога.

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

? доступен режим игры против 1го компьютера на 3х уровнях сложности. В данном варианте сложность проявляется в предоставлении «форы» компьютеру (компьютер отыгрывает один раунд без участия игрока, после этого присоединяется игрок);

? доступен режим по сети 1 против 1;

? доступен режим конструктора, где можно проверить взаимодействие различных свойств;

? понятный и интуитивный интерфейс пользователя, основанный на point-and-click;

? существует запись в журнал игрового процесса, всех ходов игрока и его соперника;

? возможность просмотреть код (массив содержащий параметры текущей игры: количество карт в колоде, очередность хода и список карт находящихся на руках у игроков);

? существует возможность посмотреть карты находящиеся в сбросе игрока.

Данный аналог обладает следующими недостатками:

? игра расположена в социальной сети «вконтакте» из-за чего отсутствует возможность играть без подключения к интернету;

? представленная игра помимо обычного набора карт содержит карты из дополнения «время летать», что вызывает недовольство среди игроков, так как отсутствует выбор набора карт.

Выделим основные критерии для сравнения аналога и разрабатываемой нами игры (см. таблица 1.17.):

1. Существует ли возможность запускать игру в оффлайн режиме против компьютера?

2. Присутствует ли возможность играть онлайн через интернет?

3. Правила игры соответствуют оригиналу игры?

4. Присутствует возможность выбора количества игроков?

5. Есть возможность изменить уровень сложности компьютера?

Таблица 1. 17. Сравнение критериев игры аналога и разрабатываемой игры.

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

1.7 Выводы по главе

В результате анализа правил настольной игры «эволюция» был представлен алгоритм в виде блок схем, подробно описывающий этапы игрового процесса. Были разработаны функциональные требования, предъявляемые к системе с точки зрения правил игры. Построена диаграмма вариантов использования и описан основной и альтернативный порядок действий системы при инициализации прецедента игроком. Проведен краткий обзор возможностей и преимуществ игрового движка Unity. Рассмотрены плюсы и минусы найденного аналога и определены преимущества разрабатываемой игры.

2. Проектирование игры

2.1 Модель проектирования

В ходе объектно-ориентированного анализа в соответствие с каждым прецедентом были поставлены классы, отвечающие за представленный в прецеденте функционал. В таблице 2.1. показаны соответствия прецедентов с классами игры, а также краткое описание этих классов.

алгоритм интерфейс файл пользователь

Таблица 2.1. Соответствие прецедентов и классов игры.

Прецедент

Название класса

Описание класса

Создать новую игру

Отвечает за отображение UI элементов на экране и взаимодействие пользователя с ними.

Отвечает за загрузку экранов.

Задать параметры

Статический класс для хранения настроек игры.

Основной класс игры, реализует игровую логику и управляет всеми процессами и элементами в игре, а также позволяет сохранить и загрузить игру.

Продолжить игру

Закончить игру

PlayerController

Отвечает за инициализацию игроков. Управляет очередностью хода.

Отвечает за переход между фазами игры.

Получить карты

Хранит информацию о типе игрока, его картах на руках, на столе и в сбросе.

Отвечает за хранение и отображение карт находящихся «на руках» у игрока.

Представляет собой колоду карт.

Отвечает за хранение и отображение карт находящихся в сбросе у игрока.

Представляет собой карту с изображением на ней двух свойств.

Хранит информацию о свойстве, изображенном на карте. Название, описание и изображение этого свойства.

Выиграть

Проиграть

Пропустить ход

Сделать ход

Положить карту в виде животного

Представляет собой карту на столе игрока, положенную в виде животного.

Положить карту, как свойство

Отвечает за хранение и отображение карт находящихся «на столе» игрока.

Представляет собой свойство карты расположенное на столе игрока, как признак конкретного животного.

Взять фишку еды

Отвечает за генерацию, хранение и отображение фишек еды в фазу питания.

Представляет собой фишку еды определенного цвета (Красную, Синею, Желтую), которая используется при кормлении животного игрока.

Применить свойство

Отвечает за обработку выбранного свойства и отображение результата на игровом поле.

2.1.1 Архитектура игры

Визуализация игровой логики реализована с помощью диаграммы классов. Данная диаграмма состоит из двух частей: первая часть - это классы описывающие отображение игровых объектов, вторая часть классов описывает игровую логику. Данные классы связаны при помощи класса EvolutionGame отвечающего за игровой процесс и перехватывающий события с остальных классов системы. Диаграмма классов, представляющая архитектуру игры, показана на рисунках 2.1. - 2.3.

Рис. 2.1. Диаграмма классов. Часть 1.

Рис. 2.2. Диаграмма классов. Часть 2.

Рис. 2.3. Диаграмма классов. Часть 3.

2.2 Разработка графического интерфейса пользователя

2.2.1 Структура интерфейса

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

Рис. 2.4. Структура интерфейса.

2.2.2 Главное меню

Главное меню (см. рис. 2.5.) игры состоит из названия игры, фонового изображения и 3х кнопок: «Новая игра», «Продолжить игру» и «Выход». При нажатии на кнопку «Новая игра» открывается модальное окно настройки параметров игры (см. рис. 2.6.), которое содержит переключатели для выбора набора карт (базовый набор установлен по умолчанию и не доступен для выбора), выбор количества игроков, а также кнопку «Начать игру», при нажатии на которую загрузится игровое поле.

Рис. 2.5. Главное меню

Рис. 2.6. Окно задания параметров игры.

2.2.3 Экран игры

Экран игры состоит из 2х областей: фронтальной области и игрового поля. Фронтальная область (см. рис. 2.7.) содержит верхнее меню с кнопками: «Показать\скрыть игровой лог», «Сохранить игру», «Выйти в меню». Также в верхней части фронтальной области располагается окно с игровым логом, текстом уведомлений и информацией о текущей фазе в которой находится игра. Внизу фронтальной области располагается панель с картами, находящимися “на руках” у игрока. Данная панель может быть свернута и развернута по щелчку мыши. При двойном нажатии на любую карту животного оно масштабируется по центру экрана (см. рис. 2.8.).

Рис. 2.7. Фронтальная область.

Рис. 2.8. Подробный просмотр карты.

Игровой стол (см. рис. 2.9.) находится в 3D пространстве и содержит 2 области: игрока и соперника. Данные области служат для расположения карт животных и их свойств. Между данными областями находится кормовая база с фишками еды. Также на игровом столе располагаются кнопки выбора игроков, колода с указанием оставшегося количества карт, и кнопка «Сброс», при нажатии на которую открывается модальное окно содержащее карты животных, которые погибли в результате фазы вымирания.

Рис. 2.9. Экран игры. Игровой стол.

2.3 Реализация интерфейса в среде Unity

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

На основе спроектированного графического интерфейса в Unity было создано 2 сцены:

· «Menu» - представляет собой главное меню игры.

· «Game» - представляет собой игровое пространство, на котором непосредственно происходит весь игровой процесс.

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

Рис. 2.10. Ресурсы проекта - игровые сцены.

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

Рис. 2.11. Настройки камеры в редакторе Unity.

Для создания игры было принято использовать систему UI игрового движка Unity. Все элементы UI располагаются на полотне (Canvas), которое определяет размещение 2D объектов в игровом пространстве. За это отвечает свойство Render Mode, которое содержит следующие значения:

Screen Space - Overlay. В данном режиме полотно масштабируется по размерам экрана и отрисовывается без связи со сценой или камерой (UI будет отрисован даже в том случае, когда на сцене нету камеры). В случае изменения размера окна, полотно будет растянуто под размеры экрана. Полотно будет рисоваться поверх всех остальных графических элементов.

Screen Space - Camera. В данном режиме полотно рисуется на плоскости перпендикулярной взгляду камеры, на некотором расстоянии от точки взгляда. Размер полотна не меняется с изменением расстояния, оно всегда масштабирется, чтобы заполнять разрез пирамиды видимости у камеры (camera frustrum view). Интерфейс будет заслоняться любыми 3D элементами, которые находятся перед плоскостью интерфейса.

World Space. В данном режиме полотно располагается в мировых координатах и является плоским 3D объектом.

2.3.1 Главное меню

На рисунке 2.12. показана сцена главного меню и иерархия объектов, расположенных на данной сцене. Полотно на котором располагаются UI элементы имеет свойство RenderMode с установленным значением Screen Space - Overlay. Такие элементы, как: ParamsWindow, ExitConfirm, ContinueGame - являются модальными окнами и по умолчанию находятся в неактивном состоянии.

Рис. 2.12. Сцена «Главное меню» и иерархия игровых объектов

MenuManager - пустой GameObject содержащий класс для управления меню.

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

2.3.2 Экран игры

На рисунке 2.13. показана сцена «Игровое поле» и иерархия объектов данной сцены. Элементы фронтальной области располагаются на полотне со свойством Render Mode равном Screen Space - Overlay, это означает, что отображение данных элементов не зависит от камеры. Игровое поле представляет собой полотно, расположенное в 3D пространстве и повернутое под углом 30 градусов относительно камеры. Для отображения данной сцены используется перспективная камера.

Рис. 2.13. Сцена «Игровое поле» и иерархия объектов сцены.

Общее представление сцены игры, то, как она выглядит для игрока показано на рисунке 2.14.

Рис. 2.14. Отладка сцены «Игровое поле».

2.4 Структура файла сохранения игры

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

· текущие настройки игры;

· текущая фаза игры;

· текущее право хода;

· карты, находящиеся на руках у игроков;

· карты животных, находящиеся на столе у игроков;

· карты животных, находящиеся в сбросе у игроков;

· свойства и связи между животными;

· информация об использованных свойствах;

· информация о накормленных животных;

· количество фишек еды в кормовой базе;

· карты находящиеся в колоде.

Для описания данной информации наиболее подходящим является формат JSON. JSON (JavaScript Object Notation) - простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером . Примерное содержание файла изображено на рисунке 2.15.

Рис. 2.15. Структура файла сохранения игры.

2.5 Проектирование поведения компьютера

Для создания алгоритма поведения игрока, управляемого компьютером (далее бот) был спроектирован механизм, основанный на датчике случайных чисел. Каждое действие бота определяется исходя из входящих условий, таких как: текущая фаза игры, количество карт на руках, количество животных на столе и их свойства, а также значения, полученного в результате применения датчика случайных чисел.

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

Подобные документы

    Разработка компьютерной игры "Эволюция" с помощью игрового движка Unit. Сравнение критериев игры-аналога и разрабатываемой игры. Разработка графического интерфейса пользователя. Настройки камеры в редакторе Unity. Структура файла сохранения игры.

    дипломная работа , добавлен 11.02.2017

    Исследование базовых концепций программирования приложений под операционную систему Windows. Изучение истории создания универсального языка программирования Си. Разработка графического пользовательского интерфейса. Обзор правил игры и алгоритма работы.

    курсовая работа , добавлен 09.11.2012

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

    дипломная работа , добавлен 27.10.2017

    История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа , добавлен 27.09.2013

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

    методичка , добавлен 24.10.2012

    Описание алгоритма хода ЭВМ в режиме "пользователь-компьютер" в игре "Морской бой". Описание совокупности классов, их полей и методов. Разработка интерфейса и руководства пользователя по проведению игры. Листинг программы, написанной на языке Java.

    курсовая работа , добавлен 26.03.2014

    Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

    курсовая работа , добавлен 17.01.2011

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

    контрольная работа , добавлен 20.12.2012

    Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.

    курсовая работа , добавлен 03.12.2014

    Исследование спецификации логической игры "Сапёр". Системное и функциональное проектирование приложения. Разработка программных модулей. Обзор классов, необходимых для создания интерфейса данного приложения. Инструменты для реализации логической игры.

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

Назначение

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

При моделировании системы с помощью диаграммы прецедентов системный аналитик стремится:

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

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

Элементы

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

Отношения между прецедентами

Часть дублирующейся информации в модели прецедентов можно устранить указанием связей между прецедентами :

  • обобщение прецедента - стрелка с незакрашенным треугольником (треугольник ставится у более общего прецедента),
  • включение прецедента - пунктирная стрелка со стереотипом «include»,
  • расширение прецедента - пунктирная стрелка со стереотипом «extend» (стрелка входит в расширяемый прецедент, в дополнительном разделе которого может быть указана точка расширения и, возможно в виде комментария, условие расширения)

Правила

При работе с вариантами использования важно помнить несколько простых правил:

  • каждый прецедент относится как минимум к одному действующему лицу;
  • каждый прецедент имеет инициатора;
  • каждый прецедент приводит к соответствующему результату.

Напишите отзыв о статье "Диаграмма прецедентов"

Примечания

Отрывок, характеризующий Диаграмма прецедентов

– Простите мою нескромность, Ваше святейшество, но, во избежание ошибки с моей стороны, не соблаговолите ли Вы мне более точно объяснить, что Вы хотели этим сказать? – очень осторожно ответила я.
Караффа мягко улыбнулся и, взяв мою дрожащую руку в свои изящные, тонкие пальцы, очень тихо произнёс:
– Вы – первая женщина на земле, мадонна Изидора, которая, по моему понятию, достойна настоящей любви... И Вы очень интересный собеседник. Не кажется ли Вам, что Ваше место скорее на троне, чем в тюрьме инквизиции?.. Подумайте об этом, Изидора. Я предлагаю Вам свою дружбу, ничего более. Но моя дружба стоит очень многого, поверьте мне... И мне очень хотелось бы Вам это доказать. Но всё будет зависеть от Вашего решения, естественно... – и, к моему величайшему удивлению, добавил: – Вы можете здесь остаться до вечера, если желаете что-то почитать; думаю, Вы найдёте здесь для себя очень много интересного. Позвоните в колокольчик, когда закончите, и Ваша служанка покажет Вам дорогу назад.
Караффа был спокоен и сдержан, что говорило о его полной уверенности в своей победе... Он даже на мгновение не допускал мысли, что я могла бы отказаться от такого «интересного» предложения... И уж особенно в моём безысходном положении. А вот именно это и было самым пугающим... Так как я, естественно, собиралась ему отказать. Только, как это сделать я пока что не имела ни малейшего представления...
Я огляделась вокруг – комната потрясала!.. Начиная с вручную сшитых переплётов старейших книг, до папирусов и рукописей на бычьей коже, и до поздних, уже печатных книг, эта библиотека являлась кладезем мировой мудрости, настоящим торжеством гениальной человеческой Мысли!!! Это была, видимо, самая ценная библиотека, которую когда-либо видел человек!.. Я стояла, полностью ошеломлённая, завороженная тысячами со мной «говоривших» томов, и никак не могла понять, каким же образом это богатство могло ужиться здесь с теми проклятиями, которые так яро и «искренне» сыпала на им подобное инквизиция?... Ведь для настоящих инквизиторов все эти книги должны были являться самой чистой ЕРЕСЬЮ, именно за которую люди горели на кострах, и которая категорически запрещалась, как страшнейшее преступление против церкви!.. Каким же образом здесь, в подвалах Папы, сохранились все эти ценнейшие книги, которые, якобы, во имя «искупления и очищения душ», до последнего листочка, сжигались на площадях?!.. Значит, всё, что говорили «отцы-инквизиторы», всё, что они творили – было всего лишь страшной завуалированной ЛОЖЬЮ! И эта безжалостная ложь глубоко и крепко сидела в простых и открытых, наивных и верующих человеческих сердцах!.. Подумать только, что я когда-то была абсолютно уверена, что церковь была искренна в своей вере!.. Так как любая вера, какой бы странной она не казалась, для меня всегда воплощала в себе искренний дух и веру человека во что-то чистое и высокое, к чему, во имя спасения, стремилась его душа. Я никогда не была «верующей», так как я верила исключительно в Знание. Но я всегда уважала убеждения других, так как, по моему понятию, человек имел право выбирать сам, куда направить свою судьбу, и чужая воля не должна была насильно указывать, как он должен был проживать свою жизнь. Теперь же я ясно видела, что ошиблась... Церковь лгала, убивала и насиловала, не считаясь с такой «мелочью», как раненая и исковерканная человеческая душа...
Как бы я не была увлечена увиденным, пора было возвращаться в действительность, которая для меня, к сожалению, в тот момент не представляла ничего утешительного...
Святой Отец Церкви, Джованни Пьетро Караффа любил меня!.. О, боги, как же он должен был за это меня ненавидеть!!! И насколько сильнее станет его ненависть, когда он вскоре услышит мой ответ...
Я не могла понять этого человека. Хотя, до него, чуть ли не любая человеческая душа была для меня открытой книгой, в которой я всегда могла свободно читать. Он был совершенно непредсказуем, и невозможно было уловить тончайшие изменения его настроений, которые могли повлечь за собой ужасающие последствия. Я не знала, сколько ещё смогу продержаться, и не знала, как долго он намерен меня терпеть. Моя жизнь полностью зависела от этого фанатичного и жестокого Папы, но я точно знала только одно – я не намерена была лгать. Что означало, жизни у меня оставалось не так уж много...

А ддиктивное поведение (от англ. addiction - склонность, пагубная привычка; лат. addictus - рабски преданный) - особый тип форм деструктивного поведения, которые выражаются в стремлении к уходу от реальности посредством специального изменения своего психического состояния. Синоним – аддикция.

Выделяют основные виды аддикций:

  • злоупотребление одним или несколькими веществами, изменяющими психическое состояние, например, алкоголь, наркотики, лекарства, различные яды;
  • участие в азартных играх, в том числе компьютерных;
  • сексуальное аддиктивное поведение;
  • переедание;
  • работоголизм (трудоголизм);
  • длительное прослушивание музыки, главным образом основанной на ритмах.

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

Симптомокомплекс психических нарушений, вызванных чрезмерным увлечением компьютером или Интернетом, описан психиатрами под названием компьютерная и Интернет-зависимость или компьютерный синдром.

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

1. ВОЗДЕЙСТВИЕ НА ОРГАНИЗМ КОМПЬЮТЕРНЫХ ИГР

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

Физические изменения в организме обусловлены влиянием нескольких факторов:

  • длительным сидением в однообразной позе, зачастую искажающей осанку и внутренние органы человека;
  • мерцанием монитора;
  • электронным излучением.

К последствиям воздействия вышеперечисленных факторов медики относят:

  1. Снижение иммунитета (защитных свойств организма) – предрасположенность к инфекциям, онкологическим заболеваниям.
  2. Неврологические нарушения – существует ряд наблюдений детских неврологов о развитии судорожных приступов, спровоцированных эффектом мерцания монитора и частой сменой изображения во время игры (происходит фотостимуляция судорожной активности головного мозга).
  3. Нейровегетативные изменения – к ним относят колебания артериального давления, частоты сердечных сокращений, частоты дыхания, повышение температуры тела, головные боли.
  4. Сосудистые нарушения. За счет однообразной позы развиваются застойные явления в сосудах органов, отеки, варикозное расширение вен.
  5. Изменение осанки.
  6. Нарушение репродуктивной функции.
  7. Ухудшение зрения.
  8. Эндокринные нарушения.

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

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

По данным статистики, полученным в США, в среднем шестиклассник смотрит телевизор 4 часа в день, - и это не считая того времени, которое он проводит за различными играми перед экраном компьютера или телевизора. Дети признают, что часто играют дольше, чем собирались. Не редко из-за этого они запускают учебу.

По некоторым оценкам, около 40 % американских детей в возрасте от 5 до 8 лет страдают ожирением. К этому, очевидно, располагает недостаточная физическая активность - следствие долгих часов, проведенных за телевизором или компьютером. Одна компания даже разработала специальные тренажеры, на которых можно заниматься, не отрываясь от компьютерных игр. Но разве не лучше было бы посвящать этим играм не так много времени, чтобы его хватало и на другие занятия, необходимые для разностороннего развития личности ребенка?

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

2. ВОЗДЕЙСТВИЕ НА ПСИХИКУ. ВОЗНИКНОВЕНИЕ ИГРОВОЙ АДДИКЦИИ

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

Вместе с появлением компьютеров появились компьютерные игры, которые сразу же нашли массу поклонников. С совершенствованием компьютеров совершенствовались и игры, привлекая все больше и больше людей. По прогнозам, в ближайшие годы рынок электронных игр будет неуклонно расширяться. В обществе формируется целый класс людей-фанатов компьютерных игр; игра становится их основной деятельностью. Круг социальных контактов у них очень узок, вся иная деятельность направлена лишь на выживание, на удовлетворение физиологических потребностей; главным становится удовлетворение потребности в игре на компьютере. Опыт показывает, что многим из них это увлечение отнюдь не идет на пользу, а некоторые серьезно нуждаются в помощи. Большинство из них - люди с известными психологическими проблемами: несложившаяся личная жизнь, неудовлетворенность собой, и, как следствие, потеря смысла жизни и нормальных человеческих ценностей. Единственной ценностью для них является компьютер и всё, что с этим связано.

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

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

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

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

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

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

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

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

Многие игры имеют совмещенные игровые жанры, что подталкивает аддикта к переходу к другим типам игр. Необходимо отметить, что прохождение новой компьютерной игры занимает от 5-6 часов до нескольких суток, иногда даже недель. Для того чтобы игроголик как можно дольше играл в ту или иную игру, разработчики вводят в них дополнительные небольшие подуровни, так называемые секретки, поиск которых требует массу времени. Человек одержимый компьютерной игрой окончательно не прощается с ней до тех пор, пока не найдет все секретные уровни, комнаты, не соберет все бонусы. Путем создания секретных подуровней, производители как бы подталкивают игрока к некому соревновательному ощущению кто кого? , что является одной из множеств причин возникновения зависимости от компьютерных игр.

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

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

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

Факторы риска развития компьютерной зависимости можно объединить в три группы:

1) Социальные

Недостаточная профилактическая и разъяснительная работа в семье, ослабление контроля гигиены труда за компьютером.

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

Финансовый стимул – возможность выиграть деньги, играя в тотализатор, on-line казино.

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

2) Наследственно-биологические

Наследственно обусловленная предрасположенность к развитию определенного типа высшей нервной деятельности. В геноме человека расшифрован 31 ген, отвечающий за выработку гормонов настроения – нейромедиаторов (дофамина, серотонина, норадреналина, ГАМК). Индивидуальные особенности психики во многом зависят от скорости выработки и передачи этих веществ в центральной нервной системе человека.

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

3) Психо-характерологические

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

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

Будущего аддикта привлекает в игре:

  • наличие собственного (интимного) мира, в который нет доступа никому, кроме него самого;
  • отсутствие ответственности;
  • реалистичность процессов и полное абстрагирование от окружающего мира;
  • возможность исправить любую ошибку, путем многократных попыток;
  • возможность самостоятельно принимать любые (в рамках игры) решения, вне зависимости к чему они могут привести.

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

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

3. ПСИХОЛОГИЧЕСКАЯ КЛАССИФИКАЦИЯ КОМПЬЮТЕРНЫХ ИГР

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

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

Выделим критерии принадлежности компьютерной игры к классу ролевых игр:

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

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

Хотя и в любой компьютерной игре есть элемент азарта, но в ролевой игре этот фактор не должен иметь первостепенного значения.

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

I. Ролевые компьютерные игры.

  • Игры с видом из глаз своего компьютерного героя.
  • Игры с видом извне на своего компьютерного героя.
  • Руководительские игры.

II. Неролевые компьютерные игры.

  • Аркады.
  • Головоломки.
  • Игры на быстроту реакции.
  • Традиционно азартные игры.

СПЕЦИФИКА КОМПЬЮТЕРНЫХ ИГР

I. Ролевые компьютерные игры

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

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

Играющий может совершенно серьезно воспринимать виртуальный мир и действия своего героя считает своими. У человека появляется мотивационная включенность в сюжет игры.

2) Игры с видом извне на своего компьютерного героя. Этот тип игр характеризуется меньшей по сравнению с предыдущим силой вхождения в роль. Играющий видит себя со стороны, управляя действиями этого героя.

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

3) Руководительские игры. Тип назван так потому, что в этих играх играющему предоставляется право руководить деятельностью подчиненных ему компьютерных персонажей. В этом случае играющий может выступать в роли руководителя самой различной спецификации: командира отряда спецназа, главнокомандующего армиями, главы государства, даже бога, который руководит историческим процессом. При этом человек не видит на экране своего компьютерного героя, а сам придумывает себе роль. Это единственный класс ролевых игр, где роль не задается конкретно, а воображается играющим. Вследствие этого глубина погружения в игру и свою роль будет существенной только у людей с хорошим воображением. Однако мотивационная включенность в игровой процесс и механизм формирования психологической зависимости от игры не менее сильны, чем в случае с другими ролевыми играми.

II. Неролевые компьютерные игры

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

1) Аркадные игры. Такие игры еще называют приставочными, т.к., в связи с невысокой требовательностью к ресурсам компьютера, широко распространены на игровых приставках. Сюжет, как правило, слабый, линейный. Все, что нужно делать играющему – быстро передвигаться, стрелять и собирать различные призы, управляя компьютерным персонажем или транспортным средством. Эти игры в большинстве случаев весьма безобидны в смысле влияния на личность играющего, т.к. психологическая зависимость от них чаще всего носит кратковременный характер.

2) Головоломки. К этому типу игр относятся компьютерные варианты различных настольных игр (шахматы, шашки, нарды и т.д.), а также разного рода головоломки, реализованные в виде компьютерных программ.

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

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

4) Традиционно азартные игры. Сюда входят компьютерные варианты карточных игр, рулетки, имитаторы игровых автоматов, одним словом – компьютерные варианты игрового репертуара казино. Психологические аспекты формирования зависимости от этих компьютерных игр и их реальных аналогов весьма сходны и, поэтому, мы не будем акцентировать на этом внимание.

Итак, ролевые компьютерные игры в наибольшей мере позволяют человеку войти в виртуальность, отрешиться (минимум на время игры) от реальности и попасть в виртуальный мир. Вследствие этого ролевые компьютерные игры оказывают существенное влияние на личность человека.

4. СИМПТОМЫ ИГРОВОЙ ЗАВИСИМОСТИ

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

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

  1. поглощенность, озабоченность игрой (воспоминания о прошлых играх, планирование будущих, мысли о том, как найти деньги на игру);
  2. ощущение эмоционального подъема во время работы с компьютером, взвинченность и возбуждение во время игры;
  3. нежелание отвлечься от игры с компьютером;
  4. переживания, тревоги или раздражения при необходимости остановить игру;
  5. использование игры как средства для того, чтобы избавиться от неприятных переживаний;
  6. попытки отыграться после проигрыша, исправить ситуацию;
  7. ложь и попытки рационального оправдания своего поведения с целью скрыть истинную степень своей вовлеченности в игру;
  8. забывание о домашних делах, обязанностях, учебе, встречах в ходе игры на компьютере, ухудшение отношений в учебном заведении, с родителями, с друзьями;
  9. одалживание денег у других лиц, чтобы приобрести новую игру.
  10. пренебрежение собственным здоровьем, гигиеной и сном в пользу проведения большего количества времени за компьютером;

Если у человека есть четыре и более симптомов, это уже болезнь...

5. ЧТО ДЕЛАТЬ?

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

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

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

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

Лекция 6:

Диаграммы прецедентов: крупным планом

Несколько слов о требованиях

Итак, поговорим о требованиях. Что это такое, мы, в общем, понимаем - когда заказчик описывает нам, чего же именно он хочет, мы всегда слышим фразы типа "хотелось бы, чтобы проверка обновлений проводилась автоматически, как в антивирусах", "хочу большую зеленую кнопку в центре окна, которая начинает процесс", "программа должна позволять просматривать и печатать отчеты", "и чтоб красивенько все было, с полупрозрачностями, как в Висте", "при выходе должно выводиться подтверждение" и т. д. и т. п. Конечно, как настоящие разработчики, мы понимаем и то, что заказчик никогда не знает, что именно ему нужно, а если понимает, то объяснить не может. Но ведь фразы-то всегда, по сути, одинаковы! Они описывают, как заказчик представляет себе систему, чего заказчик хочет от системы, функциональность, которой он от нее ожидает, требования, которые к ней предъявляет.

Если обратиться к классикам, например, к той же "банде трех" (Якобсон, Буч, Рамбо), мы узнаем, что требование - это желаемая функциональность, свойство или поведение системы . Именно со сбора требований начинается процесс разработки ПО . Если изобразить процесс разработки ПО в виде " черного ящика " (уверены, читатель знает, что это такое, если нет - "Википедия" к вашим услугам), на выходе которого мы получаем программный продукт , то на вход этого "черного ящика" будет подаваться именно набор требований к программному продукту (рис. 6.1 )!


Рис. 6.1.

Кстати, какую диаграмму напоминает этот рисунок? Правильно, диаграмму активностей . И выбор именно этой диаграммы тут абсолютно оправдан - помните, мы говорили, что диаграммы активностей часто используют для описания бизнес-процессов? Единственный нюанс: обычно процесс разработки не заканчивается с выпуском программного продукта - грядет новая итерация , новые, уточненные требования, новая версия и т. д.

Кстати, вернемся к требованиям. Да, мы сказали, что на вход нашего "черного ящика" подается набор требований. Но в какой форме? Как их документируют, эти требования? Думаю, большинство читателей помнит, что такое техническое задание - основной документ, без составления которого не начинался в советские времена ни один проект. Документ это был большой, многостраничный, с четкой структурой, определяемой ГОСТами (государственными отраслевыми стандартами). И описывал он, по сути, не что иное, как требования к создаваемой системе!

Техническое задание - вещь по -своему хорошая. Но время шло, менялись стандарты, нотации, способы описания требований. И вот постепенно техническое задание уступило место набору артефактов, состоящему из документов двух видов:

· диаграммы прецедентов ;

· нефункциональные требования.

Диаграммы прецедентов составляют модель прецедентов (вариантов использования, use-cases). Прецедент - это функциональность системы, позволяющая пользователю получить некий значимый для него, ощутимый и измеримый результат. Каждый прецедент соответствует отдельному сервису, предоставляемому моделируемой системой в ответ на запрос пользователя, т. е. определяет способ использования этой системы. Именно по этой причине use cases, или прецеденты, часто в русской терминологии фигурируют как варианты использования . Варианты использования чаще всего применяются для спецификации внешних требований к проектируемой системе или для спецификации функционального поведения уже существующей системы. Кроме этого, варианты использования неявно описывают типичные способы взаимодействия пользователя с системой, позволяющие корректно работать с предоставляемыми системой сервисами.

Нефункциональные требования - это описание таких свойств системы, как особенности среды и реализации, производительность ,расширяемость , надежность и т. д. Часто нефункциональные требования не привязаны к конкретному варианту использования и потому выносятся в отдельный список дополнительных требований к системе (рис. 6.2 ).



Рис. 6.2.

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

· четко разграничить систему и ее окружение;

· определить, какие действующие лица и как именно взаимодействуют с системой, какой функционал (варианты использования) ожидается от системы;

· определить и описать в словаре предметной области (глоссарии) общие понятия, которые необходимы для детального описания функционала системы (прецедентов).

Подобный вид деятельности обычно выполняется в такой последовательности:

1. Определение действующих лиц.

2. Определение прецедентов.

3. Составление описания каждого прецедента.

4. Описание модели прецедентов в целом (этот этап включает в себя создание словаря предметной области).

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

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

Думаем, здесь все понятно. Таблица с описанием требований может быть, например, такой:

Прецедент

Действующее лицо

разместить меню

секретарь

ознакомиться с меню

сделать заказ

сотрудник, секретарь, офис-менеджер

сформировать счет

офис-менеджер

оплатить счет

офис-менеджер

Здесь нигде не сказано о том, что система должна быть написана на ASP .NET . Почему - понятно: это ведь нефункциональное требование! И еще, очевидно, что секретарь и офис -менеджер тоже являются сотрудниками. Читатель, внимательно прочитавший предыдущие лекции, заподозрит, что в данном случае, создавая модель прецедентов, говоря о действующих лицах, можно бы применить генерализацию. Действительно, диаграмма прецедентов , построенная на основе этой таблицы, может быть, например, такой (рис. 6.3 ):



Рис. 6.3.

Диаграммы прецедентов и их нотация

Что ж, у нас есть пример диаграммы. Итак, какие же элементы мы на ней видим? Первое, что бросается в глаза, - большойпрямоугольник , внутри которого размещаются эллипсы, обозначающие, как мы уже поняли, прецеденты. В верхней части прямоугольника указано название моделируемой системы, а называют его рамками системы (system boundary , subject boundary ),контекстом или просто системой . Этот элемент диаграммы показывает границу между тем, что вы как аналитик показали в виде прецедентов (внутри этих рамок), и тем, что вы изобразили как действующие лица (вне их). Чаще всего таким прямоугольником показывают границы самой моделируемой системы . То есть внутри границы находятся прецеденты - тот функционал, который реализует система (и в этом смысле прецеденты могут рассматриваться как представления подсистем и классов модели), а снаружи - действующие лица : пользователи и другие внешние сущности , взаимодействующие с моделируемой системой.

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

Кроме рамок системы или ее контекста на диаграмме мы видим еще два вида связанных с ней сущностей - это действующие лица (экторы, actors) и прецеденты . Начнем с экторов. Довольно часто в русскоязычной литературе по UML для обозначения действующих лиц можно встретить термин "актер ". В принципе, смысл его более-менее понятен и оригинальному английскому термину он созвучен. Более того, есть еще одна причина такого перевода. Какое слово первым приходит к вам в голову, когда вы слышите слово "актер "? Да, конечно же - слово "роль"! Именно о ролях мы вскоре и поговорим, когда будем пытаться разобраться, что скрывается за понятием "действующее лицо". А пока, да простит нас читатель, далее мы все же будем пользоваться словом "эктор" - транскрипцией оригинального термина. Помнится, мы уже как-то писали о нашем отношении к буквальному переводу терминологии...

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

Возможно, слова "роли, исполняемые пользователем" в определении эктора звучат не очень понятно. Очень забавно это понятие объясняется в Zicom Mentor:

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

Действительно, наденьте шляпу пирата - и вы капитан Джек Воробей, а наденьте цилиндр и вы - Джек-потрошитель! Шутка... "Физический" пользователь может играть роль одного или даже нескольких экторов, выполняя их функции в ходе взаимодействия с системой. И наоборот, роль одного и того же эктора может выполняться несколькими пользователями.

На диаграммах UML экторы изображаются в виде стилизованных человечков, ведь, как вы, конечно, помните, идея была в создании нотации, любой символ которой легко может быть изображен от руки (рис. 6.4 ):


Рис. 6.4.

Несмотря на "человеческий" вид этого обозначения, не следует забывать, что экторы - это не обязательно люди. Эктором, как мы уже говорили ранее, может быть внешняя система, подсистема, класс и т. д. Кстати, человечек ("stick-person" ) - это не единственное обозначение эктора, используемое в UML . На диаграммах прецедентов обычно применяется именно "человекоподобная" форма эктора, но на других диаграммах, и особенно в случаях, когда эктор имеет атрибуты , которые важно показать, используется изображение эктора как класса со стереотипом <> (рис. 6.5 ):


Рис. 6.5.

С системой экторы, как мы уже сказали, общаются через сообщения, но если говорить на более высоком уровне абстракции, в терминах модели прецедентов, то взаимодействуют они с системой через прецеденты. Один и тот же эктор может быть связан с несколькими прецедентами, и наоборот, один прецедент может быть связан с несколькими разными экторами. Ассоциации между эктором и прецедентом всегда бинарные - т. е. представляют отношения типа "один к одному", использование кратности недопустимо. Это не противоречит сказанному выше: действительно, один эктор может быть связан с несколькими прецедентами, но только с помощью отдельных ассоциаций - по одной на каждый прецедент . Мы видели это в нашем примере. Кстати, там мы видели ассоциации, изображенные не просто в виде линий, а стрелками. Думаем, смысл этого обозначения вполне понятен: этонаправленная ассоциация и стрелка (как и на других диаграммах) всегда направлена в сторону той сущности, от которой что-то требуют, чьим сервисом пользуются и т. д.

И еще - экторы не могут быть связаны друг с другом. Единственное допустимое отношение между экторами - генерализация (наследование ). Опять-таки, в нашем примере с заказом обедов в офис , вы могли увидеть именно такой вид отношений между экторами. Это не значит, что в реальной жизни офис -менеджер и секретарь (да и вообще любые два сотрудника) не могут общаться: просто при создании модели прецедентов такое общение не попадает в область наших интересов, считается несущественным.

Еще один тип элементов, встречающийся на диаграммах прецедентов, более того, давший им название, - это собственнопрецеденты , или варианты использования. Прецедент - это описание набора последовательных событий (включая возможные варианты), выполняемых системой, которые приводят к наблюдаемому эктором результату. Прецеденты описывают сервисы, предоставляемые системой экторам, с которыми она взаимодействует. Причем прецедент никогда не объясняет, "как" работает сервис, а только описывает, "что" делается.

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



Рис. 6.6.

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

Внимательный читатель, возможно, отметил то, как незаметно мы ввели в употребление слово " сценарий ". Что же такоесценарий и как понятие сценария связано с понятием прецедента? На первый вопрос хорошо отвечают классики (Г. Буч):

Сценарий - это конкретная последовательность действий, иллюстрирующая поведение.

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

Сценарии также иногда можно увидеть на диаграмме прецедентов. Иногда их изображают в виде " листа бумаги ", на котором написано имя файла , - прямоугольника с загнутым нижним левым уголком. В этом случае указанный файл содержит в себе описание данного сценария. А иногда сценарий записывается в комментарий. Как вы, наверное, помните, комментарии (ноутсы, notes) изображаются прямоугольниками с загнутым верхним правым углом и соединяются с элементом, который они поясняют, пунктирной линией (рис. 6.7 ).



Рис. 6.7.

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

Вот пример простого (неформализованного) текстового описания сценария.

Пользователь вводит логин, пароль, адрес электронной почты и код подтверждения и нажимает кнопку "Далее". Система запрашивает ввод проверочного кода. Пользователь вводит код и нажимает кнопку "Далее". Система проверяет соответствие кода изображенному на картинке .

Не правда ли, знакомая процедура? Да, это описание регистрации пользователя на некотором сайте. Правда, не совсем полное: не рассмотрены случаи, когда выбранный пользователем логин уже занят, адрес электронной почты введен неправильно, пароль не удовлетворяет требованиям или код не соответствует изображенному на картинке. О таких случаях - альтернативных сценариях - мы поговорим чуть позже.

А вот тот же сценарий в табличном представлении:

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

А пока попробуем ответить на второй вопрос, а именно: как связаны понятия сценария и прецедента . Прецеденты, как мы уже говорили, рождаются из требований к системе. Но говорят они о том, что делает система. Как система это делает, говорят сценарии. Таким образом, прецедент можно специфицировать путем описания потока действий или событий в текстовой форме - в виде, понятном для "постороннего" (не занятого в непосредственной разработке системы) читателя. А ведь такое описание - это и есть сценарий ! Таким образом, сценарии специфицируют прецеденты . И еще. Поскольку сценарии - это, по сути, рассказы, они являются весьма эффективным средством извлечения информации из бесед с заказчиком и предоставляют превосходное, понятное непрофессионалу описание создаваемого приложения. Сценарии, да и вообще диаграммы прецедентов (дополненные сценариями) являются отличным средством общения между разработчиками и заказчиком , причем, в силу простоты нотации, - средством, понятным обеим сторонам. В конечном итоге, взаимосвязь между требованиями, прецедентами и сценариями можно изобразить такой "псевдодиаграммой" (рис. 6.8 ).



Рис. 6.8.

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

Другой вопрос: требуется ли такое уточнение модели прецедентов, оправдано ли оно для данного уровня приближения, или "подразумевающиеся" альтернативные сценарии можно опустить? Например, в предыдущем примере с покупкой билета в сервисной кассе мы не изобразили сценарии (и, соответственно, прецеденты), соответствующие вариантам, когда билетов на выбранный пассажиром рейс уже не осталось, пассажир изменил свое решение и хочет взять билет на другой рейс, когда оплата идет наличными или по кредитной карте и т. д.

"Хватит ходить вокруг да около!" - воскликнет нетерпеливый читатель. Уже заканчиваем. Мы просто хотели мягко подвести читателя к вопросу об отношениях между прецедентами. А отношения эти весьма многообразны. Начнем со старого знакомого - отношения обобщения (наследования, генерализации). О генерализации мы уже говорили не раз, когда рассматривали диаграммы классов . Но все же напомним суть этого понятия. Как говорят классики, обобщение - это отношение специализации (обобщения), в котором объекты специализированного элемента (потомка) могут быть подставлены вместо объектов обобщенного элемента (родителя, или предка).

Точно так же, как мы обычно поступаем с классами, после того как мы выделили и описали каждый прецедент , мы должны просмотреть их все на предмет наличия одинаковых действий - поискать, а не выполняются ли (используются) некоторые действия совместно несколькими вариантами использования. Этот совместно используемый фрагмент лучше описать в отдельном прецеденте. Таким образом мы уменьшим избыточность модели за счет применения обобщения прецедентов (иногда, правда, говорят не об обобщении, а об использовании прецедентов; почему - сейчас поймете). Как это и "положено" при наследовании, экземпляры обобщенных прецедентов (потомков) сохраняют поведение, присущее обобщающему прецеденту (предку). Другими словами, наличие (использование) в варианте использования X обобщенного варианта использования Y говорит нам о том, что экземпляр прецедента X включает в себя поведение прецедента Y . Обобщения применяются, чтобы упростить понимание модели вариантов использования за счет многократного задействования "заготовок" прецедентов для создания прецедентов, необходимых заказчику (помните, как мы рассматривали вопрос о том, всегда ли необходимо создавать новый класс , или лучше воспользоваться готовым решением, чувствуете аналогию?). Такие "полные" прецеденты называются конкретными прецедентами . "Заготовки" прецедентов, созданные лишь для многократного использования в других прецедентах, называют абстрактными прецедентами. Абстрактный прецедент (как и абстрактный класс ) не существует сам по себе, но экземпляр конкретного прецедента демонстрирует поведение, описываемое абстрактными прецедентами, которые он (повторно) использует. Прецедент , который экторы наблюдают при взаимодействии с системой ("полный" прецедент , как мы называли его ранее), часто называют еще " реальным " прецедентом.

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

Изображается обобщение , как, конечно, помнит внимательный читатель, линией с "незакрашенной" треугольной стрелкой на конце. Обобщение - это отношение между предком и потомком, и стрелка всегда указывает на предка. Если вспомнить, что потомки наследуют (используют) свойства предка, то вполне логично вспоминается наше утверждение о том, что стрелки в UML всегда направлены в сторону того, от кого что-то требуют, чьими сервисами пользуются (рис. 6.9 ):



Рис. 6.9.

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

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

А как же изображается включение? Да очень просто - как зависимость (пунктирная линия со стрелкой, помните?) со стереотипом <> . При этом стрелка направлена, естественно, в сторону включаемого прецедента. Этот факт легко объяснить, если вспомнить утверждение, которое мы уже несколько раз использовали в этом курсе: стрелка всегда направлена в сторону того элемента, от которого что-то требуется, чьими сервисами пользуются. А если считать, что объемлющий прецедент включает в себя, заимствует (использует) поведение включаемых прецедентов, становится ясно, что стрелка может быть направлена только таким образом. А вот и диаграмма , иллюстрирующая вышесказанное, которую мы позаимствовали из Zicom Mentor (рис. 6.10 ):


увеличить изображение
Рис. 6.10.

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

На очереди - отношение расширения . Чтобы уяснить себе смысл расширения, представим себе, что мы говорим об оплате некоторого купленного нами товара. Мы можем оплатить товар наличными, если сумма не превышает $ 100. Или оплатить кредитной картой, если сумма находится в пределах от $ 100 до $ 1000. Если же сумма превышает $ 1000, нам придется братькредит . Таким образом мы расширили понимание операции оплаты купленного товара и на случаи, когда используются другие средства оплаты, нежели наличные. Но сами эти случаи возникают только при строго определенных условиях: когда цена товара попадает в определенные рамки.

Расширение дополняет прецедент другими прецедентами, "срабатывающими" при некоторых условиях, - просто добавляет в исходный прецедент последовательность действий, содержащуюся в другом прецеденте. Отношение расширения прецедента А к прецеденту В означает, что экземпляр прецедента В может включать в себя (при определенных условиях, которые могут быть описаны в расширении; как именно описаны, мы скажем чуть позже) поведение, описанное в прецеденте А. Пример показан на следующей диаграмме (рис. 6.11 ):



Рис. 6.11.

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

Точка расширения описывается в дополнительном разделе прецедента, отделенном от его названия горизонтальной линией - точно так же, как в отдельных разделах перечисляются атрибуты класса и его операции . Ниже показан пример описания точки расширения, позаимствованный нами из Zicom Mentor (рис. 6.12 ).



Рис. 6.12.

В этом примере регистрация пассажиров авиарейса включает в себя контроль службы безопасности, а при условии (указанном в примечании после служебного слова "Condition :"), что человек часто летает и салон переполнен (обратите внимание на операторAND , говорящий об одновременности выполнения условий), класс билета может быть повышен, например, с "эконом" до "бизнес-класса". Причем такой апгрейд может произойти только после того, как билет предъявлен на стойку регистрации - это и есть точка расширения. Она описана (ее имя указано) в дополнительном разделе прецедента после служебной фразы "Extension points:". Предваряя вопрос читателя, скажем, что прецедент может иметь сколь угодно много точек расширения. А сопоставить конкретный расширяющий прецедент с определенной точкой расширения можно, прочитав условия расширения, указанные в комментариях, - само условие записывается после служебного слова "Condition :" в фигурных скобках, за которыми идет служебная фраза "Extension point :", и после нее указывается имя точки расширения. Посмотрите еще раз на наш пример с регистрацией пассажиров в аэропорту и убедитесь сами, что все это очень просто!

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

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

Организация прецедентов с помощью выделения общего поведения (включение) и различных вариантов поведения (расширение) - важная составляющая часть процесса разработки простого, сбалансированного и понятного набора прецедентов. Можно сказать даже, что использование включения и расширения - признак хорошего стиля в моделировании прецедентов.

На этом разговор о нотации диаграмм прецедентов можно было бы и завершить. Хотелось бы только сказать еще пару слов о соотношении между понятиями прецедента и кооперации . О кооперации мы уже говорили ранее (помните диаграммы взаимодействия ?) как о множестве ролей, работающих вместе, чтобы обеспечить некоторое поведение системы. Мы также упоминали о том, что прецеденты отвечают на вопрос "что делает система?", но не говорят, как именно она это делает. На этапе анализа понимать, как именно система реализует свое поведение, действительно не нужно. Но при переходе к реализации неплохо бы знать, какие именно классы (или другие элементы модели), совместно работая, обеспечивают нужное поведение . То есть мы логично перешли от разговора о прецедентах к разговору о кооперации! Недаром обозначения кооперации и прецедента очень похожи (читатель, конечно, помнит, что кооперация обозначается пунктирным эллипсом) (рис. 6.13 ).


Рис. 6.13.

Так в каком же отношении находятся прецедент и кооперация ? Из предыдущего абзаца логично следует, что это отношение реализации. Каждый прецедент реализуется одной или несколькими кооперациями. Это, конечно, не означает, что классы жестко распределены по кооперациям: классы, принимающие участие в кооперации, реализующей определенный прецедент , будут участвовать и в других кооперациях.

Моделирование при помощи диаграмм прецедентов

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

Итак, подводя итоги, мы можем сформулировать три причины использования прецедентов. Или, вернее, три способа использования прецедентов (не случайно в русском переводе частенько можно встретить словосочетание "вариант использования "!) в ходе работы над системой:

· Прецеденты дают возможность аналитикам, пользователям и разработчикам говорить на одном языке : используя прецеденты, аналитики (эксперты в предметной области) могут на основе пожеланий заказчика описать поведение системы с точки зрения пользователя с такой степенью детализации, что разработчики смогут без труда сконструировать "внутренности" системы. В то же время, нотация диаграмм прецедентов настолько проста, что даже неподготовленный пользователь (заказчик) способен понять их смысл и помочь в их уточнении - ведь картинки (а тем более комиксы, каковыми, по сути, являются диаграммы UML) воспринимаются намного легче, чем текст!

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

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

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

· С целью поиска ошибок и чтобы убедиться в адекватности дизайна :

отличная идея после первого перевода с UML на язык программирования сделать обратный перевод и сравнить исходные и восстановленные UML-модели (желательно, чтобы эти переводы выполнялись разными командами). Это позволит убедиться в том, что дизайн системы соответствует модели, никакая информация в ходе перевода не была утеряна, да и попросту выловить некоторые "баги". Такой подход называется обратной семантической трассировкой (или RST - Reverse SemanticTraceability ) и разрабатывается компанией INTSPEI ( http://www.intspei.com ) как одна из базовых техник методологии INTSPEI P-Modeling Framework, краткие сведения о которой вы можете найти в приложении к этому курсу.

· Когда отсутствует документация : иногда стоит задача модификации существующей системы, код которой плохо документирован. В таком случае перевод с языка программирования на язык UML-диаграмм - отличный способ понять назначение системы и ее частей, функционал, предоставляемый ею, и т. д.

И наконец, следует отметить, что, конечно, только диаграмм прецедентов, как и сценариев, ими определяемых, недостаточно, чтобы создать модель поведения системы. Как мы уже не раз упоминали, прецеденты говорят, что делает система, но не говорят, как. Об этом говорят сценарии, но в текстовой форме, что делает их довольно сложными для восприятия. На помощь приходят диаграммы взаимодействий, которые визуализируют сценарии . Таким образом, мы теперь можем дополнить нашу старую "псевдодиаграмму" и на этом успокоиться (рис. 6.14 ):



Рис. 6.14.

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


Рис. 6.16.

Вторая диаграмма , тоже неплохо оформленная, говорит нам о том, что утки очень не любят платить за пиво, предпочитая пить в долг (рис. 6.17 ).



Рис. 6.17.

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

И наконец, третья картинка, которая не является хорошим примером диаграммы прецедентов , но просто забавна. Это рассказ о способах поведения, позволяющих гарантированно (!) провалить любой экзамен (рис. 6.18 ):



Рис. 6.18.

Выводы

· Модель прецедентов позволяет описать систему на концептуальном уровне.

· Диаграммы прецедентов - отличное средство коммуникаций между экспертами, пользователями и разработчиками, а также основа для тестирования создаваемой системы.

· Прецедент - это описание набора последовательных событий (включая возможные варианты), выполняемых системой, которые приводят к наблюдаемому эктором результату.

· Эктор - это набор ролей, которые исполняет пользователь в ходе взаимодействия с некоторой сущностью.

· Прецеденты (как и экторы) могут быть генерализованы, т. е. наследовать и дополнять свойства своих предков.

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

· Каждый прецедент реализуется одной или несколькими кооперациями.

· Сценарии специфицируют прецеденты, а диаграммы взаимодействий визуализируют сценарии.

Контрольные вопросы

· Что такое нефункциональные требования? Как они отображаются на диаграммах прецедентов?

· Какие способы изображения экторов вы знаете?

· В какие отношения могут вступать экторы между собой?

· В чем состоит смысл отношений включения и расширения?

· Что такое точка расширения?

· Перечислите известные вам причины использования прецедентов.

· Как прецеденты применяют в прямом и обратном проектировании?


Аннотация: Предметом этого курса является The UML - унифицированный язык моделирования. В предыдущей лекции было рассказано о том, что же такое UML, о его истории, назначении, способах использования языка, структуре его определения, терминологии и нотации. Было отмечено, что модель UML - это набор диаграмм. В этой лекции мы рассмотрим такие вопросы: почему нужно несколько видов диаграмм; виды диаграмм; ООП и последовательность построения диаграмм

Прежде чем перейти к обсуждению основного материала этой лекции, давайте поговорим о том, зачем вообще строить какие-то диаграммы. Разработка модели любой системы (не только программной) всегда предшествует ее созданию или обновлению. Это необходимо хотя бы для того, чтобы яснее представить себе решаемую задачу. Продуманные модели очень важны и для взаимодействия внутри команды разработчиков, и для взаимопонимания с заказчиком. В конце концов, это позволяет убедиться в "архитектурной согласованности" проекта до того, как он будет реализован в коде.

Мы строим модели сложных систем, потому что не можем описать их полностью, "окинуть одним взглядом". Поэтому мы выделяем лишь существенные для конкретной задачи свойства системы и строим ее модель, отображающую эти свойства. Метод объектно-ориентированного анализа позволяет описывать реальные сложные системы наиболее адекватным образом. Но с увеличением сложности систем возникает потребность в хорошей технологии моделирования. Как мы уже говорили в предыдущей лекции, в качестве такой "стандартной" технологии используется унифицированный язык моделирования ( Unified Modeling Language , UML ), который является графическим языком для спецификации, визуализации, проектирования и документирования систем. С помощью UML можно разработать подробную модель создаваемой системы, отображающую не только ее концепцию, но и конкретные особенности реализации. В рамках UML -модели все представления о системе фиксируются в виде специальных графических конструкций, получивших название диаграмм.

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

Почему нужно несколько видов диаграмм

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

Система - совокупность взаимосвязанных управляемых подсистем, объединенных общей целью функционирования.

Да, не слишком информативно. А что же такое тогда подсистема? Чтобы прояснить ситуацию, обратимся к классикам:

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

Что ж, ничего не попишешь, придется искать определение подсистемы. Там же сказано, что подсистема - это совокупность элементов, часть из которых задает спецификацию поведения других элементов. Ян Соммервилл объясняет это понятие таким образом:

Подсистема - это система, функционирование которой не зависит от сервисов других подсистем. Программная система структурируется в виде совокупности относительно независимых подсистем. Также определяются взаимодействия между подсистемами.

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

С понятием системы разобрались. В процессе проектирования система рассматривается с разных точек зрения с помощью моделей, различные представления которых предстают в форме диаграмм. Опять-таки у читателя могут возникнуть вопросы о смысле понятий модели и диаграммы . Думаем, красивое, но не слишком понятное определение модели как семантически замкнутой абстракции системы вряд ли прояснит ситуацию, поэтому попробуем объяснить "своими словами".

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

Приведем несколько примеров. Знакомые всем нам пластмассовые игрушечные автомобильчики, которыми мы с таким азартом играли в детстве, это не что иное, как материальная искусственная декоративная модель реального автомобиля. Конечно, в таком "авто" нет двигателя, мы не заполняем его бак бензином, в нем не работает (более того, вообще отсутствует) коробка передач, но как модель эта игрушка свои функции вполне выполняет: она дает ребенку представление об автомобиле, поскольку отображает его характерные черты - наличие четырех колес, кузова, дверей, окон, способность ехать и т. д.

В ходе медицинских исследований опыты на животных часто предшествуют клиническим испытаниям медицинских препаратов на людях. В таком случае животное выступает в роли материальной естественной модели человека.

Уравнение, изображенное выше - тоже модель, но это модель математическая, и описывает она движение материальной точки под действием силы тяжести.

Осталось лишь сказать, что такое диаграмма . Диаграмма - это графическое представление множества элементов. Обычно изображается в виде графа с вершинами (сущностями) и ребрами (отношениями). Примеров диаграмм можно привести множество. Это и знакомая нам всем со школьных лет блок-схема , и схемы монтажа различного оборудования, которые мы можем видеть в руководствах пользователя, и дерево файлов и каталогов на диске, которое мы можем увидеть, выполнив в консоли Windows команду tree , и многое-многое другое. В повседневной жизни диаграммы окружают нас со всех сторон, ведь рисунок воспринимается нами легче, чем текст...

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

Несмотря на то что в предыдущем абзаце мы весьма вольготно обошлись с понятием модели, следует понимать, что в контексте приведенных выше определений ни одна отдельная диаграмма не является моделью . Диаграммы - лишь средство визуализации модели, и эти два понятия следует различать. Лишь набор диаграмм составляет модель системы и наиболее полно ее описывает, но не одна диаграмма , вырванная из контекста.

Виды диаграмм

UML 1.5 определял двенадцать типов диаграмм , разделенных на три группы:

  • четыре типа диаграмм представляют статическую структуру приложения;
  • пять представляют поведенческие аспекты системы;
  • три представляют физические аспекты функционирования системы (диаграммы реализации).

Текущая версия UML 2.1 внесла не слишком много изменений. Диаграммы слегка изменились внешне (появились фреймы и другие визуальные улучшения), немного усовершенствовалась нотация , некоторые диаграммы получили новые наименования.

Впрочем, точное число канонических диаграмм для нас абсолютно неважно, так как мы рассмотрим не все из них, а лишь некоторые - по той причине, что количество типов диаграмм для конкретной модели конкретного приложения не является строго фиксированным. Для простых приложений нет необходимости строить все без исключения диаграммы. Например, для локального приложения не обязательно строить диаграмму развертывания. Важно понимать, что перечень диаграмм зависит от специфики разрабатываемого проекта и определяется самим разработчиком. Если же любопытный читатель все-таки пожелает узнать обо всех диаграммах UML , мы отошлем его к стандарту UML (http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML). Напомним, что цель этого курса - не описать абсолютно все возможности UML , а лишь познакомить с этим языком, дать первоначальное представление об этой технологии.

Итак, мы кратко рассмотрим такие виды диаграмм, как:

  • диаграмма прецедентов ;
  • диаграмма классов;
  • диаграмма объектов ;
  • диаграмма последовательностей;
  • диаграмма взаимодействия;
  • диаграмма состояний;
  • диаграмма активности ;
  • диаграмма развертывания .

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

Диаграмма прецедентов (use case diagram)

Любые (в том числе и программные) системы проектируются с учетом того, что в процессе своей работы они будут использоваться людьми и/или взаимодействовать с другими системами. Сущности, с которыми взаимодействует система в процессе своей работы, называются экторами , причем каждый эктор ожидает, что система будет вести себя строго определенным, предсказуемым образом. Попробуем дать более строгое определение эктора. Для этого воспользуемся замечательным визуальным словарем по UML Zicom Mentor :

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

Графически эктор изображается либо " человечком ", подобным тем, которые мы рисовали в детстве, изображая членов своей семьи, либо символом класса с соответствующим стереотипом , как показано на рисунке. Обе формы представления имеют один и тот же смысл и могут использоваться в диаграммах. "Стереотипированная" форма чаще применяется для представления системных экторов или в случаях, когда эктор имеет свойства и их нужно отобразить (рис. 2.1).

Внимательный читатель сразу же может задать вопрос: а почему эктор, а не актер ? Согласны, слово "эктор" немного режет слух русского человека. Причина же, почему мы говорим именно так, проста - эктор образовано от слова action , что в переводе означает действие . Дословный же перевод слова "эктор" - действующее лицо - слишком длинный и неудобный для употребления. Поэтому мы будем и далее говорить именно так.


Рис. 2.1.

Тот же внимательный читатель мог заметить промелькнувшее в определении эктора слово "прецедент". Что же это такое? Этот вопрос заинтересует нас еще больше, если вспомнить, что сейчас мы говорим о диаграмме прецедентов . Итак,

Прецедент (use-case) - описание отдельного аспекта поведения системы с точки зрения пользователя (Буч).

Определение вполне понятное и исчерпывающее, но его можно еще немного уточнить, воспользовавшись тем же Zicom Mentor "ом:

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

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

  • формирование общих требований к поведению проектируемой системы;
  • разработка концептуальной модели системы для ее последующей детализации;
  • подготовка документации для взаимодействия с заказчиками и пользователями системы.