2.2 Определите границы системы
2.2.1 Определите границы системы на ранней стадии разработки требований
Выявление измеряемых и изменяемых переменных следует начинать на ранней стадии процесса разработки требований, даже если может быть не совсем ясно, что что они из себя представляют. Наличие некоторого представления о границах системы упрощает последующие действия, а сама попытка определить такие переменные часто вызывает дополнительные вопросы. В качестве примера, предварительный набор контролируемых переменных для термостата инкубатора показан в таблице 3.

Таблица 3. Отслеживаемые термостатом переменные и переменные, которыми термостат управляет
Настройки пользователя и переменные обратной связи пользователя сгруппированы и используют те же названия, что показаны на контекстной диаграмме на рисунке А-13. Несмотря на то, что это неплохой список для начала проекта, он вызывает много вопросов.

Каковы пределы желаемых температурных диапазонов? Температура измеряется в градусах по Цельсию или Фаренгейту?

Эти вопросы могут быть решены на последующих этапах. На ранней стадии процесса важнее будет составить предварительный список измеряемых и изменяемых системой переменных.

Рекомендация 2.2.1: Определите границы системы на раннем этапе разработки требований путём определения предварительного набора измеряемых и изменяемых системой переменных.
2.2.2 Выберите переменные среды
Выявить все необходимые переменные среды с самого начала было бы идеально, но это возможно лишь в том случае, когда мы проектируем систему взамен уже существующей.

Точно определить границы проекта на старте почти невозможно, поэтому в процессе разработки они будут смещаться. Тем не менее, лучше иметь не совсем верное документированное определение границ системы, которое со временем имеет шанс быть улучшено, чем вообще не иметь такого определения.

При определении измеряемых и управляемых системой переменных полезно опираться на эмпирическое правило: переменные должны существовать вне системы и не должны зависеть от самой системы. Спросите себя: будет ли переменная продолжать существовать, даже если убрать разрабатываемую систему?

Рекомендация 2.2.2: Выберите переменные, которые существуют в среде независимо от разрабатываемой системы.
2.2.3 Выберите изменяемые системой переменные
(переменные, которыми система должна управлять)
Анализируемые переменные должны быть выбраны только из тех, которыми система может непосредственно управлять. Например, в примере с инкубатором температура воздуха не выбрана в качестве изменяемой переменной, поскольку термостат может влиять на неё только косвенно, управляя источником тепла. Вместо этого в качестве регулируемой переменной следует выбрать регулятор нагрева, поскольку он находится под непосредственным управлением термостата.

Рекомендация 2.2.3: Выберите в качестве управляемых переменных те величины, которыми система может управлять напрямую.
2.2.4 Выберите измеряемые переменные
(переменные, которые система должна отслеживать)
Измеряемые переменные должны быть той физической величиной, которую система может оценить. Например, при определении поведения всего комплекса бортовых систем подходящей переменной может быть текущая высота самолёта. При определении поведения подсистемы подходящей измеряемой переменной может быть переданная другой подсистемой оценка высоты. Тщательный выбор переменных подходящего уровня абстракции может помочь избежать путаницы.

Например, если система должна определить высоту полёта воздушного судна, данные о высоте, возможно, стоит получать из нескольких источников. В этом случае выбирать текущую высоту воздушного судна в качестве измеряемой переменной нет смысла — ведь их несколько. Высота, полученная из каждого источника, будет считаться отдельной измеряемой переменной, а как объединить эти оценки в оценку истинной высоты воздушного судна будет указано в требованиях к системе.

Практика 2.2.4: Выберите в качестве измеряемых переменных величины, которые система может оценить (измерить, воспринимает непосредственно).
2.2.5 Убедитесь, что переменные среды достаточно абстрактны
Важно учитывать, что измеряемые и изменяемые переменные должны быть как можно более абстрактными и не должны содержать подробностей о том, как они реализованы. Измеряемая переменная может быть действительным числом с точностью до одной цифры в диапазоне от -100,0 до +50,000.0, но не словом «Aeronautical Radio, Incorporated (ARINC) 429». И измеряемые, и изменяемые переменные должны содержать не больше деталей, чем необходимо системе для выполнения её функций, предполагая идеальный интерфейс с внешним миром.

Рекомендация 2.2.5: Убедитесь, что измеряемые и изменяемые переменные сформулированы максимально абстрактно и не содержат деталей реализации.
2.2.6 Избегайте упоминания деталей интерфейса в переменных
Следует проявлять особую осторожность и избегать включения деталей интерфейса в переменные. Например, дисплей может выдавать предупреждение пилоту, отображая высоту жёлтым цветом и опасную ситуацию мигающим красным.

В этой ситуации фактически существуют две управляемые переменные: высота (которая будет представлять собой число) и статус (нормальный, предупреждающий или опасный). Представление пилоту управляемых переменных более уместно рассматривать как часть детального проектирования интерфейса «человек-машина» (HMI).

Существует ряд других атрибутов, которые следует собирать для каждой измеряемой и изменяемой переменной, таких как тип, диапазон, точность и статус. Однако эти атрибуты более уместно рассматривать как часть допущений относительно окружающей среды, от которых зависит система, и они обсуждаются в разделе 2.4.
Определение измеряемых и изменяемых переменных и их атрибутов может быть представлено в спецификации требований в отдельном разделе, по аналогии со словарём данных, или они могут быть описаны рядом с тем внешним объектом, с которым связаны. Завершённый пример сопоставления контролируемых и управляемых переменных с их внешним объектом показан для термостата Isolette в приложении A.3. Аналогичные примеры приведены в приложении B.3 для FCS, в приложении C.3 для FGS и в приложении D.3 для AP.

Рекомендация 2.2.6: Избегайте включения деталей интерфейса в переменные. Вместо этого определите переменные, которые описывают передаваемую информацию независимо от способа её представления.
2.2.7 Определите все физические интерфейсы
В конечном счёте, границы системы должны полностью определять физический интерфейс к системе. Должны быть описаны все входы и выходы, все сообщения, все поля в сообщении и протоколы, используемые для получения и отправки сообщений. Если интерфейс соответствует стандартному интерфейсу или протоколу, следует сослаться на соответствующий стандарт.

Хукс и Фарри [22] рекомендуют сделать это как можно скорее, и это разумно, так как несоответствие между интерфейсами — частый источник ошибок.

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

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

Рекомендация 2.2.7: Опишите все физические интерфейсы системы, указав все дискретные входы, сообщения, поля в сообщениях и все используемые протоколы.
Что дальше
В следующем разделе мы подробнее разберем что включает в себя определение границ системы.

Вперед к разделу 2.3!
Made on
Tilda