سلسلة أدوات تصميم السلامة

استخدِم سلسلة أدوات تصميم الأمان لتقديم حلّ مراقبة الأمان الذي يتم إنشاؤه من مستند تصميم Figma. استخدِم هذه السلسلة من الأدوات بالتسلسل.

ينتج برنامج تجميع تصميم الأمان مواد عرض الأمان لتوجيه عملية إنشاء الرمز البرمجي اللاحقة لإنشاء أداة مراقبة الأمان. يسمح الفصل بين تجميع التصميم وإنشاء الرمز البرمجي لمولّد الرمز البرمجي بتحقيق تصنيف ISO-26262 من المستوى TCL-3.

سلسلة أدوات تصميم السلامة

الشكل 1: سلسلة أدوات تصميم الأمان

بعد أن ينشئ برنامج التجميع مواد العرض، تنشئ سلسلة الأدوات تقريرًا يمكن لمهندس الأمان في المصنّع الأصلي للمركبة فحصه للتحقّق من صحة مواد العرض التي تم إنشاؤها من تصميم 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 الذي تم تسلسله والذي يستهلكه برنامج التجميع كإدخال. تضع أداة العرض عالية التوفّر علامات على العُقد التي تكشف عن المشاكل والمحدّدة في 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 سلسلة لا ينطبق إصدار برنامج تجميع التصميم المستخدَم لإنشاء مجموعة من مواد العرض

يوفر هذا القسم نموذجًا لملف 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 صورة اختبار واجهة المستخدم والتحقّق منها للعلامة التي تكشف عن المشاكل.

اختبار واجهة المستخدم والتحقّق من صحة الإشارة

الشكل 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 مخصّصة.