# Презентация
**слайд 1**
Добрый день, меня зовут Юсифов Эльнур Cеймурович, мне 20 лет, и я являюсь студентом МТУСИ направления "Прикладная математика", а так же работаю в компании BI.ZONE специалистом по киберкриминалистике. Сегодня, я расскажу Вам про систему онлайн-расписания, созданную мной и Ириной Сергеевной, покажу некоторые этапы превращения проекта из идеи в Minimal Viable Product.
## Minimal Viable Product. Что это?
**слайд 2**
MVP - это продукт, обладающий минимальными, но достаточными для удовлетворения первых потребностей пользователя, функциями. Мы решили воспользоваться этой моделью, чтобы сократить время на разработку и не тратить слишком много ресурсов на проработку всех деталей. Согласно данной пирамиде, наш проект должен иметь некоторые дизайнерские решения, быть удобен, надёжен и функционален, но всё это в разумных пределах. Таким образом, можно постепенно переходить от этапа MVP к созданию более сложного продукта.
## Актуальность
**слайд 3**
В нашем университете, как таковое онлайн-расписание отсутствует, поэтому студенты и сотрудники ВУЗа регулярно сталкиваются с проблемой поиска актуального расписания. Так, например, расписание в период пандемии довольно часто изменялось.
**слайд 4**
Уже существуют некоторые решения по составлению расписания студентами, например, через приложение Studify, но очевидным минусом является то, что нужно вручную обновлять его при каких-либо изменениях.
Студентами БПМ1701 было так же предложено решение, но так же не лишено тех проблем, что и Studify.
Проанализировав рынок, мы сделали вывод, что удобного, автоматизированного решения на данный момент нет и мы должны его разработать.
## Идея
Я вызвался решить эту проблему и создать простую, и удобную систему, которая была бы доступна каждому.
Идея появилась почти сразу -- проанализируем доступное на сайт http://mtuci.ru расписание в формате `.xlsx` и преобразуем его в графически удобный вариант.
**слайд 5**
вооружившись языком программирования Python и библиотекой yargy для анализа предложений.

## Реализация
### yargy
**слайд 6**
Библиотека yargy решает проблему NER для русского языка. Когда человек читает книгу, он без труда понимает, что какие-то слова в тексте – это имя героя, а какие-то – название местности, даже если он впервые столкнулся с таким именем или названием. Для компьютера работа по распознаванию имен людей, названий организаций, топонимов и т.п. оказалась довольно сложной, но все-таки машины с ней справляются — и с каждым годом все лучше.
**слайд 6 - 1 анимация**
Данная библиотека решает все базовые задачи обработки естественного русского языка: сегментация на токены и предложения, морфологический и синтаксический анализ, лемматизация, извлечение именованных сущностей.
**слайд 6 - 2 анимация**
**слайд 6 - 3 анимация**
Мною были введены грамматики для текста в каждой из клеток из `.xlsx` таблицы.

Грамматики пришлось вводить по той причине, что сотрудники при составлении расписания не придерживались какого-либо стандарта или правила, а писали как им было удобно. Конечно все исключения обработать не удалось, но почти все проблемы связанные с написанием были решены с помощью грамматик.
**слайд 7**
После обработки каждой клетки с помощью грамматик и сопоставлении её с группой и временем, все данные экспортировались в JSON базу данных, которая имела следующую структуру, которая была описана в статье.

**слайд 8**
## Нормальная форма БД
#### Первая нормальная форма (1НФ)
отсутствуют повторяющиеся группы данных
гарантируется элементарности(atomicity) данных (все данные являются автономными и независимыми).
На верхнем уровне это достигается созданием первичного ключа, затем осуществляется перенос повторяющихся групп данных в новые таблицы, создание первичных ключей для этих таблиц и так далее. Кроме того, необходимо разбить все записи, столбцы которых содержат составную информацию, на отдельные строки для каждого фрагмента данных столбца.
#### Вторая нормальная форма (2НФ)
таблица удовлетворяет условиям 1НФ
каждый столбец зависит от всего ключа, а не от его части.
#### Третья нормальная форма (3НФ)
таблица удовлетворяет условиям 2НФ
ни один столбец не зависит от столбца, который не является частью первичного ключа
не содержит производных данных
### Другие нормальные формы, не имеющие особой практической ценности:
#### Нормальная форма Бойса-Кодда(Boyce-Codd)
Вариант 3НФ. Предназначена для решения ситуации с наличием множества перекрывающихся ключей-кандидатов. По сути, не находит логического обоснования за пределами академического сообщества.
#### Четвертая нормальная форма
Предназначена для решения вопроса с многозначными зависимостями. Такие ситуации возникают, если в приведенной к 3НФ таблице один столбец составного первичного ключа зависит от другого столбца первичного ключа.
#### Пятая нормальная форма
Применяется при работе с декомпозицией отношений с потерями и без потерь. Возникает в ситуации, когда можно разбить одно отношение на несколько различных отношений, но после этого мы уже не сможем логически вернуть его к первоначальному виду.
#### Шестая нормальная форма (нормальная форма доменного ключа)
Гарантирует отсутствие аномалий модификации в базе данных. В реальных условиях практически не достижима.
## Дизайн
**слайд 9**
...
## Frontend
**слайд 10**
Графическая составляющая была реализована на языке Javascript и стилистическом языке CSS, библиотека Zombular являлась некоторым "клеем" между двумя этими языками. Так же эта библиотека была выбрана именно потому, что она даёт возможность воспользоваться всей мощью технологии VDOM и является гораздо более легковесной чем аналоги (React, Vue.JS и т.п.), а так же процесс разработки довольно сильно сокращается, благодаря удобному методу построения модели VDOM. Вообще говоря, графическая составляющая мала технических подробностей.
Дизайн был придуман мной и Ириной Сергеевной, в него закладывались идеи минималистичности и удобства, основной концепцией послужила игра на контрастах (черного и белого) и элементарность. Перейдем непосредственно к демонстрации получившегося Minimal Viable Product
***слайд 11 - Тут я демонстрирую на экране интерфейс приложения и все его возможности.***
БЭИ2001//23 -- Операционные системы -- Блинова О.В.
На главной странице мы видим строку поиска. Поиск возможно осуществлять по группам, преподавателям или аудиториям. Приложение кэширует все результаты поиска и они отображаются на главной странице.
## Финальные мысли
**слайд 12**
Таким образом, мною был создан удобный и простой в использовании сервис, которым может воспользоваться каждый. Тем не менее, при содействии университета можно достичь максимальной точности и скорости обновления расписания, таким образом, пользуясь случаем, обращаюсь к руководству университета и прошу связаться со мной или моим научным руководителем для дальнейшей интеграции с сайтом университета и проработкой неточностей. В данный момент расписание доступно по следующему адресу и я стараюсь его регулярно обновлять. Спасибо за внимание, ДОКЛАД ОКОНЧЕН, ваши вопросы пожалуйста.
***Слайд: "Спасибо за внимание!" и "https://blackmius.ru/mtt"***