ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Journal influence

Higher Attestation Commission (VAK) - К1 quartile
Russian Science Citation Index (RSCI)

Bookmark

Next issue

2
Publication date:
16 June 2024

The quality control system for software for the MPD experiment in the NICA collider

The article was published in issue no. № 3, 2013 [ pp. 243-247 ]
Abstract:The article expounds a new method to build a quality control system for software design of the MPD experi-ment in the NICA collider. This software is called MpdRoot and is a shell to simulate the detector operations, toreconstruct the experimental data and analyse the events of heavy ions collisions. The author briefly describes software and technical side of the MPD experiment. A website content management system is considered as a platform for this project developers containing technical information about the project, a control version system, a testing system, a monitoring and others web-tools. The result is a complete system of quality control for MpdRoot software project. The article will be useful for software developers with a lot of members who would like to facilitate their work and improve teamwork.
Аннотация:Предлагается новый подход к построению системы контроля качества для проекта программного обеспечения (ПО) эксперимента MPD, коллайдера NICA. Данное ПО имеет название MpdRoot и представляет собой оболочку для моделирования работы детектора, реконструкции экспериментальных данных и последующего анализа событий столкновения тяжелых ионов. Авторами частично описывается программно-техническая сторона эксперимента MPD. Рассматривается использование системы управлениясодержимым веб-сайта как платформы для разработчиков проекта, содержащей техническую информацию о проекте, систему управления версиями, тестирования, мони-торинга и другие веб-инструменты. В результате получается полноценная система контроля качества для ПО проекта MpdRoot. Изложенный материал будет полезен для разработчиков ПО с большим количеством участников, которые хотели бы облегчить свой труд и улучшить взаимодействие в команде.
Authors: (speloff@gmail.com) - , Russia, ( rogachevsky@jinr.ru) - , Russia, Ph.D
Keywords: subversion, cdash, ctest, cmake, drupal, mpdroot, nica, mpd
Page views: 6783
Print version
Full issue in PDF (13.63Mb)
Download the cover in PDF (1.39Мб)

Font size:       Font:

В современной физике одной из важнейших составляющих экспериментов является програм- мное обеспечение (ПО), которое на этапе созда- ния установки используется для моделирования и исследования возможности решения различных физических задач, а при работе установки выполняет набор данных и их дальнейший физический анализ. Особенно это относится к экспериментам в области физики частиц высоких энергий, где из-за необходимости обработки огромного потока данных всегда требовались привлечение новейших программных технологий и использование значительных вычислительных ресурсов. Например, экспериментальные установки, работающие на коллайдере LHC (Large Hadron Collider), запущенном в 2010 году в CERN, за год получают поток экспериментальных данных, составляющий около 15 петабайт [1]. Обеспечить хранение и обработку настолько большого количества данных в пределах одного научного центра просто невозможно. Данная проблема побудила ученых создать новую сетевую инфраструктуру Grid, позволяющую пользоваться вычислительными ресурсами институтов всего мира, участвующих в этом проекте.

Существующие методы обработки данных постоянно совершенствуются, появляются более эффективные. Пример этому – технологии параллельных и облачных вычислений с использованием не только сетевых Grid-инфраструктур, но и GPGPU-программирования (General-purpose com­puting on graphics processing units) [2]. Однако все эти новые методы не принесут желаемого результата, если окажется, что программный код эксперимента содержит ошибки, узкие места, не адаптирован к созданному методу или не оптимизирован для полноценного использования выделяемых вычислительных ресурсов.

В настоящее время Объединенный институт ядерных исследований (г. Дубна) реализует проект по созданию на базе Нуклотрона нового ускорительного комплекса ионов – коллайдера NICA (Nuclotron-based Ion Collider fAcility), позволяющего сталкивать тяжелые ионы (вплоть до ядер Au, Pb, U) при энергиях 4–11 ГэВ/нуклон [3]. В одной из точек пересечения пучков ионов накопительных колец коллайдера будет находиться универсальная установка MPD (Multi-Purpose Detec­tor), позволяющая регистрировать частицы, образующиеся во время столкновения ядер. Целью эксперимента является исследование состояния горячей и плотной ядерной материи, образованной при соударениях тяжелых ионов, в данном диапазоне энергий.

