![]() |
ИСТИНА |
Войти в систему Регистрация |
ИСТИНА ПсковГУ |
||
В докладе представлена общая архитектура системы ИСТИНА и принципы работы ее компонентов (модулей). Особое внимание уделено методам и средствам, применяющимся в ее базовых модулях (ядре), включая механизмы добавления новых типов результатов деятельности и редактирования данных. Часть доклада посвящена модулям автоматического тестирования и обеспечения безопасности системы. Доклад имеет практический характер, и в нем затронуты различные технические аспекты системы. Первая часть доклада содержит общую информацию о системе, ее основных функциях, отличительных особенностях, архитектуре и основных технологиях, которые в ней используются. Архитектура системы включает такие компоненты, как сервер базы данных и сервер приложений. Система построена на следующих языках программирования и технологиях: Python, Django, Oracle, Nginx, uWSGI, virtualenv, memcached, supervisor. Приводятся основные преимущества веб-фреймворка Django и его отличия от других подобных библиотек. Кратко описывается схема обработки HTTP- запроса в Django, включающая обработку URL-запроса, вызов соответствующей Python- функции в модуле View, обращение к модели и затем к базе данных с помощью объектно- реляционного отображения (ORM), формирование ответа на языке HTML с помощью заполнения шаблона. Далее в докладе представлена структура кода Django-приложений, составляющих основную часть системы. В основе системы лежит ядро, на него опираются базовые приложения (организации и сотрудники), приложения класса «результаты деятельности», приложения статистики и онтологий, а также сторонние приложения, реализующие вспомогательные функции. В следующей части доклада описываются основные составляющие ядра системы: модели, формы и «мастеры форм» (wizards). Представлены их структура и способы использования. На основе ядра реализован механизм, при помощи которого система унифицировано обрабатывает различные типы деятельности сотрудников. Он включает в себя генерацию интерфейса, позволяющего пользователям добавлять, редактировать, просматривать и удалять работы заданного типа деятельности. Генерация интерфейса основана на механизме «мастеров форм», которые являются частью фреймворка Django. Упомянутый механизм позволяет при необходимости добавлять новые типы деятельности, минимально изменяя имеющийся код. Кроме того, в данном разделе описываются прочие функции ядра, которые можно разделить на две группы. В первую входят функции, целью которых является очистка данных на этапе ввода в систему (поиск похожих сотрудников) или после него (слияние похожих работ). Ко второй группе относятся функции, реализующие служебный функционал – кэширование, журналирование, версионность, контроль ошибок и др. В третьей части доклада освещаются основные аспекты, касающиеся информационной безопасности и разграничения доступа в системе. Рассматриваются основные роли, используемые в системе, приводятся примеры функций, которые отвечают за определение допустимости определенных операций в системе, описываются элементы дискреционного доступа. В докладе также рассказывается о модуле обработки политик безопасности, написанных на специальном языке AcPDL, и приводится пример такой политики и результата ее обработки. Последняя часть доклада посвящена обзору фреймворка (библиотеки) selenium-tests для функционального тестирования системы ИСТИНА, разработанного одним из авторов доклада. Дан краткий обзор типов тестов, доступных для проектов, написанных с использованием Python/Django. Более подробно рассмотрены два основных типа тестов: unit-тесты и функциональные тесты. Далее рассмотрены возможные средства для написания функциональных тестов и приводится аргументация в пользу выбора библиотеки Selenium, включая рассмотрение общей структуры создания функциональных тестов. После этого рассматривается фреймворк selenium-tests, написанный на Python с использованием Selenium. В частности, приводится обзор написанных одним из авторов доклада модулей для упрощения создания новых тестов для программиста: заполнение базы данных, работа с элементами интерфейса, полуавтоматическая верификация моделей (добавляемых данных). В заключение обозначены дальнейшие цели как развития самостоятельного фреймворка selenium-tests, так и тестирования и контроля качества кода системы ИСТИНЫ в целом. Эти цели включают в себя дальнейшее создание абстракций для максимального упрощения и автоматизирования создания тестов, внедрение непрерывной интеграции на уровне всей системы, контроль качества кода и создание стабильной версии приложения.