Вариант сквозного задания на проектирование и разработку с использованием фреймворка Flexberry Ember

Задание

В рамках выполнения практической части курса вами будет разработан сквозной пример: приложение «Спортшкола».

Первая часть практического задания будет посвящена освоению базовых технологий, таких как 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-компонента элементы управления, реализующие:

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

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

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

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

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

  • Postgres
  • pgAdmin
  • Git for Windows

Задание

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

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

  1. Вывести список групп с количеством спортсменов, а также минимальный и максимальный возраст в группе.
  2. Вывести количество посещённых и пропущенных тренировок спортсменом.
  3. Вывести суммарную информацию о тренировках спортсменов за последние 3 недели: дата тренировки, количество упражнений, продолжительность тренировки, фактическая нагрузка, средний пульс.
  4. Вывести рейтинг спортсменов по нагрузке за тренировку.
  5. Получить среднюю нагрузку для каждого спортсмена за последние 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 приложении требуется реализовать следующую бизнес-логику.

  1. Реализовать бизнес-сервер, который будет проверять плановое и фактическое время тренировки, и выводить разницу на экран.
  2. Реализовать бизнес-сервер, который будет использовать .net-библиотеку для расчёта нагрузки спортсмена в упражнении/за тренировку.
  3. Реализовать бизнес-сервер, который будет выполнять проверку, что средний пульс в упражнении находился в заданных рамках.
  4. Добавить хранимое поле в класс группы, которое будет содержать количество спортсменов в данной группе. Перевычисление этого поля реализовать в бизнес-сервере.
  5. Добавить НЕ хранимое поле в класс спортсмена, которое будет составлять строку, содержащую следующие данные о последней тренировке: дата, название, продолжительность, нагрузка.

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

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

Практическое задание №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-скрипты, которые нужно выполнить для функционирования приложения с подсистемой полномочий и аудита. Ссылка на репозиторий предоставляется для проверки преподавателям курса.