Курсовая работа на тему: "Разработка сервера для сбора и анализа биологических маркеров человека"

У нас на сайте представлено огромное количество информации, которая сможет помочь Вам в написании необходимой учебной работы. 

Но если вдруг:

Вам нужна качественная учебная работа (контрольная, реферат, курсовая, дипломная, отчет по практике, перевод, эссе, РГР, ВКР, диссертация, шпоры...) с проверкой на плагиат (с высоким % оригинальности) выполненная в самые короткие сроки, с гарантией и бесплатными доработками до самой сдачи/защиты - ОБРАЩАЙТЕСЬ!

Курсовая работа на тему: "Разработка сервера для сбора и анализа биологических маркеров человека"

Оглавление

Введение                                                                                                        3

1.      Цели и задачи                                                                                        5

1.1.   Цель работы  . . . . . . . . . . . . . . . . . . . . . . . . . .        5

1.2.   Поставленные задачи  . . . . . . . . . . . . . . . . . . . . .        5

2.      Возможные решения                                                                          6

2.1.   Удаленная база данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . . .        6

2.2.   Облачные вычисления    . . . . . . . . . . . . . . . . . . . .        7

2.3.   Сервер    . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        8

3.      Стек технологий                                                                                    9

4.      Архитектура сервера                                                                       10

4.1.   Модульность  . . . . . . . . . . . . . . . . . . . . . . . . . .      10

4.2.   Работа с базой данных    . . . . . . . . . . . . . . . . . . . .      11

5.      Модуль  измерения  частоты сердечных сокращений             13

5.1.  Реализация модуля  . . . . . . . . . . . . . . . . . . . . . .      13

5.2.   Тестирование модуля  . . . . . . . . . . . . . . . . . . . . .      14

Заключение                                                                                                17

Листинги                                                                                                     18

Список литературы                                                                                 20

 

Введение

Одним из самых главных приоритетов в жизни людей всегда явля- лось поддержание и укрепление здоровья. Для этого ученые, универси- теты и даже частные компании1 постоянно проводят различные иссле- дования, а также испытания с целью измерения и отслеживания всевоз- можных биологических маркеров человека (например, пульса, объема легких, либо же способности человека удерживать равновесие). Иссле- дования человеческого организма как правило проводятся в специаль- ных условиях. Снятие некоторых биологических маркеров2 является достаточно долгой и сложной процедурой [1]. Для проведения измере- ний может потребоваться специальное помещение и дорогостоящее обо- рудование. Кроме того, нужны грамотные специалисты, которые будут следить за процессом измерения и поддерживать необходимые условия для экспериментов, и добровольцы, которые будут выполнять заданные исследователямиуказания.

Альтернативный подход для измерения биологических маркеров — использование тех инструментов, которые доступны практически каж- дому, например, мобильных телефонов и фитнес-браслетов. Их дат- чики, безусловно, не имеют высокой точности лабораторного оборудо- вания, но иногда являются удовлетворительными. На данный момент уже существует огромное множество различных приложений, выпол- няющих измерения тех или иных биологических маркеров (их даже можно найти в AppStore3 и GooglePlay4 ).

В СПбГУ и СПбНИИФК5 регулярно проводятся исследования в об- ласти физической культуры и спорта, и есть спрос на подобные при-

1Например, компания Nike, которая известна практически во всем мире, имеет свою команду ис- следователей [5]. Среди актуальных исследований — анализ формы и возможностей сгибов стопы, а также измерение её давления на поверхность [6].

2Биологический маркер (биомаркер) — характеристика, которая используется для индикации со- стояния организма.

3Instant            Heart            Rate:            HR            Monitor:             https://itunes.apple.com/us/app/ instant-heart-rate-hr-monitor/id409625068 (дата обращения: 08.05.2019)

4Accurate Heart Rate  Monitor:  https://play.google.com/store/apps/details?id=com.repsi. heartrate (дата обращения: 08.05.2019)

5ФГБУ СПбНИИФК. Санкт-Петербургский научно-исследовательский институт физической куль- туры: http://www.spbniifk.ru/ (дата обращения 10.05.2019)

ложения, причем для проведения испытаний необходимы разработки, зачастую не рассчитанные для широкой аудитории. Например, в иссле- довательских целях иногда требуется проводить замеры частоты сер- дечных сокращений сразу после выполнения специальных упражнений. Для этого могут не подойти многие из существующих алгоритмов рас- чета пульса, так как они делают предположение о том, что в процессе измерения пульс мало изменяется, поэтому в качестве ответа выбирает- ся некоторое среднее значение, которое не является верным [4]. Кроме того, существует потребность в агрегировании данных, поскольку они часто собираются с использованием различных слабосвязанных друг с другом систем [2].

