Разработка модуля сбора и предоставления статистики прохождения тестирования сотрудниками организаций для корпоративного портала

Анализ современных веб-технологий: клиент-сервер, Apache, Nginx, PHP, MySQL, JavaScript, HTML, CSS, CMS Bitrix. Процесс создания инфоблоков. Разработка программного кода. Создание каталогов и подкаталогов компонентов. Структура модуля, описание его работы

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.08.2018
Размер файла 3,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Федеральное агентство связи

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

«Поволжский государственный университет телекоммуникаций и информатики»

Факультет Информационных систем и технологий

Направление Информатика и вычислительная техника

Кафедра Программного обеспечения и управления в технических системах

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

Разработка модуля сбора и предоставления статистики прохождения тестирования сотрудниками организаций для корпоративного портала

Разработал В.Е. Палилов

Самара 2017

Реферат

Модуль сбора и предоставления статистики прохождения тестирования сотрудниками организаций для корпоративного портала для сайта под управлением 1C-Битрикс. Не имеет аналогов. Разработан под требования заказчика. Внедрён коммерческий в корпоративный портал. Выполняет ключевую роль в работе всего портала.

Введение

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

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

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

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

Задачами работы являются изучение теоретической части, языков программирования, применяемых в современной веб-разработке, а также сопряжённых с ними технологий и методов, применяемых при разработке, последующая разработка данного модуля с внедрением его на корпоративный портал в системе на CMS Bitrix и анализ эффективности разработанного модуля.

Методологическая основа разработки - изучение и анализ статей в интернете по теме работы.

Работа состоит из введения, двух глав и заключения.

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

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

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

модуль сервер код инфоблок

1. Теоретическая часть

1.1 Клиент-серверная архитектура

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

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

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

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

Преимущества:

· отсутствие дублирования кода программы-сервера программами-клиентами;

· так как все вычисления выполняются на сервере, то требования к компьютерам, на которых установлен клиент, снижаются;

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

Недостатки:

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

· поддержка работы данной системы требует отдельного специалиста -- системного администратора;

· высокая стоимость оборудования.

Классификация двухзвенных моделей взаимодействия клиент-сервер представлена на рис. 1.1

Рис. 1.1 - Классификация двухзвенных моделей взаимодействия клиент-сервер

1.2 Apache

Apache (Apache HTTP Server), в разговорной речи «апач», является бесплатным и межплатформенным программным обеспечением веб-сервера с открытым исходным кодом, выпущенным в соответствии с лицензией Apache 2.0. Apache разрабатывается и сохраняется открытым сообществом разработчиков под покровительством Apache Software Foundation.

Сервер HTTP Apache межплатформенный. Это означаяет, что он создан не только для Unix-подобных систем (например, macOS, Linux и FreeBSD), но и также для Windows. Однако по состоянию на 1 июня 2017 года, 92.26% всех копий сервера HTTPS Apache работают на дистрибутивах Linux. Версия 2.0 улучшила поддержку не Unix-подобных систем, например, Windows и ОС/2 (и eComStation). Старые версии Apache были портированы, чтобы работать, например, на OpenVMS и NetWare.

Разработка Apache началась в начале 1995 года на основе сервера HTTPD NCSA после того, как проект HTTPD NCSA перестал поддерживаться его разработчиками. Apache сыграл ключевую роль в начальном росте всемирной паутины, быстро обогнавший HTTPD NCSA по популярности использования в качестве сервер HTTP, и так и остался самым популярным с начала апреля 1996 года. В 2009 году Apache стал первым программным обеспечением веб-сервера, на котором запущены более чем 100 миллионов веб-сайтов.

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

Apache поддерживает множество функций, многие из них реализованы в качестве скомпилированных модулей, которые расширяют базовую функциональность веб-сервера. Они могут иметь различных функционал - от серверной поддержки языка программирования до схем аутентификации. Спецификация общеязыковой инфраструктуры поддерживает такие языки, как Perl, Python, TCL (Tool Command Language) и PHP. Популярные модули аутентификации включают mod_access, mod_auth, mod_digest, а также mod_auth_digest, который был введён заместо устаревшего mod_digest. Другие функции включают поддержку SSL (Secure Sockets Layer -- уровень защищённых cокетов) и TLS (Transport Layer Security -- защищённый транспортный узел, более новый, по сравнению с SSL, протокол) криптографических протоколов, обеспечивающих защищённую передачу данных (mod_ssl), прокси-модуль (mod_proxy), модуль перезаписывания URL (mod_rewrite), кастомные файлы журнала (mod_log_config), и модуль поддержки фильтрации (mod_include и mod_ext_filter).

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

Поддержка виртуального хостинга позволяет на одной копии веб-сервера Apache запускать несколько веб-сайтов. Например, одна машина с одной копией Apache может одновременно хостить www.example.com, www.example.org, test47.test-server.example.edu, и т.д.

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

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

Функции сервера HTTP:

· загружаемые динамические модули;

· Multiple Request Processing (MPMs), включая Event-based/Async, Threaded и Prefork;

