Набор инструментов для проектирования безопасности

Используйте набор инструментов проектирования безопасности для создания решения по мониторингу безопасности, сгенерированного на основе проектной документации Figma. Используйте этот набор инструментов последовательно.

Компилятор проектирования безопасности создает артефакты безопасности, которые затем используются для генерации кода, необходимого для построения монитора безопасности. Разделение между компиляцией проекта и генерацией кода позволяет генератору кода достичь рейтинга ISO-26262 на уровне TCL-3.

Набор инструментов для проектирования систем безопасности

Рисунок 1. Набор инструментов для проектирования систем безопасности.

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

рабочий процесс цепочки инструментов проектирования безопасности

Рисунок 2. Рабочий процесс цепочки инструментов проектирования безопасности.

Проектирование входных данных компилятора

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

  • Полное дерево узлов проекта
  • Изображения и компоненты
  • Метаданные, такие как имя, версия и дата последнего изменения.

Корневые узлы проекта должны быть определены в списке узлов и должны являться корневыми узлами для элементов, имеющих отношение к безопасности и указанных в проекте.

Этот файл интегрируется с Android Automotive OS для отображения приборной панели и показывает элементы, не имеющие отношения к безопасности, с помощью высокодоступного средства визуализации (HAR), работающего на SDV Media, в качестве наложения для отображения элементов, имеющих отношение к безопасности, пользователю.

Компилятор проекта использует настройки DesignCompose для генерации выходных данных, позволяющих переключать видимость критически важных элементов проекта. Проект отображается в безголовом режиме с помощью Impeller. В промежутках между изменениями настроек система отправляет команды создания снимков экрана в бэкэнд рендеринга для генерации графических артефактов.

Пример файла дизайна Figma для создания монитора безопасности.

Рисунок 3. Пример файла Figma для создания монитора безопасности.

Выходной каталог

Это место в локальной файловой системе, где компилятор хранит сгенерированные артефакты.

файл конфигурации JSON

Чаще всего JSON-файл конфигурации составляет инженер по безопасности производителя, и он содержит метаданные, отражающие информацию, имеющую отношение к безопасности автомобиля и не учтенную в дизайне пользовательского интерфейса. Этот файл содержит следующие данные:

  • Элемент дизайна, обозначенный как корень элемента, отвечающего за безопасность. Размер этого элемента дизайна соответствует размеру дисплея автомобиля. Размер должен соответствовать разрешению дисплея. Все элементы, отвечающие за безопасность, должны быть потомками этого элемента. Они не обязательно должны быть прямыми потомками, но могут быть вложены в промежуточные узлы. Этот корень является корневым объектом узла, и его имя должно совпадать с именем узла в документе проекта.

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

  • Словарь названий сигналов автомобильной шины, связанных с соответствующими элементами пользовательского интерфейса. Ключи и значения этого словаря:

    • Обозначения: Название сигнала шины транспортного средства, содержащее смысловое значение, чтобы при активности сигнала отображался соответствующий элемент пользовательского интерфейса. При неактивности сигнала соответствующий элемент пользовательского интерфейса не отображается.

    • Значения: Идентификатор узла Figma для элемента, имеющего отношение к безопасности и управляемого сигналом автомобильной шины.

См. пример конфигурационного файла в формате JSON:

{
  "documents" : [
    {
    "rootnode" : "#Stage",
    "display_id" : 1,
    "document_id": "GLJJrR1JI4HVEjL1qB40zq",
    "states" : {
      "abs": "#cluster/telltale/abs",
      "airbag": "#cluster/telltale/airbag",
      "low_tire_pressure": "#cluster/telltale/low-tire-pressure",
      "brake": "#cluster/telltale/brake",
      "traction": "#cluster/telltale/traction",
      "lowbeam": "#cluster/telltale/lowbeam",
      "hibeam": "#cluster/telltale/hibeam",
      "park_lights": "#cluster/telltale/park-lights",
      "fog_lights": "#cluster/telltale/fog-lights",
      "seatbelts" : "#cluster/telltale/no-seatbelt"
    }
    }
  ]
  ,
  "displays": [
    {
      "id": 1,
      "width": 1920,
      "height": 720
    }
  ]
 }

