ใช้ Toolchain การออกแบบเพื่อความปลอดภัยเพื่อมอบโซลูชันจอมอนิเตอร์เพื่อความปลอดภัยที่สร้างจากเอกสารการออกแบบ Figma โดยใช้เครื่องมือชุดนี้ตามลำดับ
คอมไพเลอร์การออกแบบเพื่อความปลอดภัยจะสร้างอาร์ติแฟกต์ด้านความปลอดภัยเพื่อขับเคลื่อนการสร้างโค้ดในภายหลังสำหรับการสร้างจอมอนิเตอร์เพื่อความปลอดภัย การแยกการคอมไพล์การออกแบบและการสร้างโค้ดช่วยให้เครื่องมือสร้างโค้ดได้รับคะแนน TCL-3 ตามมาตรฐาน ISO-26262
รูปที่ 1 ชุดเครื่องมือการออกแบบเพื่อความปลอดภัย
หลังจากคอมไพเลอร์สร้างอาร์ติแฟกต์แล้ว ชุดเครื่องมือจะสร้างรายงานที่วิศวกรด้านความปลอดภัยของ OEM สามารถตรวจสอบเพื่อยืนยันอาร์ติแฟกต์ที่สร้างจากการออกแบบ Figma
รูปที่ 2 เวิร์กโฟลว์ของชุดเครื่องมือการออกแบบเพื่อความปลอดภัย
อินพุตของคอมไพเลอร์การออกแบบ
เอกสารการออกแบบที่ซีเรียลไลซ์แสดงถึงการออกแบบ UI ที่นำเข้าจากเครื่องมือการออกแบบและประมวลผลด้วยสคีมาของชุดเครื่องมือ ไฟล์ประกอบด้วยข้อมูลนี้ที่แยกวิเคราะห์จากการออกแบบ
- แผนผังโหนดที่สมบูรณ์ของการออกแบบ
- รูปภาพและคอมโพเนนต์
- ข้อมูลเมตา เช่น ชื่อ เวอร์ชัน และวันที่แก้ไขล่าสุด
ต้องกำหนดโหนดรูทของการออกแบบในรายการโหนดและต้องเป็นโหนดรูทสำหรับองค์ประกอบที่เกี่ยวข้องกับความปลอดภัยซึ่งระบุไว้ในการออกแบบ
ไฟล์นี้ผสานรวมกับ Android Automotive OS เพื่อแสดงคลัสเตอร์เครื่องมือและแสดงองค์ประกอบที่ไม่เกี่ยวข้องกับความปลอดภัยด้วยตัวแสดงผลที่มีความพร้อมใช้งานสูง (HAR) ที่ทำงานบน SDV Media เป็นภาพซ้อนทับเพื่อแสดงองค์ประกอบที่เกี่ยวข้องกับความปลอดภัยแก่ผู้ใช้
คอมไพเลอร์การออกแบบใช้การปรับแต่ง DesignCompose เพื่อสร้างเอาต์พุตเพื่อสลับการมองเห็นองค์ประกอบที่สำคัญต่อความปลอดภัยในการออกแบบ การออกแบบจะแสดงผลแบบไม่มีส่วนหัวด้วย Impeller ระหว่างการเปลี่ยนแปลงการปรับแต่ง ระบบจะส่งคำสั่งภาพหน้าจอไปยังแบ็กเอนด์การแสดงผลเพื่อสร้างอาร์ติแฟกต์รูปภาพ
รูปที่ 3 ตัวอย่างไฟล์การออกแบบ Figma เพื่อสร้างจอมอนิเตอร์เพื่อความปลอดภัย
ไดเรกทอรีเอาต์พุต
นี่คือตำแหน่งในระบบไฟล์ภายในเครื่องที่คอมไพเลอร์จัดเก็บอาร์ติแฟกต์ที่สร้างขึ้น
ไฟล์การกำหนดค่า JSON
ส่วนใหญ่มักจะเป็นวิศวกรด้านความปลอดภัยของ OEM ที่สร้างไฟล์การกำหนดค่า JSON ซึ่งมีข้อมูลเมตาที่บันทึกข้อมูลที่เกี่ยวข้องกับความปลอดภัยของยานพาหนะซึ่งไม่ได้บันทึกไว้ในการออกแบบ UI ไฟล์นี้มีข้อมูลต่อไปนี้
องค์ประกอบการออกแบบที่กำหนดให้เป็นรูทของการแสดงผลที่เกี่ยวข้องกับความปลอดภัย องค์ประกอบการออกแบบนี้มีขนาดเท่ากับจอแสดงผลของยานพาหนะ ขนาดต้องมีความละเอียดเท่ากับจอแสดงผล องค์ประกอบที่เกี่ยวข้องกับความปลอดภัยทั้งหมดต้องเป็นองค์ประกอบย่อยขององค์ประกอบนี้ ไม่จำเป็นต้องเป็นองค์ประกอบย่อยโดยตรง แต่ซ้อนอยู่ในโหนดระดับกลาง รูทนี้คือออบเจ็กต์โหนดรูท และชื่อต้องตรงกับโหนดในเอกสารการออกแบบ
จอแสดงผลเป้าหมายสำหรับการออกแบบ หากต้องการรองรับ UI ที่มีองค์ประกอบในจอแสดงผลหลายจอ ไฟล์การกำหนดค่าสามารถระบุการออกแบบได้มากกว่า 1 รายการ โดยแต่ละการออกแบบกำหนดเป้าหมายให้แสดงบนหน้าจอแยกกัน
พจนานุกรมชื่อสัญญาณบัสของยานพาหนะกับองค์ประกอบ UI ที่เชื่อมโยง คีย์และค่าของพจนานุกรมนี้มีดังนี้
คีย์: ชื่อสัญญาณบัสของยานพาหนะที่มีความหมายเพื่อให้เมื่อสัญญาณนี้ทำงานอยู่ องค์ประกอบ UI ที่เชื่อมโยงจะแสดงขึ้น เมื่อสัญญาณไม่ทำงาน องค์ประกอบ UI ที่เชื่อมโยงจะไม่แสดง
ค่า: รหัสโหนด 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ที่รูทของเนื้อหาที่ส่งออกเพื่ออธิบายโครงสร้างของการออกแบบที่ส่งออก เส้นทางทั้งหมดในไฟล์นี้เป็นเส้นทางสัมพัทธ์กับไฟล์นี้ชุดรูปภาพองค์ประกอบ UI ที่แยกกันเพื่อแสดงองค์ประกอบ UI ที่เกี่ยวข้องกับความปลอดภัยในสถานะที่ใช้งานอยู่ ซึ่งใช้ระหว่างการสร้างโค้ดในภายหลัง ช่องอัลฟ่าในรูปภาพเหล่านี้มีข้อมูลพิกเซลที่ไม่ส่งผลต่อความปลอดภัย
ชุดรูปภาพ UI แบบเต็มเพื่อแสดงองค์ประกอบ UI ที่เกี่ยวข้องกับความปลอดภัยในสถานะที่ใช้งานอยู่และไม่ใช้งาน เพื่อใช้ขณะทดสอบโค้ดที่สร้างขึ้น
เอกสาร Figma ที่ซีเรียลไลซ์เวอร์ชันอัปเดตซึ่งคอมไพเลอร์ใช้เป็นอินพุต HAR จะทำเครื่องหมายและอัปเดตโหนดบอกเล่าที่ระบุไว้ใน
Config.jsonเพื่อให้คอมไพเลอร์ประมวลผลเพิ่มเติมโดยการตั้งค่าแฟล็กRenderOptions::PixelPerfectในสคีมาของชุดเครื่องมือ
รูปนี้แสดงไฟล์การออกแบบ Figma
รูปที่ 4 เนื้อหาของไฟล์ ZIP
สร้างไฟล์อินพุต
สร้างไฟล์อินพุต data.json สำหรับเครื่องมือสร้างจอมอนิเตอร์เพื่อความปลอดภัย เอาต์พุตมีโครงสร้างเป็นอาร์เรย์ที่มีข้อมูลมิติและลิงก์รูปภาพสำหรับองค์ประกอบการแสดงผลที่เกี่ยวข้องกับความปลอดภัยแต่ละรายการ โครงสร้างของไฟล์เอาต์พุตนี้อธิบายไว้ในตารางนี้
| องค์ประกอบ | ประเภท | หน่วย | คำอธิบาย |
|---|---|---|---|
static_ui_elements |
พจนานุกรม | ไม่มี | โครงสร้างที่มีข้อมูลเมตาสำหรับองค์ประกอบ UI ที่เกี่ยวข้องกับความปลอดภัยทั้งหมด ที่แยกจากเอกสาร Figma |
x |
Int | พิกเซล | พิกัดแนวนอนขององค์ประกอบที่เกี่ยวข้องกับความปลอดภัย |
y |
Int | พิกเซล | พิกัดแนวตั้งขององค์ประกอบที่เกี่ยวข้องกับความปลอดภัย |
width |
Int | พิกเซล | ความกว้างขององค์ประกอบที่เกี่ยวข้องกับความปลอดภัย |
height |
Int | พิกเซล | ความสูงขององค์ประกอบที่เกี่ยวข้องกับความปลอดภัย |
name |
สตริง | ไม่มี | ชื่อขององค์ประกอบ UI ที่เกี่ยวข้องกับความปลอดภัยตามที่แยกจากเอกสาร Figma ซึ่งแสดงถึงเส้นทางสัมพัทธ์ไปยังรูปภาพที่สร้างด้วยองค์ประกอบนี้ |
screen |
พจนานุกรมเพื่ออธิบายหน้าจอที่ UI กำหนดเป้าหมาย | ||
width |
Int | พิกเซล | ความกว้างของ UI เอกสาร Figma |
height |
Int | พิกเซล | ความสูงของ UI เอกสาร 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 รูปภาพการยืนยัน
ระบบจะสร้างรูปภาพข้อมูลองค์ประกอบที่เกี่ยวข้องกับความปลอดภัยสำหรับโหนดบอกเล่าแต่ละรายการที่ระบุ รูปภาพเหล่านี้มีพิกเซลที่คาดไว้ขององค์ประกอบที่สำคัญต่อความปลอดภัยเมื่อมองเห็นบนหน้าจอ จอมอนิเตอร์เพื่อความปลอดภัยอาจละเว้นพิกเซลโปร่งใสในรูปภาพเหล่านี้เพื่อวัตถุประสงค์ในการทดสอบพิกเซลรันไทม์
นอกจากนี้ ระบบยังสร้างรูปภาพการทดสอบและการยืนยัน UI ด้วย โดยจะแสดงภาพหน้าจอของ UI แบบเต็มพร้อมโหนดบอกเล่าแต่ละรายการและจัดเตรียมรูปภาพเหล่านั้นเพื่อสร้างรายงานที่มนุษย์อ่านได้ เพื่อให้วิศวกรด้านความปลอดภัยตรวจสอบและอนุมัติการกำหนดค่าด้านความปลอดภัย
นอกจากนี้ คุณยังใช้รูปภาพเหล่านี้สำหรับการทดสอบจอมอนิเตอร์เพื่อความปลอดภัยในภายหลังได้ด้วย ระบบจะสร้างรูปภาพการยืนยันสำหรับโหนดบอกเล่าทั้งหมดในสถานะเปิดและปิด
รูปภาพเหล่านี้แสดงการออกแบบที่มีองค์ประกอบที่เกี่ยวข้องกับความปลอดภัยทั้งหมด ทั้งที่ใช้งานอยู่และไม่ใช้งาน
รูปที่ 6 และรูปที่ 7 องค์ประกอบที่เกี่ยวข้องกับความปลอดภัยที่ใช้งานอยู่และไม่ใช้งาน
รูปที่ 8 แสดงรูปภาพข้อมูลที่เกี่ยวข้องกับความปลอดภัยสำหรับโหนดบอกเล่า "ไม่คาดเข็มขัดนิรภัย"
รูปที่ 8 โหนดบอกเล่า "ไม่คาดเข็มขัดนิรภัย"
รูปที่ 9 แสดงรูปภาพการทดสอบและการยืนยัน UI สำหรับโหนดบอกเล่า
รูปที่ 9 การทดสอบและการยืนยัน UI สำหรับโหนดบอกเล่า
ระบบจะสร้างรูปภาพการยืนยันสำหรับทุกองค์ประกอบในโฟลเดอร์อาร์ติแฟกต์ที่คอมไพล์แล้ว ระบบจะประมวลผลรูปภาพเหล่านี้ในขั้นตอนการสร้างโค้ดและเพิ่มลงในไฟล์ส่วนหัวเพื่อใช้สำหรับการทดสอบพิกเซลรันไทม์ในจอมอนิเตอร์เพื่อความปลอดภัย
เครื่องมือสร้างรายงานที่มนุษย์อ่านได้
หลังจากสร้างอาร์ติแฟกต์จากเอกสาร Figma แล้ว คุณจะสร้างรายงานที่มนุษย์อ่านได้ เครื่องมือสร้างรายงานจะอยู่ใน utils/human-readable-report-generator
ระบบจะสรุปอาร์ติแฟกต์ของโหนดที่เกี่ยวข้องกับความปลอดภัยที่สร้างโดยคอมไพเลอร์การออกแบบในไฟล์ HTML ซึ่งรวมถึงภาพหน้าจอของ UI ที่มีโหนดที่ใช้งานอยู่ คุณสามารถตรวจสอบอาร์ติแฟกต์ที่คอมไพล์แล้วก่อนที่จะสร้างจอมอนิเตอร์เพื่อความปลอดภัย
เรียกใช้เครื่องมือสร้างรายงานจากบรรทัดคำสั่ง
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
รูปที่ 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เพื่อระบุองค์ประกอบ UI ที่เกี่ยวข้องกับความปลอดภัย รวมถึงตำแหน่งและขนาดที่คาดไว้ - การเปรียบเทียบรูปภาพอ้างอิง: เปรียบเทียบเนื้อหาปัจจุบันของหน้าจอด้วยรูปภาพอ้างอิงขององค์ประกอบที่สำคัญต่อความปลอดภัยซึ่งสร้างโดยคอมไพเลอร์
- การผสานรวมข้อมูลยานพาหนะ: เชื่อมต่อกับแหล่งข้อมูลยานพาหนะเพื่อกำหนดสถานะที่คาดไว้ของโหนดบอกเล่าแต่ละรายการ
- การตรวจหาความไม่ตรงกัน: บันทึกข้อผิดพลาดหากมีข้อมูลที่คาดไว้ตามข้อมูลยานพาหนะไม่ตรงกับสิ่งที่มองเห็นบนหน้าจอ
จอมอนิเตอร์เพื่อความปลอดภัยได้รับการออกแบบมาให้สร้างและติดตั้งใช้งานเป็นส่วนหนึ่งของอิมเมจระบบ ซึ่งโดยปกติจะอยู่ใน APEX ที่เฉพาะเจาะจง