ФЕДЕРАЛЬНОЕ УПРАВЛЕНИЕ
ГРАЖДАНСКОЙ АВИАЦИИ
МИНИСТЕРСТВА ТРАНСПОРТА США
Руководство по разработке
и управлению требованиями
При создании авиационных бортовых
встраиваемых систем реального времени

Исходный текст, 2009 / Русский перевод, 2022

Оглавление
2.9. Определите требования к программному обеспечению
2.9.1 Опишите входные параметры
Чтобы конкретизировать эту идею, рассмотрим пример термостата инкубатора из приложения A. Первым шагом было выполнено определение входных переменных (входных параметров). Цель этого шага состоит в том, чтобы предоставить разработчику всю информацию, необходимую для правильной обработки и интерпретации входных данных. То, как именно это делается, зависит от типа аппаратного интерфейса. Например, измеряемая переменная Current Temperature (Текущая температура) указана в приложении A.3.2 как вещественное число между 68,0° и 105,0°F с точностью не менее 0,1°F. Информация об этой измеряемой переменной предоставляется программному обеспечению термостата двумя входными переменными: «Curr Temp In» и «Curr Temp Status In».

Входной параметр Curr Temp In определена в таблице 9 как 16-битное целое беззнаковое число, которое представляет текущую температуру, умноженную на 256 (то есть 8 бит используются для представления долей градуса). Это целое число находится в двух смежных 8-битных ячейках памяти, расположенных по адресам X'0048' и X'0049'.
Таблица 9. Входной параметр Curr Temp In
Рекомендации 2.9.1
Для каждого входного параметра, который программное обеспечение должно обработать, предоставьте описание всего, что разработчик должен знать, чтобы получить доступ и правильно интерпретировать этот входной параметр. Это может быть описание параметра, формат данных, диапазон значений, которые он может принимать, его местоположение и любые протоколы, которым необходимо следовать при работе с ним.
2.9.2 Укажите точность каждого входного параметра
Точность переменной Curr Temp In должна составлять не менее ±20, что приблизительно равно ±0,08°F. Это максимальное отклонение, которое вводится аппаратным обеспечением, от истинного значения измеряемой переменной «Текущая температура». Текущая температура определяется как значение, выдаваемое датчиком температуры.
Рекомендации 2.9.2
Для каждого входного параметра, который программное обеспечение должно обработать, укажите точность измерений, где точность означает величину, на которую значение может отклоняться от идеального значения.
2.9.3 Укажите задержку для каждого входного параметра
Задержка в определении указывает максимальное время с момента изменения измеряемой переменной до момента, когда это изменение отразится на входном параметре. Для Curr Temp In указано значение 0,20 миллисекунды (мс). Точность и задержка необходимы для определения того, насколько точно и как быстро программное обеспечение должно завершить свои вычисления. Об этом подробнее поговорим в разделе 2.9.11.
Рекомендации 2.9.3
Для каждого входного параметра, который программное обеспечение должно обработать, укажите точность определения задержки, где задержка — максимальное время, на которое значение может отставать от истинного значения измеряемой переменной или переменных, которые она представляет.
2.9.4 Укажите IN' для каждой измеряемой переменной
Обратите внимание, что таблица 9 описывает как входной параметр Curr Temp In, так и основную часть её взаимосвязи с IN, то есть идеальную функцию, определяющую, как вычислить входной параметр из измеряемой переменной (переменных), её задержки и точности.

Ещё один входной параметр, который мы используем для предоставления программному обеспечению информации о значении текущей температуры, — это Curr Temp Status In. Он указывает, является ли значение Curr Temp In действительным или нет. Как определить этот параметр показано в таблице 10.

Если значение Curr Temp In считается действительным, оно равно 0. В противном случае ему присваивается значение, отличное от 0. Эта информация представлена в виде 8-битного целого беззнакового числа, расположенного по адресу X'0046'.
Обратите внимание, что начальное значение равно 255. Это гарантирует, что Curr Temp In будет считаться недействительным до тех пор, пока оно не будет успешно прочитано хотя бы один раз.