· хорошая масштабируемость (легко обрабатывает больше чем 10000 одновременных соединений);

· обработка статических файлов, индексных файлов, автоиндексирование и согласование содержания;

· поддержка .htaccess;

· обратный прокси с кэшированием;

· выравнивание нагрузки;

· механизм выравнивания множественной нагрузки;

· отказоустойчивость с автоматическим восстановлением;

· поддержка WebSocket, FastCGI, SCGI, AJP и uWSGI с кэшированием;

· динамическая конфигураци;

· TLS/SSL и SNI с поддержкой OCSP через OpenSSL;

· поддержка основанных на IP-адресе и именах виртуальных серверов;

· совместимость с IPv6;

· поддержка протокола HTTP/2;

· мелкомодульное управление доступом аутентификации и авторизации;

· поддержка сжатия и распаковки gzip;

· поддержка URL-rewrite;

· перезапись заголовка и содержания;

· кастомное логирование с ротацией;

· параллельное ограничение соединения;

· ограничение уровня обработки запросов;

· регулировка пропускной способности;

· поддержка SSI;

· поддержка геолокации по IP-адресу;

· отслеживание пользовательских сессий;

· поддержка WebDAV;

· встроенная поддержка Perl, PHP и Lua;

· поддержка CGI;

· public_html веб-страницы;

· универсальный синтаксический анализатор выражения;

· предоставление информации о состоянии в реальном времени;

· поддержка XML. [1]

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

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

Для доставки статических страниц Apache 2.2 считали значительно медленнее, чем nginx. Чтобы решить эту проблему, разработчики Apache создали событие MPM, которое одновременно использует несколько процессов и несколько потоков для каждого процесса в асинхронном, основанном на событии, цикле. Эта архитектура и способ, которым это было реализовано в серии Apache 2.4, предусматривает производительность, эквивалентную или даже немного лучшую, чем основанные на событии веб-серверы. Однако некоторые независимые, но значительно устаревшие, сравнительные тесты показывают, что это все еще половина от скорости работы nginx.

1.3 Nginx

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

Первоначально разработанный, чтобы решить проблему C10k, Nginx использует асинхронный управляемый событиями подход к обрабатыванию запросов и является вторым по популярности использования веб-сервером после Apache. Nginx работает на Unix, Linux, BSD, macOS, Солярисе, AIX, HP-UX и Windows.

Работа над проектом Nginx была начата в 2002 году. Веб-сервер был публично выпущен лишь в 2004 году. Компания того же имени была основана в 2011 году, чтобы предоставлять поддержку пользователям.

Основные функции сервера HTTP:

· обслуживание статических и индексных файлов, автоиндексирование, открытый кэш дескриптора файла;

· ускоренное обратное проксирование с кэшированием, выравнивание нагрузки и отказоустойчивость;

· ускоренная поддержка с кэшированием FastCGI, uwsgi, SCGI и memcached серверов, выравнивание нагрузки и отказоустойчивость;

· модульная архитектура, фильтры, включая gzipping, докачка (byte-ranges), разделяемые на блоки (chuncked) ответы, XSLT, SSI и фильтр преобразования изображения. Многократные включения SSI в единственной странице могут быть обработаны параллельно, если они обработаны проксированными или FastCGI/uwsgi/SCGI серверами;

· SSL и TLS поддержка SNI;

· поддержка HTTP/2 с основанным на весах и зависимостях установлением приоритетов;

Другие функции сервера HTTP:

· основанные на имени и основанные на IP виртуальные серверы;

· проверка работоспособности и конвейерная поддержка соединений;

· кастомные логи, буферизованная запись логов, быстрая ротация логов и логирование в системный журнал;

· перенаправление кодов ошибок 3xx-5xx;

· модуль перезаписи: изменение URI, используя регулярные выражения;

· выполнение различных функций в зависимости от клиентского адреса;

· управление доступом на основе клиентского IP-адреса, паролем (аутентификация HTTP Basic) и результатом подзапроса;

· проверка допустимости ссылающегося домена HTTP;

· методы PUT, DELETE, MKCOL, COPY и MOVE; FLV и потоковая передача MP4;

· ограничение скорости отдачи ответа;

· ограничение количества одновременных соединений или запросов, поступающих с одного адреса;

· основанная на IP геолокация;

· A/B-тестирование;

· встроенный поддержка Perl;

· nginScript.

почтовые функции прокси-сервера:

· пользовательское перенаправление к IMAP или POP3 серверу, используя внешний сервер аутентификации HTTP;

· пользовательская аутентификация, используя внешний сервер аутентификации HTTP и перенаправление соединения к внутреннему серверу SMTP;

· методы аутентификации:

o POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;

o IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;

o SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;

· поддержка протокола SSL;

· поддержка протоколов STARTTLS и STLS

Функции прокси-сервера TCP/UDP:

· универсальное проксирование TCP и UDP;

· SSL и TLS SNI поддерживаются для TCP;

· выравнивание нагрузки и отказоустойчивость;