Запустите компилятор проекта.

Для запуска компилятора проекта:

/path/to/safety-design-compiler -c path/to/<input-file>.json
-o path/to/output_directory

Входные данные компилятора проекта описаны в этой таблице:

Вход Короткий Тип Описание
Конфигурация -c нить Путь для сохранения JSON-файла с настройками безопасности.
Выход -o нить Путь для сохранения сгенерированных артефактов.

Проектирование вывода компилятора

Компилятор проекта генерирует и сохраняет выходные данные в указанный при запуске инструмента компиляции каталог. Эти выходные данные генерируют заголовочные файлы, используемые для определения пиксельных тестов во время выполнения в мониторе безопасности, а также для создания удобочитаемого отчета. Выходные данные компилятора проекта предоставляются в виде ZIP-архива, содержащего:

  • Файл data.json — это файл метаданных, расположенный в корневом каталоге экспортируемых ресурсов, описывающий структуру экспортируемого проекта. Все пути в файле являются относительными по отношению к этому файлу.

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

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

  • Обновленная версия сериализованного документа Figma, используемого компилятором в качестве входных данных. HAR помечает и обновляет узлы-индикаторы, указанные в Config.json , для дальнейшей обработки, устанавливая флаг RenderOptions::PixelPerfect в схеме инструментария.

На этом рисунке представлен файл дизайна Figma.

Содержимое ZIP-файла

Рисунок 4. Содержимое ZIP-файла.

Создайте входной файл

Создайте входной файл data.json для генератора монитора безопасности. Выходной файл будет представлять собой массив, содержащий многомерные данные и ссылку на изображение для каждого элемента отображения, имеющего отношение к безопасности. Структура этого выходного файла описана в таблице:

Элемент Тип Единицы Описание
static_ui_elements Словарь Н/Д Структура, содержащая метаданные для всех элементов пользовательского интерфейса, имеющих отношение к безопасности, извлеченные из документации Figma.
x инт пиксели Горизонтальная координата элемента, имеющего отношение к безопасности.
y инт пиксели Вертикальная координата элемента, имеющего отношение к безопасности.
width инт пиксели Ширина элемента, имеющего отношение к безопасности.
height инт пиксели Высота элемента, имеющего значение для безопасности.
name нить Н/Д Название элемента пользовательского интерфейса, имеющего отношение к безопасности, взятое из документации Figma. Представляет собой относительный путь к изображениям, созданным с помощью этого элемента.
screen Словарь для описания экрана, на который нацелен пользовательский интерфейс.
width инт пиксели Ширина пользовательского интерфейса документа Figma.
height инт пиксели Высота интерфейса документа Figma.
build Словарь, содержащий информацию о сборке для данного вызова компилятора проекта.
figma_document_id нить Н/Д Идентификатор документа Figma, использованный для генерации набора артефактов.
design_compiler_version нить Н/Д Версия Design Compiler, использованная для генерации набора артефактов.

В этом разделе представлен пример сгенерированного файла data.json :

{
 "static_ui_elements": [
   {
     "x": 71,
     "y": 663,
     "width": 38,
     "height": 47,
     "name": "cluster/telltale/no-seatbelt"
   },
   {
     "x": 149,
     "y": 667,
     "width": 40,
     "height": 39,
     "name": "cluster/telltale/low-tire-pressure"
   },
      {
     "x": 1727,
     "y": 676,
     "width": 43,
     "height": 27,
     "name": "cluster/telltale/hibeam"
   },
   {
     "x": 1810,
     "y": 675,
     "width": 43,
     "height": 30,
     "name": "cluster/telltale/lowbeam"
   },
  ...
  ...
 ],
 "screen": {
   "width": 1920,
   "height": 720
 },
 "build": {
   "figma_document_id": "taQnsdPS96wZY8dB1TbzOH",
   "design_compiler_version": "0.1.0"
 }
}

Экспортированные изображения дизайна

Система отображает и сохраняет изображения узлов, имеющих отношение к безопасности, во вложенной структуре каталогов на основе их именования в сериализованном проектном документе.

