Средства измерения бортового программного обеспечения
Автор: Еремин Александр Викторович, Иноземцева Ольга Степановна, Колташев Андрей Александрович, Кондратьев Константин Александрович, Львов Константин Геннадьевич
Журнал: Сибирский аэрокосмический журнал @vestnik-sibsau
Рубрика: Математика, механика, информатика
Статья в выпуске: 1 (18), 2008 года.
Бесплатный доступ
Рассмотрены средства измерения бортового программного обеспечения (БПО), являющиеся частью технологии разработки и верификации БПО спутников связи и навигации и предназначенные для повышения качества и надежности бортовых программ.
Короткий адрес: https://sciup.org/148175660
IDR: 148175660
Текст научной статьи Средства измерения бортового программного обеспечения
Создание качественного и надежного бортового программного обеспечения (БПО) спутников связи и навигации всегда было и остается актуальной технологической задачей. Цействующая в ФГУП «Научно-производственное объединение прикладной механики имени академика М. Ф. Решетнева» (НПО ПМ) технология разработки и верификации бортового программного обеспечения описана в [1; 2]. Частью этой технологии являются средства измерения программ БПО, применяемые для повышения качества и надежности бортовых программ.
Средства измерения программ БПО встроены в кросссистему его программирования и применяются для бортовых компьютеров трех вычислительных платформ: С-32 (архитектура VAX 11/750), ОВС-1750 (архитектура MIL-STD-1750A) и БИВК (архитектура MIPS-III). Эти средства позволяют получить набор мер сложности исходного текста, эксплуатационные характеристики программы, выполнить профилирование, определить уровень тестирования программы, проверить выполнение проектных соглашений.
Средства измерения решают следующие функциональные задачи:
-
1) измерения исходного текста модулей с получением набора мер сложности бортовой программы на языке Модула-2 [3];
-
2) получение оценочных формул, величин стека и времен исполнения бортовых программ в пакетном режиме тестирования, а также итогового отчета по стеку и временами исполнения бортовых программ;
-
3) получение отчета по объемам памяти бортовой программы;
-
4) построение процедурных профилей, построчных профилей, профилирование переменных бортовых программ:
-
-в пакетном режиме отладки: для всего пакета тестирования, для каждого варианта пакета тестирования, для каждого варианта пакета тестирования с сохранением истории предыдущих вариантов;
-
- в диалоговом режиме отладки.
Профили предоставляются для просмотра как в текстовом виде, так и в графических окнах в виде круговых и линейных гистограмм;
-
5) получение полноты тестирования бортовой программы по критериям С1и С, создание html-отчетов о полноте тестирования, с просмотром через Internet Explorer;
-
6) проверка проектных соглашений с генерацией итогового html-отчета со ссылками на другие html-отчеты средств измерения и просмотр html-отчетов в Internet Explorer.
Средства измерения состоят из набора компонентов, интегрированных оболочкой средств измерения, которая запускается через меню кросс-системы программирования, предназначенной для разработки БПО.
Набор компонентов средств измерения включает следующие элементы:
-
- интегрирующую оболочку средств измерения ОСИ-М;
-
- метрический компилятор;
-
- профилировщик, встроенный в систему тестирования и отладки и работающий в двух режимах - пакетном и диалоговом;
-
- инструментирующий кросс-компилятор;
-
- генератор отчетов о полноте тестирования;
-
- компоненты контроля выполнения проектных соглашений (КВПС): программу проверки комментариев и версий модулей; программу проверки структуры проекта; проверку уровня тестирования; проверку мер на критерии; создание отчета по временам и стекам; создание отчета по характеристикам памяти.
Кроме перечисленных выше компонентов, средства измерения используют компилятор и компоновщик из кросс-системы программирования Модула-2 для перекомпилирования программы БПО перед получением эксплуатационных характеристик программы или профилированием.
Компоненты контроля тестирования, метрический компилятор и профилировщик разработаны ООО «Эксельсиор» (Новосибирск) на основе работы [3], выпол- ненной в Институте систем информатики Сибирского отделения Российской академии наук. Оболочка средств измерения ОСИ-М, компоненты КВПС, создание отчетов по временам, стекам и характеристикам памяти разработаны в НПО ПМ.
Оболочка средств измерения. Оболочка средств измерения ОСИ-М имеет меню команд для выполнения функциональных задач средств измерения и просмотра результатов. Выполнение одной функциональной задачи измерения обеспечивается последовательным исполнением нескольких дочерних процессов (компонентов) с ожиданием их завершения. ОСИ-М подготавливает вход ные данные для компонентов, контролирует успешность завершения процессов и получение результатов и пред ставляет результаты для просмотра.
Меры сложности исходного текста программ. В [3] были определены наборы мер для языков программирования Модула-2 и разработана первая версия метрического компилятора. В набор мер Модула-2 включены меры длины, меры описания и использования объектов, использований внешних объектов, меры сложности МакКейба, меры вложенности, меры комментируемости. Определены наборы мер: для модулей реализации -21 мера, для процедур - 27 мер, для инициализирующей части - 22 меры. Позднее был добавлен небольшой набор из шести мер для модулей определений.
Правильное определение величин простых и комплексных критериев мер сталкивается с трудностями, связан ными со статистическими исследованиями характеристик программ в процессе разработки, прогнозированием остаточного числа ошибок при передаче программы в эксплуатацию, экспертными оценками. Определенная работа в этом направлении уже проведена, и сообщения о не удовлетворении мер критериям сложности, поступающие в средства измерения, носят рекомендательный характер.
Оценки времени и стека. Оценки времени и стека программы важны для организации вычислительного процесса операционной системой бортового компьютера. Разработка модулей бортовых программ ведется разными программистами параллельно, и часть вызываемых программных компонентов моделируется. Профилировщик строит формулы для оценки времен и стеков программы при условии, что времена и стеки моделируемых компонентов не известны либо оценены некоторыми величинами, указанными в конфигурационной таблице. Время и стек оцениваются профилировщиком в пакетном режиме тестирования. Оценочные формулы и значения получаются для каждого варианта тестирования, и в конце пакета подводится итог, в котором выбира ется максимальное и минимальное время исполнения и максимальный стек программы, и приводится соответствующая оценочная формула.
Оценочная формула стека представляет собой мак симум из списка элементов вида
S0S1 прог, ^прог ii прог + мод, .'
5 = max
+ мод,..., nn
.., прог + мод
где 5 Прог -стек программы в z -й точке экстремума стека для исполнения ветви программы, оканчивающейся вызовом z -й модели; 5 Мод - стек z -го моделируемого компонента.
Оценочная формула времени представляет собой формулу для варианта тестирования:
n
T = T 0 + £ N- . Т Мод , (2)
I = 1
где T 0 - время исполнения программы без учета моделей; Т ‘ м од - время исполнения z -го моделируемого компонента; N i - число вызовов z -й модели.
Одна бортовая программа может иметь много пакетов тестирования. Для облегчения задачи выбора оценочных формул и приведения их в сопроводительной документации была разработана программа «Время-стек», которая формирует в итоговый отчет в Microsoft Word с таблицей оценочных формул стеков и времен программы БПО. Входными данными для программы «Время-стек» являются протоколы профилировщика всех пакетов тестирования. Программа «Время-стек» строит итоговую формулу (1) по всем протоколам профилировщика от исполнения разных пакетов тестирования и формирует таблицу времен, которая содержит формулы (2) и значение времени для вариантов из всех протоколов тестирования. Таблица времен сортирована по оценочному значению времени.
Характеристики памяти. Объемы памяти программы необходимы для распределения и подтверждения использования ресурсов бортового компьютера, они приведены в документации на программу БПО. Данные о размещении программы в памяти сохраняются компоновщиком в выходном файле карты памяти. С целью автоматизации подсчета объемов памяти для секций кода и данных разработана программа «Характеристики памяти», которая в Microsoft Word по файлу карты памяти формирует таблицу объемов памяти бортовой программы, готовую для представления в документе на программу.
Профилирование. Профилировщик средств измерения встроен в систему тестирования и отладки (отладчик), собран с отладчиком в один исполнимый файл, который применяется только в средствах измерения. Отладчик, используемый отдельно в кросс-системе программирования, собран без функций профилирования.
Встроенный профилировщик работает как в режиме пакетного тестирования, так и в режиме диалогового тестирования. В язык пакетной отладки добавлены операторы начала профилирования с заданием его режимов, конца профилирования, чтения и сохранения файла профиля. В диалоговом режиме отладчика добавлено меню команд профилирования. Профилировщик позволяет строить динамический построчный профиль модулей или фрагментов программы, получить процедурный профиль (времена исполнения процедур с вызовами, без вызовов, максимальное, минимальное, в процентах), выполнить профилирование переменных (получить число чтений, число изменений в глобальных переменных).
Отладчик построен на основе программного интерпретатора команд бортового компьютера [4]. Подсчет времени выполняется профилировщиком с получением от интерпретатора времен исполнения машинных команд бортового компьютера, которое задается в файле конфигурации интерпретатора, составляемого по результатам испытаний бортовой вычислительной машины.
Определенную трудность представляет вычисление времени исполнения одной строки на языке Модула-2 в режиме оптимизации, потому что компилятор оптимизирует программу таким образом, что однозначно сопоставить машинный код бортового компьютера строкам исходного текста программы можно далеко не всегда. Профилировщик может вычислить время исполнения строки не для всех строк оптимизированной программы Модула-2, но время исполнения всей процедуры всегда вычисляется точно. Однако именно построчные профили весьма наглядно отражают динамику вычислительного процесса.
Профилировщик сохраняет результаты профилирования в текстовых файлах профилей.
Оболочка ОСИ-М в режиме профилирования выполняет препроцессорную обработку пакетов тестирования, которая заключается в добавлении операторов профилирования в пакет, и представляет профили в графическом виде.
Профилировщик применяется для выявления проблемных мест при оптимизации по времени исполнения бортовой программы.
Полнота тестирования. В средствах измерения применяются методы определения полноты тестирования программы по критериям С1 и С:
-
- покрытие по критерию С1 определяется как обязательное прохождение всех веток управляющего графа программы не менее 1 раза;
-
- покрытие по критерию С есть покрытие по критерию С1, дополненное проверкой исполнения условий и подусловий в логических выражениях, исполнения циклов 1 раз, более 1 раза и 0 раз, проверкой рекурсивных вызовов процедур.
Проверка полноты тестирования обеспечивается инструментированием бортовой программы так, что в соответствующих местах программы автоматически вставляются вызовы процедур, выполняющих регистрацию выполнения тестового условия, например прохождение данной ветки программы. Информация о прохождении тестовых условий сохраняется в файле во время исполнения тестируемой программы. После окончания тестирования создается отчет о полноте тестирования, содержащий итоговые проценты полноты покрытия тестами программы по критериям С1и С и подробную информацию об исполнении различных участков тестируемой программы.
Первоначально была разработана система ОСТ [3], в которой инструментирование выполнялось на уровне исходного текста программы. Отчет о полноте тестирования сохранялся в виде текстового файла, содержащего исходный текст программы, дополненный сообщениями о невыполнении тестовых условий и количестве выполненных тестовых условий, однако чтение отчета по тестированию для неопытного пользователя было затруднено. Система ОСТ была внедрена в НПО ПМ в составе средств измерения и несколько лет эффективно использовалась для повышения уровня тестирования бортовых программ для компьютеров типа С-32 и ОВС-1750.
В настоящее время система ОСТ заменена более совершенной системой Test Coverage System (TCS), разработанной ООО «Эксельсиор». В этой системе инструментирование выполняется инструментирующим компилятором на уровне генерации кода, а отчеты о полноте тестирования создаются в виде html-файлов, удобных для просмотра и понятных даже неопытному пользователю (рис. 1).
Отчет о покрытии тестами: MUSrFile.mod
Покрытие модуля |
Легенда |
|||
Критерий |
Покрыто |
Всего |
Соотношение |
- покрытый код |
С1 |
8 |
10 |
80% |
|
С |
18 |
23 |
78.26% |
Покрытие по процедурам
Строка |
Процедура |
C1 |
c |
||
50 |
WrFrazaVD 1 |
0/1 |
0.00% |
0/1 |
0.00% |
62 |
Read |
4/4 |
100.00% |
11/12 |
Гэ1.67% |
75 |
Read FDesk |
3/4 |
75.00% |
3/5 |
60.00% |
92 |
Check File |
1/1 |
100.00% |
4/5 |
Г80.00% |
68 BEGIN
69 IF ((n=0) AND (2P0 И ( (n=l) AND (ZP1 II RETURN (FALSE); 72 END; 73 RETURN RdV2U(n, vzu_ai 74 END Read; 75 PROCEDURE Read_EDesk ( 76 n FileName |
I TH)) OR 1 TM)) THEN |
|
70 С: Выражение было FALSE 1 раз |
||
70 С: Выражение ни разу не было TRUE |
||
69 С1 |
Условие IF было FALSE 2 раза |
|
69 С1 |
Условие IF было TRUE 1 раз |
|
62 С1 |
Процедура ReadQ вызывалась 3 раза |
|
VAR FDesk. NumFunc ):BOOLEAN 81 VAR |
FileD; CARD16 |
Система контроля полноты тестирования зарекомендовала себя очень эффективным средством повышения уровня отлаженности бортовых программ, тестируемых в пакетном режиме. Кроме того, при достижении максимального покрытия по критерию С1 выявляются участки программы с избыточным кодом, которые ни при каких условиях не могут быть покрыты. Это указывает программисту на необходимость оптимизации своей программы, что способствует к экономии ресурсов бортового компьютера.
Контроль выполнения проектных соглашений. Под проектными соглашениями понимается заданная структура проекта программы, оформление стандартных блоков комментариев, поддержка версии и истории изменений модулей, уровень покрытия тестирования и граничные значения мер сложности исходного текста программ.
Компоненты КВПС выполняют следующие задачи:
-
- контроль структуры проекта;
-
- проверку стандартных комментариев и версий модулей проекта программы;
-
- проверку уровня тестирования на достижение максимальной границы;
-
- проверку мер сложности на простые и комплексные критерии.
Программа «Контроль структуры проекта» проверяет структуру и состав папки проекта программы БПО на наличие заданных поддиректорий и файлов. Условия для проверки задаются в файле конфигурации проверок.
Программа «Проверка модулей проекта программы» проверяет наличие и состав обязательных блоков ком ментариев для модуля и процедур, наличие комментариев к параметрам и возвращаемому значению процедуры, историю изменений в блоке комментариев, версию модуля. Программа создает html-отчеты с сообщениями об ошибках, в которых помечает узнанные блоки комментариев и ключевые слова по аналогии с отчетами системы TCS (рис. 2).
Программа «Контроль тестирования» проверяет наличие html-отчетов системы TCS, их соответствие текущим модулям проекта, достижение 100%-го покрытия по критерию С1и некоторой установленной границы по критерию С. Программа создает html-отчет с сообщениями об ошибках.
Проверка мер сложности на критерии выполняется оболочкой ОСИ-М. Условия для проверки задаются в файле конфигурации критериев мер сложности как в виде минимальных и максимальных границ для простой меры, так и в виде формулы для вычисления комплексной меры и границ комплексной меры. По результатам этой проверки создается html-отчет с сообщениями о выходе за границы критериев.
Результатом контроля выполнения проектных соглашений является итоговый html-отчет об успешности выполнения проектных соглашений с гиперссылками на все html-отчеты, полученные средствами измерения.
В заключение отметим, что средства измерения применяются в разработке бортового программного обеспечения спутников связи и навигации, в том числе «ГЛОНАСС-М», «Экспресс-АМ» и др. Эти средства обеспечивают стандартизацию проекта программы, сниже-
Модуль bku_dtvi.def Вер. Error!.
Всего ошибок: 1;
из них в заголовках: О в версии:1
Легенда
-
- правильный заголовок
-
- ошибка в строке заголовка
-
- ошибка в слове заголовка
Заголовки модуля и процедур
Строка |
Тип заголовка |
Имя компоненты |
Имя мод./проц. |
Число ошибок |
5 |
Модуль |
Программа ФОНОВЫЙ ТЕСТ ВИ БИВК-Э |
BKU dTVI |
0 |
Исходный текст
1 <* version=тver. 9.0T *>
2 <* +m2extensions *>
3 <* +noinoduleinit *:
ОШ: Версия в опции Version='ver.9.0' не соответсвует версии *1.0' в истории изменений модуля__________________________________________________________________
5 DEFINITION MODULE BKUdTVI;
-
6 p------------------------------------------------------------------
-
7 (* ПО БКУ
-
8 (* Программа ФОНОВЫЙ ТЕСТ ВИ БИВК-Э
-
9 (* Входные данные программы. темы БИВК-Э
-
10 (* Содержит константы, инициализированные переменные.
-
11 р------------------------------------------------------------------
- 12 (* Версия 1.0 27.08.07 Клюкина Л.В.
13 (*------------------------------------------------------------------
14 FROM SYSTEM IMPORT CARDS, ADR, ADDRESS, CARDIS, CARD32, CARD64, CAST,
15 SETS, SET16;
16 FROM BKU_oTVI IMPORT OzuTVI;
17 (*------------------------------------------------------------------
18 ОПИСАНИЕ ИМПОРТА
19 ------------------------------------------------------------------
20 FROM BKU_TVI1 IMPORT TestVCPZU; (* ЧТ ВЦПЗУ *)
21 FROM BKU TVI2 IMPORT TestVCOZU; (* ЧТ ВП03У *)
*)
*)
*)
*)
*)
*)
*)
*)
ние избыточной сложности исходного текста, повышение показателей комментируемости, что приводит к улучшению взаимозаменяемости программистов в процессе подготовки программ БПО.
Наиболее значимым результатом применения средств измерения является повышение качества тестирования программ: обеспечивается 100%-е покрытие тестами программ БПО по критерию С1 и приближение к максимально достижимой величине покрытия тестами по критерию С.