
- •Расчетно-пояснительная записка к выпускной квалификационной работе
- •Задание по подготовке выпускной квалификационной работы
- •Аннотация
- •Глава 1. Анализ проблемы и постановка задачи
- •Анализ предметной области
- •Содержательная постановка проблемы
- •Обзор и анализ существующих программных продуктов
- •Формальная постановка задачи
- •Структура решения задачи, декомпозиция задачи на подзадачи
- •Глава 2. Анализ моделей и методов решения
- •2.1. Типы событий системы видеонаблюдения
- •2.2. Математическая постановка задачи построения проекции временной шкалы событий
- •Глава 3. Математическое и алгоритмическое обеспечение отображения событий
- •3.1. Алгоритм построения проекции временной шкалы событий
- •3.2. Алгоритм получения событий системы видеонаблюдения
- •3.3. Алгоритм открытия видеозаписи события системы видеонаблюдения
- •Глава 4. Программное обеспечение
- •4.1. Язык программирования и инструментальные средства разработки
- •4.2. Место в системе
- •4.3. Описание структур данных
- •4.4. Описание компонента
- •4.5. Компонент Wasaby
- •4.6. Декомпозиция компонента
- •4.7. Описание интерфейса пользователя
- •Глава 5. Оценка качества решения
- •5.1. Тестирование компонента
- •5.2. Анализ эффективности
- •Заключение
- •Список использованных источников
- •Приложение а Техническое задание
- •Приложение б Руководство программиста
- •2.3.2. Компонент Wasaby
- •2.4. Декомпозиция компонента
- •3. Обращение к программе
- •Приложение в Руководство пользователя
- •3.2. Выбор типов событий на временной линии
- •Приложение г
Глава 3. Математическое и алгоритмическое обеспечение отображения событий
3.1. Алгоритм построения проекции временной шкалы событий
Перебрать множество событий видеонаблюдения S:
Если множество отображаемых типов событий VT пусто или Di ∈ VT, то:
Если TBi ∈ [TL;TR] или TEi ∈ [TL;TR], то:
Если TBi < TL, то:
Присвоить TSL значение TL,
Иначе:
Присвоить TSL значение TBi
Если TE > TR, то:
Присвоить TSR значение TR
Иначе:
Присвоить TS значение TEi
Присвоить TSC значение C(Di)
Добавить сегмент (TSL, TSR, TSC) в выходное множество сегментов
3.2. Алгоритм получения событий системы видеонаблюдения
Для описания алгоритма получения событий была составлена диаграмма последовательности нотации UML (Unified Modeling Language).
Рисунок 3.2.1 – Диаграмма последовательности получения событий системы видеонаблюдения
Предусловие – открытый пользователем плеер системы видеонаблюдения. Стоит отметить, что при отсутствии у пользователя прав на информацию о событиях плеер не предоставляет возможность выбора типов событий и не осуществляет получение событий.
3.3. Алгоритм открытия видеозаписи события системы видеонаблюдения
Для описания алгоритма открытия видеозаписи спроектирована диаграмма последовательности UML.
Рисунок 3.3.1 – Диаграмма последовательности открытия видеозаписи системы видеонаблюдения
Предусловие – открытый пользователем плеер системы видеонаблюдения, в котором открыта таблица с записями событий.
Глава 4. Программное обеспечение
4.1. Язык программирования и инструментальные средства разработки
Выполним обзор языков программирования, которые используются для разработки клиентской части веб-приложений.
JavaScript – скриптовый язык программирования общего назначения, соответствующий спецификации ECMAScript. Относится к классу мультипарадигмальных, благодаря чему поддерживает объектно-ориентированный, императивный и функциональный стили. JavaScript используется в браузерах как язык сценариев для придания интерактивности веб-страницам. К его основным архитектурным чертам относятся: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.
Современные браузеры поддерживают выполнение только JavaScript программ. Далее рассмотрим языки программирования, для которых возможна транспиляция или компиляция в JavaScript.
TypeScript — язык программирования, представленный Microsoft и использующийся как средство разработки веб-приложений, расширяющее возможности языка JavaScript. TypeScript является обратно совместимым с JavaScript и компилируется в последний. Фактически, после компиляции программу на TypeScript можно выполнять в любом современном браузере. TypeScript отличается от JavaScript возможностью явного статического назначения типов, поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей, что повышает скорость разработки, облегчает читаемость, рефакторинг и повторное использование кода, помогает осуществлять поиск ошибок на этапе разработки и компиляции, и ускоряет выполнение программ.
Dart – язык программирования общего назначения от компании Google, который предназначен прежде всего для разработки веб-приложений (как на стороне клиента, так и на стороне сервера) и мобильных приложений. Компания Google в 2015 году представила новую стратегию продвижения Dart, который изначально претендовал на роль прогрессивной замены JavaScript. Решено не привязывать Dart к браузеру и отказаться от идеи интеграции виртуальной машины Dart в Chrome. Разработка будет сосредоточена на применении Dart в качестве промежуточного языка, компилируемого в JavaScript.
Возможность использования статической типизации позволяет обнаруживать ошибки типизации еще на этапе написания кода. Все это выгодно отличает TypeScript и Dart на фоне JavaScript. Для большинства современных платформ разработки веб-приложений отсутствует документация с примерами кода на язык программирования Dart.
Таким образом для разработки будем использовать язык программирования TypeScript.
Существующая клиентская часть системы видеонаблюдения разработана на платформе Wasaby.
Wasaby — это модульный JavaScript-фреймворк для создания веб-приложений. Его цель — обеспечить продуктивную разработку интерфейса из готовых визуальных компонентов-контролов. Появился в результате разработки одного из крупнейших в России веб-приложений электронного документооборота и отчетности и в данный момент активно развивается.
Помимо библиотеки готовых контролов, в состав фреймворка входят следующие основные модули:
Инфраструктура представления. Библиотека, позволяющая собрать "каркас" веб-приложения; содержит набор правил, техник и решений, допустимых при разработке прикладных решений. Определяет понятие контрола, как слоя ViewModel в парадигме MVVM (Model-View-ViewModel), а также правила logicless-шаблонизации в рамках слоя View.
Типы, структуры данных и коллекции. Набор различных типов данных и операций над ними. Определяет понятие модели данных. Данная концепция позволяет выделить вычисления логики в отдельный слой Model, оставляя код шаблонов пользовательского интерфейса чистым.
Источники данных. Набор интерфейсов и базовых реализаций, позволяющий осуществлять клиент-серверное взаимодействие различных сервисов приложения по протоколу обмена. Предоставляет абстракции для работы с типовыми операциям CRUD.
Маршрутизация. Библиотека, позволяющая описать маршрутизацию приложения в декларативном виде.
Исходный код спроектирован в первую очередь таким образом, чтобы исключить возможность дублирования кода.
Например, аспекты поведения контролов в целях переиспользования группируются в самостоятельные сущности, которые обеспечивают строго ограниченный набор интерфейсов.
Таким образом, базовые классы компонентов собираются из аспектов, как из кубиков. При этом визуально они могут быть не похожи друг на друга.