Информационная система для мобильных устройств

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    562,74 Кб
  • Опубликовано:
    2015-12-11
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Информационная система для мобильных устройств

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

(ФГБОУ ВПО «КУБГУ»)

Кафедра информационных технологий

ДОПУСТИТЬ К ЗАЩИТЕ В ГАК

Заведующий кафедрой

кандидат физико-математических наук, доцент

_____________ Ю. В. Кольцов

___________________ 2015г.

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

БАКАЛАВРА

информационная система для мобильных устройств

Работу выполнил Е. Е. Бутусов

Факультет компьютерных технологий и прикладной математики курс 4

Специальность «Прикладная математика и информатика»

Научный руководитель,доц., канд. физ.-мат. наук. _____В. В. Подколзин

Нормоконтроллер, ст. преп. А.В. Харченко




Краснодар 2015

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

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

.1 Компьютерные сети и протоколы передачи данных

.1.1 Компьютерные сети

.1.2 Протоколы передачи данных

.1.3 Мобильная связь

.2 Устройства, взаимодействующие с компьютерными сетями при помощи протоколов передачи данных

.2.1 Мобильные вычислительные устройства

.3 Программное обеспечение, взаимодействующее с компьютерными сетями

.3.1 Операционная система

.3.2 Мобильные операционные системы

.4 Технологии доступа

.5 Языки разработки клиент-серверных приложений

.6 Программные решения доступа к данным

. Клиент-серверное приложение для управления расписанием

.1 Постановка задачи

.2 Модель данных

.3 Основные бизнес-процессы приложения

.4 Серверная часть системы

.4 Веб-клиент

.5 Мобильный клиент для операционной системы iOS

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ А

ВВЕДЕНИЕ

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

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

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

1. Технологии, необходимые для реализации программной системы для мобильных устройств

 

.1 Компьютерные сети и протоколы передачи данных

 

.1.1 Компьютерные сети

Компьютерная сеть (вычислительная сеть, сеть передачи данных) - система связи компьютеров или вычислительного оборудования (серверы, маршрутизаторы и другое оборудование). Для передачи данных могут быть использованы различные физические явления, как правило - различные виды электрических сигналов, световых сигналов или электромагнитного излучения[1].

Существует несколько классификаций компьютерных сетей:

)         По территориальной распространенности: PAN (Personal Area Network) - персональная сеть, предназначенная для взаимодействия различных устройств, принадлежащих одному владельцу; ЛВС (LAN, Local Area Network) - локальные сети, имеющие замкнутую инфраструктуру до выхода на поставщиков услуг. Термин «LAN» может описывать и маленькую офисную сеть, и сеть уровня большого завода, занимающего несколько сотен гектаров. Зарубежные источники дают даже близкую оценку - около шести миль (10 км) в радиусе. Локальные сети являются сетями закрытого типа, доступ к ним разрешён только ограниченному кругу пользователей, для которых работа в такой сети непосредственно связана с их профессиональной деятельностью; CAN (Campus Area Network - кампусная сеть) - объединяет локальные сети близко расположенных зданий; MAN (Metropolitan Area Network) - городские сети между учреждениями в пределах одного или нескольких городов, связывающие много локальных вычислительных сетей; WAN (Wide Area Network) - глобальная сеть, покрывающая большие географические регионы, включающие в себя как локальные сети, так и прочие телекоммуникационные сети и устройства. Пример WAN - сети с коммутацией пакетов (Frame relay), через которую могут «разговаривать» между собой различные компьютерные сети. Глобальные сети являются открытыми и ориентированы на обслуживание любых пользователей; Термин «корпоративная сеть» также используется в литературе для обозначения объединения нескольких сетей, каждая из которых может быть построена на различных технических, программных и информационных принципах.

)         По типу функционального взаимодействия: клиент-сервер; смешанная сеть.

)         По типу сетевой топологии: Шина; Кольцо; Двойное кольцо; Звезда; Ячеистая; Решётка; Дерево; Fat Tree (топология компьютерной сети, изобретенная Charles E. Leiserson из MIT, является дешевой и эффективной для суперкомпьютеров. В отличие от классической топологии дерево, в которой все связи между узлами одинаковы, связи в утолщенном дереве становятся более широкими (толстыми, производительными по пропускной способности) с каждым уровнем по мере приближения к корню дерева. Часто используют удвоение пропускной способности на каждом уровне).

)         По типу среды передачи: проводные (телефонный провод, коаксиальный кабель, витая пара, волоконно-оптический кабель); беспроводные (передачей информации по радиоволнам в определенном частотном диапазоне).

)         По функциональному назначению: сети хранения данных; серверные фермы; сети управления процессом; сети SOHO; домовые сети.

)         По скорости передач: низкоскоростные (до 10 Мбит/с); среднескоростные (до 100 Мбит/с); высокоскоростные (свыше 100 Мбит/с).

)         По сетевым операционным системам: на основе Windows; на основе UNIX; на основе NetWare; на основе Cisco.

)         По необходимости поддержания постоянного соединения: пакетная сеть (Фидонет, UUCP); Онлайновая сеть (Интернет, GSM)[1].

При реализации компьютерной сети могут использоваться различные наборы протоколов, некоторые из них: AppleTalk; ARCNET; ATM; DECnet; Ethernet; HIPPI; IEEE-488; IP; IPX; Myrinet; TCP; Token Ring; UDPSPX; FDDI; QsNet; USB; IEEE 1394 (Firewire, iLink); X.25; Frame relay; Bluetooth; IEEE 802.11; Systems Network Architecture; RapidIO[1].

Интернет (англ. Internet) - всемирная система объединённых компьютерных сетей для хранения и передачи информации. Часто упоминается как Всемирная сеть и Глобальная сеть, а также просто Сеть. Построена на базе стека протоколов TCP/IP. На основе Интернета работает Всемирная паутина (World Wide Web, WWW) и множество других систем передачи данных[2].

Интернет состоит из многих тысяч корпоративных, научных, правительственных и домашних компьютерных сетей. Объединение сетей разной архитектуры и топологии стало возможно благодаря протоколу IP (англ. Internet Protocol) и принципу маршрутизации пакетов данных[2].

Протокол IP был специально создан агностическим в отношении физических каналов связи. То есть любая система (сеть) передачи цифровых данных, проводная или беспроводная, для которой существует стандарт инкапсуляции в неё IP-пакетов, может передавать и трафик Интернета. Агностицизм протокола IP, в частности, означает, что компьютер или маршрутизатор должен знать тип сетей, к которым он непосредственно присоединён, и уметь работать с этими сетями; но не обязан (и в большинстве случаев не может) знать, какие сети находятся за маршрутизаторами[2].

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

