زنجیره ابزار طراحی ایمنی

از زنجیره ابزار طراحی ایمنی برای ارائه یک راهکار نظارت ایمنی تولید شده از یک سند طراحی فیگما استفاده کنید. از این مجموعه ابزارها به ترتیب استفاده کنید.

کامپایلر طراحی ایمنی، مصنوعات ایمنی را برای هدایت تولید کد بعدی برای ساخت مانیتور ایمنی تولید می‌کند. جدایی بین تدوین طراحی و تولید کد به مولد کد اجازه می‌دهد تا به رتبه‌بندی ISO-26262 از TCL-3 دست یابد.

زنجیره ابزار طراحی ایمنی

شکل 1. زنجیره ابزار طراحی ایمنی.

پس از اینکه کامپایلر مصنوعات را تولید کرد، زنجیره ابزار گزارشی ایجاد می‌کند که یک مهندس ایمنی OEM می‌تواند آن را بررسی کند تا مصنوعات تولید شده از طراحی فیگما را تأیید کند.

گردش کار زنجیره ابزار طراحی ایمنی

شکل 2. گردش کار زنجیره ابزار طراحی ایمنی.

طراحی ورودی‌های کامپایلر

سند طراحی سریالایز شده، یک طراحی رابط کاربری را نشان می‌دهد که از یک ابزار طراحی وارد شده و با یک طرحواره جعبه ابزار پردازش شده است. این فایل شامل این اطلاعات تجزیه شده از طراحی است:

  • درخت گره کامل یک طرح
  • تصاویر و اجزا
  • فراداده‌هایی مانند نام، نسخه و تاریخ آخرین تغییر

گره‌های ریشه طرح باید در فهرست گره‌ها تعریف شوند و باید گره‌های ریشه برای عناصر مرتبط با ایمنی شناسایی‌شده در طرح باشند.

این فایل با سیستم عامل اندروید اتوموتیو ادغام می‌شود تا صفحه کیلومترشمار را رندر کند و عناصر غیرمرتبط با ایمنی را با یک رندرکننده با قابلیت دسترسی بالا (HAR) که روی SDV Media اجرا می‌شود، به عنوان یک لایه پوششی برای نمایش عناصر مرتبط با ایمنی به کاربر نمایش دهد.

کامپایلر طراحی از سفارشی‌سازی‌های DesignCompose برای تولید خروجی جهت تغییر میزان دید عناصر حیاتی ایمنی در طراحی استفاده می‌کند. طراحی با استفاده از Impeller به صورت Headless رندر می‌شود. بین تغییرات سفارشی‌سازی، سیستم دستورات اسکرین‌شات را به بخش رندرینگ ارسال می‌کند تا مصنوعات تصویری ایجاد کند.

نمونه فایل طراحی فیگما برای ساخت مانیتور ایمنی

شکل ۳. نمونه فایل طراحی فیگما برای ساخت مانیتور ایمنی.

دایرکتوری خروجی

این مکانی در سیستم فایل محلی است که کامپایلر مصنوعات تولید شده را در آن ذخیره می‌کند.

فایل پیکربندی JSON

اغلب اوقات، یک مهندس ایمنی تولیدکننده اصلی تجهیزات (OEM)، فایل پیکربندی JSON را می‌نویسد که حاوی فراداده‌هایی است که اطلاعات مربوط به ایمنی خودرو را که در طراحی رابط کاربری (UI) ثبت نشده‌اند، در خود جای می‌دهد. این فایل حاوی این داده‌ها است:

  • عنصر طراحی به عنوان ریشه نمایشگر مرتبط با ایمنی تعیین شده است. این عنصر طراحی با اندازه نمایشگر خودرو تنظیم شده است. اندازه باید وضوح یکسانی با نمایشگر داشته باشد. همه عناصر مرتبط با ایمنی باید از نسل این عنصر باشند. آنها نیازی به نسل مستقیم ندارند، بلکه در گره‌های میانی تو در تو قرار دارند. این ریشه، شیء گره ریشه است و نام آن باید با یک گره در سند طراحی مطابقت داشته باشد.

  • نمایش هدف برای طراحی. برای پشتیبانی از رابط‌های کاربری با عناصر در چندین نمایشگر، فایل پیکربندی می‌تواند بیش از یک طرح را مشخص کند، که هر طرح برای نمایش در یک صفحه جداگانه هدف‌گذاری شده است.

  • دیکشنری نام‌های سیگنال باس خودرو به عناصر رابط کاربری مرتبط. کلیدها و مقادیر این دیکشنری عبارتند از:

    • کلیدها: نام سیگنال اتوبوس وسیله نقلیه که حاوی معنی باشد به طوری که وقتی این سیگنال فعال است، عنصر رابط کاربری مرتبط نمایش داده شود. وقتی سیگنال غیرفعال است، عنصر رابط کاربری مرتبط نمایش داده نمی‌شود.

    • مقادیر: شناسه گره فیگما برای عنصر مرتبط با ایمنی که توسط سیگنال باس وسیله نقلیه کنترل می‌شود.

