שרשרת כלים לעיצוב בטיחותי

תשתמש בשרשרת הכלים לעיצוב בטיחות כדי לספק פתרון לניטור בטיחות שנוצר ממסמך עיצוב ב-Figma. צריך להשתמש בסדרת הכלים הזו ברצף.

הקומפיילר של עיצוב הבטיחות יוצר ארטיפקטים של בטיחות כדי להניע יצירה של קוד בהמשך לצורך בניית כלי המעקב אחר הבטיחות. ההפרדה בין קומפילציה של עיצוב לבין יצירת קוד מאפשרת לכלי ליצירת קוד להשיג דירוג ISO-26262 של TCL-3.

שרשרת כלים לעיצוב בטיחותי

איור 1. שרשרת כלים לתכנון בטיחות.

אחרי שהקומפיילר יוצר ארטיפקטים, ערכת הכלים יוצרת דוח שמהנדס בטיחות של יצרן ציוד מקורי יכול לבדוק כדי לאמת את הארטיפקטים שנוצרו מהעיצוב ב-Figma.

תהליך העבודה של שרשרת הכלים לעיצוב בטיחות

איור 2. תהליך העבודה של שרשרת הכלים לתכנון בטיחות.

הגדרת קלט לקומפיילר

מסמך העיצוב שעבר סריאליזציה מייצג עיצוב של ממשק משתמש שיובא מכלי עיצוב ועבר עיבוד באמצעות סכימת ערכת כלים. הקובץ מכיל את המידע הבא שנותח מהעיצוב:

  • עץ הצמתים המלא של עיצוב
  • תמונות ורכיבים
  • מטא-נתונים כמו שם, גרסה ותאריך השינוי האחרון

צריך להגדיר את צמתי הבסיס של העיצוב ברשימת הצמתים, והם צריכים להיות צמתי הבסיס של הרכיבים שרלוונטיים לבטיחות ומזוהים בעיצוב.

הקובץ הזה משולב עם Android Automotive OS כדי לעבד את לוח המכוונים ולהציג את הרכיבים שלא קשורים לבטיחות באמצעות רכיב עיבוד עם זמינות גבוהה (HAR) שפועל ב-SDV Media כשכבת-על, כדי להציג למשתמש את הרכיבים שקשורים לבטיחות.

קומפיילר העיצוב משתמש בהתאמות אישיות של DesignCompose כדי ליצור פלט להחלפת הנראות של רכיבים קריטיים לבטיחות בעיצוב. העיצוב מוצג ללא ראש באמצעות Impeller. בין שינויי ההתאמה האישית, המערכת שולחת פקודות צילום מסך לקצה העורפי של הרינדור כדי ליצור ארטיפקטים של תמונות.

קובץ עיצוב לדוגמה ב-Figma ליצירת כלי לבדיקת בטיחות

איור 3. קובץ עיצוב לדוגמה ב-Figma לבניית כלי לבדיקת בטיחות.

ספריית פלט

זהו המיקום במערכת הקבצים המקומית שבו המהדר מאחסן את הארטיפקטים שנוצרו.

קובץ הגדרות JSON

ברוב המקרים, מהנדס בטיחות של יצרן ציוד מקורי (OEM) יוצר את קובץ ההגדרות בפורמט 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

הקלט של מהדר העיצוב מתואר בטבלה הזו:

קלט סרטון Shorts סוג תיאור
הגדרה -c מחרוזת הנתיב שבו יישמר קובץ ה-JSON של הגדרות הבטיחות.
פלט -o מחרוזת הנתיב שבו יישמרו פריטי המידע שנוצרו.

פלט של מהדר עיצוב

מהדר העיצוב יוצר ושומר פלט בספריית הפלט שצוינה כשמפעילים את כלי ההידור. הפלט הזה יוצר את קובצי הכותרת שמשמשים להגדרת בדיקות הפיקסלים בזמן הריצה בכלי למעקב אחר בטיחות, וליצירת הדוח שקל לקרוא. הפלט של קומפיילר העיצוב מסופק בקובץ ZIP שכולל:

  • קובץ המטא-נתונים data.json בבסיס הנכסים המיוצאים, שמתאר את מבנה העיצוב המיוצא. כל הנתיבים בקובץ הם יחסיים לקובץ הזה.

  • סדרה של תמונות מבודדות של רכיבי ממשק משתמש כדי להציג רכיבי ממשק משתמש שרלוונטיים לבטיחות במצב פעיל, שמשמשים במהלך יצירת קוד בהמשך. ערוץ האלפא בתמונות האלה מכיל מידע על פיקסלים שלא משפיע על הבטיחות.

  • סדרה של תמונות מלאות של ממשק משתמש שמציגות רכיבים רלוונטיים לבטיחות במצבים פעילים ובלתי פעילים, לשימוש במהלך בדיקת הקוד שנוצר.

  • גרסה מעודכנת של מסמך Figma שעבר סריאליזציה, שהמהדר צורך כקלט. הכלי HAR מסמן ומעדכן את הצמתים המעידים שצוינו ב-Config.json לעיבוד נוסף על ידי הגדרת הדגל RenderOptions::PixelPerfect בסכימת ערכת הכלים.

