Rangkaian alat desain keselamatan

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.

Rangkaian alat desain keselamatan

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.

Alur kerja toolchain desain keselamatan

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.

Contoh file desain Figma untuk membuat monitor keselamatan

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.json di 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.json untuk diproses lebih lanjut dengan menyetel flag RenderOptions::PixelPerfect dalam skema toolkit.

Gambar ini menampilkan file desain Figma.

Isi file ZIP

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.

Struktur direktori gambar verifikasi yang dihasilkan

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.

Elemen yang relevan dengan keselamatan yang aktif dan tidak aktif Elemen yang relevan dengan keselamatan yang 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:

Informasi yang relevan dengan keselamatan untuk indikator tidak memakai sabuk pengaman

Gambar 8. Indikator tidak memakai sabuk pengaman.

Gambar 9 menunjukkan gambar pengujian dan verifikasi UI untuk telltale.

Pengujian dan verifikasi UI untuk indikator

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

Contoh laporan HTML untuk ditinjau

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.json untuk 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.