Идеальное значение — это то, как значение входного параметра соотносится с измеряемыми переменными; оно, как правило, предоставляет минимум информации, необходимой для реализации требований к системе. Его можно расширить, присвоив определённые значения разным типам сбоев.

Однако эта информация не нужна, поскольку требования к системе определяют одинаковое поведение независимо от типа сбоя.
Таблица 10. Входной параметр Curr Temp Status In
Следующий шаг — определение взаимосвязи IN', которая описывает, как воссоздать измеряемое значение текущей температуры в программном обеспечении. Взаимосвязь IN' может быть простым однозначным образом входного параметра в измеряемую переменную или сложным образом нескольких входных переменных в измеряемую переменную. Например, взаимосвязь IN', которая описывает, как воссоздать значение Текущая температура', — это простая функция входного параметра Curr Temp In. Это показано в таблице 11.
Таблица 11. Отношение IN' к значению текущей температуры
Если значение Curr Temp In меньше 17,408, значение Текущая температура' устанавливается равным 68,0°F. Если значение Curr Temp In больше или равно 17,408 и меньше или равно 26,880, значение Текущая температура' устанавливается равным Curr Temp In, делённому на 256,0. Если значение Curr Temp In больше 26,880, значение Текущая температура' устанавливается равным 105,0°F.
Рекомендации 2.9.4
Для каждой измеряемой переменной укажите, как в программном обеспечении получить значение измеряемой переменной из входных данных.
2.9.5 Укажите статус каждой измеряемой переменной
Вычисленное значение переменной «Текущая температура'» должно быть от 68,0° до 105,0°F, потому что ограничение EA-TS3 для датчика температуры указывает, что измеряемая переменная «Текущая температура» будет находиться в диапазоне от 68,0° до 105,0°F. Также могут быть другие спецификации, которые зависят от этого ограничения.

Тот факт, что входной параметр «Curr Temp In» может физически содержать значение, которое (после преобразования) находится в диапазоне от 0,0° до 256,0°F, — термин реализации, а не требования.

В разделе 2.4 уже говорилось, что каждая измеряемая переменная должна иметь связанный с ней атрибут состояния, чтобы указать её актуальность, то есть отразить, насколько хорошо её может обработать система. Нужно установить атрибут состояния воссозданной измеряемой переменной точно так же, как установить её значение. В качестве примера в таблице 20 показана спецификация для установки атрибута состояния измеряемой переменной «Текущая температура». Здесь статус устанавливается на «Неактуальный», если входной параметр «Curr Temp In». ниже 17,409 или выше 16,880.
Таблица 12. Отношение IN' для статуса текущей температуры

Рекомендации 2.9.5
Для каждой измеряемой переменной укажите, как воссоздать её атрибут «статус» из входных переменных.
2.9.6 Отметьте проектные решения как производные требования
Как ограничить диапазон значений переменной «Текущая температура'» — это пример производного требования, как определено в RTCA DO-178B [27] и DO-248B [28]. Производное требование — это требование, которое нельзя напрямую связать с каким-либо высокоуровневым требованием.