· управление доступом на основе клиентского адреса;

· выполнение различных функций в зависимости от клиентского адреса;

· ограничение количества одновременных соединений с одного адреса;

· кастомные логи, буферизованная запись логов, быстрая ротация логов и логирование в системный журнал;

· основанная на IP геолокация;

· A/B-тестирование;

· nginScript.

Архитектура и масштабируемость:

· одно ведущее устройство и несколько рабочих процессов, рабочие процессы работают при непривилегированном пользователе;

· гибкая конфигурация;

· реконфигурирование и обновление исполняемой программы без прерывания обслуживания клиентов;

· поддержка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select и poll;

· поддержка различных kqueue-функций, включая EV_CLEAR, EV_DISABLE (чтобы временно отключить события), NOTE_LOWAT, EV_EOF, количество доступных данных, коды ошибки;

· поддержка различных epoll-функций, включая EPOLLRDHUP (Linux 2.6.17 +, glibc 2.8 +) и EPOLLEXCLUSIVE (Linux 4.5 +, glibc 2.24 +);

· поддержка sendfile (FreeBSD 3.1 +, Linux 2.2 +, macOS 10.5 +), sendfile64 (Linux 2.4.21 +), и sendfilev (Солярис 8 7/01 +);

· файловый AIO (FreeBSD 4.3 +, Linux 2.6.22 +);

· DIRECTIO (FreeBSD 4.4 +, Linux 2.4 +, Солярис 2.6 +, macOS);

· accept-фильтры (FreeBSD 4.1 +, NetBSD 5.0 +) и TCP_DEFER_ACCEPT (Linux 2.4 +);

· 10000 неактивных соединений HTTP keep-alive расходуют примерно 2,5 МБ памяти;

· операции копирования данных сведены к минимуму. [2]

Производительность по сравнению с Apache.

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

1.4 PHP

PHP - серверный язык сценариев, разработанный, прежде всего, для веб-разработки, но также и используемый в качестве языка программирования общего назначения. Первоначально создаваемый Rasmus Lerdorf в 1994 году, ссылочная реализация PHP теперь произведена Группой разработчиков из «PHP Development Team». PHP первоначально расшифровывался как Персональная Домашняя Страница, но теперь расшифровка означает рекурсивный акроним PHP: Препроцессор Гипертекста.

Код PHP может быть встроен в HTML или HTML5 разметку, или же может использоваться в сочетании с различными веб-шаблонизаторами, системами управления веб-контентом и веб-платформами. Код PHP обычно обрабатывается интерпретатором PHP (Zend Engine), реализованным как модуль в веб-сервере или как исполняемая программа интерфейса Common Gateway Interface (CGI). Программное обеспечение веб-сервера комбинирует результаты интерпретируемого и выполняемого кода PHP, который может быть любым типом данных, включая изображения, со сгенерированной веб-страницей. Код PHP может также быть выполнен при помощи интерфейса командной строки Command Line Interface (CLI) и может использоваться, чтобы реализовать автономные графические приложения.

Стандартный интерпретатор PHP (Zend Engine) является бесплатным программным обеспечением, выпущенным в соответствии с лицензией PHP. PHP был широко портирован и может быть развернут на большинстве веб-серверов в почти каждой операционной системе и платформе.

Язык PHP развивался без письменной формальной спецификации или какого-либо стандарта до 2014 года, оставляя канонический интерпретатор PHP как фактический стандарт. С 2014 года начались работы по созданию формальной спецификации языка PHP.

Перейдём к описанию синтаксиса языка. [3]

Синтаксис PHP очень напоминает синтаксис языка C и во многом заимствован из таких языков как Java и Perl.

Программист С очень быстро освоит язык PHP и сможет использовать его с максимальной эффективностью.

В принципе, в PHP есть практически все операторы и функции, имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (fgets,fputs,printf) и множество других.

PHP и HTML.

PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных <? и ?>, выводится в браузер непосредственно. В этом и заключается главная особенность PHP, в отличие от Perl и C, где вывод осуществляется только с помощью стандартных операторов.

Разделение инструкций.

Инструкции разделяются также как и в C или Perl - каждое выражение заканчивается точкой с запятой.

Закрывающий тег (?>) также подразумевает конец инструкции, поэтому два следующих фрагмента кода эквиваленты:

Комментарии в PHP скриптах.

Написание практически любого скрипта не обходится без комментариев. PHP поддерживает комметарии в стиле 'C', 'C++' и оболочки Unix. Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними. Необходимо следить за отсутствием вложенных 'C'-комментариев, они могут появиться во время комментирования больших блоков.

Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними. Это означает, что HTML-код после // ?> БУДЕТ напечатан: ?> выводит из режима PHP и возвращает в режим HTML, но // не позволяет этого сделать.

Переменные в PHP - имена переменных обозначаются знаком $.

Типы данных в PHP - PHP поддерживает восемь простых типов данных.

Скалярные:

· boolean (двоичные данные);

· integer (целые числа);