בתמונה הזו מוצג קובץ עיצוב של Figma.

תוכן קובץ ה-ZIP

איור 4. תוכן קובץ ה-ZIP.

יצירת קובץ הקלט

יוצרים data.json קובץ קלט לגנרטור של כלי הבקרה לבטיחות. הפלט מובנה כמערך שמכיל נתונים ממדיים וקישור לתמונה של כל רכיב תצוגה שקשור לבטיחות. מבנה קובץ הפלט הזה מתואר בטבלה הבאה:

רכיב סוג יחידות תיאור
static_ui_elements מילון לא רלוונטי מבנה שמכיל מטא-נתונים של כל רכיבי ממשק המשתמש שקשורים לבטיחות, שחולצו ממסמך Figma.
x INT פיקסלים הקואורדינטה האופקית של רכיב שקשור לבטיחות.
y INT פיקסלים קואורדינטה אנכית של רכיב שרלוונטי לבטיחות.
width INT פיקסלים הרוחב של רכיב שקשור לבטיחות
height INT פיקסלים הגובה של רכיב שקשור לבטיחות.
name מחרוזת לא רלוונטי השם של רכיב בממשק המשתמש שקשור לבטיחות, כפי שחולץ ממסמך Figma. מייצג נתיב יחסי לתמונות שנוצרו באמצעות הרכיב הזה.
screen מילון שמתאר את המסך שמטורגט על ידי ממשק המשתמש.
width INT פיקסלים הרוחב של ממשק המשתמש של מסמך Figma.
height INT פיקסלים הגובה של ממשק המשתמש של מסמך 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. בדיקה ואימות של ממשק המשתמש של telltale.

המערכת יוצרת תמונות אימות לכל רכיב בתיקיית הארטיפקט המהודרת. המערכת מעבדת את התמונות האלה בשלב של יצירת הקוד ומוסיפה אותן לקובץ כותרת לשימוש בבדיקות פיקסלים בזמן ריצה ב'מעקב הבטיחות'.

כלי הדוחות

אחרי שיוצרים את הארטיפקטים ממסמך Figma, אפשר ליצור דוח שקל לקרוא. הכלי ליצירת דוחות נמצא בכתובת utils/human-readable-report-generator.

המערכת מסכמת ארטיפקטים של הצמתים הרלוונטיים לבטיחות שנוצרו על ידי Design Compiler בקובץ HTML, כולל צילום מסך של ממשק המשתמש עם הצומת הפעיל. אפשר לבדוק את הארטיפקטים המהודרים לפני שיוצרים את כלי הבקרה לבטיחות.

מריצים את הכלי ליצירת דוחות משורת הפקודה:

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

בטבלה הזו מתוארים קלטים של כלי ליצירת דוחות שקריאים לאנשים.

קלט סרטון Shorts סוג תיאור
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 לדוגמה.

בקטע הזה מתוארים הקלט של הכלי לאישור בטיחות.

קלט סרטון Shorts סוג תיאור
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. הכלי לניטור משתמש בארטיפקטים שנוצרו על ידי Design Compiler כדי לנטר את מצב המערכת ולוודא שהתצוגה עומדת בדרישות הבטיחות.

הכלי לניטור פועל כקובץ בינארי עצמאי (har_safety_monitor) ומקבל את הנתיב לקובץ data.json ואת נתיב הבסיס של פריטי המידע שנוצרו בתהליך פיתוח (artifacts) כארגומנטים.

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

הכלי לניטור מבצע את המשימות הבאות:

  • טעינת ארטיפקטים: טעינת data.json כדי לזהות רכיבי ממשק משתמש שרלוונטיים לבטיחות, ואת המיקומים והמימדים הצפויים שלהם.
  • השוואה של תמונות מוזהבות: השוואה בין התוכן הנוכחי במסך לבין תמונות מוזהבות של אלמנטים קריטיים לבטיחות שנוצרו על ידי הקומפיילר.
  • שילוב נתוני רכב: מתחבר למקורות נתוני רכב כדי לקבוע את המצב הצפוי של כל נורית אזהרה.
  • זיהוי חוסר התאמה: מתעד שגיאה אם יש חוסר התאמה בין מה שצפוי על סמך נתוני כלי הרכב לבין מה שמוצג במסך.

הכלי לניטור בטיחות נועד להיבנות ולהיפרס כחלק מתמונת המערכת, בדרך כלל בתוך APEX ייעודי.