На это указывает тот факт, что возможны и другие варианты проектирования, которые соответствовали бы требованиям к системе. Но они повлияли бы на видимое извне поведение системы. Например, диапазон в таблице 12 можно расширить до 17,000−27,000. Тогда уменьшится риск приведения термостата в неисправное состояние из-за шума в значении Curr Temp In, но в таком случае работать придётся с опасно высокой температурой. Подобные решения влияют на видимое извне поведение системы, поэтому их нужно помечать как производное требование к программному обеспечению. На таких пометки обратят особое внимание при оценки безопасности системы, как указано в DO-178B.
Рекомендации 2.9.6
Если при воссоздании измеряемой переменной в программном обеспечении необходимо сделать выбор конструкции, который может повлиять на видимое извне поведение системы или её безопасность, пометьте эти решения как производные требования к программному обеспечению, подлежащие рассмотрению в процессе оценки безопасности.
2.9.7 Укажите выходные параметры
Определение выходных переменных и взаимосвязей OUT и OUT' выполняется почти одинаково. Единственное отличие — идеальное значение, задержка и точность указываются для изменяемой переменной, а не для выходного параметра. Например, если мы укажем соответствующую информацию в выходной параметр контроля нагрева, мы сможем контролировать регулятор нагрева. Определение этого параметра показано в таблице 13.
Таблица 13. Выходной параметр Heat Control OUT
Этот выходной параметр — 8-битное целое беззнаковое число, расположенное в ячейке памяти X'0060'. Значение 0 указывает на отключение регулятора нагрева, значение от 2 до 255 — на включение регулятора нагрева.
Рекомендации 2.9.7
Для каждого выходного параметра, который должно обработать программное обеспечение, предоставьте описание всего, что должен знать разработчик, чтобы получить доступ к этому параметру и правильно установить его значение. Это может быть описание, формат данных, диапазон значений, которые он может принимать, его местоположение и любые правила, которым необходимо следовать при работе с ним.
2.9.8 Укажите задержку каждого выходного параметра
Как и в случае с входными параметрами, для выходных тоже следует указать задержку и точность. Однако для выходных параметров задержка — это максимально возможная задержка между моментом, когда установлен выходной параметр, и моментом, когда он изменяет значение изменяемой переменной.
Рекомендации 2.9.8
Для каждого выходного параметра, который должно установить программное обеспечение, укажите точность определения задержки, где задержка — максимально допустимое время с момента установки выходного параметра до момента изменения значения изменяемой переменной.
2.9.9 Укажите точность каждого выходного параметра
Для выходных параметров точность — это насколько изменяемая переменная может отклоняться от идеального значения, определяемого выходным параметром. Для численной величины точность устанавливается некоторым диапазоном, для дискретной — N/A, то есть неопределено.

Как и в случае с входными параметрами, спецификация этого выходного параметра включает в себя определение самого этого выходной параметра. Также основная часть взаимосвязи OUT должна реализовывать требования, то есть идеальную функцию, определяющую значение изменяемой переменной из выходного параметра, а также задержку и точность этой изменяемой переменной.
Рекомендации 2.9.9
Для каждого выхода, который программное обеспечение должно обработать, укажите его точность, где точность относится к величине, на которую затрагиваемая изменяемая переменная может отклоняться от своего идеального значения.
2.9.10 Укажите OUT' для каждой изменяемой переменной
Для каждого выходного параметра нужно указать OUT'. От него зависит, как установить выходной параметр на основе текущего значения одного или нескольких образов изменяемых переменных в программном обеспечении.

Например, значение выходного параметра Heat Control Out — прямое отображение образа изменяемой переменной Heat Control, сохраненной в программном обеспечении. Это показано в таблице 14.

Обратите внимание, что когда включен образ изменяемой переменной Heat Control в программном обеспечении, разработчик может установить любое значение от 1 до 255 для параметра Heat Control Out, поскольку они оказывают одинаковый эффект.
Таблица 14. Взаимосвязь OUT' для регулятора нагрева
После определения переменных INPUT и OUTPUT и взаимосвязей IN' и OUT' спецификация требований к программному обеспечению, по большей части, уже завершена.

Теперь разработчик знает, как воссоздать образы измеряемых переменных в программном обеспечении и как установить выходные параметры на основе образов изменяемых переменных в программном обеспечении.

