Задание
В рамках выполнения практической части курса вами будет разработан сквозной пример: приложение «Спортшкола».
Первая часть практического задания будет посвящена освоению базовых технологий, таких как C#, базы данных, клиентские технологии и т.п., вторая часть будет включать изучение возможностей платформы Flexberry для эффективного создания приложений.
Общее описание предметной области
Требуется создать приложение для спортивных школ. Данное приложение должно покрывать потребность в фиксации информации о спортсменах, их тренировках и участие в соревнованиях.
Известно, что спортсмены, в рамках секции, организованы в возрастные группы. Каждый спортсмен должен посещать тренировки и соревнования в течении спортивного года.
Предусмотреть в приложении возможность составлять план тренировки. Тренировка состоит из набора упражнений, каждое упражнение выполняется в заданной пульсовой зоне, имеет свою продолжительность, количество повторений и средний пульс. Результаты тренировок и соревнований фиксируются для каждого спортсмена отдельно. Пульсовая зона характеризуется минимальным и максимальным значением, а так же баллом (целое число от 20 до 140).
Информация об этой деятельности фиксируется в приложении.
Технические требования:
- Приложение реализуется в виде SPA-приложения с бакендом на C# и фронтендом на EmberJS.
- Данные хранятся в БД Postgres.
Практическое задание №1 - Серверная разработка (C#, .NET, ASP.NET)
Для реализации потребуется:
- Microsoft Visual Studio 2017
- Git for Windows
Задание
Требуется реализовать алгоритм расчёта нагрузки спортсмена за время тренировки, исходя из времени нахождения спортсмена в пульсовой зоне. Каждая зона имеет свой балл (ед./час): 1 – 20, 2 – 30, 3 – 40, 4-50, 5-60, 6-70, 7-80, 8-100, 9-120, 10-140. Алгоритм формирования нагрузки следующий: время нахождения в зоне * балл соответствующей зоны. Например, за время тренировки спортсмен находился в зоне 1 12 минут и 30 секунд, в зоне 2 30 минут, в зоне 3 5 минут 18 секунд. Определим полученную им нагрузку следующим образом: (30/60+12)/60*40 + 30/60*60 + (18/60+5)/60*80 = 8,3+30+7=45,3 ед./час.
Реализацию следует сделать в виде .net-библиотеки и подготовить модульные тесты для неё, продемонстрировать процент покрытия кода модульными тестами (чем больше, тем лучше).
Предоставление результатов выполнения работы на проверку
Реализованное решение (Visual Studio Solution) полностью разместить в репозитории на GitHub (решение должно компилироваться и запускаться). Ссылку на репозиторий предоставить преподавателям курса.
Практическое задание №2 - Клиентская разработка (HTML, CSS, JS, jQuery)
Для реализации потребуется:
- Редактор кода для клиентской разработки: Visual Studio Code
- Git for Windows
Задание
С использованием возможностей HTML, CSS, JS, jQuery сверстать форму тренировки. На форме должны отображаться следующие поля:
- ФИО, дата рождения и группа спортсмена.
- Дата тренировки, плановая и фактическая нагрузка
- Список упражнений:
- Название
- Время выполнения в формате ЧЧ:ММ:СС
- Средний пульс
- Нагрузка (рассчитывается на клиенте, исходя из среднего пульса, времени выполнения и балла пульсовой зоны упражнения)
Количество записей в списке по упражнению, равно количеству повторов упражнения.
Должна быть возможность добавлять, удалять и перемещать упражнения между собой.
На форме также должен быть блок с суммарной информацией о тренировке:
- Количество упражнений
- Продолжительность выполнения
- Средний пульс
- Суммарная нагрузка (фактическая).
Реализовать контроль вводимых значений.
Рассчитывать на клиенте значения блока с суммарной информацией, а также:
- Возраст
- Фактическая нагрузка
- Нагрузка в упражнении
Предоставление результатов
Реализованный проект разместить в репозитории на GitHub в виде встроенных страниц GitHub Pages, позволяющих просматривать готовый результат. Ссылку на репозиторий и опубликованный таким образом проект предоставить преподавателям курса.
Практическое задание №3 - Клиентская разработка с использованием SPA-фреймфорка (EmberJS)
Для реализации потребуется:
- Редактор кода для клиентской разработки: Visual Studio Code
- Git for Windows
Задание
Требуется реализовать EmberJS приложение, в котором будет реализована форма тренировки. На форме должны отображаться следующие поля:
- ФИО, дата рождения и группа спортсмена.
- Дата тренировки, плановая и фактическая нагрузка
- Список упражнений:
- Название
- Время выполнения в формате ЧЧ:ММ:СС
- Средний пульс
- Нагрузка (рассчитывается на клиенте, исходя из среднего пульса, времени выполнения и балла пульсовой зоны упражнения)
Количество записей в списке по упражнению, равно количеству повторов упражнения.
Должна быть возможность добавлять, удалять и перемещать упражнения между собой.
На форме также должен быть блок с суммарной информацией о тренировке:
- Количество упражнений
- Продолжительность выполнения
- Средний пульс
- Суммарная нагрузка (фактическая).
Реализовать контроль вводимых значений.
Рассчитывать на клиенте значения блока с суммарной информацией, а также:
- Возраст
- Фактическая нагрузка
- Нагрузка в упражнении
В виде EmberJS-утилиты требуется реализовать алгоритм расчёта нагрузки спортсмена за время тренировки, исходя из времени нахождения спортсмена в пульсовой зоне. Каждая зона имеет свой балл (ед./час): 1 – 20, 2 – 30, 3 – 40, 4-50, 5-60, 6-70, 7-80, 8-100, 9-120, 10-140. Алгоритм формирования нагрузки следующий: время нахождения в зоне * балл соответствующей зоны. Например, за время тренировки спортсмен находился в зоне 1 12 минут и 30 секунд, в зоне 2 30 минут, в зоне 3 5 минут 18 секунд. Определим полученную им нагрузку следующим образом: (30/60+12)/60*40 + 30/60*60 + (18/60+5)/60*80 = 8,3+30+7=45,3 ед./час.
Разработать в виде Ember-компонента элементы управления, реализующие:
- Поиск спортсмена по ФИО и коду группы.
- Ввод данных о времени нахождения спортсмена в пульсовых зонах и использование библиотеки из предыдущего пункта для выдачи информации о полученной нагрузке (поля для ввода значений по каждой зоне, кнопка, блок с отображением результатов), для расчёта подключить разработанную EmberJS-утилиту.
Предоставление результатов
Реализованный проект разместить в репозитории на GitHub в виде проекта EmberJS и опубликованного приложения в GitHub Pages, которые позволяют просматривать готовый результат. Ссылку на репозиторий и опубликованный таким образом проект предоставить преподавателям курса.
Практическое задание №4 - Базы данных
Для реализации потребуется:
- Postgres
- pgAdmin
- Git for Windows
Задание
Для указанной предметной области реализовать базу данных, заполнить базу скриптами (минимум по 5 записей на таблицу). Реализовать скрипты по созданию констрейнтов, индексов. Приложить скрипты создания БД и заполнения, бакап БД.
Подготовить SQL-скрипты для получения следующей информации:
- Вывести список групп с количеством спортсменов, а также минимальный и максимальный возраст в группе.
- Вывести количество посещённых и пропущенных тренировок спортсменом.
- Вывести суммарную информацию о тренировках спортсменов за последние 3 недели: дата тренировки, количество упражнений, продолжительность тренировки, фактическая нагрузка, средний пульс.
- Вывести рейтинг спортсменов по нагрузке за тренировку.
- Получить среднюю нагрузку для каждого спортсмена за последние 2 недели, по дням недели.
Предоставление результатов
Реализованные скрипты закоммитить в GitHub-репозиторий. Ссылку на репозиторий предоставить преподавателям курса.
Практическое задание №5 - Проектирование ИС
Для реализации потребуется:
- Flexberry Designer
Задание
Нарисовать UML-диаграммы для обозначенной предметной области. Состав диаграмм определяется самим слушателем курсов, но должен обеспечивать полноценное описание предметной области.
Предоставление результатов
Результатом работы является выгруженная в формате CRP стадия из Flexberry Designer. Стадию (файл с расширением *.CRP) следует закоммитить в репозиторий на GitHub, ссылку предоставить преподавателям курса.
Практическое задание №6 - Объектный дизайн и генерация приложений
Для реализации потребуется:
- Flexberry Designer
- Microsoft Visual Studio 2017
- Postgres
- Git for Windows
Задание
Выполнить объектный дизайн и генерацию Ember-приложения для описанной предметной области. В качестве основы использовать реализованные ранее UML-модели. Генерация приложения и БД должна быть выполнена средствами Flexberry Designer приложение должно соответствовать требованиям и быть полностью работоспособным. Представления должны быть качественно настроены, подписи к классам и атрибутам на формах должны быть адекватными. Перечень форм и атрибутивный состав должны соответствовать предметной области и покрывать все требуемые бизнес-функции.
Предоставление результатов
Сгенерированное приложение и скрипты создания БД следует выложить в репозиторий на GitHub. Предоставить преподавателям ссылку на репозиторий.
Практическое задание №7 - Разработка бизнес-логики приложений
Для реализации потребуется:
- Flexberry Designer
- Microsoft Visual Studio 2017
- Postgres
- Git for Windows
Задание
В сгенерированном при помощи Flexberry Designer приложении требуется реализовать следующую бизнес-логику.
- Реализовать бизнес-сервер, который будет проверять плановое и фактическое время тренировки, и выводить разницу на экран.
- Реализовать бизнес-сервер, который будет использовать .net-библиотеку для расчёта нагрузки спортсмена в упражнении/за тренировку.
- Реализовать бизнес-сервер, который будет выполнять проверку, что средний пульс в упражнении находился в заданных рамках.
- Добавить хранимое поле в класс группы, которое будет содержать количество спортсменов в данной группе. Перевычисление этого поля реализовать в бизнес-сервере.
- Добавить НЕ хранимое поле в класс спортсмена, которое будет составлять строку, содержащую следующие данные о последней тренировке: дата, название, продолжительность, нагрузка.
Предоставление результатов
Доработанная бизнес-логика должна быть включена в разрабатываемое приложение и закоммичена в соответствующий репозиторий. Ссылка на репозиторий предоставляется для проверки преподавателям курса.
Практическое задание №8 - Разработка UI-логики приложения
Для реализации потребуется:
- Microsoft Visual Studio 2017
- Редактор кода для клиентской разработки: Visual Studio Code
- Postgres
- Git for Windows
Задание
Реализовать интеграцию формы для ввода данных тренировки с бизнес-логикой приложения. На форме для элементов управления с выбором, значения должны браться из БД (через ORM и Lookup). Ввод данных о тренировке должен работать с сохранением в БД.
Требуется настроить красивый внешний вид для всех форм приложения. Улучшить визуальную тему оформления. Реализовать ярлыки на рабочем столе приложения для быстрого доступа к часто используемым функциям.
Реализовать дополнительные формы, которые будут выводить результаты выполнения запросов из задания по БД.
Предоставление результатов
Доработанная UI-логика должна быть включена в разрабатываемое приложение и закоммичена в соответствующий репозиторий. Ссылка на репозиторий предоставляется для проверки преподавателям курса.
Практическое задание №9 - Функциональные подсистемы Flexberry
Для реализации потребуется:
- Flexberry Designer
- Microsoft Visual Studio 2017
- Редактор кода для клиентской разработки: Visual Studio Code
- Postgres
- Git for Windows
Задание
Для реализованного приложения настроить подсистему полномочий. Пользователи должны заводиться администратором приложения. Авторизация на основе форм.
Создать иерархию ролей, добавить операции на просмотр данных о тренировках и выдать права только спортсменам и тренерам. Настроить несколько ролей и назначить эти роли пользователям.
Настроить подсистему аудита. В разрабатываемом приложении все изменения объектов данных должно фиксироваться в подсистеме аудита. В навигационное меню следует добавить формы аудита, которые должны показываться только администраторам.
Предоставление результатов
Доработанное приложение должно быть закоммичено в соответствующий репозиторий. Дополнительно в репозиторий должны быть добавлены SQL-скрипты, которые нужно выполнить для функционирования приложения с подсистемой полномочий и аудита. Ссылка на репозиторий предоставляется для проверки преподавателям курса.