תשתמש בשרשרת הכלים לעיצוב בטיחות כדי לספק פתרון לניטור בטיחות שנוצר ממסמך עיצוב ב-Figma. צריך להשתמש בסדרת הכלים הזו ברצף.
הקומפיילר של עיצוב הבטיחות יוצר ארטיפקטים של בטיחות כדי להניע יצירה של קוד בהמשך לצורך בניית כלי המעקב אחר הבטיחות. ההפרדה בין קומפילציה של עיצוב לבין יצירת קוד מאפשרת לכלי ליצירת קוד להשיג דירוג ISO-26262 של TCL-3.
איור 1. שרשרת כלים לתכנון בטיחות.
אחרי שהקומפיילר יוצר ארטיפקטים, ערכת הכלים יוצרת דוח שמהנדס בטיחות של יצרן ציוד מקורי יכול לבדוק כדי לאמת את הארטיפקטים שנוצרו מהעיצוב ב-Figma.
איור 2. תהליך העבודה של שרשרת הכלים לתכנון בטיחות.
הגדרת קלט לקומפיילר
מסמך העיצוב שעבר סריאליזציה מייצג עיצוב של ממשק משתמש שיובא מכלי עיצוב ועבר עיבוד באמצעות סכימת ערכת כלים. הקובץ מכיל את המידע הבא שנותח מהעיצוב:
- עץ הצמתים המלא של עיצוב
- תמונות ורכיבים
- מטא-נתונים כמו שם, גרסה ותאריך השינוי האחרון
צריך להגדיר את צמתי הבסיס של העיצוב ברשימת הצמתים, והם צריכים להיות צמתי הבסיס של הרכיבים שרלוונטיים לבטיחות ומזוהים בעיצוב.
הקובץ הזה משולב עם Android Automotive OS כדי לעבד את לוח המכוונים ולהציג את הרכיבים שלא קשורים לבטיחות באמצעות רכיב עיבוד עם זמינות גבוהה (HAR) שפועל ב-SDV Media כשכבת-על, כדי להציג למשתמש את הרכיבים שקשורים לבטיחות.
קומפיילר העיצוב משתמש בהתאמות אישיות של DesignCompose כדי ליצור פלט להחלפת הנראות של רכיבים קריטיים לבטיחות בעיצוב. העיצוב מוצג ללא ראש באמצעות Impeller. בין שינויי ההתאמה האישית, המערכת שולחת פקודות צילום מסך לקצה העורפי של הרינדור כדי ליצור ארטיפקטים של תמונות.
איור 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.
איור 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
איור 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 ייעודי.