Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Menguasai Pengkodean Terintegrasi: Kebiasaan Terbukti untuk Mengurangi Kesalahan dan Meningkatkan Keamanan

Selama dekade terakhir, perangkat lunak terintegrasi tumbuh dari beberapa ratus ribu baris menjadi lebih dari 100 juta dalam sebuah kendaraan yang umum. Pergeseran ke prosesor 32-bit dan memori yang melimpah telah membuka fungsi yang tak tertandingi—namun juga memperkuat risiko bug halus yang mengancam keamanan dan keamanan.

Untuk tetap unggul, pengembang harus mengadopsi pendekatan sistematis yang mencegah kesalahan sebelum mereka masuk ke dalam basis kode. Dua kategori kesalahan utama yang layak mendapat perhatian khusus:

Menerapkan standar pengkodean yang ketat, seperti MISRA C/C++, bersama dengan pengujian berbasis persyaratan, menawarkan "seoal pencegahan" yang kuat. Strategi ini mengurangi waktu debug, merapatkan jadwal, dan pada akhirnya melindungi ROI Anda.

Mengapa Pencegahan Penting

Kesalahan manusia tidak dapat dihindari—insinyur tergesa-gesa, mengabaikan detail, atau salah menginterpretasi alur data kompleks. Namun, ketika perangkat lunak tumbuh dalam ukuran dan konektivitas, kesalahan sederhana ini dapat merintangi menjadi kegagalan kritis. Standar pengkodean yang disiplin membantu mendeteksi dan menghilangkan banyak jebakan ini sebelum mereka muncul.

Di ekosistem C/C++, sekitar 80% defect berasal dari penyalahgunaan hanya 20% bahasa. Dengan melarang atau membatasi konstruksi yang bermasalah, standar secara dramatis meningkatkan kualitas kode.

Pertimbangkan perilaku yang tidak ditentukan yang timbul ketika integer bertanda di-shift ke kanan. Tergantung pada kompiler, hasilnya dapat berbeda, yang mengarah pada perilaku program yang tidak konsisten. Demikian pula, fungsi yang membaca buffer lingkaran dapat mengembalikan nilai dalam urutan yang tidak terduga pada beberapa kompiler. Nuansa-nuansa ini disorot dalam gambar di bawah ini.

Menguasai Pengkodean Terintegrasi: Kebiasaan Terbukti untuk Mengurangi Kesalahan dan Meningkatkan Keamanan
Gambar 1. Perilaku bergantung kompiler dalam konstruksi C/C++. Sumber: LDRA

Menguasai Pengkodean Terintegrasi: Kebiasaan Terbukti untuk Mengurangi Kesalahan dan Meningkatkan Keamanan
Gambar 2. Perilaku tidak ditentukan dalam contoh buffer lingkaran. Sumber: LDRA

Memanfaatkan MISRA C/C++

MISRA, pertama kali diterbitkan pada 1998 untuk industri otomotif, tetap menjadi standar emas untuk pengkodean C/C++ terintegrasi. Ini menentukan:

Pada 2016, MISRA diperluas untuk mengatasi kode yang berkaitan dengan keamanan, menambahkan 14 direktif baru. Misalnya, Direktif 4.14 secara eksplaris melarang konstruksi yang dapat mengarah pada perilaku yang tidak ditentukan, sehingga memperketat postur keamanan.

Menguasai Pengkodean Terintegrasi: Kebiasaan Terbukti untuk Mengurangi Kesalahan dan Meningkatkan Keamanan
Gambar 3. Panduan MISRA tentang perilaku yang tidak ditentukan dan tidak ditentukan. Sumber: LDRA

Menguasai Pengkodean Terintegrasi: Kebiasaan Terbukti untuk Mengurangi Kesalahan dan Meningkatkan Keamanan
Gambar 4. Peran Direktif 4.14 dalam mencegah perilaku yang tidak ditentukan. Sumber: LDRA

Dari Kode ke Aplikasi: Peran Persyaratan dan Pengujian

Meskipun kode sempurna dapat gagal jika tidak memenuhi tujuannya. Pelacakan persyaratan dan pengujian tingkat unit sangat penting untuk memverifikasi bahwa perangkat lunak berperilaku seperti yang dirancang.

Pelacakan dua arah menghubungkan setiap fungsi kembali ke persyaratan tingkat rendahnya dan ke atas ke tujuan tingkat sistem. Pemetaan ini mengekspos fitur yang hilang atau berlebihan sejak awal.

Menguasai Pengkodean Terintegrasi: Kebiasaan Terbukti untuk Mengurangi Kesalahan dan Meningkatkan Keamanan
Gambar 5. Pelacakan dua arah dari fungsi ke persyaratan sistem. Sumber: LDRA

Setelah persyaratan tingkat rendah didefinisikan, kasus uji secara alami muncul. Menjalankan pengujian ini—idealnya dengan alat pengujian unit otomatis—memastikan bahwa kode memenuhi kontraknya.

Menguasai Pengkodean Terintegrasi: Kebiasaan Terbukti untuk Mengurangi Kesalahan dan Meningkatkan Keamanan
Gambar 9. Hasil pengujian unit otomatis. Sumber: LDRA

Mengadopsi Kebiasaan Pengkodean Baru

Pengembangan terintegrasi modern menuntut pendekatan holistik:

Praktik ini menghasilkan kode yang lebih bersih dan lebih mudah dipelihara, menyederhanakan penambahan fitur, dan mengurangi biaya pemeliharaan jangka panjang—manfaat yang berkumandang baik di domain kritis keamanan maupun non-kritis.

Mengadopsi kebiasaan ini bukan opsi jika Anda bertujuan untuk keunggulan kompetitif. Perbedaan antara basis kode yang membutuhkan pemadam kebakaran terus-menerus dan yang berkembang dengan lancar seringkali hanyalah proses yang disiplin.

Artikel asli dari EDN.

Tertanam

  1. Teks String: Kerentanan Tersembunyi dalam Perangkat Lunak Terintegrasi
  2. SOAFEE: Arsitektur Cloud-Native yang Memberdayakan Platform Otomotif yang Didefinisikan oleh Perangkat Lunak
  3. Pixus Perkenalkan Faceplate OpenVPX 6U Tahan Lama dengan Integritas Struktural yang Ditingkatkan
  4. Kontron Meluncurkan COM HPC: Standar Komputasi Tertanam Berkinerja Tinggi Baru
  5. GE Digital Meluncurkan Perusahaan Manajemen Aset Prediktif, Mengubah Pemeliharaan dari Reaktif menjadi Proaktif
  6. Menguasai Pelatihan CMMS: Melibatkan Tim dan Meningkatkan Retensi
  7. Mengamankan Perangkat Lunak Open-Source di IoT: Mengurangi Risiko Perangkat Lunak
  8. 3 Langkah Terbukti untuk Mengamankan Rantai Pasok Perangkat Lunak Anda
  9. Saelig Meluncurkan Impact-D 100AL: Embedded PC Kuat, Kompak, Umur 15 Tahun & I/O Kaya
  10. Memanfaatkan DevOps untuk Mengatasi Tantangan Perangkat Lunak Terdiri