К определению степени интегрированности программных подсистем | Прикладная дискретная математика. Приложение. 2009. № 1.

К определению степени интегрированности программных подсистем

A program subsystems integration measureis introduced as a parametrized software metric. It may be used for estimating existingsubsystems integration and as a preliminary measurement during the process of softwaresystems development.

Towards the definition of the software subsystems integration measure.pdf При разработке защищённых систем обработки информации (СОИ) строится модельнарушителя в виде формального описания набора угроз и/или атак и формулируетсяполитика безопасности (ПБ) в виде набора формальных требований [1]. Сизменением модели нарушителя появляется необходимость внесения изменений в ПБ.Примером подобных изменений может служить реализация политики мандатного разграничениядоступа SELinux для операционной системы GNU/Linux, ранее обладавшейтолько политикой дискреционного разграничения доступа [2]. Тесная интеграцияпрограммных реализаций СОИ и ПБ является препятствием к внесению измененийв ПБ [3], в связи с чем возникает проблема выбора такого метода интегрированияпрограммной подсистемы ПБ в программную подсистему СОИ, который обеспечивалбы наименьшую степень интегрированности (далее: СИ) первой во вторую. Решениеэтой проблемы предполагает наличие количественной характеристики СИ одной программнойподсистемы в другую.В данной работе предлагается вариант формального определения СИ произвольнойпрограммной подсистемы, называемой подчинённой, в произвольную программнуюподсистему, называемую главной, и показывается его применение к оценке СИподсистемы ПБ в файловую подсистему ядра операционной системы Linux.Это определение удовлетворяет всем критериям метрики программного обеспечения,сформулированным в [4]. В его основе лежит подсчёт количества идентификаторов(имён переменных, функций, констант и т. п.) подчинённой подсистемы, встречаемыхв исходном тексте главной подсистемы. Предполагается, что при модификацииподчинённой подсистемы на обработку идентификаторов тратятся некоторые (вычислительные,ёмкостные, временные и др.) ресурсы, совокупность которых характеризуетсложность этой обработки, и СИ определяется в зависимости от её величины.Грубой оценкой СИ программных подсистем может служить выражение M == а n, где n - это количество идентификаторов подчинённой подсистемы, встречаемыхв исходном тексте главной подсистемы, и а - средняя сложность обработки одногоидентификатора.Для более точного определения СИ рассмотрим сначала простейший случай главнойподсистемы - последовательность f некоторых команд si без циклов и ветвлений,т. е. f = (si, s2, . . . , sk). Обозначим n(si) количество идентификаторов подчинённойподсистемы в команде si. Пусть задана функция a (n ) -сложность обработки команды,содержащей n идентификаторов подчинённой подсистемы. Тогда более точнуюkоценкуСИ подсистем даёт выражение M ( f ) = . a(n(si)).i=1Предполагается, что функция a(n) определена либо на всём множестве целых неотрицательныхчисел, либо на множестве {0, 1, ... , N } для достаточно большого N .Она должна быть также монотонно неубывающей и обладать свойством а(0) = 0.Рассмотрение случаев циклов и составных условных операторов может быть проведеноаналогично случаю неполного условного оператора (НУО), поэтому далее предполагаем,что среди команд в программах могут встречаться только НУО и выражения(команды, не содержащие циклов и ветвлений). В свою очередь, НУО может бытьрассмотрен как алгоритм f = (a; s), где a - условие, s = (s1, . . . , sk) -последовательностькоманд, являющаяся телом условного оператора. Полагая идентификаторы подчинённойподсистемы, встречаемые в параметрах алгоритма и в одной из его команд,связанными, определим степень интегрированности M ( f ) подчинённой подсистемы вреализацию алгоритма f рекурсивно какM ( f ) = M (a; (si, ...sk )) = ^ M (a; sj),i=1M(a; si)a(n(a) + n(si)), если si - выражение,M(a, aj; (s^, . . ., sjZ)) = . M(a, aj; sjj),j= 1_ если sj = (aj; (si1 , ... , s^)) - НУО.Введённая мера СИ была применена к существующим программным системам - кверсиям 0.01 и 2.6.24 ядра операционной системы Linux, являющимся соответственносамой первой и одной из самых последних версий ядра Linux. В качестве главной подсистемыбыла выбрана подсистема работы с файлами с помощью системных вызововsys_open(), sys_mkdir(), sys_rmdir(), sys_link(), sys_unlink(), а в качестве подчинённой- реализация дискреционной политики безопасности.Для Linux 0.01 получено значение СИ, равное а(1) + 5а(2) + 5а(3), а в случаеLinux 2.6.24 СИ равна 3а(1) + 2а(2) + 3а(3). Как было отмечено, функция а -монотонно неубывающая. Если принять a(n) за константу, то оценка для Linux 0.01станет равной 26а, а для Linux 2.6.24 - равной 16а. Это уменьшение значения СИ являетсяследствием уменьшения как общего количества идентификаторов подчинённойподсистемы в главной, так и тех из них, которые связаны (входят в один оператор).

Ключевые слова

Авторы

ФИООрганизацияДополнительноE-mail
Стефанцов Дмитрий АлександровичТомский государственный университетаспирантdastephantsov@mail.tsu.ru
Всего: 1

Ссылки

Landwehr C. E. Formal models for computer security / / ACM Comput. Surv. 1981. September. V. 13. No. 3. P. 247-278.
Security-Enhanced Linux / USA National Security Agency., Электрон. дан., 2009. Режим доступа: http://www.nsa.gov/research/selinux/index.shtml, свободный.
Grand Research Challenges in Information Systems / Computing Research Association., Электрон. дан., 2002. Режим доступа: http://www.cra.org/reports/gc.systems.pdf, свободный.
Mills E. E. Metrics in the software engineering curriculum / / Ann. Softw. Eng. 1999. V. 6. No. 1-4. P. 181-200.
 К определению степени интегрированности программных подсистем | Прикладная дискретная математика. Приложение. 2009. № 1.

К определению степени интегрированности программных подсистем | Прикладная дискретная математика. Приложение. 2009. № 1.