В рамках работы с СПбНИИФК планируется разработка целого

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

1.       Цели и задачи

1.1.      Цель работы

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

 

1.2.      Поставленные задачи

Для выполнения обозначенной цели были выделены следующие за- дачи:

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

  Разработать расширяемый сервер для обслуживания приложе- ний, осуществляющих сбор биологических маркеров человека (да- лее соответствующую такому приложению серверную часть будем называть модулем6).

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

 

 

 

 

 

 

 

 

 

 

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

2.       Возможные решения

В данной главе рассмотрены возможные варианты достижения по- ставленной цели, и обоснован выбор разработки собственного сервера.

 

2.1.      Удаленная база данных

В рамках курсовой работы поставлена задача создания сервера для сбора биологических маркеров. Одним из альтернативных решений яв- ляется использование удаленной базы данных. Например, известным продуктом в этой области является GOOGLE FIREBASE7. Это решение предоставляет нереляционную базу данных для хранения и считывания произвольной информации.

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

Другая проблема связана с тем, что произведение всех расчетов на клиенте означает, что если в алгоритме обработки данных нашлась се- рьезная ошибка, нужно будет в срочном порядке обновлять все клиент- ские приложения для её полного исправления. Если клиентов много, это может быть проблематично, поскольку пользователи невсегда придают должное внимание обновлениям, в связи с чем редко устанавливают их самостоятельно. При этом, даже уведомления о срочной необходимости установки новой версии зачастую игнорируются [7].

7https://firebase.google.com/ (дата обращения: 10.05.2019)

2.2.      Облачные вычисления

Хорошим дополнением к удаленной базе данных могли бы служить облачные вычисления. Тогда алгоритмы обработки биомаркеров не при- ходилось бы хранить на клиентском приложении, и проблема обновле- ния клиентов при обнаружении критических ошибок стала бы неакту- альной. Разработки, использующие облачные вычисления, ещё называ- ют бессерверными, поскольку все операции производятся на серверах компаний, предоставляющих своим клиентам вычислительные мощно- сти. Стратегия работы с облаком выглядит следующим образом: дан- ные собираются с устройства и отправляются на заданный URL, после этого вызываются известные заранее пользовательские функции, ко- торые производят обработку данных и, если необходимо, сохраняют какой-то результат в облачное хранилище. Такой подход избавляет от необходимости развертывания сервера и поддержки его работоспособ- ности, позволяет легко масштабировать проект при необходимости и платить только за используемые ресурсы. Среди известных провайде- ров облачных вычислений числятся крупные компании с высоким ко- эффициентом доверия: Amazon (AWS Lambda8), Google (Google Cloud Platform9), Microsoft (Azure10), IBM (IBM Cloud11) идругие.

Несмотря на очевидные плюсы, облачные вычисления также имеют существенные недостатки, из-за которых приходится отказаться от них в рамках курсовой работы. В проекте планируется собирать инфор- мацию12, которая в некоторых странах попадает под закон о защите персональных данных. В этом случае, хранение и обработка данных в облаке на серверах другой страны может быть недопустима. Кроме то- го, незапатентованные алгоритмы работы с биомаркерами по-прежнему будут располагаться у третьих лиц.

8AWS Lambda: https://aws.amazon.com/ru/lambda/

9Google Cloud Platform: https://cloud.google.com/products/

10Microsoft Azure: https://azure.microsoft.com/ru-ru/

11IBM Cloud: https://www.ibm.com/cloud/

12Например, согласно федеральному закону Российской федерации от 27.07.2006 N 152-ФЗ ”О персо- нальных данных” информация, относящаяся к состоянию здоровья человека, а также сведения, кото- рые характеризуют его физиологические и биологические особенности, на основании которых можно установить его личность, попадают под определение ”персональных данных” и для их сбора, хранения и обработки требуют выполнения специальных, описанных в законе условий.

Облачные вычисления иногда усложняют разработку, поскольку их может быть сложно отлаживать и переносить (если речь идет о пе- реходе с одного сервиса на другой, это может потребовать переписы- вания большей части существующей функциональности). Полноценное локальное тестирование облачных приложений невозможно из-за на- личия жестких ограничений на серверах провайдеров (по памяти или времени выполнения). Эти же ограничения создают такую ситуацию,  в которой результаты вычислений могут потеряться из-за превышения тех или иных лимитов.

 

2.3.      Сервер

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

 

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

