УДК 004.05
doi:10.21685/2307-4205-2021-2-11
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ КОНТРОЛЯ ФАЙЛОВОЙ ИЗБЫТОЧНОСТИ И ПОДТВЕРЖДЕНИЯ ПОЛНОТЫ ИСХОДНЫХ ТЕКСТОВ НА УРОВНЕ ФАЙЛОВ
В. В. Самаров1, Н. К. Юрков2
1 ООО «16 НИИЦ», Мытищи, Россия 2 Пензенский государственный университет, Пенза, Россия 1 samarov_vladimir@mail.ru, 2 yurkov_NK@mail.ru
Аннотация. Актуальность и цели. Описаны пользовательский интерфейс и порядок работы с разработанным программным модулем, осуществляющим контроль полноты и отсутствия файловой избыточности в исследуемом в рамках сертификационных испытаний программном изделии. Материалы и методы. При проведении анализа сравниваются два множества: перечень файлов с исходными текстами; протокол сборки (компиляции) исследуемых исходных текстов в соответствующий дистрибутивный пакет (загрузочные модули), полученный при использовании системы аудита операционных систем семейства Linux. Результаты и выводы. Использование унифицированных протоколов аудита позволило реализовать программный алгоритм, при котором имеется возможность контроля файловой избыточности и установления полноты на уровне файлов для исследуемых проектов любых объемов и структуры, а также вне зависимости от используемых для их сборки (компиляции) схем.
Ключевые слова: сертификационные испытания программных изделий, контроль полноты и отсутствия избыточности на уровне файлов, система аудита ОС Linux, автоматизация сертификационных испытаний
Для цитирования: Самаров В. В., Юрков Н. К. Программная реализация контроля файловой избыточности и подтверждения полноты исходных текстов на уровне файлов // Надежность и качество сложных систем. 2021. № 2. С. 104-108. doi:10.21685/2307-4205-2021-2-11
SOFTWARE IMPLEMENTATION OF FILE REDUNDANCY CONTROL AND CONFIRMATION OF THE COMPLETENESS OF THE SOURCE TEXTS AT THE FILE LEVEL
V.V. Samarov1, N.K. Yurkov2
1 LLC "16 NIITS", Mytishchi, Russia
2 Penza State University, Penza, Russia
1 samarov_vladimir@mail.ru, 2 yurkov_NK@mail.ru
Abstract. Background. The article describes the user interface and the procedure for working with the developed software module that monitors the completeness and absence of file redundancy in the software product under study, as part of certification tests. Materials and methods. During the analysis, two sets are compared: a list of files with source texts; the protocol of assembly (compilation) of the source texts under investigation into the corresponding distribution package (load modules) obtained using the audit system of operating systems of the Linux family. Results and conclusions. The use of unified audit protocols made it possible to implement a software algorithm in which it is possible to control file redundancy and establish completeness at the file level for the projects under study of any size and structure, as well as regardless of the schemes used for their assembly (compilation).
Keywords: certification testing of software products, control of completeness and lack of redundancy at the file level, audit system of Linux OS, automation of certification tests
For citation: Samarov V.V., Yurkov N.K. Software implementation of file redundancy control and confirmation of the completeness of the source texts at the file level. Nadezhnost' i kachestvo slozhnykh sistem = Reliability and quality of complex systems. 2021;2:104-108. (In Russ.). doi:10.21685/2307-4205-2021-2-11
© Самаров В. В., Юрков Н. К., 2021. Контент доступен по лицензии Creative Commons Attribution 4.0 License / This work is licensed under a Creative Commons Attribution 4.0 License.
Использование механизмов, предоставляемых системой аудита ОС Linux, начиная с версии 2.6 [1], позволило разработать алгоритм [2] по формированию унифицированного протокола (рис. 1) компиляции (сборки), исследуемого в рамках сертификационных испытаний, проводимых в системе сертификации Минобороны России, программного изделия.
File Report
# date time file syscall success exe auid event
1. 22 03 2021 18 33 38 /home/sam/test/ open yes /bin/bash sam 218
2. 22 03 2021 18 33 39 /home/sam/test/ open yes /bin/bash sam 219
3. 22 03 2021 18 33 39 /home/sam/test/ open yes /bin/bash sam 220
4. 22 03 2021 18 33 38 /home/sam/test/ open yes /bin/bash sam 217
5. 22 03 2021 18 38 42 /home/sam/test/ open yes /bin/bash sam 222
6. 22 03 2021 18 38 42 /home/sam/test/ open yes /bin/bash sam 221
7. 22 03 2021 18 38 54 makefile open yes /usr/bin/make sam 224
8. 22 03 2021 18 38 54 , open yes /usr/bin/make sam 223
9. 22 03 2021 18 38 54 hello,c open yes /usr/1ib/gcc/x86_64-1inux-gnu/5/ccl sam 225
10. 22.03.2021 18:33:55 main.с open yes /usr/1ib/gcc/x86_64-1inux-gnu/6/ccl sam 226
Рис. 1. Формат унифицированного протокола компиляции (сборки) на примере фрагмента соответствующего протокола для тестового проекта
В свою очередь, возможность получения протокола компиляции (сборки), имеющего унифицированную форму для любых (не зависящих от используемых схем и средств сборки) компилируемых (собираемых) из исходных текстов программных изделий, позволила коллективу испытательной лаборатории ООО «16 НИИЦ», под руководством и при непосредственном участии автора статьи, разработать программу, осуществляющую контроль файловой избыточности и устанавливающую факт полноты анализируемого пакета с исходными текстами.
Действительно, имея унифицированный формат протокола сборки (рис. 1), имеется возможность выполнять данный этап проверок с учетом следующих условий:
- наличия в анализируемом проекте файлов исходных текстов с одинаковыми именами, но находящихся в разных каталогах (актуально для больших проектов);
- исключения из анализа «ложных» срабатываний (событий, непосредственно не связанных со сборкой проекта, но формирующих в протоколе сборки семантический «след» того или иного файла с исходными текстами), т.е. анализ только успешных событий по сборке;
- учет регистра имен файлов и соответствующих к ним путей в соответствии с особенностью файловых систем семейства типа extfs1 (ext2-ext4) [2, 3].
В целях осуществления платформенной совместимости программа была разработана на языке Python, версии 3.4.3 [5], что позволяет без модификации использовать ее в ОС Windows (версий XP и выше), а также на большинстве операционных систем семейства Linux, имеющих соответствующие сертификаты (заключения) о соответствии безопасности информации, выданные Минобороны России.
Программа позволяет:
- успешно обрабатывать «смешанные» входные данные, т.е. на вход программы может быть подан файл, представляющий собой перечень файлов проекта (исходных текстов), сформированный любым удобным способом как в ОС семейства Windows, так в Linux системах;
- формировать информативные и удобочитаемые отчеты в текстовом формате, а также в формате html;
- успешно и быстро обрабатывать входные данные значительных объемов.
Алгоритм работы с программой:
1. Подготовить исходные данные, в том числе:
- произвести построение списков с файлами исходных текстов (для чего воспользоваться любым удобным средством, например ПС «Total Commander» или любым другим). Файл с перечнем исходных текстов может быть в любой стандартной кодировке и должен представлять собой тексто-
1 Ввиду того, что в ядро ОС Linux для файловой системы ext4 была включена поддержка работы без учета регистра символов [4], то для корректной работы программного модуля, была предусмотрена возможность такого анализа.
вый файл. Формат входного файла с перечнем исходных текстов представляет собой массив со строками1 (рис. 2);
J:\exmp\TEST\assembly_TEST\data\app\data\Application.cpp
J:\exmp\TEST\assembly_TEST\data\app\data\application.h
J:\exmp\TEST\assembly_TEST\data\app\data\main.cpp Рис. 2. Пример представления перечня анализируемых файлов исходных текстов
- сформировать протокол компиляции анализируемого проекта, для чего воспользоваться алгоритмом [1] по его (протокола) созданию с помощью системы аудита ОС семейства Linux:
- при необходимости установить на сборочную систему соответствующую службу (auditd);
- осуществить постановку на контроль (аудит) всех обращений к объектам (файлам с анализируемыми исходными текстами), находящимся в соответствующем каталоге (команда: $ sudo auditctl - w /Dest/for/src -p rwxa, где /Dest/for/src - абсолютный путь к каталогу с анализируемыми исходными текстами);
- произвести штатную сборку (в соответствии с действиями, описанными в соответствующей программной документации программного изделия) исследуемого проекта;
- с помощью утилиты aureport cформировать соответствующий (см. рис.1) протокол сборки (команда: $ sudo aureport -f -i - success > log_file, где log_file - имя файла содержащего записи протоколирующие процесс компиляции (сборки) тестового проекта).
2. В зависимости от используемой ОС запустить соответствующий интерпретатор командной строки (например, cmd - для ОС Windows или bash терминал - для ОС Linux).
3. Перейти в каталог с файлами программы, после чего выполнить команду вида
C:\Test\files_cmpr\>python app.py --first = data/SRC_test.txt --second = data/log_file --dest_path = assembly_TEST --reg = 1 --exts = "cpp|h" // -для ОС семейства Windows
user@deb:~$ python3 app.py --first = data/ SRC_test.txt --second = da-ta/log_file --dest_path = assembly_TEST --reg = 1 --exts = "cpp|h" // -для ОС семейства Linux
где first - путь к файлу с перечнем файлов исходных текстов; second - путь к файлу с протоколом компиляции проекта2; dest_path - имя каталога (верхнего каталога, включая подкаталоги) с анализируемыми исходными текстами3; reg - параметр, отвечающий за правило сравнения (1 - учитывать регистр символов в названии файлов; 0 - не учитывать регистр символов в названии файлов); exts - маска поиска (через символ «|» перечисляются расширения файлов, по которым осуществляется анализ).
4. Перейти в каталог «results» программы и ознакомиться со сформированными отчетными материалами, в том числе:
- с файлами Rep_equals.txt (отчет по одинаковым файлам), Rep_file1_only.txt (отчет по избыточным файлам), Rep_file2_only.txt (отчет по файлам, не отвечающим требованиям по полноте исходных текстов) (рис. 3);
- со сводным html отчетом (рис. 4).
В заключение хотелось бы отметить, что описанный в настоящей статье программный модуль по контролю полноты и отсутствия избыточности на уровне файлов успешно апробирован специалистами испытательной лаборатории ООО «16 НИИЦ» при проведении ими сертификационных испытаний программных изделий.
1 Для корректной работы программы требуется указание абсолютных путей к соответствующим файлам исходных текстов.
2 В приведенном примере указан относительный путь к сравниваемым файлам, находящимся в каталоге «data/» программы.
3 Для получения релевантных результатов анализа необходимо, чтобы имя каталога с анализируемыми исходными текстами из файла с исходными текстами коррелировало с именем каталога с исходными текстами участвовавшего в сборке проекта.
I—equalsvM—|
1.\data\LibiVtestingVtesting,h <-------->/dataAibResting/testing.h
2.\data\Lib^Vtesting\testing,cpp <--------> AlataAibsrtestingAesting.cpp
3. \data\Lib^Vgui_testing_tooLivtask_tab_widget.h <--------> /dataAibs/gui_Testing_toolRask_tab_widget,h
4. \d at a\Li b ^Vgu i _t e st i n g_t □ □ Livt a sk_t a b_wi dg et. cp p <--------> /d at aAi b^gu i _t e st i n g_t о □ ls/task_tab_wi d get. с pp
5.\data\Lib^Vgui_testing_tooLivsyntax_highUghter.h <--------> /dataAib^gui_testing_tooL5/syntax_highlighter.h
6.\data\Lib^Vgui_testing_tooLivsyntax_highUghter.cpp <-------->/dataAib5/gui_testing_tool^syntax_highlighter.cpp
7.\data\Lib^VTesting2\testing_widget.h <--------> /dataAibs/Testing2.Aesting_widget.h
8Adata\Lib^Testing2\testing_graphk_widget,h <--------> /dataAib5/Testing2Aesting_graphic_widget.h
9, \data\Li b£VTesting2\testi ng_graphi c_wi dget.cpp <--------> /dataAi bs/Testi ng2Aesti ng_graphic_wi dget.cpp
10 10.\data\Lib^Testing2\testing_generaL.h <--------> /dataAibs/Testing2Aesting_generalh
11 ll.\data\app\data\main,cpp <-------->/data/app/data/main,cpp
12 12.\data\app\data\appLication.h <-------->/data/app/data/application.h
13:1 Ins Win 1251 (ANSI - кириллица)
Rep_filel_only.txt - WordPad
e о e
Файл Правка Вид Вставка Формат Справка
□ и в %
1. \data\app\data\Application.cpp
2. \clata\ libs\gui testing toolsXtesting .cpp
Для вывода справ™ нажмите <F1>
В Rep_file2_ûnly.M J
1
2
1. / da ta/app/data/application, cpp /usc/lib/gcc/>:8 6_b4-linux-gnu/b/cclplus
2 . moc/ ..I.J.J. ./data/plugins/coLe/appsettings .h /usr/lib/gcc/ji8 6_64-linux-gnu/6/cclplus
Normal te:it pie
lengtii : 165 lines : 2
Ln : 2 Col : 92 Sel : О I 0
Windows (CR LF) LfTF-E
Рис. 3. Видеокадр сформированных по результатам анализа тестового примера файлов
Рис. 4. Видеокадр сводного html отчета по файловой избыточности и полноте тестового примера
Вместе с тем интерпретация выходных данных программного модуля в части файлов, которые по результатам анализа помечены как не соответствующие требованиям по полноте исходных текстов (отчет - Rep_file2_only.txt (см. рис. 3), и третья таблица в сводном html отчете (рис. 4) требует от специалистов проводящих испытания достаточно серьезных знаний в современных методах и способах компиляции исходных текстов (например, принципов работы метаобъектного компилятора на основе библиотеки qt [6] или метаобъектных протоколов (например, Google Protobuff [7]), а также зачастую значительных временных затрат. Таким образом, по мнению автора, целесообразно проработать вопрос о расширении функционала программного модуля в части добавления в него механизмов по предоставлению дополнительной информации, использование которой позволит упростить принятие решения по таким (генерируемым в процессе компиляции) файлам.
Список литературы
1. Пингвин под колпаком: Аудит системных событий в линукс // Хакер. URL: https://xakep.ru/2011/ 03/30/54897 (дата обращения: 26.02.2021).
2. Самаров В. В. Использование системы аудита операционных систем семейства Linux при проведении сертификационных испытаний программных изделий // Надежность и качество сложных систем. 2021. № 1. С. 144-150. doi:10.21685/2307-4205-2021-1-14
3. Типы файловых систем для Linux. URL: https://losst.ru/tipy-fajlovyh-sistem-dlya-linux (дата обращения: 02.04.2021).
4. В ядро Linux для ФС Ext4 включена поддержка работы без учета регистра символов. URL: https://www.opennet.ru/opennews/art.shtml7num = 50581 (дата обращения: 02.04.2021).
5. Python Release 3.4.3. URL: https://www.python.org/downloads/release/python-343 (дата обращения: 02.04.2021).
6. Использование мета-объектного компилятора (Meta-Object Compiler, moc). URL: http://doc.crossplatform.ru/qt/4.6.x/moc.html (дата обращения: 02.04.2021).
7. Language Guide - Protocol Buffers - Google Developers. URL: https://developers.google.com/protocol-buffers/docs/overview (дата обращения: 03.04.2021).
1. Penguin under the hood: Audit of system events in linux. Khaker. (In Russ.). Available at: https://xakep.ru/2011/03/30/54897 (accessed 26.02.2021).
2. Samarov V.V. Use of the Linux operating system audit system when conducting certification tests of software products. Nadezhnost' i kachestvo slozhnykh system = Reliability and quality of complex systems. 2021;(1):144-150. (In Russ.). doi:10.21685/2307-4205-2021-1-14
3. Tipy faylovykh sistem dlya Linux = Types of file systems for Linux. (In Russ.). Available at: https://losst.ru/tipy-fajlovyh-sistem-dlya-linux (accessed 02.04.2021).
4. V yadro Linux dlya FS Ext4 vklyuchena podderzhka raboty bez ucheta registra simvolov = The Linux kernel for the Ext4 FS includes support for case-insensitive operation. (In Russ.). Available at: https://www.opennet.ru/opennews/art.shtml7num = 50581 (accessed 02.04.2021).
5. Python Release 3.4.3. Available at: https://www.python.org/downloads/release/python-343 (accessed 02.04.2021).
6. Ispol'zovanie meta-ob"ektnogo kompilyatora (Meta-Object Compiler, moc) = Using a meta-Object compiler (Me-ta-Object Compiler, moc). (In Russ.). Available at: http://doc.crossplatform.ru/qt/4.6.x/moc.html (accessed 02.04.2021).
7. Language Guide - Protocol Buffers - Google Developers. Available at: https://developers.google.com/protocol-buffers/docs/overview (accessed 03.04.2021).
References
Информация об авторах / Information about the authors
Владимир Владимирович Самаров
заместитель начальника испытательной лаборатории, ООО «16 НИИЦ»
Vladimir V. Samarov
Deputy head of test laboratory,
LLC "16 NIITS "
(Россия, Московская обл., г. Мытищи, Олимпийский просп., 29, вл. 2, 7А-4) E-mail: samarov_vladimir@mail.ru
(7А-4, 2, 29 Olimpiyskiy avenue, Mytischi, Moscow region, Russia)
Николай Кондратьевич Юрков
доктор технических наук, профессор, заслуженный деятель науки РФ, заведующий кафедрой конструирования и производства радиоаппаратуры, Пензенский государственный университет (Россия, г. Пенза, ул. Красная, 40) E-mail: yurkov_NK@mail.ru
Nikolay K. Yurkov
Doctor of technical sciences, professor,
the honoured worker of science
of the Russian Federation,
head of sub-department
of radio equipment design and production,
Penza State University
(40 Krasnaya street, Penza, Russia)
Авторы заявляют об отсутствии конфликта интересов / The authors declare no conflicts of interests.
Поступила в редакцию/Received 20.04.2021 Поступила после рецензирования/Revised 27.04.2021 Принята к публикации/Accepted 01.05.2021