Структура каталогов сгенерированных изображений для проверки

Рисунок 5. Проверочные изображения.

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

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

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

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

Активные и неактивные элементы, имеющие отношение к безопасности.Активные и неактивные элементы, имеющие отношение к безопасности.

Рисунок 6 и Рисунок 7. Активные и неактивные элементы, имеющие отношение к безопасности.

На рисунке 8 показано изображение, содержащее важную информацию для обеспечения безопасности, касающееся индикатора непристегнутого ремня безопасности:

Информация, имеющая отношение к безопасности, касающаяся индикатора непристегнутого ремня безопасности.

Рисунок 8. Индикатор непристегнутого ремня безопасности.

На рисунке 9 показано изображение для тестирования и проверки пользовательского интерфейса индикатора.

Тестирование и проверка пользовательского интерфейса для Telltale

Рисунок 9. Тестирование и проверка пользовательского интерфейса индикатора.

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

Генератор отчетов, удобочитаемых для человека

После генерации артефактов из документа Figma вы можете создать удобочитаемый отчет. Генератор отчетов находится в utils/human-readable-report-generator .

Система суммирует артефакты узлов, имеющих отношение к безопасности, сгенерированные компилятором проекта, в HTML-файл, включая снимок экрана пользовательского интерфейса с активным узлом. Вы можете просмотреть скомпилированные артефакты перед созданием монитора безопасности.

Запустите генератор отчетов из командной строки:

cargo run --bin human-readable-report-generator -- -d /path/to/data.json
-o /path/to/output_folder

В этой таблице описаны входные данные для генератора отчетов в удобочитаемом формате.

Вход Короткий Тип Описание
data_folder -d нить Расположение файла data.json , сгенерированного безопасным компилятором.
output_path -o нить Путь для сохранения сгенерированного отчета.

инструмент для подтверждения безопасности

Для генерации токена подтверждения после ознакомления с удобочитаемым отчетом инженер по технике безопасности может запустить скрипт подтверждения безопасности для файла output.json . Этот инструмент также находится в utils/human-readable-report-generator . Например:

cargo run --bin approve-hrr -- -f /path/to/compiler_inspection_output.html -n
"Your Name" -e youremail@domain.com -o output/path

Пример HTML-отчета для ознакомления.

Рисунок 10. Пример HTML-отчета.

В этом разделе описываются входные данные для инструмента сертификации безопасности.

Вход Короткий Тип Описание
file_path -f нить Путь к файлу отчета в удобочитаемом формате.
approver_name -n нить Имя инженера, утвердившего документ.
approver_email -e нить Адрес электронной почты инженера, утвердившего документ.
output_path -o нить Место назначения для сгенерированного результата.

В этом разделе представлен пример файла approval_file.json .

{
    "approver_name": //Name of the approver
    "approver_email": //Email of the approver
    "file_hash": //SHA-256 hash generated against the human readable report.
}

Контроль безопасности эталонного образца

Монитор безопасности эталонных данных — это служба на основе Rust, расположенная в reference/safety-monitor . Монитор использует артефакты, сгенерированные компилятором проектирования, для отслеживания состояния системы и обеспечения соответствия требованиям безопасности отображения.

Монитор запускается как автономный исполняемый файл ( har_safety_monitor ) и принимает в качестве аргументов путь к файлу data.json и базовый путь к артефактам.

/path/to/har_safety_monitor --data-json-path /path/to/data.json
--artifact-base-path /path/to/artifacts

Монитор выполняет следующие задачи:

  • Загрузка артефактов: Загружает файл data.json для идентификации элементов пользовательского интерфейса, имеющих отношение к безопасности, а также их ожидаемых положений и размеров.
  • Сравнение с эталонными изображениями: сравнивает текущее содержимое экрана с эталонными изображениями критически важных элементов, сгенерированными компилятором.
  • Интеграция данных автомобиля: Подключается к источникам данных автомобиля для определения ожидаемого состояния каждого индикатора.
  • Обнаружение несоответствия: регистрирует ошибку, если обнаруживается несоответствие между ожидаемыми данными, полученными на основе информации о транспортном средстве, и тем, что отображается на экране.

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