Для эксперимента MPD разрабатывается ПО MpdRoot [4], представляющее собой оболочку как для моделирования работы детектора, так и для реконструкции экспериментальных данных и последующего анализа событий столкновения тяжелых ионов, регистрируемых многоцелевым детектором. MpdRoot создается на базе широко используемой в физике высоких энергий программной платформы ROOT и разработанного на ее основе ПО FairRoot.

Ожидаемый объем данных на установке MPD составит около 10 петабайт в год. Учитывая опыт аналогичных экспериментов, работающих в CERN, для хранения и обработки данных с установки необходимо будет не только использовать современные методы, технологии программирования, вычислительные средства и сетевые инфраструктуры распределенной обработки данных, но и обеспечить качество кода ПО для MPD. Таким образом, исследуемая в данной статье проблема разработки новых, более эффективных методов контроля качества кода MpdRoot с использованием современных программных инструментов является весьма актуальной.

Для решения этой проблемы требовалось исследовать современные программные продукты, которые можно эффективно применить для повышения уровня качества MpdRoot. В результате исследования необходимо было решить ряд конкретных задач по выбору платформы для разработчиков, системы управления версиями ПО, организации системы тестирования и информационной поддержки проекта. Необходимо было учитывать следующие особенности проекта MpdRoot: в проекте используются язык программирования C/C++, компилятор GCC и система управления процессом сборки ПО CMake; программы должны быть с открытым исходным кодом и работать под операционной системой Scientific Linux; все взаимодействия разработчиков должны осуществляться с использованием централизованной модели клиент–сервер; для всех инструментов необходимо наличие веб-интерфейса.

Платформа для разработчиков

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

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

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

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

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

Система контроля качества

Для разработки нового проекта ПО необходимо было выбрать систему управления версиями. Учитывая особенности проекта MpdRoot, а именно используемую модель взаимодействия разработчиков клиент–сервер и требование к открытости кода, выбор был ограничен тремя видами систем [6], из которых одна считается устаревшей, а другая не обладает необходимой функциональностью и не обновляется уже с 2006 года. Таким образом, остается централизованная система управления версиями с открытым исходным кодом Subversion (SVN) [7].

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

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

Подпись:  
Рис. 1. Двухмерное представление файловой системы
 в Subversion
Для совместной работы над файлами в проекте MpdRoot были задействованы две модели. В первой разработчики копируют файлы из хранилища, создавая локальные рабочие копии, затем вносят изменения в рабочие копии и фиксируют эти изменения в хранилище – это модель копирование–изменение–слияние. Для бинарных форматов файлов, не допускающих слияние, используется модель блокирование–изменение–разблокирова­ние. При каждом изменении кода проекту присваивается следующий порядковый номер версии и записывается комментарий о новом изменении. С помощью инструмента Trac через веб-интер­фейс сайта можно увидеть подробную историю изменения файлов.

Второй ступенью контроля качества является система тестирования. Она была составлена из инструментов, наиболее подходящих к особенностям проекта. Благодаря использованию в MpdRoot системы управления процессом сборки ПО CMake удалось внедрить инструменты CTest и CDash. Они разработаны компанией Kitware и вместе обладают наилучшей совместимостью по сравнению с аналогами [8]. Дополняет систему инструментарий статического анализа кода Сppсheck, который был внедрен в проект как обладающий большим набором уже подготовленных тестов. Приведенные инструменты позволили значительно поднять уровень качества благодаря возможности проверки не только выполнения тестовых задач, но и всех этапов сборки и настройки MpdRoot.

Подпись:  
Рис. 2. Цикл разработки ПО MpdRoot
Такой подход формирования системы контроля качества можно схематично представить в виде цикличной модели разработки проекта MpdRoot, изображенной на рисунке 2. На первом этапе пользователь скачивает рабочую копию проекта или создает ее, если проект новый. Далее он загружает в хранилище новые объекты или обновляет существующие. На третьем этапе ежедневно в автоматическом режиме выполняется комплексная проверка работоспособности кода ПО. Система проверяет обновления для проекта из общего хранилища, конфигурирует и компилирует проект с использованием программы CMake. Затем тестирует откомпилированную версию с помощью подготовленных тестовых задач и ПО CTest и СppCheck. На заключительном этапе результаты тестирования публикуются на сайте в веб-интерфейсах CDash и CppCheck.

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

