Задание
В рамках выполнения практической части курса вами будет разработан сквозной пример: приложение «Программа телепередач» (ИС для ведения программы телевизионных передач различных телеканалов).
Первая часть практического задания будет посвящена освоению базовых технологий, таких как C#, базы данных, клиентские технологии и т.п., вторая часть будет включать изучение возможностей платформы Flexberry для эффективного создания приложений.
Общее описание предметной области
Специалист телекомпании составляет программу телепередач для нескольких телеканалов. Телепрограммы могут быть периодическими или “разовыми”. Периодические телепрограммы имеют дату начала и дату окончания периода трансляции (может быть от одного месяца до нескольких лет). “Разовые” программы имеют заданное время эфира, но отдельные выпуски могут быть смещены по времени. После утверждения телепрограммы, которое происходит за 7 суток до эфира, данная телепрограмма становится доступна широкому кругу пользователей - телезрителей, у которых есть доступ в Интернет.
Телезритель может добавлять телешоу в “Избранное”, в этом случае передача будет подсвечиваться соответствующей иконкой в расписании. Также пользователь может подписаться на уведомление по E-Mail о предстоящем эфире телепрограммы с указанием интервала времени до начала эфира. Если телепрограмма периодическая, то уведомление будет приходить каждый раз перед эфиром.
При заполнении телепрограммы следует учитывать квоты на рекламное время: на каждый час эфирного времени следует выделить 15 минут рекламы. Телезрителям показывается телепрограмма, в которой реклама включена в эфир телепрограмм.
Технические требования:
- Приложение реализуется в виде SPA-приложения с бакендом на C# и фронтендом на EmberJS.
- Данные хранятся в БД Postgres.
Практическое задание №1 - Серверная разработка (C#, .NET, ASP.NET)
Для реализации потребуется:
- Microsoft Visual Studio 2017
- Git for Windows
Задание
Требуется реализовать алгоритм добавления рекламных пауз в программу телепередач на сутки. На каждый час эфира должно приходиться 15 минут рекламы. Самый длинный рекламный блок должен быть не больше 5 минут. Самый короткий - 1 минута. В первую очередь рекламные блоки должны располагаться между передачами. Если это невозможно, то передачу можно прерывать на рекламу, но разрыв программы может быть на отрезках, кратных 15 минутам от начала программы (следует учесть, что одна передача может прерываться несколько раз, 15 минут отсчитывается по монтажному времени телепередачи без рекламных вставок).
На вход алгоритму подаётся массив структур, которые содержат:
- Название телепередачи
- id телепередачи
- Длительность телепередачи в минутах
- Порядковый номер телепередачи
- Время начала телепередачи (если оно жёстко задано, иначе может быть не указано)
На выходе должен быть массив кортежей, каждый из которых содержит информацию о времени начала блока эфира, id телепередачи или null (если это рекламный блок).
Реализацию следует сделать в виде .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 приложение, в котором будет реализована форма, на которой пользователь может удобным образом просмотреть программу телепередач для нескольких телеканалов одновременно. Телепередачи на разных каналах должны быть выровнены по временой шкале - если передачи идут одновременно - это должно быть отражено. По клику на телепередачу должно открываться всплывающее окно с подробной информацией о телепередаче. Телепередачи из Избранного должны иметь рядом со своим названием соответствующую иконку, по клику на эту иконку телепередачи добавляются или удаляются из избранного.
В виде EmberJS-утилиты требуется реализовать алгоритм добавления рекламных пауз в программу телепередач на сутки (см. задание №1).
Требуется реализовать компонент отображения телепрограммы, в который передаётся EmberJS-модель телепрограммы. В компоненте должен быть реализован режим просмотра телепередач с учётом информации о рекламных блоках, которая берётся из EmberJS-утилиты.
Предоставление результатов
Реализованный проект разместить в репозитории на GitHub в виде проекта EmberJS и опубликованного приложения в GitHub Pages, которые позволяют просматривать готовый результат. Ссылку на репозиторий и опубликованный таким образом проект предоставить преподавателям курса.
Практическое задание №4 - Базы данных
Для реализации потребуется:
- Postgres
- pgAdmin
- Git for Windows
Задание
Для указанной предметной области реализовать базу данных, заполнить базу скриптами (минимум по 5 записей на таблицу). Реализовать скрипты по созданию ограничений, индексов.
Подготовить SQL-скрипты для получения следующей информации:
- Вывести топ-5 телепередач из избранного всех пользователей
- Вывести информацию о телепередаче, которая дольше остальных выходила в эфир
- Вывести информацию о телепередаче, которая чаще других была в эфире нескольких телеканалов
- Вывести информацию об общем времени эфира для указанной телепередачи
- Вывести список телепрограмм, которые идут по всем телеканалам на указанное время
Предоставление результатов
Реализованные скрипты создания БД и заполнения, бекап БД закоммитить в 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 приложении требуется реализовать следующую бизнес-логику.
- Реализовать бизнес-сервер, который будет контролировать, что в утверждённой телепрограмме корректно указаны все временные интервалы и квоты рекламного времени.
- Реализовать бизнес-сервер, который будет вместо удаления объектов системы переводить их в состояние архивного объекта.
- Реализовать бизнес-сервер, который будет контролировать, что в избранное добавляется программа, которой там ещё нет, аналогично для удаления из избранного программа должна в нём быть.
- Добавить не хранимое поле в класс Сотрудник, которое будет представлять ФИО одной строкой из Фамилии Имени и Отчества.
- Добавить строковое не хранимое поле, в котором будет собрана вся необходимая информация о телепрограмме (Время начала и окончания, название, описание, тип и т.д.).
Предоставление результатов
Доработанная бизнес-логика должна быть включена в разрабатываемое приложение и закоммичена в соответствующий репозиторий. Ссылка на репозиторий предоставляется для проверки преподавателям курса.
Практическое задание №8 - Разработка UI-логики приложения
Для реализации потребуется:
- Microsoft Visual Studio 2017
- Postgres
- Редактор кода для клиентской разработки: Visual Studio Code
- Git for Windows
Задание
Привязать реализованные ранее EmberJS дополнительные формы и компоненты к данным из БД.
Перенести в сгенерированное приложение и реализовать интеграцию формы из задания №3 с бизнес-логикой приложения.
На форме для элементов управления с выбором - данные должны браться из БД (через ORM и Lookup). Заполнение данных также должно работать с сохранением в БД.
Требуется настроить красивый внешний вид для всех форм приложения. Улучшить визуальную тему оформления. Реализовать ярлыки на рабочем столе приложения для быстрого доступа к часто используемым функциям.
Реализовать дополнительные формы, которые будут выводить результаты выполнения запросов из задания по БД.
Предоставление результатов
Доработанная UI-логика должна быть включена в разрабатываемое приложение и закоммичена в соответствующий репозиторий. Ссылка на репозиторий предоставляется для проверки преподавателям курса.
Практическое задание №9 - Функциональные подсистемы Flexberry
Для реализации потребуется:
- Flexberry Designer
- Microsoft Visual Studio 2017
- Редактор кода для клиентской разработки: Visual Studio Code
- Postgres
- Git for Windows
Задание
Для реализованного приложения настроить подсистему полномочий. Пользователи телекомпании должны заводиться администратором приложения, телезрители регистрируются самостоятельно (упрощённая схема). Авторизация на основе форм. Создать иерархию ролей, добавить операции на просмотр сведений о внутреннем устройстве телепрограммы. Настроить несколько ролей и назначить эти роли пользователям.
Настроить подсистему аудита. В разрабатываемом приложении все изменения объектов данных, кроме Избранного, должно фиксироваться в подсистеме аудита. В навигационное меню следует добавить формы аудита, которые должны показываться только администраторам.
Предоставление результатов
Доработанное приложение должно быть закоммичено в соответствующий репозиторий. Дополнительно в репозиторий должны быть добавлены SQL-скрипты, которые нужно выполнить для функционирования приложения с подсистемой полномочий и аудита. Ссылка на репозиторий предоставляется для проверки преподавателям курса.