3.       Стек технологий

Сервер написан на языке PYTHON (интерпретируемый, объектно- ориентированный язык высокого уровня), который был выбран в силу своей простоты, а также благодаря наличию множества готовых веб- фреймворков и библиотек,  облегчающих разработку. Используемая ба- за данных — POSTGRES — является объектно-реляционной и умеет ра- ботать с пользовательскими типами и сложными структурами. База данных в курсовой работе выполняет роль микросервиса. Она слабо связана с самим сервером, поскольку обновляется и поддерживается независимо от него. Для использования базы данных  в  таком  контек- сте хорошо подходит DOCKER [3]. Решение поместить её в изолирован- ный Docker-контейнер также удобно тем, что это позволяет один раз настроить конфигурационный файл, а затем использовать базу данных  на различных устройствах с различными операционными системами без необходимости установки дополнительных пакетов и их настройки. Эта особенность имеет важную роль, поскольку работа над проектом велась с разных операционных систем. Для сервера также были использованы возможности веб-фреймворка FLASK, который, по сравнению со своим известным аналогом DJANGO, является более низкоуровневым и предо- ставляет больше возможностей для настройки проекта под свои нужды. Для работы с базой данных используется библиотекаSQLALCHEMY. Она позволяет единым образом описывать запросы к разным базам данных, а также  предоставляет более удобный  интерфейс в сравнении   с использованием в коде  чистого языка SQL, благодаря чему запросы      к базе легче отслеживать и изменять.

4.       Архитектура сервера

В этой главе представлено описание разработанного сервера, про- цесса добавления и принципов работы его модулей, а также взаимо- действия сервера и модулей с базой данных.

 

4.1.      Модульность

Основная цель при проектировании сервера заключалась в том, что- бы позволить легко встраивать новые модули с различной функцио- нальностью. Для еёдостижения в корне сервера была отдельно создана специальная директория. Предполагается, что каждый новый модуль будет создаваться в ней. Любой новый модуль должен в одном из фай- лов содержать класс (менеджер), который наследует BaseAppManager, и, возможно, переопределяет некоторые его поля, среди которых ссыл- ка на обработчик запросов и ссылка на класс, осуществляющий под- готовку и фильтрацию данных для сохранения в  базу  данных  (да- лее — валидатор). Любой обработчик запросов для модуля должен унаследовать BaseRequestHandler. Аналогично, валидатор наследуется от BaseDataValidator. Минимальный рабочий модуль может содержать только менеджер.

Рабочий процесс выстроен следующим образом:

 

    На выделенный для модуля URL приходит запрос в формате JSON (см. листинг 1).

    Данные проходят через обработчик запросов.

 

    Затем сохраняются согласно правилам, заданным в валидаторе.

 

    В качестве ответа, сервер возвращает вычисленный результат от обработчика.

Иногда приложения могут не предполагать сохранения данных, ли- бо исключать их обработку. Для обозначения таких специальных слу- чаев внутри запроса приходят опции (options). Булевый параметр calc

 

 

Рис. 1: Концепция взаимодействия сервера и мобильного клиента

 

отвечает за передачу входящих данных в обработчик, а store регулиру- ет вызов валидатора. По умолчанию обе опции включены.

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

 

4.2.      Работа с базой данных

С самого начала работы над курсовой предполагалось, что архи- тектура сервера и структура базы данных могут меняться в процессе разработки. Так появилась потребность в наличии на сервере меха- низма миграций (в данном контексте — обновления структуры) базы данных, который, если это необходимо, вызывался бы автоматически при каждом запуске сервера. Чтобы осуществить поддержку автомати-

ческих миграций, были изучены различные стандартные библиотеки, работающие вместе с SQLALCHEMY. Одним из самых популярных ре- шений в этой области является библиотека от авторов SQLALCHEMY, которая называется ALEMBIC1. Стандартный рабочий процесс исполь- зования ALEMBIC подразумевает, что пользователь будет взаимодей- ствовать с ней через CLI (интерфейс командной строки). Обновления базы данных время от времени придется производить вручную, выпол- няя накопленные миграционные скрипты. Иными словами, при адми- нистрировании сервера необходимо будет совершать дополнительные действия. Так было принято решение автоматизировать процесс ми- граций.

Кроме того, что ALEMBIC опирается на CLI, он имеет огромную внутреннюю реализацию, малая часть из которой документирована. Поэтому сама библиотекапрактически не использовалась, вместо этого была написана своя облегченная реализация для работы с миграцион- ными скриптами, которая, тем не менее, удовлетворяет всем потребно- стям сервера. При каждом его запуске происходит извлечение иденти- фикатора текущей миграции из версионной таблицы; если обнаружи- вается, что существуют дальнешие миграции, то они выполняются.

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

 

