Gunakan toolchain desain keselamatan untuk memberikan solusi pemantauan keselamatan yang dihasilkan dari dokumen desain Figma. Gunakan rangkaian alat ini secara berurutan.
Compiler desain keselamatan menghasilkan artefak keselamatan untuk mendorong pembuatan kode berikutnya dalam membangun monitor keselamatan. Pemisahan antara kompilasi desain dan pembuatan kode memungkinkan generator kode mencapai rating ISO-26262 TCL-3.
Gambar 1. Rangkaian alat desain keselamatan.
Setelah compiler menghasilkan artefak, toolchain akan membuat laporan yang dapat diperiksa oleh engineer keselamatan OEM untuk memvalidasi artefak yang dihasilkan dari desain Figma.
Gambar 2. Alur kerja toolchain desain keselamatan.
Input compiler desain
Dokumen desain yang diserialisasi mewakili desain UI yang diimpor dari alat desain dan diproses dengan skema toolkit. File berisi informasi ini yang diuraikan dari desain:
- Pohon node lengkap dari desain
- Gambar dan komponen
- Metadata seperti nama, versi, dan tanggal modifikasi terakhir
Node root desain harus ditentukan dalam daftar node dan harus menjadi node root untuk elemen yang relevan dengan keselamatan yang diidentifikasi dalam desain.
File ini terintegrasi dengan Android Automotive OS untuk merender panel instrumen dan menampilkan elemen yang tidak relevan dengan keselamatan dengan perender ketersediaan tinggi (HAR) yang berjalan di SDV Media sebagai overlay untuk menampilkan elemen yang relevan dengan keselamatan kepada pengguna.
Compiler desain menggunakan penyesuaian DesignCompose untuk menghasilkan output guna mengalihkan visibilitas elemen penting keselamatan dalam desain. Desain dirender tanpa tampilan dengan Impeller. Di antara perubahan penyesuaian, sistem mengeluarkan perintah screenshot ke backend rendering untuk menghasilkan artefak gambar.
Gambar 3. Contoh file desain Figma untuk membuat monitor keselamatan.
Direktori output
Ini adalah lokasi di sistem file lokal tempat compiler menyimpan artefak yang dihasilkan.
File konfigurasi JSON
Biasanya, engineer keselamatan OEM membuat file konfigurasi JSON, yang berisi metadata yang merekam informasi terkait keselamatan kendaraan yang tidak terekam dalam desain UI. File ini berisi data berikut:
Elemen desain yang ditetapkan sebagai root tampilan yang relevan dengan keselamatan. Elemen desain ini disesuaikan dengan ukuran layar kendaraan. Ukuran harus memiliki resolusi yang sama dengan layar. Semua elemen yang relevan dengan keselamatan harus berupa turunan dari elemen ini. Tidak harus berupa turunan langsung, tetapi disarangkan di node perantara. Root ini adalah objek node root, dan namanya harus cocok dengan node dalam dokumen desain.
Tampilan target untuk desain. Untuk mendukung UI dengan elemen di beberapa layar, file konfigurasi dapat menentukan lebih dari satu desain, dengan setiap desain ditargetkan untuk ditampilkan di layar terpisah.
Dictionary nama sinyal bus kendaraan ke elemen UI terkait. Kunci dan nilai kamus ini adalah:
Kunci: Nama sinyal bus kendaraan yang berisi makna sehingga saat sinyal ini aktif, elemen UI terkait akan ditampilkan. Jika sinyal tidak aktif, elemen UI terkait tidak ditampilkan.
Nilai: ID node Figma untuk elemen yang relevan dengan keselamatan yang diatur oleh sinyal bus kendaraan.
Lihat contoh file konfigurasi JSON ini:
{
"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
}
]
}
Menjalankan compiler desain
Untuk menjalankan compiler desain:
/path/to/safety-design-compiler -c path/to/<input-file>.json
-o path/to/output_directory
Input compiler desain dijelaskan dalam tabel ini:
| Input | Pendek | Jenis | Deskripsi |
|---|---|---|---|
| Konfigurasi | -c |
string | Jalur tempat menyimpan file JSON konfigurasi keamanan. |
| Output | -o |
string | Jalur tempat menyimpan artefak yang dihasilkan. |
Output compiler desain
Compiler desain menghasilkan dan menyimpan output ke direktori output yang ditentukan saat Anda memanggil alat compiler. Output ini menghasilkan file header yang digunakan untuk menentukan pengujian piksel runtime di monitor keselamatan, dan untuk membuat laporan yang mudah dibaca. Output compiler desain disediakan dalam Zip yang berisi:
File metadata
data.jsondi root aset yang diekspor untuk menjelaskan struktur desain yang diekspor. Semua jalur dalam file bersifat relatif terhadap file ini.Serangkaian gambar elemen UI terisolasi untuk menampilkan elemen UI yang relevan dengan keamanan dalam status aktif yang digunakan selama pembuatan kode berikutnya. Saluran alfa dalam gambar ini membawa informasi piksel yang tidak memengaruhi keamanan.
Serangkaian gambar UI lengkap untuk menampilkan elemen UI yang relevan dengan keselamatan dalam keadaan aktif dan tidak aktif untuk digunakan saat menguji kode yang dihasilkan.
Versi terbaru dokumen Figma berserial yang digunakan oleh compiler sebagai input. HAR menandai dan memperbarui node yang menunjukkan tanda-tanda yang ditentukan dalam
Config.jsonuntuk diproses lebih lanjut dengan menyetel flagRenderOptions::PixelPerfectdalam skema toolkit.
Gambar ini menampilkan file desain Figma.
Gambar 4. Isi file ZIP.
Membuat file input
Buat file input data.json untuk generator monitor keselamatan. Output disusun sebagai array untuk berisi data dimensi dan link gambar untuk setiap elemen tampilan yang relevan dengan keselamatan. Struktur file output ini dijelaskan
dalam tabel ini:
| Elemen | Jenis | Unit | Deskripsi |
|---|---|---|---|
static_ui_elements |
Kamus | T/A | Struktur yang berisi metadata untuk semua elemen UI yang relevan dengan keamanan yang diekstrak dari dokumen Figma. |
x |
int | piksel | Koordinat horizontal elemen yang relevan dengan keselamatan. |
y |
int | piksel | Koordinat vertikal elemen yang relevan dengan keselamatan. |
width |
int | piksel | Lebar elemen yang relevan dengan keselamatan |
height |
int | piksel | Tinggi elemen yang relevan dengan keselamatan. |
name |
string | T/A | Nama elemen UI yang relevan dengan keamanan seperti yang diekstrak dari dokumen Figma. Mewakili jalur relatif ke gambar yang dibuat dengan elemen ini. |
screen |
Kamus untuk mendeskripsikan layar yang ditargetkan oleh UI. | ||
width |
int | piksel | Lebar UI dokumen Figma. |
height |
int | piksel | Tinggi UI dokumen Figma. |
build |
Kamus yang berisi informasi build untuk pemanggilan kompiler desain ini. | ||
figma_document_id |
string | T/A | ID dokumen Figma yang digunakan untuk membuat kumpulan artefak. |
design_compiler_version |
string | T/A | Versi Design Compiler yang digunakan untuk membuat kumpulan artefak. |
Bagian ini memberikan contoh file data.json yang dihasilkan:
{
"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"
}
}
Gambar desain yang diekspor
Sistem merender dan menyimpan gambar node yang relevan dengan keselamatan dalam struktur direktori bertingkat berdasarkan penamaannya dalam dokumen desain yang diserialisasi.
Gambar 5. Gambar verifikasi.
Sistem menghasilkan gambar informasi elemen yang relevan dengan keselamatan untuk setiap tanda yang ditentukan. Gambar ini berisi piksel yang diharapkan dari elemen penting keselamatan saat elemen tersebut terlihat di layar. Monitor keamanan dapat mengabaikan piksel transparan dalam gambar ini untuk tujuan pengujian piksel runtime.
Sistem ini juga menghasilkan gambar pengujian dan verifikasi UI. Alat ini merender screenshot UI lengkap dengan setiap tanda bahaya dan menyediakannya untuk membuat laporan yang mudah dibaca sehingga engineer keselamatan dapat meninjau dan menyetujui konfigurasi keselamatan.
Anda juga dapat menggunakan gambar ini untuk pengujian berikutnya pada monitor keamanan. Sistem membuat gambar verifikasi untuk semua indikator dalam status Aktif dan Nonaktif.
Gambar ini mengilustrasikan desain dengan semua elemen yang relevan dengan keselamatan, aktif dan tidak aktif.
Gambar 6 dan Gambar 7. Elemen yang relevan dengan keselamatan yang aktif dan tidak aktif.
Gambar 8 menunjukkan gambar informasi yang relevan dengan keselamatan untuk indikator tanpa sabuk pengaman:
Gambar 8. Indikator tidak memakai sabuk pengaman.
Gambar 9 menunjukkan gambar pengujian dan verifikasi UI untuk telltale.
Gambar 9. Pengujian dan verifikasi UI untuk indikator.
Sistem menghasilkan gambar verifikasi untuk setiap elemen dalam folder artefak yang dikompilasi. Sistem memproses gambar ini pada langkah pembuatan kode dan menambahkannya ke file header untuk digunakan dalam pengujian piksel runtime di monitor keamanan.
Pembuat laporan yang dapat dibaca manusia
Setelah membuat artefak dari dokumen Figma, Anda dapat membuat laporan yang mudah dibaca. Pembuat laporan berada di
utils/human-readable-report-generator.
Sistem meringkas artefak node yang relevan dengan keamanan yang dihasilkan oleh Compiler Desain dalam file HTML, termasuk screenshot UI dengan node yang aktif. Anda dapat meninjau artefak yang dikompilasi sebelum membuat monitor keselamatan.
Jalankan generator laporan dari command line:
cargo run --bin human-readable-report-generator -- -d /path/to/data.json
-o /path/to/output_folder
Tabel ini menjelaskan input generator laporan yang dapat dibaca manusia.
| Input | Pendek | Jenis | Deskripsi |
|---|---|---|---|
data_folder |
-d |
string | Lokasi data.json yang dihasilkan oleh compiler keamanan. |
output_path |
-o |
string | Jalur untuk menyimpan laporan yang dihasilkan. |
Alat persetujuan keselamatan
Untuk membuat token persetujuan, setelah meninjau laporan yang dapat dibaca manusia, engineer keamanan dapat menjalankan skrip persetujuan keamanan terhadap output.json.
Alat ini juga terletak di utils/human-readable-report-generator.
Contoh:
cargo run --bin approve-hrr -- -f /path/to/compiler_inspection_output.html -n
"Your Name" -e youremail@domain.com -o output/path
Gambar 10. Contoh laporan HTML.
Bagian ini menjelaskan input alat persetujuan keselamatan.
| Input | Pendek | Jenis | Deskripsi |
|---|---|---|---|
file_path |
-f |
string | Jalur file ke laporan yang dapat dibaca manusia. |
approver_name |
-n |
string | Nama insinyur yang menyetujui. |
approver_email |
-e |
string | Alamat email engineer yang menyetujui. |
output_path |
-o |
string | Tujuan untuk output yang dihasilkan. |
Bagian ini menunjukkan contoh 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.
}
Monitor keselamatan referensi
Monitor keamanan referensi adalah layanan berbasis Rust yang berada di
reference/safety-monitor. Monitor menggunakan artefak yang dihasilkan oleh
Compiler Desain untuk memantau status sistem guna memastikan kepatuhan
keselamatan tampilan.
Monitor berjalan sebagai program biner mandiri (har_safety_monitor) dan mengambil
jalur ke file data.json dan jalur dasar untuk artefak sebagai argumen.
/path/to/har_safety_monitor --data-json-path /path/to/data.json
--artifact-base-path /path/to/artifacts
Monitor melakukan tugas berikut:
- Pemuatan artefak: Memuat
data.jsonuntuk mengidentifikasi elemen UI yang relevan dengan keselamatan dan perkiraan posisi serta dimensinya. - Perbandingan golden image: Membandingkan konten layar saat ini dengan golden image elemen penting untuk keamanan yang dihasilkan oleh compiler.
- Integrasi data kendaraan: Terhubung ke sumber data kendaraan untuk menentukan perkiraan status setiap indikator.
- Deteksi ketidakcocokan: Mencatat error jika ada ketidakcocokan antara apa yang diharapkan berdasarkan data kendaraan dan apa yang terlihat di layar.
Monitor keamanan dirancang untuk dibuat dan di-deploy sebagai bagian dari image sistem, biasanya dalam APEX khusus.