Третьей ступенью контроля качества является информационная поддержка разработчиков. В процессе работы над большим и сложным проектом, таким как MpdRoot, непременно возникают трудности, например с исправлением ошибок. Решение проблем может потребовать мнения членов команды, специалистов в своей области. Для обмена опытом можно воспользоваться виртуальным пространством сайта, форумом PhpBB или системой рассылки MailMan. После публикации вопроса группы разработчиков смогут получить уведомления на почту и постараются совместно решить возникшую проблему, комментируя и предлагая свои идеи. Оболочка сайта Drupal совместно с форумом PhpBB предлагают расширенные возможности публикации информационного материала. К записи можно прикрепить файл или графический материал, подписаться на новые комментарии, опубликовать на главной странице или сохранить как черновик. Для всех материалов, доступных на сайте, была добавлена возможность сохранения их в виде pdf документов с помощью перехода по ссылке внизу страницы.

Полученные результаты

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

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

Литература

1.     Robertson L., From R&D to a Service for LHC Data Analysis, 2nd Intern. Conf. "Distributed Computing and Grid technologies in Science and Education", Dubna, JINR, 2006.

2.     Owens J.D., Luebke D., Govindaraju N., A Survey of General-Purpose Computation on Graphics Hardware, Computer Graphics forum, 2007, Vol. 26, no. 1, pp. 80–113.

3.     Nuclotron-based Ion Collider fAcility and Multi-Purpose Detector. MPD Conceptual Design Report 1.4. URL: http://nica.jinr.ru/files/CDR_MPD/MPD_CDR_en.pdf, 2012 (дата обращения: 19.06.2012).

4.     Simulation and analysis Framework for NICA/MPD detectors. http://mpd.jinr.ru/, 2012.

5.     Drupal – open source content management system. URL: http://drupal.org (дата обращения: 19.06.2012).

6.     List of revision control software. URL: http://en.wikipe­dia.org/wiki/List_of_revision_control_software (дата обращения: 19.06.2012).

7.     Subversion — свободная централизованная система управления версиями. URL: http://ru.wikipedia.org/wiki/Subver­sion (дата обращения: 19.06.2012).

8.     List of tools for static code analysis. URL: http://en.wi­kipedia.org/wiki/List_of_tools_for_static_code_analysis (дата об­ращения: 19.06.2012).

References

1.     Robertson L., The 2nd Int. Conf. "Distributed Computing and Grid technologies in Science and Education", JINR, Dubna, 2006.

2.     Owens J.D., Luebke D., Govindaraju N., COMPUTER GRAPHICS forum, 2007, Vol. 26 (2007), no. 1, pp. 80–113.

3.     Nuclotron-based Ion Collider fAcility and Multi-Purpose Detector. MPD Conceptual Design Report 1.4, available at: http://nica.jinr.ru/files/CDR_MPD/MPD_CDR_en.pdf (accessed 19 June 2012).

4.     Simulation and analysis Framework for NICA/MPD detectors, available at: http://mpd.jinr.ru/ (accessed 19 June 2012).

5.     Drupal – open source content management system, available at:  http://drupal.org/ (accessed 19 June 2012).

6.     List of revision control software, available at: http://en.wikipedia.org/wiki/List_of_revision_control_software (accessed 19 June 2012).

7.     Subversion, available at: http://ru.wikipedia.org/wiki/Sub­version, 2012.

8.     List of tools for static code analysis, available at: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis (accessed 19 June 2012).


Permanent link:
http://swsys.ru/index.php?page=article&id=3596&lang=en
Print version
Full issue in PDF (13.63Mb)
Download the cover in PDF (1.39Мб)
The article was published in issue no. № 3, 2013 [ pp. 243-247 ]

Back to the list of articles