Таким образом, разработанный сервер полностью удовлетворяет за- явленным функциональным требованиям.

1Alembic 1.0.10: https://pypi.org/project/alembic (дата обращения: 08.05.2019)

 

Рис. 2: Диаграмма классов модуля расчета ЧСС

5.       Модуль измерения частоты сердечных со- кращений

Рассмотрим тестовый модуль для интеграции сервера с приложени- ем, которое собирает данные о притоках крови к пальцу для расчёта пульса с помощью камеры мобильного телефона.

 

5.1.      Реализация модуля

В качестве примера серверного модуля был разработан модуль для измерения частоты сердечных сокращений (далее — ЧСС ). Диаграм- ма классов данного модуля изображена на рисунке 2. Все вычисления происходит в рамках обработчика запросов – HeartrateRequestHandler. Поддерживается два типа измерения ЧСС: в состоянии покоя и в со- стоянии релаксации. Под состоянием релаксации понимается состояние восстановления обычной функциональности человеческого организма после выполнения физических упражнений.

Все существующие алгоритмы расчета ЧСС как правило состоят из двух этапов. Первый — преобразование кадров с камеры в какую-либо числовую характеристику. Второй — вычисление пульса в зависимости от изменения данной характеристики со временем [8]. Реализованный

на сервере алгоритм работает аналогично.

Используя клиентское приложение под ANDROID13, испытуемый в течение некоторого времени при включенном фонарике снимает данные с камеры мобильного телефона, приложив к ней указательный палец. Затем они конвертируются из формата YUV в RGB представление, из которого извлекаются значениякрасного канала. С их помощью можно явно различить моменты притока крови к пальцу. Собранные данные отправляются на сервер (описание формата см. в листингах 2 и 3), где происходит вычисление пульса в соответствующем обработчике входя- щих запросов.

Задача алгоритма  вычисления  ЧСС в  состоянии покоя  состоит   в

том, чтобы рассчитать результат, имея частоту снятия кадров с каме- ры и сигнал красного канала RGB. Для определения доминирующей частоты сигнала применяется метод, использующий быстрое преобра- зование Фурье, как наиболее точный и устойчивый к помехам [8]. Кро- ме того, для улучшения точностиизмерения в состоянии покоя также используется метод пересекающихся отрезков, суть которого состоит в том, что исходные данные разбиваются на такие отрезки, укоторых начало каждого следующего является серединой предыдущего. После разбиения доминирующая частота рассчитывается на каждом отрез- ке, а также навсех данных целиком. В качестве ответа принимается некоторое усредненное число с поправкой на доминирующую частоту. В состоянии релаксации пульс вычисляется методом скользящего окна. В исходных данных дополнительно присутствует его ширина и параметр сдвига (см. листинг 3). Метод пересекающихсяотрезков не применяется, поскольку результаты на отрезках будут  отличаться, и их будет сложно интерпретировать из-за постоянного снижения пульса. Быстрое преобразование Фурье может давать ошибку, выбирая невер- ную частоту в качестве доминирующей, поэтому из всего измерения удаляются ЧСС, сильно отклоняющиеся от среднего значения. Имею- щиеся данные затем приближаются экспоненциальной функцией14, за-

13Приложение разработано в рамках связанной курсовой работы.

14После проведения экспериментов такая функция выбрана как обеспечивающая наибольшую точ-

висящей от времени. Совокупность значений данной функции за время измерения является ответом.

После расчёта пульса в обработчике данные попадают в валидатор, который сохраняет как исходные данные, так и вычисленный результат. Таким образом, при разработке тестового модуля удалось организо- вать расчет пульса и сохранение необходимых результатов, задействуя

предназначенную для модулей функциональность.

 

5.2.      Тестирование модуля

В рамках курсовой работы проводилось как тестирование реализо- ванных алгоритмов расчета пульса, так и тестирование работы прило- жения с сервером. Кроме того, при разработке сервера было налажено непрерывное тестирование.