Сам протокол IP был разработан в организации IETF (англ. Internet Engineering Task Force; Task force - группа специалистов для решения конкретной задачи), чьё название можно вольно перевести как «Группа по решению задач проектирования Интернета». IETF и её рабочие группы по сей день занимаются развитием протоколов Всемирной сети. IETF открыта для публичного участия и обсуждения. Комитеты организации публикуют так называемые документы RFC. В этих документах даются технические спецификации и точные объяснения по многим вопросам. Некоторые документы RFC возводятся организацией IAB (англ. Internet Architecture Board - Совет по архитектуре Интернета) в статус стандартов Интернета (англ. Internet Standard). С 1992 года IETF, IAB и ряд других интернет-организаций входят в Общество Интернета (англ. Internet Society, ISOC). Общество Интернета предоставляет организационную основу для разных исследовательских и консультативных групп, занимающихся развитием Интернета[2].

 

1.1.2 Протоколы передачи данных

Стек протоколов TCP/IP - набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет. Название TCP/IP происходит из двух наиболее важных протоколов семейства - Transmission Control Protocol (TCP) и Internet Protocol (IP), которые были разработаны и описаны первыми в данном стандарте. Также изредка упоминается как модель DOD в связи с историческим происхождением от сети ARPANET из 1970 годов (под управлением DARPA, Министерства обороны США). Протоколы работают друг с другом в стеке (англ. stack, стопка) - это означает, что протокол, располагающийся на уровне выше, работает «поверх» нижнего, используя механизмы инкапсуляции. Например, протокол TCP работает поверх протокола IP.

Стек протоколов TCP/IP включает в себя четыре уровня: прикладной уровень (application layer), транспортный уровень (transport layer), сетевой уровень (internet layer), канальный уровень (link layer).

Протоколы этих уровней полностью реализуют функциональные возможности модели OSI. На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных[3].

 

1.1.3 Мобильная связь

Мобильная радиосвязь - радиосвязь между абонентами, местоположение которых может меняться[4].

Также, существует синонимичный термин «подвижная связь», широко использовавшийся в XX веке и продолжающий применяться, в частности, в законодательстве Российской Федерации.

На данный момент существует две классификации систем мобильной радиосвязи(СМРС):

)         Наземные: системы персонального радиовызова (СПРВ); сотовые СМРС (предоставляют доступ к территориальному ресурсу); системы с радиальной архитектурой (станции абонентов и центральная станция - коммутатор и комплект приемопередатчиков с круговой диаграммой направленности); системы с радиально-зоновой архитектурой, транкинговая система мобильной радиосвязи (используют ретрансляторы, система автоматически выбирает лучший); зоновые СМРС (фиксированный канал через ретранслятор).

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

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

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

Основные составляющие сотовой сети - это сотовые телефоны и базовые станции, которые обычно располагают на крышах зданий и вышках. Будучи включённым, сотовый телефон прослушивает эфир, находя сигнал базовой станции. После этого телефон посылает станции свой уникальный идентификационный код. Телефон и станция поддерживают постоянный радиоконтакт, периодически обмениваясь пакетами. Связь телефона со станцией может идти по аналоговому протоколу (AMPS, NAMPS, NMT-450) или по цифровому (DAMPS, CDMA, GSM, UMTS). Если телефон выходит из поля действия базовой станции (или качество радиосигнала сервисной соты ухудшается), он налаживает связь с другой (англ. handover)[5].

Сотовые сети могут состоять из базовых станций разного стандарта, что позволяет оптимизировать работу сети и улучшить её покрытие[5].

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

Операторы могут заключать между собой договоры роуминга. Благодаря таким договорам абонент, находясь вне зоны покрытия своей сети, может совершать и принимать звонки через сеть другого оператора. Как правило, это осуществляется по повышенным тарифам. Возможность роуминга появилась лишь в стандартах 2G и является одним из главных отличий от сетей 1G. Операторы могут совместно использовать инфраструктуру сети, сокращая затраты на развертывание сети и текущие издержки[5].

 

1.2 Устройства, взаимодействующие с компьютерными сетями при помощи протоколов передачи данных

 

.2.1 Мобильные вычислительные устройства

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

На данный момент существует три вида мобильных телефонов: сотовый телефон, спутниковый телефон, радиотелефон[6].

Также принято классифицировать мобильные телефоны по функциональности:

)         Стандартный мобильный телефон использует операционную систему изготовителя, которая закрыта и не расширяема (кроме моделей Sony Ericsson и Siemens, ОС которых можно расширить патчами). Имеет процессор, оперативную память для работы ОС и постоянную память для хранения телефонной книги, ОС и её данных. Большинство моделей имеют более низкую цену, чем смартфоны и обеспечивают меньше функций.

)         Смартфон оснащается достаточно развитой операционной системой (Android, iOS, Windows Phone и др.), открытой для разработки программного обеспечения сторонними разработчиками. Установка дополнительных приложений позволяет значительно расширить функциональность смартфонов.

)         Коммуникатор - карманный персональный компьютер, дополненный функциональностью мобильного телефона[6].

Карманный персональный компьютер (КПК, англ. Personal Digital Assistant, PDA, а также Handheld Computer) - портативное вычислительное устройство, обладающее широкими функциональными возможностями. Изначально КПК предназначались для использования в качестве электронных органайзеров. С «классического» КПК невозможно совершать звонки, и КПК не является мобильным телефоном, поэтому к настоящему времени классические КПК практически полностью вытеснены коммуникаторами - КПК с модулем сотовой связи и смартфонами[7].

В английском языке словосочетание «карманный ПК» (Pocket PC) является торговой маркой фирмы Microsoft, то есть относится лишь к одной из разновидностей КПК, а не обозначает весь класс устройств. Словосочетание Palm PC («наладонный компьютер») также является конкретной торговой маркой. Для обозначения всего класса устройств в английском языке используется аббревиатура PDA[7].

Смартфон (англ. smartphone - умный телефон) - мобильный телефон, дополненный функциональностью карманного персонального компьютера[7].

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

Смартфоны отличаются от обычных мобильных телефонов наличием достаточно развитой операционной системы, открытой для разработки программного обеспечения сторонними разработчиками (операционная система обычных мобильных телефонов закрыта для сторонних разработчиков). Установка дополнительных приложений позволяет значительно улучшить функциональность смартфонов по сравнению с обычными мобильными телефонами[7].

 

1.3 Программное обеспечение, взаимодействующее с компьютерными сетями

 

.3.1 Операционная система

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

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

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

В большинстве вычислительных систем операционная система является основной, наиболее важной (а иногда и единственной) частью системного программного обеспечения. С 1990-х годов наиболее распространёнными операционными системами являются системы семейства Windows и системы класса UNIX (особенно Linux и Mac OS)[8].

 

1.3.2 Мобильные операционные системы

