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

Задание

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

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

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

Бумажные газеты и журналы доставляются по подписке. Требуется разработать веб-приложение, в котором можно выбрать издание и подписаться на него. Единица времени для подписки - это календарный месяц. Подписаться можно на любое количество месяцев от 1 до 6 в рамках одного полугодия или сразу на 12 (с января по декабрь). Подписка на следующий месяц оформляется не позднее 15 числа текущего месяца. В случае оформления подписки целиком на полугодие (январь - июнь или июль - декабрь) пользователь получает скидку 5%. Годовая подписка обходится на 10% дешевле.
Каждое издание имеет количество выпусков в месяц или в полугодие. Если издание выходит не каждый месяц, то подписка возможна только на месяцы, когда издание выходит. Месяцы, в которые издание не выходит не входят в расчёт скидок.
Приложением пользуются издательства, которые заполняют информацию о доступных для подписчиков газетах и журналах, подтверждают получение денег за подписку и переводят её в состояние “Доставляется”. Работники почты видят информацию о подписке и выполняют доставку изданий из издательств подписчикам, отмечая факт доставки (номера, доставленные в этот месяц). Подписчики пользуются приложением чтобы оформить подписку.

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

  • Приложение реализуется в виде SPA-приложения с бакендом на C# и фронтендом на EmberJS.
  • Данные хранятся в БД Postgres.

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

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

  • Microsoft Visual Studio 2017
  • Git for Windows

Задание

Требуется реализовать алгоритм расчёта стоимости издания на основе входных данных:

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

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

Реализованное решение (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 приложение, в котором будет реализована форма, которая используется для указания месяцев, на которые хочет подписаться пользователь.
Разработать в виде Ember-компонента элементы управления, реализующие логику выбора галочками месяцев, на которые требуется оформить подписку. Месяцы невыхода издания должны быть заблокированы для выбора. Заготовить статический переключатель для выбора издания, календарного года и полугодия подписки (подписка на весь год доступна, когда полугодие не выбрано). Реализовать дополнительные кнопки “Подписаться на полугодие” и “Подписаться на год”, которые будут проставлять соответствующие галочки, пропуская заблокированные. Встроить данный компонент на форму.

В виде EmberJS-утилиты требуется реализовать алгоритм расчёта стоимости издания на основе входных данных:

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

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

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

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

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

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

  • Postgres
  • pgAdmin
  • Git for Windows

Задание

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

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

  1. Вывести рейтинг топ-5 издательств по выручке на периодических изданиях за указанный год
  2. Вывести рейтинг топ-5 подписчиков, которые тратят максимальное количество денег на подписку в среднем за год
  3. Получить название издания, которое выходит реже всех
  4. Вывести все номера и издания в порядке получения по указанному ключу подписки
  5. Найти пользователей, которые подписываются на одни и те же издания минимум 3 года подряд

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

Реализованные скрипты создания БД и заполнения, бекап БД закоммитить в 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. Реализовать бизнес-сервер, который будет контролировать ограничение на создание подписки на следующий месяц не позднее 15 числа текущего месяца.
  2. Реализовать бизнес-сервер, который будет создавать объекты Доставка для указанной подписки при её сохранении.
  3. Реализовать бизнес-сервер, который будет запрещать редактирование подписки, если она переведена в состояние “Доставляется”.
  4. Добавить не хранимое поле в класс Издание, в котором будет отображаться стоимость подписки на полугодие.
  5. Добавить не хранимое поле в класс Издание, в котором будет отображаться стоимость подписки на год.

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

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

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

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

  • Microsoft Visual Studio 2017
  • Postgres
  • Редактор кода для клиентской разработки: Visual Studio Code
  • Git for Windows

Задание

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

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

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

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

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

  • Flexberry Designer
  • Microsoft Visual Studio 2017
  • Редактор кода для клиентской разработки: Visual Studio Code
  • Postgres
  • Git for Windows

Задание

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

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

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