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

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

Оглавление
2.9. Определите требования к программному обеспечению
2.9 При тщательном структурировании требования к программному обеспечению и его архитектура могут быть напрямую сопоставлены с требованиями к системе и её архитектурой. В этом разделе мы поговорим о том, как описать требования к программному обеспечению, воспринимая их как прямое следствие из требований к системе.

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

2.9.2 Для каждого входного параметра, который должно обработать программное обеспечение, укажите точность измерений. Точность здесь означает величину, на которую значение параметра может отклоняться от идеального значения.
2.9.3 Для каждого входного параметра, который программное обеспечение должно обработать, укажите точность определения его задержки. При этом задержка в определении — максимальное время, на которое значение может отставать от истинного значения измеряемой переменной или переменных, которые она представляет.

2.9.4 Для каждой измеряемой переменной укажите, как ПО должно определить значение измеряемой переменной из входных переменных.

2.9.5 Для каждой измеряемой переменной укажите, как определить её статус исходя из входных переменных.

2.9.6 Если при определении измеряемой переменной в программном обеспечении необходимо принять такие проектные решения, которые могут повлиять на видимое поведение системы или её безопасность, отметьте эти решения как производные требования к программному обеспечению, подлежащие пересмотру в процессе оценки безопасности.
2.9.7 Для каждого выходного параметра, который программное обеспечение должно обработать, предоставьте описание всей информации, которую разработчик должен знать, чтобы получить параметр и правильно установить его значение. Это может быть описание вывода, формат данных, диапазон значений, которые он может принимать, его местоположение и любые правила, которым необходимо следовать при работе с ним.

2.9.8 Для каждого выходного параметра, который программное обеспечение должно установить, укажите точность определения задержки. Задержка в определении — максимально допустимое время с момента установки выходного параметра до момента изменения значения изменяемой переменной.

2.9.9 Укажите точность значений для каждого параметра, обрабатываемого программным обеспечением. Точность относится к величине, на которую затрагиваемая изменяемая переменная может отклоняться от своего идеального значения.
2.9.10 Для каждой изменяемой переменной укажите, как вычислить значения выходных параметров на основе значения изменяемой переменной в программном обеспечении.

2.9.11 Для каждой изменяемой переменной подтвердите, что задержка и точность, указанные в требованиях к системе, могут быть соблюдены с учётом задержки и точности входных и выходных переменных и времени вычисления программного обеспечения.
В какой-то момент возникает необходимость отделить требования к аппаратной части от требований к программному обеспечению. Чем больше используются процессоры общего назначения, тем больше требований к системе приходится на программное обеспечение. На самом деле, детальные системные требования и требования к программному обеспечению часто очень похожи. Однако различий может быть довольно много, поэтому требования к системе и требования к программному обеспечению рассматриваются как две отдельные спецификации. Такая трактовка в основном связана с тем, что входы и выходы программного обеспечения не совсем соответствуют измеряемым и изменяемым переменным, которые лежат в основе требований к системе. В этом разделе описывается подход, который обеспечивает плавный переход от требований к системе к требованиям к программному обеспечению.
При этом требования к программному обеспечению создаются путём расширения требований к системе. В основе подхода этого раздела лежит модель с четырьмя переменными, разработанная Парнасом и Мэди [2] как часть методологии SCR. Модель с четырьмя переменными проясняет взаимосвязь между функциональными требованиями к системе и программному обеспечению, так что требования к программному обеспечению могут быть указаны как дополнение к требованиям к системе. Обзор модели с четырьмя переменными показан на рисунке 10.

Рисунок 10. Модель с четырьмя переменными
Мы уже подробно обсуждали измеряемые и изменяемые переменные, ограничения, связанные со средой, и требования к системе. Измеряемые переменные (MON, monitored variables) состоят из величин в среде, которые система будет отслеживать, а изменяемые переменные (CON, controlled variables) — это величины в среде, которые система будет контролировать.

Ограничения среды (NAT, environmental assumptions) — это взаимосвязи, которые поддерживается средой и от которых зависит система; в то время как требования к системе (REQ, system requirements) — это взаимосвязи, которые система будет поддерживать между измеряемыми и изменяемыми переменными. Программное обеспечение не может напрямую работать с измеряемыми и изменяемыми переменными. Вместо этого следует предоставить программному обеспечению измеряемые переменные в качестве входных параметров (INPUT), с которыми ПО как раз может обработать.
Точно также система должна преобразовывать выходные параметры (OUTPUT), с которыми программное обеспечение может работать, в изменение значений изменяемых переменных. Измеряемые и изменяемые переменные обычно находятся на более высоком уровне абстракции, чем входные и выходные параметры. Например, измеряемой переменной может быть высота самолёта, сообщаемая радиолокационным высотомером, она представляет собой целое число от -20 до 2500 футов. Соответствующий входной параметр может быть представлен словом «‎ARINC 429 bus», в котором высота самолёта закодирована как 17-ти битное число в битах с 13-го по 28-й. Знак, показывающий отрицательное перед нами число или положительное, закодирован в 29-м бите. Всё это представляет из себя значение от -8192,0 до +8191,875.

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