به این نمونه فایل پیکربندی 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 رشته مسیری که در آن می‌توان مصنوعات تولید شده را ذخیره کرد.

طراحی خروجی کامپایلر

کامپایلر طراحی، خروجی را تولید و در دایرکتوری خروجی مشخص شده هنگام فراخوانی ابزار کامپایلر ذخیره می‌کند. این خروجی، فایل‌های هدر مورد استفاده برای تعریف تست‌های پیکسل زمان اجرا در مانیتور ایمنی و تولید گزارش قابل خواندن توسط انسان را تولید می‌کند. خروجی کامپایلر طراحی در یک فایل زیپ ارائه می‌شود که شامل موارد زیر است:

  • فایل data.json فایل متادیتایی در ریشه‌ی فایل‌های اکسپورت شده برای توصیف ساختار طرح اکسپورت شده. تمام مسیرهای موجود در فایل به این فایل نسبت داده می‌شوند.

  • مجموعه‌ای از تصاویر عناصر رابط کاربری مجزا برای نمایش عناصر رابط کاربری مرتبط با ایمنی در حالت فعال که در طول تولید کد بعدی استفاده می‌شوند. کانال آلفا در این تصاویر حاوی اطلاعات پیکسلی است که بر ایمنی تأثیر نمی‌گذارد.

  • مجموعه‌ای از تصاویر کامل رابط کاربری برای نمایش عناصر رابط کاربری مرتبط با ایمنی در حالت‌های فعال و غیرفعال برای استفاده در حین آزمایش کد تولید شده.

  • نسخه به‌روزرسانی‌شده سند سریالی‌شده فیگما که توسط کامپایلر به عنوان ورودی مصرف می‌شود. HAR با تنظیم پرچم RenderOptions::PixelPerfect در طرحواره جعبه ابزار، گره‌های افشاگر مشخص‌شده در Config.json را برای پردازش بیشتر علامت‌گذاری و به‌روزرسانی می‌کند.

این شکل یک فایل طراحی فیگما را نمایش می‌دهد.

محتویات فایل زیپ

شکل ۴. محتویات فایل زیپ.

ایجاد فایل ورودی

یک فایل ورودی data.json برای مولد مانیتور ایمنی ایجاد کنید. خروجی به صورت آرایه‌ای ساختار یافته است که شامل داده‌های ابعادی و یک لینک تصویر برای هر عنصر نمایشی مرتبط با ایمنی است. ساختار این فایل خروجی در این جدول شرح داده شده است:

