Задание

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

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

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

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

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

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

  • Microsoft Visual Studio 2015
  • Git for Windows

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

Требуется реализовать эффективный алгоритм сопоставления двух сообщений. На вход подаётся 2 сообщения: о пропаже и находке, каждое из которых представляет собой массив строк, каждая строка представляет собой одно из следующих значений (в указанном порядке):

  • Тип сообщения (Пропало или Нашлось)
  • Название
  • Адрес
  • Дата
  • Тип
  • Цвет
  • Размер
  • Порода
  • Описание

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

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

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

  1. Логику сопоставления двух сообщений с использованием библиотеки из 1-й части задания (поля для ввода значений 1 и 2 сообщения, кнопка, блок с отображением результатов).
  2. Блок справочной информации о правильном вводе данных сообщения (текстовое поле без возможности редактирования).

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

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

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

Реализованные скрипты закоммитить в 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 приложении требуется реализовать:

  • Страницу, на которой выводились бы результаты тех же 5-ти статистических запросов, реализованных при помощи SQL в задании 3, только в этот раз запросы нужно реализовать не на языке SQL, а с помощью Flexberry ORM средствами LINQ-провайдера и LoadingCustomizationStruct.
  • Бизнес-логику приложения с помощью Flexberry ORM и бизнес-серверов.
    • Реализовать бизнес-сервер, который будет переводить сообщение в неактуальное состояние (но не удалять запись из БД), если пользователь желает его удалить.
    • Реализовать бизнес-сервер, который будет использовать .net-библиотеку для предложения подходящего опубликованного ранее сообщения.
    • Реализовать бизнес-сервер, который будет проверять что дата сообщения указана не из будущего.
    • Добавить хранимое поле в класс пользователя, которое будет фиксировать количество заведённых им сообщений. Перевычисление этого поля реализовать в бизнес-сервере.
    • Добавить нехранимое поле в класс сообщения, которое будет составлять строку, содержащую краткую информацию о предмете поиска или находки.

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

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

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

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

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

Задание

Привязать реализованные ранее ascx-компоненты из задания №1 и №2 к данным из БД. Разместить данные компоненты на формах приложения.
Реализовать дополнительную логику на форме создания сообщений, включающую блок справочной информации (элемент управления из задания №1), блок вариантов решения, предлагаемых системой на основе сохранённого сообщения.
Требуется настроить красивый внешний вид для всех форм приложения. Улучшить визуальную тему оформления. Реализовать ярлыки на рабочем столе приложения для быстрого доступа к часто используемым функциям.
Реализовать дополнительные формы, которые будут выводить результаты выполнения запросов из задания по БД.

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

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

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

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

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

Задание

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

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

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