· float (числа с плавающей точкой или 'double');

· string (строки).

Смешанные:

· array (массивы);

· object (объекты).

Специальные:

· resource (ресурсы);

· NULL ("пустые").

Существуют также несколько псевдотипов:

· mixed (смешанные);

· number (числа);

· callback (обратного вызова).

Выражения в PHP.

Основными формами выражений являются константы и переменные. Например, если вы записываете "$a = 100", вы присваиваете '100' переменной $a. В приведенном примере $a - это переменная, = - это оператор присваивания, а 100 - это и есть выражения. Его значение 100.

Выражением может быть и переменная, если ей сопоставлено определенное значение: $x = 7; $y = $x;

В первой строке рассмотренного примера выражением является константа 7, а во второй строке - переменная $x, так как ранее ей было присвоено значение 7. $y = $x также является выражением.

Операторы PHP.

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

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

Управляющие конструкции языка PHP.

Основными конструкциями языка PHP являются:

· условные операторы (if, else);

· циклы (while, do-while, for, foreach, break, continue);

· конструкции выбора (switch);

· конструкции объявления (declare);

· конструкции возврата значений (return);

· конструкции включений (require, include).

Пользовательские функции в PHP.

В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере - подпрограммами, а в Pascal существуют два вида подпрограмм: процедуры и функции. В PHP такими подпрограммами являются пользовательские функции.

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

Встроенные (стандартные) функции PHP [4].

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

ООП и PHP.

PHP имеет достаточно хорошую поддержку объектно-ориентированного программирования (ООП).

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

1.5 MySQL

MySQL - система управления реляционными базами данных с открытым исходным кодом (RDBMS). Название СУБД - комбинация "My", имени дочери соучредителя Michael Widenius, и "SQL", названия одноимённого языка структурированных запросов. Проект развития MySQL сделал свой исходный код доступным в соответствии с лицензией GNU, а также под множеством собственных соглашений и лицензий. MySQL принадлежал и спонсировался единственной коммерческой фирмой, шведской компанией MySQL AB, ныне принадлежащей Oracle Corporation. Для личного использования доступно несколько проплаченных выпусков, которые предлагают дополнительную функциональность по сравнению с бесплатной редакцией.

MySQL - центральный компонент программного стека веб-приложения открытого исходного кода LAMP (а также других "AMP"-стеков). LAMP - акроним для "Linux, Apache, MySQL, Perl/PHP/Python". Известные веб-приложения, которые используют БД MySQL: TYPO3, MODx, Joomla, WordPress, phpBB, MyBB, Drupal и другие. MySQL также используется во многих высококлассных, крупномасштабных веб-сайтах, включая Google (хотя не для поиска), Facebook, Twitter, Flickr и YouTube. [5]

MySQL записан в C и C++. Его синтаксический анализатор SQL записан в yacc, но он использует самописный лексический анализатор. MySQL работает над многими системными платформами, включая AIX, BSDi, FreeBSD, HP-UX, eComStation, i5/OS, IRIX, Linux, macOS, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, ОС/2 Warp, QNX, Oracle Солярис, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos и Tru64. Порт MySQL к OpenVMS также существует.

Само программное обеспечение сервера MySQL и клиентские библиотеки используют распространение под двойной лицензией. Клиентским библиотекам предлагают распространяться под GPL 2, либо использовать собственную лицензию.

Поддержка может быть получена из официального руководства. Бесплатная поддержка дополнительно доступна в различных каналах IRC и форумах. Предложения Oracle поддерживают платную поддержку через ее продукты MySQL Enterprise. Они отличаются в предоставляемых возможностях, а также в цене. Кроме того, много сторонних организаций предоставляют поддержку и службы, включая MariaDB и Percona.

MySQL предлагается под двумя различными выпусками: MySQL Community Server с открытым исходным кодом и пропиетарный Enterprise Server. MySQL Enterprise Server отличается рядом собственных расширений, которые устанавливают как плагины сервера.

Основные функции MySQL 5.7:

· широкое подмножество ANSI SQL 99, а также расширения;

· межплатформенная поддержка;

· хранимые процедуры с использованием процедурного язык, который тесно придерживается стандарта SQL/PSM;

· триггеры;

· курсоры;

· обновляемые представления;

· онлайн DDL при использовании механизма хранения InnoDB;

· информационная схема;

· схема производительности, которая собирает и агрегирует статистику о исполнении сервера и его производительности обработки запросов для контроля;

· ряд опций SQL Mode, которые управляют поведением во время выполнения, включая строгий режим, чтобы лучше придерживаться стандартов SQL;

· X/Open XA поддержка распределенной обработки транзакций (DTP); двухфазная фиксация как часть этого, с использованием механизма хранения InnoDB по умолчанию;

· транзакции с точками сохранения при использовании механизма хранения InnoDB по умолчанию. кластерный механизм хранения NDB также поддерживает транзакции;

· соответствие ACID при использовании InnoDB и кластерных механизмов хранения NDB;

· поддержка SSL;

· кэширование запросов;