iOS (до 24 июня 2010 года - iPhone OS) - мобильная операционная система, разрабатываемая и выпускаемая американской компанией Apple. Была выпущена в 2007 году; первоначально - для iPhone и iPod touch, позже - для таких устройств, как iPad и Apple TV. В отличие от Windows Phone и Google Android, выпускается только для устройств, производимых фирмой Apple[5].

Пользовательский интерфейс iOS основан на концепции прямого манипулирования с использованием жестов multitouch. Элементы управления интерфейсом состоят из ползунков, переключателей и кнопок.разработана на основе OS X и использует тот же набор основных компонентов Darwin, совместимый со стандартом POSIX.

В iOS есть четыре слоя абстрагирования: слой Core OS, слой Core Services, слой Media Layer и слой Cocoa Touch.

Для версии операционной системы iOS 7.0.4 выделяется 1,4-2 Гб флеш-памяти устройства для системного раздела и примерно 800 Мб свободного места (варьируется в зависимости от модели).

По состоянию на 19 мая 2013 года магазин приложений App Store содержит более 900 тыс. приложений для iOS, которые все вместе были загружены более 50 миллиардов раз[5].

1.4 Технологии доступа


Серверное программное обеспечение (сервер, англ. server от to serve - служить) - в информационных технологиях - программный компонент вычислительной системы, выполняющий сервисные (обслуживающие) функции по запросу клиента, предоставляя ему доступ к определённым ресурсам или услугам[5].

Понятия сервер и клиент и закреплённые за ними роли образуют программную концепцию «клиент-сервер»[5].

Для взаимодействия с клиентом (или клиентами, если поддерживается одновременная работа с несколькими клиентами) сервер выделяет необходимые ресурсы межпроцессного взаимодействия (разделяемая память, пайп, сокет и т. п.) и ожидает запросы на открытие соединения (или, собственно, запросы на предоставляемый сервис). В зависимости от типа такого ресурса, сервер может обслуживать процессы в пределах одной компьютерной системы или процессы на других машинах через каналы передачи данных (например, COM-порт) или сетевые соединения[5].

Формат запросов клиента и ответов сервера определяется протоколом. Спецификации открытых протоколов описываются открытыми стандартами, например протоколы Интернета определяются в документах RFC.

В зависимости от выполняемых задач одни сервера, при отсутствии запросов на обслуживание, могут простаивать в ожидании. Другие могут выполнять какую-то работу (например, работу по сбору информации), у таких серверов работа с клиентами может быть второстепенной задачей[5].

Клиент - это аппаратный или программный компонент вычислительной системы, посылающий запросы серверу[5].

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

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

Тем не менее, не всегда под клиентом подразумевается компьютер со слабыми вычислительными ресурсами. Чаще всего понятия «клиент» и «сервер» описывают распределение ролей при выполнении конкретной задачи, а не вычислительные мощности. На одном и том же компьютере могут одновременно работать программы, выполняющие как клиентские, так и серверные функции. Например, веб-сервер может в качестве клиента получать данные для формирования страниц от SQL-сервера[5].

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

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

Кроме общего случая, следует выделить аппаратный тонкий клиент (например, Windows- и Linux-терминалы) - специализированное устройство, принципиально отличное от ПК. Аппаратный тонкий клиент не имеет жёсткого диска, использует специализированную локальную ОС (одна из задач которой организовать сессию с терминальным сервером для работы пользователя), не имеет в своём составе подвижных деталей, выполняется в специализированных корпусах с полностью пассивным охлаждением[5].

Для расширения функциональности тонкого клиента прибегают к его «утолщению», например, добавляют возможности автономной работы, сохраняя главное отличие - работу в сессии с терминальным сервером. Когда в клиенте появляются подвижные детали (жёсткие диски), появляются возможности автономной работы, он перестаёт быть тонким клиентом в чистом виде, а становится универсальным клиентом[5].

Тонкий клиент в большинстве случаев обладает минимальной аппаратной конфигурацией, вместо жёсткого диска для загрузки локальной специализированной ОС используется DOM (DiskOnModule). В некоторых конфигурациях системы тонкий клиент загружает операционную систему по сети с сервера, используя протоколы PXE, BOOTP, DHCP, TFTP и Remote Installation Services (RIS).

В России основными производителями тонких клиентов являются DEPO, OPTION, TOHK, AK Systems и Norma TS[5].

База данных - представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины (ЭВМ)[9].

Система управления базами данных (СУБД) - совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных[9].

 

1.5 Языки разработки клиент-серверных приложений

(от англ. HyperText Markup Language - «язык гипертекстовой разметки») - стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML интерпретируется браузерами и отображается в виде документа в удобной для человека форме[10].

Язык HTML является приложением («частным случаем») SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту ISO 8879[10].

Язык XHTML является более строгим вариантом HTML, он следует всем ограничениям XML и, фактически, XHTML можно воспринимать как приложение языка XML к области разметки гипертекста[10].

Во всемирной паутине HTML-страницы, как правило, передаются браузерам от сервера по протоколам HTTP или HTTPS, в виде простого текста или с использованием сжатия[10].

CSS (англ. Cascading Style Sheets - каскадные таблицы стилей) - формальный язык описания внешнего вида документа, написанного с использованием языка разметки[5].

Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL[5].

CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения отдельных блоков и других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось разделение описания логической структуры веб-страницы (которое производится с помощью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печатное представление, чтение голосом (специальным голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими шрифт Брайля[5].

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

JavaScript - прототипно-ориентированный сценарный язык программирования. Является диалектом языка ECMAScript.

JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.

Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса[5].

На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке[11].

Название «JavaScript» является зарегистрированным товарным знаком компании Oracle Corporation[5].

В 1992 году компания Nombas (впоследствии приобретённая Openwave) начала разработку встраиваемого скриптового языка Cmm (Си-минус-минус), который, по замыслу разработчиков, должен был стать достаточно мощным, чтобы заменить макросы, сохраняя при этом схожесть с Си, чтобы разработчикам не составляло труда изучить его. Главным отличием от Си была работа с памятью. В новом языке всё управление памятью осуществлялось автоматически: не было необходимости создавать буферы, объявлять переменные, осуществлять преобразование типов. В остальном языки сильно походили друг на друга: в частности, Cmm поддерживал стандартные функции и операторы Си. Cmm был переименован в ScriptEase, поскольку исходное название звучало слишком негативно, а упоминание в нём Си «отпугивало» людей. На основе этого языка был создан проприетарный продукт CEnvi. В конце ноября 1995 года Nombas разработала версию CEnvi, внедряемую в веб-страницы. Страницы, которые можно было изменять с помощью скриптового языка, получили название Espresso Pages - они демонстрировали использование скриптового языка для создания игры, проверки пользовательского ввода в формы и создания анимации. Espresso Pages позиционировались как демоверсия, призванная помочь представить, что случится, если в браузер будет внедрён язык Cmm. Работали они только в 16-битовом Netscape Navigator под управлением Windows.

Перед Бренданом Эйхом, нанятым в компанию Netscape 4 апреля 1995 года, была поставлена задача внедрить язык программирования Scheme или что-то похожее в браузер Netscape. Поскольку требования были размыты, Эйха перевели в группу, ответственную за серверные продукты, где он проработал месяц, занимаясь улучшением протокола HTTP. В мае разработчик был переброшен обратно, в команду, занимающуюся клиентской частью (браузером), где он немедленно начал разрабатывать концепцию нового языка программирования. Менеджмент разработки браузера, включая Тома Пакина, Михаэля Тоя, Рика Шелла, был убеждён, что Netscape должен поддерживать язык программирования, встраиваемый в HTML-код страницы.

Помимо Брендана Эйха в разработке участвовали сооснователь Netscape Communications Марк Андрессен и сооснователь Sun Microsystems Билл Джой: чтобы успеть закончить работы над языком к релизу браузера, компании заключили соглашение о сотрудничестве в разработке. Они ставили перед собой цель обеспечить «язык для склеивания» составляющих частей веб-ресурса: изображений, плагинов, Java-апплетов, который был бы удобен для веб-дизайнеров и программистов, не обладающих высокой квалификацией.

Первоначально язык назывался Mocha, затем он был переименован в LiveScript и предназначался как для программирования на стороне клиента, так и для программирования на стороне сервера (там он должен был называться LiveWire). На синтаксис оказали влияние языки Си и Java, и, поскольку Java в то время было модным словом, 4 декабря 1995 года LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Анонс JavaScript со стороны представителей Netscape и Sun состоялся накануне выпуска второй бета-версии Netscape Navigator. В нём декларируется, что 28 лидирующих ИТ-компаний выразили намерение использовать в своих будущих продуктах JavaScript как объектный скриптовый язык с открытым стандартом[11].

В 1996 году компания Microsoft выпустила аналог языка JavaScript, названный JScript. Анонсирован этот язык был 18 июля 1996 года. Первым браузером, поддерживающим эту реализацию, был Internet Explorer 3.0.

По инициативе компании Netscape была проведена стандартизация языка ассоциацией ECMA. Стандартизированная версия имеет название ECMAScript, описывается стандартом ECMA-262. Первой версии спецификации соответствовал JavaScript версии 1.1, а также языки JScript и ScriptEasy.

В статье «The World’s Most Misunderstood Programming Language Has Become the World’s Most Popular Programming Language» («Самый неправильно понятый язык программирования в мире стал самым популярным в мире языком программирования») Дуглас Крокфорд утверждает, что лидирующую позицию JavaScript занял в связи с развитием AJAX, поскольку браузер стал превалирующей системой доставки приложений. Он также констатирует растущую популярность JavaScript, то, что этот язык встраивается в приложения, отмечает значимость языка.

Согласно TIOBE Index, базирующемуся на данных поисковых систем Google, MSN, Yahoo!, Википедия и YouTube, в апреле 2015 года JavaScript находился на 6 месте (год назад на 9)[5].

По данным Black Duck Software в разработке открытого программного обеспечения доля использования JavaScript росла. 36 % проектов, релизы которых состоялись с августа 2008 по август 2009 гг., включают JavaScript, наиболее часто используемый язык программирования с быстрорастущей популярностью. 80 % открытого программного обеспечения использует Си, C++, Java, Shell и JavaScript. При этом JavaScript - единственный из этих языков, чья доля использования увеличилась (более чем на 2 процента, если считать в строках кода)[11].

JavaScript является самым популярным языком программирования, используемым для разработки веб-приложений на стороне клиента, а также используется в качестве скриптового языка для настольных и серверных приложений[5].C - компилируемый объектно-ориентированный язык программирования, используемый корпорацией Apple, построенный на основе языка Си и парадигм Smalltalk. В частности, объектная модель построена в стиле Smalltalk - объектам посылаются сообщения[12].

Язык Objective-C является надмножеством языка Си, поэтому Си-код полностью понятен компилятору Objective-C[12].

Целью Кокса было создание языка, поддерживающего концепцию software IC. Под этой концепцией понимается возможность собирать программы из готовых компонентов (объектов), подобно тому как сложные электронные устройства могут быть легко собраны из набора готовых интегральных микросхем.

Одной из целей было также создание модели, в которой сами классы также являются полноценными объектами, поддерживалась бы интроспекция и динамическая обработка сообщений.

Одной из отличительных черт Objective-C является его динамичность - целый ряд решений, обычно принимаемых на этапе компиляции, здесь откладывается непосредственно до этапа выполнения.

Ещё одной из особенностей языка является то, что он message-oriented, в то время как C++ - function-oriented. Это значит, что в нём вызовы метода интерпретируются не как вызов функции (но к этому обычно все сводится), а именно как посылка сообщения (с именем и аргументами) объекту, подобно тому, как это происходит в Smalltalk-е[12].

Такой подход имеет определенные преимущества - так, любому объекту можно послать любое сообщение. Объект может вместо обработки сообщения просто переслать его другому объекту для обработки (так называемое делегирование), в частности именно так можно легко реализовать распределенные объекты (то есть объекты, находящиеся в различных адресных пространствах и даже на разных компьютерах)[12].

Привязка сообщения к соответствующей функции происходит непосредственно на этапе выполнения[12].

Язык Objective-C поддерживает работу с метаинформацией - так, у объекта непосредственно на этапе выполнения можно, используя специальные сообщения, узнать его класс, список методов (с типами передаваемых аргументов) и instance-переменных, проверить, является ли класс потомком заданного и поддерживает ли он заданный протокол и т. п.

В языке есть поддержка протоколов (понятие интерфейса объекта и протокола четко разделены). Для объектов поддерживается наследование (не множественное), для протоколов поддерживается множественное наследование. Объект может быть унаследован от другого объекта и сразу нескольких[12].

На данный момент язык Objective-C поддерживается компиляторами Clang и GCC (под управлением Windows используется в составе MinGW или cygwin). Подавляющая часть встроенных функций перенесено на runtime-библиотеку. Вместе с компилятором gcc поставляется минимальный вариант такой библиотеки[12].

 

1.6 Программные решения доступа к данным

мобильный операционный передача данные

MongoDB (от англ. humongous - огромный) - документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++.

Основные возможности: документо-ориентированное хранение (JSON-подобная схема данных), достаточно гибкий язык для формирования запросов, динамические запросы, поддержка индексов, профилирование запросов, быстрые обновления «на месте», эффективное хранение двоичных данных больших объёмов, например, фото и видео, журналирование операций, модифицирующих данные в базе данных, поддержка отказоустойчивости и масштабируемости: асинхронная репликация, набор реплик и распределения базы данных на узлы, может работать в соответствии с парадигмой MapReduce, полнотекстовый поиск, в том числе на русском языке, с поддержкой морфологии[5].

СУБД управляет наборами JSON-подобных документов, хранимых в двоичном виде в формате BSON. Хранение и поиск файлов в MongoDB происходит благодаря вызовам протокола GridFS. Подобно другим документо-ориентированным СУБД (CouchDB и др.), MongoDB не является реляционной СУБД. В СУБД нет такого понятия, как «транзакция». Атомарность гарантируется только на уровне целого документа, то есть частичного обновления документа произойти не может. Также отсутствует понятие «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом.

В MongoDB реализована асинхронная репликация в конфигурации «ведущий - ведомый» (англ. master - slave), основанная на передаче журнала изменений с ведущего узла на ведомые. Поддерживается автоматическое восстановление в случае выхода из строя ведущего узла. Серверы с запущенным процессом mongod должны образовать кворум, чтобы произошло автоматическое определение нового ведущего узла. Таким образом, если не используется специальный процесс-арбитр (процесс mongod, только участвующий в установке кворума, но не хранящий никаких данных), количество запущенных реплик должно быть нечётным[13].

июня 2012 года компания-разработчик MongoDB 10gen начала длительное сотрудничество с корпорацией Microsoft, предоставив MongoDB её облаку Microsoft Azure. В результате этого партнёрства разработчики получили простой установщик для запуска MongoDB на виртуальных машинах Microsoft Azure. В дополнение к расширению опций облака и хостинга, доступных разработчикам MongoDB, этот шаг объединяет возможности ведущей базы данных NoSQL с технологиями Microsoft, включая Microsoft Azure, .NET и другие технологии с открытым исходным кодом, которые поддерживает Microsoft[5].

JSON (англ. JavaScript Object Notation) - текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми[5].

Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается языконезависимым и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON.

За счёт своей лаконичности по сравнению с XML, формат JSON может быть более подходящим для сериализации сложных структур. Если говорить о веб-приложениях, в таком ключе он уместен в задачах обмена данными как между браузером и сервером (AJAX), так и между самими серверами (программные HTTP-интерфейсы).

Поскольку формат JSON является подмножеством синтаксиса языка JavaScript, то он может быть быстро десериализован встроенной функцией eval(). Кроме того, возможна вставка вполне работоспособных JavaScript-функций. В языке PHP, начиная с версии 5.2.0, поддержка JSON включена в ядро в виде функций json_decode() и json_encode(), которые сами преобразуют типы данных JSON в соответствующие типы PHP и наоборот[5].

Twig - компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Armin Ronacher написал Twig в 2008 году для платформы блогов Chyrp. Но больше не возвращался к разработке и больше занимался разработкой на Python. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django, также созданных им. Идею данного шаблонизатора развивает и поддерживает Fabien Potencier, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию[5].

Node или Node.js - программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API (написанный на C++), подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Node.js применяется преимущественно на сервере, выполняя роль веб-сервера, но есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи node-webkit и AppJS для Linux, Windows и Mac OS) и даже программировать микроконтроллеры (например, tessel и espruino). В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом[5].

Node разработал Райан Дал (англ. Ryan Dahl) в 2009 году после двух лет экспериментирования над созданием серверных веб-компонентов. В ходе своих исследований он пришёл к выводу, что вместо традиционной модели параллелизма на основе потоков следует обратиться к событийно-ориентированным системам. Эта модель была выбрана из-за простоты, низких накладных расходов (по сравнению с идеологией «один поток на каждое соединение») и быстродействия. Целью Node является предложить «простой способ построения масштабируемых сетевых серверов»[5].

Разработка Node.js спонсируется компанией Joyent. В декабре 2014 года был создан форк io.js[5].

REST (сокр. от англ. Representational State Transfer - «передача репрезентативного состояния») - метод взаимодействия компонентов распределённого приложения в сети Интернет, при котором вызов удаленной процедуры представляет собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Этот способ является альтернативой более сложным методам, таким как SOAP, CORBA и RPC[14].

В широком смысле REST означает концепцию построения распределённого приложения, при которой компоненты взаимодействуют наподобие взаимодействия клиентов и серверов во Всемирной паутине[14].

Хотя данная концепция лежит в самой основе Всемирной паутины, термин REST был введён Роем Филдингом (англ. Roy Fielding), одним из создателей протокола HTTP, лишь в 2000 году. В своей диссертации в Калифорнийском университете в Ирвайне он подвёл теоретическую основу под метод взаимодействия клиентов и серверов во Всемирной паутине, абстрагировав его и назвав «передачей репрезентативного состояния». Филдинг описал концепцию построения распределённого приложения, при которой каждый запрос (REST-запрос) клиента к серверу содержит в себе исчерпывающую информацию о желаемом ответе сервера (желаемом репрезентативном состоянии), и сервер не обязан сохранять информацию о состоянии клиента («клиентской сессии»)[14].

Технология Push (англ. push, дословно - «проталкивание») - один из способов распространения информации (контента) в Интернете, когда данные поступают от сервера к клиенту на основе ряда параметров, установленных клиентом, где запрос на передачу информации происходит по инициативе центрального сервера[5].

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

Push-технологии приобрели известность благодаря продукту PointCast, популярному в 90-е годы. Сеть PointCast занималась доставкой новостей и данных фондового рынка, содержала агрегатор с собственным форматом, отдалённо напоминавшим телевидение, с текстом и рисунками, вместо видео. Влияние СМИ было значительным, так что Netscape и Microsoft в разгар браузерной войны решили включить эту технологию в свое браузеры Netscape Navigator и Internet Explorer соответственно. Однако в большинстве случаев пользователи имели низкую скорость подключения, поэтому популярность сервиса была низкой, а позже сошла на нет, вытесненная pull-технологией RSS в начале 2000-х[5].

AngularJS - JavaScript-фреймворк с открытым исходным кодом. Предназначен для разработки одностраничных приложений. Его цель - расширение браузерных приложений на основе MVC шаблона, а также упрощение тестирования и разработки[5].

Фреймворк работает с HTML, содержащим дополнительные пользовательские атрибуты, которые описываются директивами, и связывает ввод или вывод области страницы с моделью, представляющей собой обычные переменные JavaScript. Значения этих переменных задаются вручную или извлекаются из статических или динамических JSON-данных[5].

AngularJS был первоначально разработан в 2009 году Мишко Хевери и Адамом Абронсом как программное обеспечение позади сервиса хранения JSON-данных, измеряющихся мегабайтами, для облегчения разработки приложений организациями. Сервис располагался на домене «GetAngular.com» и имел нескольких зарегистрированных пользователей, прежде чем они решили отказаться от идеи бизнеса и выпустить Angular как библиотеку с открытым исходным кодом[5].

Абронс покинул проект, но Хевери, работающий в Google, продолжает развивать и поддерживать библиотеку с другими сотрудниками Google Игорем Минаром и Войта Джином[5].

AngularJS спроектирован с убеждением, что декларативное программирование лучше всего подходит для построения пользовательских интерфейсов и описания программных компонентов, в то время как императивное программирование отлично подходит для описания бизнес-логики. Фреймворк адаптирует и расширяет традиционный HTML, чтобы обеспечить двустороннюю привязку данных для динамического контента, что позволяет автоматически синхронизировать модель и представление. В результате AngularJS уменьшает роль DOM-манипуляций и улучшает тестируемость[5].

MEAN.js - это полноценный стек технологий для создания одностраничных веб-приложений. Аббревиатура расшифровывается как MongoDB (NoSQL-СУБД) + Express.js (веб-фреймворк на JavaScript) + Angular.js (фреймворк для создания front-end части) + Node.js (платформа для запуска серверного кода на JavaScript).

2. Клиент-серверное приложение для управления расписанием

 

.1 Постановка задачи


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

 

2.2 Модель данных


Модель данных серверной части представлена на рисунке 1:

Рисунок 1 - модель данных серверной части

Для хранения информации предметной области в приложении используется СУБД MongoDB. В качестве каркаса для серверного кода используется фреймворк Express.JS.

В таблице 1 приведено описание каждой сущности модели данных:

Таблица 1 - описание сущностей серверной модели данных

Сущность

Назначение

App Configuration

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

User

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

Lesson

Определяет номер занятия по порядку и временные рамки занятия

LessonType

Определяет тип занятия: лекция, практическое занятие и т. д.

Playground

Площадка для проведения занятия: аудитория, стадион и т. п.

Subject

Предмет, преподаваемый в расписании

Union

Объединение пользователей, может быть как группой, так и кафедрой, курсом или всем университетом

Replacement

Единоразовое занятие либо единоразовая замена занятия

Notification

Уведомление студентов: о каком-либо событии

Schedule

Занятие в расписании

 

2.3 Основные бизнес-процессы приложения


Основными объектами при работе с расписанием являются Schedule (занятие по расписанию) и Replacement (одноразовое занятие или однократная замена занятия по расписанию). Объекты Schedule и Replacement являются практически идентичными объектами, различаясь только тем, что Replacement назначается на конкретную дату, а Schedule имеет поле, называемое CyclePosition - позицию в цикле занятий.

Цикл занятий определяется в объекте сущности AppConfiguration. Объектов типа AppConfiguration в системе может быть сколь угодно много, однако активная конфигурация может быть только одна (определяется булевым полем active). Помимо этого, объекты AppConfiguration определяют параметры цикла занятий. Цикл занятий определяется тремя параметрами: длина цикла занятий (целое число), дата начала отсчета цикла занятий (дата) и свободные от занятий дни (массив целых чисел, нумерация свободных от занятий дней в цикле занятий - с единицы). Дата начала цикла и длина цикла служат для отображения объектов типа Schedule на реальные даты, используя данные поля cyclePosition. Поле свободных от занятий дней служит для выполнения ограничений целостности: нельзя создать занятие с cyclePosition, если данная позиция обозначена как свободный от занятий день, а также нельзя сделать конфигурацию активной, если хотя бы одно занятие по расписанию не удовлетворяет условиям длины цикла занятий и свободных от занятий дней.

Механизм получения расписания следующий. Система получает на вход три параметра: дата начала периода, дата конца периода, объединение, для которого должно быть выбрано расписание. Затем происходит итерирование по всем дням, находящимся между датой начала периода и датой окончания периода, для каждой даты вычисляется позиция в цикле, и система производит выборку из базы данных занятий, для которых cyclePosition равна значению текущей позиции. После получения выборки система удаляет поле cyclePosition и заменяет его на значение даты, которое находится в данный момент в переменной-итераторе (итераторе цикла, по которому перебираются даты между началом периода и концом периода).

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

Механизм уведомлений опирается на три вида сущностей: объединение, пользователь и собственно уведомление. Каждый пользователь имеет в базе данных поле readUnions, которое указывает, какие объединения пользователь «читает», иными словами, от каких объединений он хочет получать уведомления. Также у пользователя есть аналогичное по структуре поле managedUnions, которое содержит информацию об объединениях, которыми пользователь может управлять. При создании уведомления пользователь может указать в целевых объединениях только те, которые содержатся в его списке managedUnions. Если всё указано верно, то система регистрирует уведомление, производит выборку пользователей и рассылает уведомления тем пользователям, пересечение списков которых со списком целевых объединений уведомления не является пустым.

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

Пользователи системы могут иметь тип (преподаватель, студент), который не влияет на выданные пользователям права, но дает возможность классифицировать пользователей, а также вводит ограничения целостности при создании расписания (преподавателем занятия может быть только пользователь с типом «преподаватель»).

Для контроля прав доступа в программе использованы роли. Роли могут быть трех видов: читатель (viewer), редактор (editor) и администратор (admin). Читатель имеет возможность писать только в ресурс профилей пользователей и только в свой профиль, при этом имеет возможность читать только свой профиль из ресурса профилей пользователей. Редактор - это читатель, который имеет право создавать замены в расписаниях, а также рассылать уведомления (данные возможности реализуются при помощи разрешения записи в ресурсы уведомлений и замен). Администратор имеет полномочия записи/правки/удаления всех ресурсов системы, включая конфигурационную сущность.

Авторизация приложения реализована при помощи cookies.

В таблице ниже указаны соответствия между моделью данных и RESTful-ресурсами, а также указаны права доступа к ресурсу для каждой роли (в формате HTTP-запросов: GET, POST, PUT, PATCH, DELETE):

Таблица 2 - соответствия между моделью данных и RESTful-ресурсами

Сущность модели

RESTful-ресурс

Viewer

Editor

Admin

App Configuration

/app-configurations

-

-

GET, POST, PUT, DELETE

User

/users

GET, POST, PUT, DELETE

GET, POST, PUT, DELETE

GET, POST, PUT, DELETE

Lesson

/lessons

GET

GET

GET, POST, PUT, DELETE

Lesson Type

/lesson-types

GET

GET

GET, POST, PUT, DELETE

Playground

/playgrounds

GET

GET

GET, POST, PUT, DELETE

Subject

/subjects

GET

GET

GET, POST, PUT, DELETE

Union

/unions

GET

GET

GET, POST, PUT, DELETE

Replacement

/replacements

GET

GET, POST, PUT, DELETE

GET, POST, PUT, DELETE

Notification

/notifications

GET

GET, POST, PUT, DELETE

GET, POST, PUT, DELETE

Schedule

/schedules

GET

GET

GET, POST, PUT, DELETE


Работа со всеми ресурсами системы является тривиальной, за исключением работы с ресурсом schedules.

При запросе ресурса schedules, если указаны параметры beginDate и endDate, то происходит выборка расписания за требуемый диапазон дат. При этом обязательно наличие одного из двух параметров: union или teacher, которые устанавливают дополнительное ограничение на выборку расписания (и позволяют избежать коллизий, при которых в одно время может быть несколько занятий).

 

2.4 Веб-клиент


Один из клиентов системы выполнен в виде веб-сайта - одностраничного приложения, построенного с использованием фреймворка Angular.JS. Для отрисовки интерфейсов была использована библиотека Bootstrap. Веб-клиент дает возможность регистрации пользователей, управления всеми объектами в системе, а также дает возможность просмотра расписания на выбранные диапазоны дат для определенного объединения, просмотра уведомлений системы. При открытии данного веб-клиента появляется следующая страница (рисунок 1):

Рисунок 1 - начальная страница веб-клиента системы

Верхняя панель является основным инструментом навигации в приложении.

Для начала работы с системой необходимо пройти авторизацию либо регистрацию (если пользователь еще не зарегистрирован). Формы регистрации и авторизации приведены на рисунках 2 и 3:

Рисунок 2 - форма регистрации веб-клиента

Рисунок 3 - форма авторизации веб-клиента

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

После активации профиля пользователь при авторизации должен увидеть форму следующего вида (рисунок 4):

Рисунок 4 - начальный экран веб-клиента

Если при активации профиля пользователю также была выделена роль администратора, главное меню дополняется пунктом «Управление», с помощью которого пользователь может заниматься управлением сущностями системы (рисунок 5):

Рисунок 5 - начальный экран веб-клиента для пользователем с ролью администратора

После получения доступа к системе пользователь с ролью «читатель» имеет доступ к двум функциям системы: просмотр расписания, а также возможность просматривать изменения в расписании и другие уведомления.

Страница просмотра расписания перед установкой параметров выборки имеет вид, представленный на рисунке 6:

Рисунок 6 - начальный вид экрана просмотра расписаний

Вверху страницы всегда отображается заголовок, который характеризует функционал текущей страницы. Главная область экрана служит для отображения расписания, однако, если параметры еще не заданы, то выводится сообщение «Сперва нужно задать параметры расписания», а если в базе данных не найдено занятий, соответствующих критерию поиска, на экран будет выведено сообщение «Не удалось найти подходящих по критериям записей в базе». Если же выборка расписания по заданным характеристикам произошла успешно, экран отображения расписания принимает следующий вид (рисунок 7):

Рисунок 7 - экран просмотра расписания при отображении успешной выборки

Нижняя часть экрана просмотра расписания - это панель задания критериев, которая доступна и после отображения расписания внизу экрана.

Также пользователь с правами редактора или администратора имеет возможность вносить изменения в расписания. Для контроля за правильностью в изменениях расписания, каждое изменение фиксирует пользователя, который внес изменения. В управлении изменениями расписания реализуется контроль доступа: каждый пользователь, обладающий правами редактора, но не обладающий правами администратора, может удалять/изменять только те изменения в расписании, которые он создал сам. Пользователь с правами администратора может изменять/удалять любые изменения в расписании.

Вид экрана просмотра расписания для пользователя с ролью «редактор» имеет сделующий вид при запуске (рисунок 8):

Рисунок 8 - экран просмотра расписания для пользователя с правами редактора

Управление заменами, а также одноразовыми занятиями осуществляется через экран, приведенный на рисунке 9:

Рисунок 9 - экран управления заменами и одноразовыми занятиями

Вторая из доступных для пользователя с правами «читатель» функция - просмотр уведомлений об изменениях в учебном процессе.

Экран просмотра уведомлений для пользователя с правами «редактор» имеет вид, показанный на рисунке 10:

Рисунок 10 - экран отображения уведомлений для пользователя с ролью «редактор»

Для уведомлений, так же, как и для изменений в расписании, реализованы разграничения доступа: только автор или администратор может изменять/удалять уведомления. Для автора или администратора возле каждой записи расположены кнопки удаления или перехода в режим редактирования запииси. Также для пользователей с ролями «редактор» или «администратор» есть возможность создать новое уведомление, нажав соответствующую кнопку внизу экрана.

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

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

Экран просмотра расписания с использованием инструментария администратора имеет вид, указанный на рисунке 11:

Рисунок 11 - просмотр записей расписания пользователем с ролью «администратор»

Редактирование или создание экземпляра сущности «занятие по расписанию» имеет вид, указанный на рисунке 12:

Рисунок 12 - создание/редактирование экземпляра сущности «занятие по расписанию»

Для отображения обучаемых объединений используется специальный компонент для angular.js. Все поля ввода, кроме номера позиции в цикле и названия предмета - это выпадающие списки. Поле ввода номера позиции - это числовое поле ввода. Поле ввода названия предмета - поле с автодополнением: этот компонент конфигурируется ресурсом в RESTful-интерфейсе, а также ключевым полем, по которому будет производиться выборка. Затем, когда пользователь вводит текст, компонент опрашивает сервер, используя для выборки введенный текст и отображает полученные результаты в списке, причем формат отображения также является конфигурируемым.

 

2.5 Мобильный клиент для операционной системы iOS


Клиент для мобильной операционной системы iOS разработан с использованием нативных технологий и с учетом руководств компании Apple по разработке пользовательских интерфейсов.

При запуске приложение отображает экран входа в систему (рисунок 13):

Рисунок 13 - экран входа в систему

На окне входа пользователю доступен ввод логина и пароля для входа. При успешном входе в систему экран входа в систему сменяется на основной экран приложения при помощи эффекта «сдергивание». Если же при входе в систему произошли какие-либо ошибки, то ниже блока ввода (области, в которой находятся поля «Имя пользователя» и «Пароль») плавно появляется красная панель, на которой выводится текст ошибки (эта панель скрывается по прошествии 5 секунд с момента появления), при этом, для дополнительной визуального уведомления пользователя блок ввода анимируется с помощью эффекта «встряхивание» - этот эффект не является встроенным и был разработан самостоятельно: эффект применяется на виде (View) при задании параметров амплитуды колебаний, количества колебаний и времени отображения - в блоке анимации (анимация получает как аргумент время отображения анимации) меняет координату по X вправо и влево на величину, равную параметру эффекта - амплитуду колебаний (рисунок 14):

Рисунок 14 - ошибка при авторизации через мобильный клиент

Также для уведомления пользователя о каких-либо продолжительных во времени процессов приложение использует компонент MBProgressHUD.

Если пользователь не имеет аккаунта, он может отправить заявку на его получение, нажав кнопку «Получить аккаунт». После этого приложение отображает экран регистрации в системе (рисунок 15):

Рисунок 15 - форма отправки заявки на регистрацию в системе

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

После входа в систему пользователь может открыть экран просмотра профиля (рисунок 15):

Рисунок 15 - экран просмотра профиля пользователя

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

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

При открытии экрана просмотра расписания приложение отображает следующий вид (рисунок 16):

Рисунок 16 - начальный вид экрана с расписанием

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

При открытии экрана конфигурирования экрана расписания приложение отображает вид, показанный на экране 17.

Рисунок 17 - экран конфигурирования выборки расписания

Экран конфигурирования расписания содержит три элемента управления - поля установки даты начала и даты окончания периода, а также поле выбора объединения для выборки. Каждый элемент управления использует компонент iOS «барабан», для первых двух используется барабан для выбора даты (UIDatePicker), а для отображения произвольных структур данных используется родительский компонент UIDatePicker (UIPickerView).

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

Рисунок 18 - экран расписания при успешной выборке

Навигация между днями производится при помощи скользящего по экрану движения - свайпа (от английского «to swipe»). Каждый день представляется страницей экрана может либо содержать фактический список занятий, как показано на рисунке 18, либо показывать сообщение «На данный день занятий не обнаружено» - такая ситуация возможна, если день свободен от занятий, либо является выходным днем (находится в массиве freeDays активной AppConfiguration). Каждая ячейка в расписании представляет собой занятие и содержит информацию о времени и месте проведения занятия, предмете и типе занятия (лекция, практикум, семинарское занятие), преподавателе занятия и объединения, которые обучаются на данном занятии.

Просмотр уведомлений осуществляется при помощи соответствующего экрана (рисунок 19). Экран просмотра уведомлений доступен при помощи панели вкладок (первая вкладка).

Рисунок 19 - экран списка уведомлений

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

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

Рисунок 20 - Полное описание уведомления

При нажатии на интересущее уведомление, приложение производит открытие этого уведомления в отдельном экране (рисунок 20). Пользователь может целиком прочитать содержимое уведомление, если оно велико, используя прокрутку экрана.

ЗАКЛЮЧЕНИЕ

В рамках данной работы была построена информационная система для мобильных устройств, при помощи которой имеется возможность получить централизованный доступ к расписанию при помощи вычислительных сетей (ЛВС или Интернета). Система построена с использованием современных фреймворков, использующих шаблоны объектно-ориентированного программирования, а также собственные архитектурные решения, в связи с чем система обладает модульностью и может быть расширена.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1 Одом У. Компьютерные сети. Первый шаг - СПб.: Вильямс, 2006. - 403 с.

2 Бернерс-Ли Т. Плетя паутину: истоки и будущее Всемирной сети. URL:http://www.w3.org/People/Berners-Lee/Weaving/Overview.html (Дата обращения 23.12.2013)

Камер Д. Сети TCP/IP, том 1. Принципы, протоколы и структура - М.: Вильямс, 2003. - 848 с.

Авдеева Л. В.Радиотехнологии и стандарты подвижной связи. URL: <http://www.radioscanner.ru/info/article65/> (Дата обращения 23.12.2013)

Википедия - свободная энциклопедия. URL:<http://ru.wikipedia.org/> (Дата обращения 23.12.2014)

Статья «История возникновения телефона и мобильной связи». URL:<http://kpk-user.ru/articles/1207-istorija-vozniknovenija-telefona-i-mobilnojj.html> (Дата обращения 23.12.2014)

Компьютер на ладони. <URL:http://www.mobimag.ru/Articles/486/Kompyuter_na_ladoni.htm> (Дата обращения 23.12.2014)

Гордеев А. В. Операционные системы: Учебник для вузов. - 2-е изд. - СПб.: Питер, 2007. - 416 с.

Когаловский М. Р. Энциклопедия технологий баз данных. - М.: Финансы и статистика, 2002. - 800 с.

Кеннеди Б. HTML и XHTML. Подробное руководство. / Ч. Муссиано - М.:Символ-Плюс, 2002. - 748 с.

Флэнаган Д. JavaScript. Подробное руководство. - 5-е изд. - СПб.: Символ-Плюс, 2008. - 267 с.

Кнастер С. Objective-C и программирование для Mac OS X и iOS, 2-е издание./В. Малик, М. Далримпл. - М.: Вильямс, 2013. - 297 с.

Бэнкер К. MongoDB in Action - Manning Publications, 2011. - 375 с.

14 Фландерс Д. Введение в службы RESTful с использованием WCF. URL: <https://msdn.microsoft.com/ru-ru/magazine/dd315413.aspx> (Дата обращения 20.05.2015)

ПРИЛОЖЕНИЕ А

Подробное описание модели данных системы

Таблица 3 - описание модели данных системы

Имя сущности модели данных

Список свойств сущности

Конфигурация приложения

· Имя конфигурации (строка) · Активность (да/нет) · Цикл приложения (длина цикла - число, свободные от занятий дни - список чисел, начальная дата цикла - дата)

Занятие

· Номер занятия (целое) · Время начала (время) · Время окончания (время)

Тип занятия

· Название (строка)

Площадка

· Название (строка)

Предмет

· Название (строка) · Описание (строка)

Объединение

· Имя (строка) · Описание (строка) · Родительское объединение (объединение)

Пользователь

· Имя (строка) · Фамилия (строка) · Отчество (строка) · Имя пользователя (строка) · Пароль (строка) · Электронная почта (строка) · Номер телефона (строка) · Роли (список элементов «читатель», «редактор», «администратор»)

Пользователь

· Тип (студент, преподаватель) · Управляемые объединения (список экземпляров сущности Объединение) · Читаемые объединения (список экземпляров сущности Объединение) · Активность профиля (да/нет)

Занятие по расписанию

· Позиция дня в цикле занятий (целое) · Предмет (экземпляр сущности Предмет) · Тип (экземпляр сущности Тип занятия) · Занятие (экземпляр сущности Занятие) · Площадка (экземпляр сущности Площадка) · Преподаватель (экземпляр сущности Пользователь, чей тип равен «преподаватель») · Обучаемые объединения (список экземпляров сущности Объединение)

Замена / Одноразовое занятие

· Дата занятия (дата) · Позиция дня в цикле занятий (целое) · Предмет (экземпляр сущности Предмет) · Тип (экземпляр сущности Тип занятия) · Занятие (экземпляр сущности Занятие) · Площадка (экземпляр сущности Площадка) · Преподаватель (экземпляр сущности Пользователь, чей тип равен «преподаватель») Обучаемые объединения (список экземпляров сущности Объединение)

Уведомление

· Дата создания (дата) · Автор (экземпляр сущности Пользователь)

Уведомление

· Заголовок (строка) · Содержимое уведомления (строка) · Объединения-получатели (список экземпляров сущности Объединение)


Похожие работы на - Информационная система для мобильных устройств

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!