Также разработчик должен знать, как изменить образ изменяемой переменной в программном обеспечении при изменении образа измеряемой переменной в программном обеспечении (то есть REQ'). Однако функция идеального значения для REQ' идентична функции идеального значения, определённой для подробных требований к системе (то есть взаимосвязи REQ), определённой в разделе 2.8.
Рекомендации 2.9.10
Для каждой изменяемой переменной укажите, как установить значения выходных переменных на основе значения образа изменяемой переменной в программном обеспечении.
2.9.11 Подтвердите общую задержку и точность
Единственная оставшаяся задача — подтвердить, что общая задержка и точность, указанные для каждой изменяемой переменной, могут быть соблюдены с учётом задержки и точности входных и выходных переменных, а также времени вычисления программного обеспечения.

Например, в приложении A.5.1.3 задержка изменяемой переменной для регулятора нагрева составляет 6 секунд, а точность не определена. Задержка при измерении текущей температуры указана в таблице 18 и составляет 0,20 мс. Задержка при установке значения изменяемой переменной Heat Control указана в таблице 21 и составляет 0,60 мс. Таким образом, общая задержка при обработке измеряемых переменных и установке изменяемых переменных — 0,8 секунды, то есть программное обеспечение должно завершить свои вычисления за 5,2 секунды. Поскольку регулятор нагрева представляет собой абстрактную двузначную переменную, подтверждение её точности происходит немедленно.
В руководстве DO-178B [27] говорится, что нужно разделять требования к программному обеспечению на высокоуровневые и низкоуровневые. А также, что требования к программному обеспечению высокого уровня должны соответствовать требованиям к системе (цель 1 таблицы А-3 в приложении А), а требования к программному обеспечению низкого уровня должны соответствовать требованиям к программному обеспечению высокого уровня (цель 1 таблицы А-4 в приложении А).

Они определены в DO-178B как «‎Высокоуровневые требования: требования к программному обеспечению, разработанные на основе анализа требований к системе, требований, связанных с безопасностью, и архитектуры системы. Низкоуровневые требования: требования к программному обеспечению, полученные из высокоуровневых требований, производных требований и проектных ограничений, исходный код которых может быть непосредственно реализован без дополнительной информации».
Какие из обсуждавшихся до сих пор требований относятся к высокоуровневым требованиям к программному обеспечению, какие к низкоуровневым требованиям к программному обеспечению, и как можно продемонстрировать соответствие требований к программному обеспечению требованиям к системе? Эти взаимосвязи поясняются на рисунке 12.

Рисунок 12. Высоко- и низкоуровневые требования к ПО
На рисунке 12 изображена структура системных функций с моделью с четырьмя переменными. Системные функции самого низкого уровня (F1.1…F2.N) определяют детальные требования к поведению системы, как описано в разделе 2.8. Другими словами, каждая низкоуровневая Системная Функция определяет свою часть взаимосвязи REQ с измеряемыми и изменяемыми переменными. Системные функции более высокого уровня (F, F1 и F2) определяют требования к высокоуровневой системе, как описано в разделе 2.6.
Требования к низкоуровневому программному обеспечению, то есть такие, исходный код которых может быть реализован без дополнительной информации, включают IN', REQ' (их поведение частично идентично REQ) и OUT'. Другими словами, низкоуровневые требования к программному обеспечению состоят из подробных требований к системе, а также определений IN' и OUT'. Поскольку требования к поведению программного обеспечения идентичны поведению требований к системе, очевидно, что для высокоуровневых требований к программному обеспечению следует выбрать такие требования к системе, которые не являются низкоуровневыми. Это могут быть диаграммы зависимостей, определения внутренних переменных и любые другие системные требования высокого уровня, как обсуждалось в разделе 2.5.
Это естественное следствие реализации требований к системе непосредственно в программном обеспечении. Например, для термостата инкубатора требования к программному обеспечению высокого уровня должны быть определены для термостата (A.5), функции регулирования температуры (A.5.1) и функции отслеживания температуры (A.5.2). Требования к низкоуровневому программному обеспечению должны быть определены для всех функций самого низкого уровня, таких как подсистема управления интерфейсом регулятора (A.5.1.1) и все взаимосвязи «IN''» и «OUT'».
Рекомендации 2.9.11
Для каждой изменяемой переменной подтвердите, что задержка и точность, указанные в требованиях к системе, могут быть соблюдены с учётом задержки и точности входных и выходных переменных и времени вычисления программного обеспечения.
Что дальше
В следующем разделе мы узнаем, как распределить требования по подсистемам.

Далее к разделу 2.10