· вложенные SELECTы;

· встроенная поддержка репликации (основная репликация и репликация "главный-подчиненный");

· полнотекстовая индексация и поиск;

· библиотека встроенной базы данных;

· поддержка Unicode;

· разделенные таблицы с сокращением разделов в оптимизаторе;

· поддержка MySQL Cluster;

· многократные механизмы хранения, позволяющие выбирать тот механизм, который является самым эффективным для каждой таблицы в приложении;

· собственные механизмы хранения InnoDB, MyISAM, Merge, Memory (heap), Federated, Archive, CSV, Blackhole, NDB Cluster;

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

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

Ограничения.

При использовании некоторых механизмов хранения (кроме дефолтного InnoDB) MySQL не соответствует полному стандарту SQL для части реализованной функциональности, включая ссылки внешнего ключа и проверочные ограничения.

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

Встроенные функции базы данных MySQL как UNIX_TIMESTAMP () будут возвращать 0 после 3:14:07 UTC 19 января 2038.

Развертывание.

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

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

1.6 JavaScript

JavaScript - часто сокращаемый как "JS", язык высокого уровня с динамической слабой типизацией, без явных типов данных, интерпретируется во время выполнения. JavaScript стандартизирован в спецификации языка ECMAScript. Вместе с HTML и CSS, JavaScript - одна из трех базовых технологий веб-разработки, большинство веб-сайтов использует его, и все современные веб-браузеры поддерживают его без потребности в каких-либо сторонних плагинах. JavaScript - язык мультипарадигменный язык, так как он поддерживает парадигмы прототипно-ориентированного и функционального программирования, функции, как объекты класса. JavaScript имеет API для работы с текстом, массивами, датами, регулярными выражениями и основным манипулированием DOM, но не включает сеть, хранение, или средства для работы с графикой.

Несмотря на то, что есть много общих черт сходства между JavaScript и Java, включая имя языка, синтаксис и соответствующие стандартные библиотеки, эти два языка отличны друг от друга. JavaScript был под влиянием языков программирования таким как Self и Scheme.

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

JQuery - межплатформенная библиотека JavaScript, разработанная, чтобы упростить клиентские сценарии HTML. Это свободное программное обеспечение с открытым исходным кодом распространяется под лицензией MIT. JQuery наиболее широко используемая из всех библиотека JavaScript.

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

Набор базовых функций jQuery -- выборы элемента DOM, обход и манипулирования -- возможны при помощи его селекторного механизма (названного " Sizzle" от v1.3), который создал новый "стиль программирования", совместив алгоритмы и структуры данных DOM. Этот стиль повлиял на архитектуру других платформ JavaScript, таких как YUI v3 и Dojo, позже стимулируя создание стандартного API селекторов. [8]

1.7 HTML

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

Элементы HTML - стандартные блоки страниц HTML. С конструкциями HTML изображения и другие объекты, такие как интерактивные формы, могут быть встроены в представленную страницу. Это обеспечивает средства создания структурированных документов, обозначая структурную семантику для текста, такие как заголовки, абзацы, списки, ссылки, кавычки и другие элементы. Элементы HTML обозначены тегами, письменными угловыми скобками использования. Теги такой как <img> и <input /> вводят содержание в страницу непосредственно. Другие, такие как <p></p> окружают и предоставляют информацию о тексте документа и могут включать другие теги в качестве дочерних элементов. Браузеры не выводят на экран HTML-тэги, но используют их, чтобы интерпретировать содержание страницы.

HTML может иметь встроенные скрипты на JS, которые влияют на поведение и содержание веб-страниц. Включение CSS определяет стили и расположение содержания. [9]

1.8 CSS

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

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

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

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

Спецификация CSS описывает систему приоритетов, чтобы определить, какие правила стиля применяются, если больше чем одно правило соответствует определенному элементу. В этом так называемом каскаде приоритеты (или веса) вычислены и присвоены правилам, так, чтобы результаты были предсказуемы. [10]

1.9 CMS Bitrix/Bitrix Framework

CMS Bitrix - профессиональная система управления веб-проектами, универсальный программный продукт для создания, поддержки и успешного развития:

· корпоративных сайтов;

· интернет-магазинов;

· информационных порталов;

· сайтов сообществ;

· социальных сетей и других веб-проектов.

Архитектура Bitrix Framework решает следующие задачи:

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

· Единство принципов работы с любой версией и любым решением на базе системы;

· Безопасность. Архитектура позволяет создать достаточный уровень безопасности для сайтов любой направленности;

· Масштабируемость. Не наложено никаких ограничений на развитие проектов по мере роста контента, сервисов, числа пользователей;

· Производительность. Скорость работы системы зависит от качества настройки ее элементов, то есть в большей степени на производительность влияет уровень подготовки разработчика проекта, возможности хостинга. [11]

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

Технологии Bitrix Framework:

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

Агенты - технология, позволяющая запускать PHP функции с заданной периодичностью.

Кеширование - позволяет кешировать ресурсоемкие куски кода, при этом заметно увеличивая производительность сайта.

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

