Задание

В рамках выполнения практической части курса вами будет разработан сквозной пример: приложение «Настольный теннис» (ИС для автоматизации учета результатов игр в настольный теннис).

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

Общее описание предметной области

Есть список игроков, которые играют в настольный теннис. В каждом матче участвует два игрока. Каждый матч состоит из одной или нескольких партий. Каждая партия играется до 11 или до 21 очка у одного из игроков, либо, при игре на больше-меньше, до 12 или 22 очков соответственно. В рамках одного матча все партии должны играться до одинакового количества очков. Каждый матч проводится в определенную дату/время. Матчи между игроками могут планироваться заранее.

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

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

Технические требования:

  • Приложение реализуется в виде ASP.NET WebForms-приложения.
  • Данные хранятся в БД MSSQL Server.

Практическое задание №1 - Серверная разработка (C#, .NET, ASP.NET)

Для реализации потребуется:

  • Microsoft Visual Studio 2015
  • Git for Windows

Задание. Часть 1.

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

Реализацию следует сделать в виде .net-библиотеки и подготовить модульные тесты для неё, продемонстрировать процент покрытия кода модульными тестами (чем больше, тем лучше).

Задание. Часть 2.

Реализовать простое ASP.NET WebForms-приложение (на данном этапе без БД), которое содержит компоненты (ascx-контролы), реализующие логику ввода рейтингов двух участников и коэффициента пересчета рейтинга и подсчета новых рейтингов (поля для ввода значений, кнопка, блок с отображением результатов).

Предоставление результатов выполнения работы на проверку

Реализованное решение (Visual Studio Solution) полностью разместить в репозитории на GitHub (решение должно компилироваться и запускаться). Ссылку на репозиторий предоставить преподавателям курса.

Практическое задание №2 - Клиентская разработка (HTML, CSS, JS, jQuery)

Для реализации потребуется:

  • Редактор кода для клиентской разработки: Visual Studio Code, Atom, Sublime Text и т.п.
  • Git for Windows

Задание

С использованием возможностей HTML, CSS, JS, jQuery сверстать форму, на которой можно вводить результаты матча. Должно быть возможно ввести счет по партиям и счет в каждой партии. На форме должен быть также блок для ввода игроков, даты матча, длины партий и количества побед по партиям, до которых играется матч. Должны контролироваться бизнес-правила, касающиеся возможного счета в партии. Для выставления счета в партиях необходимо предоставить возможность выбирать количество набранных очков в красиво всплывающем списке.

Предоставление результатов

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

Практическое задание №3 - Базы данных

Для реализации потребуется:

  • Microsoft SQL Server
  • Microsoft SQL Server Management Studio
  • Git for Windows

Задание

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

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

  1. Текущий рейтинг игроков в порядке убывания
  2. Последние N изменений рейтинга игрока
  3. Последние N матчей игрока
  4. Последние N личных встреч между двумя игроками
  5. Итоговая таблица турнира
  6. Все матчи турнира в хронологическом порядке

Предоставление результатов

Реализованные скрипты создания БД и заполнения, бекап БД закоммитить в GitHub-репозиторий. Ссылку на репозиторий предоставить преподавателям курса.

Практическое задание №4 - Проектирование ИС

Для реализации потребуется:

  • Flexberry Designer

Задание

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

Предоставление результатов

Результатом работы является выгруженная в формате CRP стадия из Flexberry Designer. Стадию (файл с расширением *.CRP) следует закоммитить в репозиторий на GitHub, ссылку предоставить преподавателям курса.

Практическое задание №5 - Объектный дизайн и генерация приложений

Для реализации потребуется:

  • Flexberry Designer
  • Microsoft Visual Studio 2015
  • Microsoft SQL Server
  • Git for Windows

Задание

Выполнить объектный дизайн и генерацию ASP.NET-приложения для описанной предметной области. В качестве основы использовать реализованные ранее UML-модели. Генерация приложения и БД должна быть выполнена средствами Flexberry Designer приложение должно соответствовать требованиям и быть полностью работоспособным. Представления должны быть качественно настроены, подписи к классам и атрибутам на формах должны быть адекватными. Перечень форм и атрибутивный состав должны соответствовать предметной области и покрывать все требуемые бизнес-функции.

Предоставление результатов

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

Практическое задание №6 - Разработка бизнес-логики приложений

Для реализации потребуется:

  • Flexberry Designer
  • Microsoft Visual Studio 2015
  • Microsoft SQL Server
  • Git for Windows

Задание

В сгенерированном при помощи Flexberry Designer приложении требуется реализовать следующую бизнес-логику.

  1. Реализовать бизнес-сервер, который будет контролировать корректность длины партий и счета в партии в рамках одного матча
  2. Реализовать бизнес-сервер, который будет контролировать невозможность создания в рамках турнира матча с датой, выходящей за пределы сроков турнира
  3. Реализовать бизнес-сервер, который будет использовать .net библиотеку для пересчета рейтингов сыгравших игроков
  4. Добавить не хранимое поле в класс турнира, которое будет содержать имя победителя.

Предоставление результатов

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

Практическое задание №7 - Разработка UI-логики приложения

Для реализации потребуется:

  • Microsoft Visual Studio 2015
  • Microsoft SQL Server
  • Редактор кода для клиентской разработки: Visual Studio Code, Atom, Sublime Text и т.п.
  • Git for Windows

Задание

Привязать реализованные ранее ascx-компоненты к данным из БД.

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

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

Реализовать дополнительные формы, которые будут выводить результаты выполнения запросов из задания по БД.

Предоставление результатов

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

Практическое задание №8 - Функциональные подсистемы Flexberry

Для реализации потребуется:

  • Flexberry Designer
  • Microsoft Visual Studio 2015
  • Microsoft SQL Server
  • Git for Windows

Задание

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

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

Предоставление результатов

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