Проверка алгоритмов расчета ЧСС велась коллегами из СПБНИ- ИФК. Мобильное приложение было установлено на устройстве Sony Xperia M4 Aqua Dual (E2333). В качестве контрольного прибора ис- пользовался профессиональный пульсометр Polar M600. Во время те- стирования было выявлено, что в начале результаты измерений были удовлетворительными и слабо отклонялись от показаний контрольно- го прибора, но с течением времени показания телефона ухудшились. Было сделано предположение, что неточности могут быть связаны с дискомфортными ощущениями спортсменов из-за сильного нагревания устройства. Кроме того, в процессе проведения экспериментов неко- торые измерения признавались некачественными (сообщалось о невоз- можности вычислить пульс). В состоянии покоя это значит, что значе- ния на пересекающихся отрезках сильно отличаются. Происходит это, потому что в приложении заданы строгие критерии совпадения зна- чений. Сложившуюся ситуацию можно трактовать по-разному. С од- ной стороны, чем больше совпадений на отрезках, тем выше вероят- ность корректности результата. С другой же, слишком строгие кри- терии могут привести к тому, что большинство измерений будет счи-

ность.

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

 

В конечном итоге, тестовый модуль смог обеспечить приложение по измерению ЧСС необходимой функциональностью расчёта пульса и со- хранения вычисленных данных. Модуль может быть переиспользован, поскольку реализованные алгоритмы расчета ЧСС показали неплохие результаты в реальныхусловиях.

Заключение

В ходе работы были достугнинуты следующие результаты:

 

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

    Внедрён тестовый модуль через который работает приложение по измерению пульса.

    Реализованы алгоритмы расчета частоты сердечных сокращений в состоянии покоя и релаксации.

Таким образом, поставленные задачи были полностью выполнены. В результате создан расширяемый сервер, который будет использован при проведении реальных исследований.15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15Исходный код доступен по ссылке: https://gitlab.com/SergeyGorbatyuk171/biometrichub (дата об- ращения: 12.05.2019)

Листинги

1 {

2                   ” data”:   {

3                                  ...

4                   },

5                   ” options”:   {

6                                   ” store”:   bool,

7                                   ” calc”:   bool

8                   }

9 }

Листинг 1: Общий формат входящих запросов

1 {

2                   ” data”:   {

3                                   ” type”:   ” peace”,

4                                   ” measure”:   {

5                                                  ” time”:   int,

6                                                  ” redsums”:   [int,   int,   ...]

7                                   }

8                   }

9 }

Листинг 2: Формат запросов для измерения пульса в состоянии покоя с сохранением результата в базу данных

1 {

2                   ” data”:   {

3                                  ” type”:   ” relax”,

4                                  ” measure”:   {

5                                                  ” time”:   int,

6                                                  ” windowSize”:   int,

7                                                  ” shift”:   int,

8                                                  ” redsums”:   [int,   int,   ...]

9                                  }

10                   }

11 }

 

Листинг 3: Формат запросов для измерения пульса в состоянии релаксации с сохранением результата в базу данных

Список литературы

[1]     Biomarker  detection  technologies  and    future    directions    / Satish Balasaheb Nimse, Mukesh Digambar Sonawane, Keum-Soo Song, Taisun Kim // Analyst. –– 2016. –– Vol. 141, no. 3. –– P. 740–755.

[2]     Connecting information to improve health / W Ed Hammond, Christopher Bailey, Philippe Boucher et al. // Health Affairs. –– 2010. –– Vol. 29, no. 2. –– P. 284–288.

[3]     Docker: Microservices. –– URL: https://www.docker.com/solutions/ microservices. Дата обращения: 03.05.2019.

[4]     Improved   heart    rate    detection    using    smart    phone    /  Arpan Pal, Aishwarya Visvanathan, Anirban Dutta Choudhury, AniruddhaSinha // Proceedings of the 29th Annual ACM Symposium on Applied Computing / ACM. –– 2014. –– P. 8–13. –– Дата обращения: 10.05.2019.

[5]     NIKE          EXPLORE          TEAM          SPORT          RESEARCH LAB. ––                                        URL:             https://about.nike.com/pages/ nike-explore-team-sport-research-lab. Дата обращения: 08.05.2019.

[6]     Sport science: The 5 Physical  Tests  All  Nike  Athletes  Take  at the Nike Sport Research Lab. –– URL: https://news.nike.com/ news/nike-sport-research-lab-athlete-tests. Дата обращения: 10.05.2019.

[7]     Vaniea Kami, Rashidi Yasmeen. Tales of software updates: The process of updating software // Proceedings of the 2016 chi conference on human factors in computing systems / ACM. –– 2016. –– P. 3215–3226.

[8]     Ташкинов Михаил Ильич. Оценка пульса с помощью каме- ры мобильного телефона. –– URL: https://se.math.spbu.ru/ SE/YearlyProjects/spring-2016/371/Tashkinov_report.pdf.    Да- та обращения: 02.04.2019.