Обработка событий - технология изменения выполнения какой-нибудь API функции с помощью событий. [12]

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

Почтовая система - позволяет отправлять E-Mail письма с использованием заранее заданных почтовых шаблонов.

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

2. Практическая часть

2.1 Анализ предметной области

2.1.1 Требования к продукту

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

2.1.2 Программные средства разработки

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

· HTML5

· CSS3

· JavaScript (ECMA6) и библиотека jQuery для взаимодействия с DOM-структурой страниц и пользовательскими интерфейсами

· PHP 7.1 для реализации серверной логики

· MySQL 5.7 в качестве сервера БД

В качестве редактора кода был выбран Sublime Text 3 - бесплатный текстовый редактор.

Возможности редактора:

· навигация по коду в файлах при помощи поиска по словам и регулярных выражений, подсветка найденных результатов

· наличие командной строка

· возможность использования API, возможность написания и использования плагинов, обширная коллекция написанных плагинов

· возможность кастомизации интерфейса с помощью тем

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

2.2 Структура модуля

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

Серверная часть системы располагается на удаленном сервере и необходима для обработки запросов, поступающих с клиентской части на получение данных из БД. Программное обеспечение серверной части реализовано с использованием языка PHP версии 7.1 и организовано в виде компонентов (файлов с расширением .php), реализующих соответствующий функционал.

Клиентская часть системы представляет собой набор шаблонов (файлов с расширением .php) с HTML-разметкой блоков, таблиц стилей (файлов с расширением .css), а также обработчиков событий и библиотеки генерации графики на языке JavaScript (файлов с расширением .js).

2.3 Создание инфоблоков

В административном разделе портала создадим новый тип инфоблоков «Структура». Данный шаг показан на рис. 2.1 и рис. 2.2

Создадим в нём новый инфоблок с названием «Справочник организаций». Данный шаг показан на рис. 2.3

Наполним справочник информацией (создадим в нём разделы с названием организаций). Данный шаг показан на рис. 2.4

Создадим новый тип инфоблоков «Результаты тестирования». Данный шаг показан на рис. 2.5

Рис. 2.1 - Создание типа инфоблоков «Структура»

Рис. 2.2 - Список созданных типов инфоблоков

Рис. 2.3 - Создание и настройка инфоблока «Справочник организаций»

Создадим в этом типе 2 новых инфоблока - «Сводное расписание тестов» и «Результаты прохождения Теста на проверку знаний». Данный шаг показан на рис. 2.6 и рис. 2.8

Рис. 2.4 - Разделы инфоблока «Справочник организаций»

Рис. 2.5 - Создание нового типа инфоблоков «Результаты тестирования»

Заполним свойства у этих инфоблоков, исходя из данных, приведённых в таблице 2.1 и 2.2.

Данный шаг показан на рис. 2.7 и рис. 2.9

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

Рис. 2.6 - Создание и настройка инфоблока «Сводное расписание тестов»

Таблица 2.1 Структура инфоблока «Сводное расписание тестов»

ID

Название

Тип

Символьный код

89

Привязка к тесту

Привязка к элементам

LINK_TO_THE_TEST

90

Исполнитель теста

Привязка к пользователям

LINK_TO_THE_USER

92

Статус

Список

STATUS_TEST

93

Блокировка

Список

BLOCKING_TEST

126

Уведомления о скором окончании теста отправлены

Строка

NOTIFICATION_SEND

144

Использованные попытки

Строка

USED_ATTEMPTS

234

Привязка к заведению

Привязка к разделам

LINK_TO_THE_ORGANIZATION

Таблица 2.2 Структура инфоблока «Результаты прохождения Теста на проверку знаний»

ID

Название

Тип

Символьный код

94

Привязка к тесту

Привязка к элементам

LINK_TO_THE_TEST

95

Исполнитель теста

Привязка к пользователям

LINK_TO_THE_USER

96

Привязка к расписанию

Привязка к элементам

LINK_TO_THE_SCHEDULE

97

Привязка к заведению

Привязка к разделам

LINK_TO_THE_ORGANIZATION

98

Привязка к должностной роли

Привязка к разделам

LINK_TO_THE_STRUCTURE

99

Дата начала прохождения

Дата

DATE_BEGIN_TEST

100

Дата завершения прохождения

Дата

DATE_END_TEST

101

Время прохождения, сек

Число

TIME_SPEND

102

Максимально возможный балл

Число

MAX_POINTS

103

Сумма набранных баллов

Число

SUM_POINT

104

Оценка в %

Число

PERCENT_POINT

125

Время отведённое на прохождение, сек

Строка

TIME_ALLOW

180

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

Список

LAST_RESULT

Рис. 2.7 - Свойства созданного инфоблока «Сводное расписание тестов»

Рис. 2.8 - Создание и настройка инфоблока «Результаты прохождения Теста на проверку знаний»

Рис. 2.9 - Свойства созданного инфоблока «Результаты прохождения Теста на проверку знаний»