عنصر نوع واحدها توضیحات
static_ui_elements فرهنگ لغت ناموجود ساختاری حاوی فراداده برای تمام عناصر رابط کاربری مرتبط با ایمنی که از فایل فیگما استخراج شده‌اند.
x عدد صحیح پیکسل‌ها مختصات افقی عنصر مرتبط با ایمنی.
y عدد صحیح پیکسل‌ها مختصات عمودی عنصر مرتبط با ایمنی.
width عدد صحیح پیکسل‌ها عرض عنصر مرتبط با ایمنی
height عدد صحیح پیکسل‌ها ارتفاع عنصر مرتبط با ایمنی.
name رشته ناموجود نام عنصر رابط کاربری مرتبط با ایمنی که از سند فیگما استخراج شده است. نشان‌دهنده مسیر نسبی به تصاویر تولید شده با این عنصر است.
screen فرهنگ لغت برای توصیف صفحه نمایش مورد نظر رابط کاربری.
width عدد صحیح پیکسل‌ها عرض رابط کاربری سند فیگما.
height عدد صحیح پیکسل‌ها ارتفاع رابط کاربری سند فیگما.
build فرهنگ لغتی حاوی اطلاعات ساخت برای این فراخوانی کامپایلر طراحی.
figma_document_id رشته ناموجود شناسه سند فیگما که برای تولید مجموعه‌ای از مصنوعات استفاده شده است.
design_compiler_version رشته ناموجود نسخه کامپایلر طراحی که برای تولید مجموعه‌ای از مصنوعات استفاده می‌شود.

این بخش نمونه‌ای از فایل 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"
 }
}

تصاویر طراحی صادر شده

سیستم، تصاویر گره‌های مرتبط با ایمنی را در یک ساختار دایرکتوری تو در تو و بر اساس نامگذاری آنها در سند طراحی سریالی، رندر و ذخیره می‌کند.

ساختار دایرکتوری تصاویر تأیید تولید شده

شکل ۵. تصاویر تأیید.

سیستم برای هر عنصر هشداردهنده مشخص، تصاویر اطلاعاتی مربوط به ایمنی تولید می‌کند. این تصاویر حاوی پیکسل‌های مورد انتظار از عنصر حیاتی ایمنی هستند، زمانی که روی صفحه نمایش قابل مشاهده است. مانیتور ایمنی ممکن است پیکسل‌های شفاف موجود در این تصاویر را برای اهداف آزمایش پیکسل در زمان اجرا نادیده بگیرد.

این سیستم همچنین تصاویر تست و تأیید رابط کاربری را تولید می‌کند. این سیستم تصاویری از رابط کاربری کامل را به همراه هر مورد به صورت جداگانه رندر می‌کند و آنها را برای تولید یک گزارش قابل خواندن توسط انسان در اختیار مهندسان ایمنی قرار می‌دهد تا بتوانند پیکربندی ایمنی را بررسی و تأیید کنند.

همچنین می‌توانید از این تصاویر برای آزمایش‌های بعدی مانیتور ایمنی استفاده کنید. سیستم تصاویر تأیید را برای همه موارد هشدار دهنده در حالت‌های روشن و خاموش تولید می‌کند.

این تصاویر، طرح را با تمام عناصر مرتبط با ایمنی، فعال و غیرفعال، نشان می‌دهند.

عناصر فعال و غیرفعال مرتبط با ایمنیعناصر فعال و غیرفعال مرتبط با ایمنی

شکل ۶ و شکل ۷. عناصر فعال و غیرفعال مرتبط با ایمنی.

شکل ۸ تصویر اطلاعات مربوط به ایمنی را برای هشدار عدم استفاده از کمربند ایمنی نشان می‌دهد:

اطلاعات ایمنی مرتبط با نبستن کمربند ایمنی

شکل ۸. نشانه‌ی نبستن کمربند ایمنی.

شکل ۹ تصویر تست و تأیید رابط کاربری را برای گزارش نشان می‌دهد.

آزمایش و تأیید رابط کاربری برای تشخیص هویت

شکل ۹. آزمایش و تأیید رابط کاربری برای تشخیص هویت.

سیستم برای هر عنصر موجود در پوشه مصنوعات کامپایل شده، تصاویر تأیید تولید می‌کند. سیستم این تصاویر را در مرحله تولید کد پردازش کرده و آنها را به یک فایل هدر اضافه می‌کند تا برای آزمایش‌های پیکسلی زمان اجرا در مانیتور ایمنی استفاده شود.

تولیدکننده گزارش قابل خواندن توسط انسان

پس از تولید مصنوعات از یک سند فیگما، می‌توانید یک گزارش قابل خواندن توسط انسان ایجاد کنید. مولد گزارش در 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 برای بررسی

شکل ۱۰. نمونه گزارش 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 اختصاصی، ساخته و مستقر شود.