Задержка в определении указывает максимальное время с момента изменения измеряемой переменной (от которой зависит входной параметр) до момента, когда это изменение будет указано во входном параметре.

Точность — это величина, на которую фактическое значение входного параметра может отклоняться от её идеального значения. Точно также стрелка OUT — это взаимосвязь каждой изменяемой переменной с одним или несколькими выходными параметрами. Сюда входит определение функции идеального значения для изменяемой переменной, её задержки и точности. Функция идеального значения определяет идеальное значение изменяемой переменной как функцию одной или нескольких выходных переменных.
Задержка — это максимальное время с момента изменения выходного параметра (от которой зависит изменяемая переменная) до момента, когда это изменение будет указано изменяемой переменной. Точность — это величина, на которую фактическое значение изменяемой переменной может отклоняться от её идеального значения.

Определение взаимосвязей между NAT, REQ, IN и OUT неявно ограничивает допустимое поведение программного обеспечения, показанное на рисунке 10 как связь SOFT без указания проектного дизайна программного обеспечения.

В то время как взаимосвязь SOFT определяет истинные требования к программному обеспечению, взаимосвязи между требованиями к системе, указанными в REQ, и требованиями к программному обеспечению в SOFT не очевидны. Требования к системе и требования к программному обеспечению находятся на разных уровнях абстракции и имеют разные домены и диапазоны. Одним из способов решения этих проблем — расширение требований к программному обеспечению SOFT на три части: IN', REQ' и OUT' [44], как показано на рисунке 11.

Рис. 11. Расширенные требования к программному обеспечению
На рисунке 11 IN' — это инверсия связи IN, которая определяет, как воссоздать значение измеряемых переменных (MON') в программном обеспечении из входных параметров. Точно так же OUT' — это инверсия OUT, которая определяет, как выходные параметры изменяются при изменении образа изменяемых переменных (CON') в программном обеспечении.

REQ описывает взаимосвязи, которые должны поддерживаться системой между измеряемыми и изменяемыми переменными, а REQ' описывает взаимосвязи, которые должны поддерживаться программным обеспечением между образами измеряемых и изменяемых переменных. Взаимосвязь SOFT, определяющая требования к программному обеспечению, заменяется на IN', REQ' и OUT'.
Основное преимущество этого расширения в том, что оно делает взаимосвязь между требованиями к системе и требованиями к программному обеспечению прямой и прозрачной. Функция идеального значения, определённая в требованиях к системе, REQ, напрямую влияет на соответствующую функцию в требованиях к программному обеспечению, REQ'. В итоге, требования к программному обеспечению фактически состоят из дополнения к требованиям к системе, определяющим переменные INPUT и OUTPUT, а также взаимосвязей IN, OUT, IN' и OUT'. Ещё одно преимущество заключается в том, что, поскольку IN' и OUT' реализованы в программном обеспечении (возможно, правильнее называть их спецификациями для аппаратных драйверов), они отделяют проблемы в требованиях к программному обеспечению от проблем в х требованиях к системе.

Таким образом, REQ' будет меняться по мере изменения требований к системе, а IN' и OUT' будут меняться по мере изменения базового оборудования. Это помогает изолировать программное обеспечение, реализующее требования к системе, от изменений в аппаратной платформе.
Следует отметить, что MON' и CON' не совпадают с переменными системного уровня, представленными MON и CON. Это измеряемые и изменяемые переменные образа, воссозданные в программном обеспечении. Небольшие различия в значениях вносятся аппаратным и программным обеспечением, а между образами и фактическими количествами в среде возникают задержки. Например, значение высоты самолёта, воссоздаваемое в программе, всегда будет отставать и несколько отличаться от истинной высоты самолёта. Эти различия необходимо учитывать, чтобы обеспечить соблюдение допустимых задержек и допусков, указанных для изменяемых переменных. Для ясности в последующем обсуждении мы будем использовать штрих ('), чтобы отличить конкретную измеряемую или изменяемую переменную, воссозданную в программном обеспечении (например, переменная «‎скорость по воздуху'»), от фактической измеряемой или изменяемой переменной (скорости по воздуху). На практике это различие обычно понятно из контекста.
Что дальше
В следующем разделе мы подробнее разберём, как описать требования к программному обеспечению, воспринимая их как прямое следствие требований к системе.

Далее к пункту 2.9.1