2.4 Разработка программного кода

Создадим папку /report в корне проекта и поместим туда файл index.php, в котором содержится вёрстка внешнего вида модуля.

Подключим системные файлы шапки и подвала сайта - /bitrix/header.php и /bitrix/footer.php

Установим заголовок браузера для страницы - «Отчёты»

Объявим глобальную переменную $arFilter

С помощью системного компонента bitrix:main.include подключим содержимое из файла, содержащего вёрстку и логику работы фильтра по дате /include/report_filter.php. Это отражено на рис. 2.10

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

В блоке с id «test-gut» в качестве атрибута data-url укажем ссылку на аякс-обработчик, вызывающий компонент, который предоставляет данные по пройденным тестам сотрудниками портала в json-формате для построения столбчатой диаграммы, основанной на этих данны, с помощью скрипта /local/templates/rest/js/diogram.js

Рис. 2.10 - Подключение файла с фильтром

Также в url подставляется URL-кодированное и сериализованное значение переменной $arFilter в качестве значения GET-параметра «filter» для передачи этого массива в аякс-обработчик.

Итоговый вид данного блока отражён на рис. 2.11

Создадим папку /include/ в корне проекта и поместим туда файла report_filter.php, содержащий вёрстку блока фильтрации по дате, а также реализующий серверную логику работы этого блока.

Для начала реализуем логику работы фильтра.

Получим информацию о текущем юзере и запишем её в переменную $user. Это отражено на рис. 2.12

Рис 2.11 - Вёрстка блока со столбчатыми диаграммами

Рис. 2.12 - Получение информации о текущем юзере

Получим список выбранных организаций из массива $_COOKIE, а если он пуст, то получим этот список из массив $user. Это отражено на рис. 2.13

Получим имя выбранной организации текущего пользователя в переменную $organization_name, а если это сделать не удалось, то установим значение для этой переменной null. Это отражено на рис. 2.14

Создадим экземпляр класса wbr\Help и вызовем его метод getCurrentMonth() для получения значений границ текущего месяца в unix timestamp.

Рис. 2.13 - Получение списка выбранных организаций

Рис. 2.14 - Получение имени выбранной организации текущего пользователя в переменную $organization_name

Также получим значения GET-параметров type, start, end в переменные $type, $startTimestamp и $endTimestamp соответственно. Это отражено на рис. 2.15

Рис. 2.15 - Получение значения текущего месяца, а также получим значений GET-параметров type, start, end

Сформируем массив параметров для фильтрации $arFilter. Это отражено на рис. 2.16

Сверстаем блок формы с элементами для фильтрации. Это отражено на рис. 2.17

Создадим папку /ajax в корне проекта и поместим туда файл chart_education.php, в котором в переменную $filter получается массив значений для фильтрации по дате и GET-параметра filter путём последовательного URL-раскодирования и десереализации. Этот массив используется в качестве значения параметра FILTER при вызове компонента rest:chart.education. Затем вызывается компонент rest:chart.education с параметрами, указанными в таблице 2.3, который получает данные о прохождении сотрудниками портала тестов и отдаёт их в формате JSON для построения диаграммы. Это отражено на рис. 2.18

Рис. 2.16 - Формирование массива для фильтрации $arFilter

Рис. 2.17 - Вёрстка блока формы фильтра

Рис. 2.18 - Вызов компонента rest:chart.education

Таблица 2.3 Параметры вызова компонента rest:chart.education

Параметр

Описание

IBLOCK_ID

ID инфоблока результатов прохождения тестов

SCHEDULE_IBLOCK_ID

ID инфоблока расписания

SCHEDULE_FIELD_NAME

Название свойства привязки к расписанию

DATE_END_TEST_FIELD_NAME

Название свойства даты окончания теста

STATUS_CODES

Массив значений кодов статусов пройдено/не пройдено

FILTER

Массив с параметрами фильтрации по дате

CHART_TEXT

Массив со значениями подписей к диаграммам

COLORS

Массив со значениями кодов цветов для диаграмм пройдено/не пройдено

Создадим папку /local в корне проекта, а в ней подкаталог - components.

Подкаталог components служит для размещения в нём собственных самописных (не системных) компонентов со своими шаблонами.

Создадим в каталоге components подкаталог rest, в нём подкаталог chart.education и поместим в него файл component.php, реализующий логику работы компонента.

Также разместим подкаталог templates, в котором содержатся шаблоны для данного компонента.

Разместим в нём подкаталог .default, в котором создадим единственный файл template.php, содержащий код шаблона компонента. Структура файлов отражена на рис. 2.19

Рис. 2.19 - Структура каталога local с каталогом templates

Реализуем логику работы компонента rest:chart.education.

Добавим в массив $arParams["FILTER"] значение с ключом «IBLOCK_ID» и равное значению $arParams["IBLOCK_ID"] ($arParams - массив параметров при вызове компонента). Это отражено на рис. 2.20

Рис. 2.20 - Добавление в массив $arParams["FILTER"] значения с ключом «IBLOCK_ID» и равного значению $arParams["IBLOCK_ID"]

Создадим объект запроса $db_tests для получения списка тестов, привязанных к выбранному заведению и обернём его в условие if(CModule::IncludeModule('iblock')) - если системный модуль iblock успешно подключен. Это отражено на рис. 2.21

Рис. 2.21 - Создание объекта запроса $db_tests для получения списка тестов, привязанных к выбранному заведению

Объявим массив результатов $results, а также счётчик кол-ва тестов $test_count. В переменную $status_codes получим значение параметра вызова «STATUS_CODES».

Для каждого элемента теста, полученного по запросу из объекта $db_tests, получим статус его выполнения по привязке к элементу расписания. Если полученный код выполнения теста содержится в массиве $status_codes, то инкрементируем значение массива $results[$test_status] и счётчик $test_count. Это отражено на рис. 2.22

Создаём массив $percent_values и получаем в его 0 и 1 элементы значения процента сданных и несданных тестов соответственно. Это отражено на рис. 2.23

...

Подобные документы

  • Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.

    курсовая работа [550,5 K], добавлен 08.06.2023

  • Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.

    отчет по практике [296,1 K], добавлен 19.04.2015

  • Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.

    курсовая работа [215,3 K], добавлен 01.09.2010

  • Сравнительный анализ технологий тестирования. Разработка программного модуля "Интеллектуальная обучающая система для широкого перечня курсов". Обоснование необходимости и важности этапа отладки в процессе разработки данного программного обеспечения.

    дипломная работа [101,2 K], добавлен 17.06.2011

  • Порядок сбора данных с помощью программного обеспечения "ПРОЛОГ". Языки программирования VBA и HTML, их характерные особенности. Web-сервера Apache, принцип работы серверной системы. Реализация сбора данных и разработка сайта с показаниями приборов.

    дипломная работа [4,4 M], добавлен 24.09.2014

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

    курсовая работа [146,6 K], добавлен 01.09.2010

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

    дипломная работа [4,8 M], добавлен 19.01.2017

  • Основные технологии веб-программирования. Методы отправки данных на сервер с помощью HTML-формы. PHP - Препроцессор Гипертекста. Сохранение данных в базе данных MySQL. Клиент-Сервер и технология CGI. Примеры использования PHP совместно с MySQL.

    лекция [2,9 M], добавлен 27.04.2009

  • Разработка СУБД - программного модуля для систематизации, хранения и обработки сведений о работниках лаборатории. Технологический процесс машинной реализации задачи, составление алгоритма, описание переменных процедур и функций. Листинг программы.

    курсовая работа [1,7 M], добавлен 11.01.2013

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

    курсовая работа [648,4 K], добавлен 27.05.2015

  • Анализ графического модуля "graphics.h". Анализ функции модуля, констант, типов и его глобальных переменных. Реализация пользовательской библиотеки "mouse.h". Особенности работы с мышкой в графическом и обычном режимах, разработка программного кода.

    курсовая работа [36,5 K], добавлен 02.12.2009

  • Установка и настройка локального web–сервера и его компонентов. Конфигурационные файлы сервера Apache и их натройка. Настройка PHP, MySQL и Sendmail. Проверка работоспособности виртуальных серверов. Создание виртуальных хостов. Тест Server Side Includes.

    учебное пособие [6,2 M], добавлен 27.04.2009

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Разработка программного модуля, позволяющего создать с помощью шаблона класса "бинарное дерево" картотеку абонентов, содержащую сведенья о телефонах и их владельцах. Выбор технологии, языка и среды программирования. Выбор стратегии тестирования программы.

    курсовая работа [1,1 M], добавлен 11.12.2010

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

    дипломная работа [3,2 M], добавлен 27.10.2017

  • Обзор существующих решений построения систем взаимодействия. Классическая архитектура клиент-сервер. Защита от копирования и распространения материалов тестирования. Задачи ИБ компьютерных систем тестирования и обзор современных способов их реализации.

    курсовая работа [36,9 K], добавлен 26.04.2013

  • Этапы проектирования сайта. Реализация двухкомпонентной системы голосования - клиент и датацентр. Создание безопасной системы передачи данных с использованием языков разметки HTML, программирования PHP, скриптов JavaScript, базы данных MySQL и Web-службы.

    дипломная работа [2,9 M], добавлен 12.12.2013

  • Создание программного модуля, выполненного на языке программирования VBA (Visual Basic for Applications) и позволяющего во введенном массиве символов удалить все повторные вхождения этих символов. Разработка пользовательского интерфейса. Код программы.

    курсовая работа [317,4 K], добавлен 11.10.2012

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

    дипломная работа [3,4 M], добавлен 19.07.2015

  • Методы и технологии создания виртуальных магазинов. Программные средства для создания сайта. Разработка php-модуля. Технические возможности СУБД MySQL. Приложения для создания графики и дизайна. Логическая структура сайта. Разработка базы данных.

    курсовая работа [248,1 K], добавлен 24.04.2012

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