Pembangun di NASA ialah salah satu pekerjaan yang paling mencabar dalam dunia pengaturcaraan. Mereka menulis kod dan membangunkan aplikasi yang selamat dan kritikal sebagai fokus utama mereka.
Dalam kes ini, adalah penting untuk mematuhi beberapa peraturan pengekodan yang ketat. Peraturan ini merangkumi banyak aspek pembangunan perisian, seperti cara perisian harus dikodkan, ciri bahasa yang harus digunakan, dsb.
Walaupun sukar untuk bersetuju dengan standard pengekodan yang baik, Makmal Penggerak Jet (JPL) NASA mematuhi peraturan pengekodan yang dipanggil "Kuasa Sepuluh: Peraturan untuk Membangunkan Kod Kritikal Selamat."
Memandangkan JPL telah lama menggunakan bahasa C, peraturan ini adalah untuk menulis dalam bahasa pengaturcaraan C. Tetapi peraturan ini boleh digunakan dengan mudah pada bahasa pengaturcaraan lain.
Dibangunkan oleh Gerard J. Holzmann, ketua saintis di JPL, peraturan pengekodan yang ketat ini tertumpu terutamanya pada keselamatan.
10 peraturan NASA untuk menulis kod kritikal misi:
1. Hadkan semua kod kepada struktur aliran kawalan yang sangat mudah - tiada pernyataan goto, struktur setjmp atau longjmp, tiada panggilan rekursif tidak langsung atau langsung.
2. Semua gelung mesti mempunyai had atas tetap. Ia mesti disahkan secara statik oleh alat pengesan bahawa gelung tidak dapat mencapai had atas lelaran pratetap. Sekiranya had atas ini tidak dapat dibuktikan secara statik, maka prinsip ini boleh dianggap dilanggar.
3 Jangan gunakan peruntukan memori dinamik selepas permulaan.
4 Jika anda merujuk kepada format standard satu pernyataan setiap baris dan satu pengisytiharan setiap baris, maka panjang fungsi tidak boleh lebih daripada satu helaian kertas. Biasanya ini bermakna tidak lebih daripada 60 baris kod setiap fungsi.
5 Ketumpatan penegasan dalam kod adalah serendah 2 penegasan setiap fungsi secara purata. Penegasan digunakan untuk mengesan situasi yang tidak mungkin berlaku dalam pelaksanaan sebenar. Penegasan mesti tiada kesan sampingan dan harus ditakrifkan sebagai ujian boolean. Apabila penegasan gagal, tindakan pemulihan eksplisit harus dilakukan, seperti mengembalikan keadaan ralat kepada pemanggil fungsi yang gagal penegasan. Untuk alat statik, sebarang penegasan yang boleh dibuktikan oleh alat statik untuk tidak pernah gagal atau tidak pernah menyala melanggar peraturan ini (contohnya, adalah mustahil untuk memenuhi peraturan ini dengan menambah pernyataan assert(true) yang tidak berguna).
6 Objek data mesti diisytiharkan dalam skop terkecil.
7 Nilai pulangan bagi fungsi bukan kosong mesti diperiksa setiap kali fungsi dipanggil, dan kesahihan parameternya mesti diperiksa dalam setiap fungsi.
8. Penggunaan prapemproses terhad untuk memasukkan fail pengepala dan definisi makro yang mudah. Penyambungan simbol, senarai hujah variadic (elips) dan panggilan makro rekursif tidak dibenarkan. Semua makro mesti boleh dikembangkan menjadi unit sintaks yang lengkap. Penggunaan arahan kompilasi bersyarat selalunya tidak jelas, tetapi tidak selalu boleh dielakkan. Ini bermakna walaupun dalam pembangunan perisian yang besar perlu ada sebab yang baik untuk lebih daripada satu atau dua arahan penyusunan bersyarat, di luar amalan standard mengelak termasuk fail pengepala beberapa kali. Setiap kali anda melakukan ini dalam kod anda, ia mesti dibenderakan oleh penyemak berasaskan alat, dan untuk alasan yang baik.
9. Penggunaan penunjuk harus dihadkan. Khususnya tidak perlu ada lebih daripada satu tahap penyahrujukan penunjuk. Operasi penyahrujukan penunjuk tidak boleh tersirat dalam definisi makro atau pengisytiharan jenis. Juga, penunjuk fungsi tidak dibenarkan.
10 Dari hari pertama pembangunan, kod mesti disusun dengan pengkompil menghidupkan pilihan amaran tahap tertinggi. Di bawah tetapan ini, kod mesti disusun dengan amaran sifar. Kod mesti disemak dengan alat analisis statik kod sumber sekurang-kurangnya sekali atau lebih setiap hari dan lulus dengan amaran sifar.
Mengenai peraturan ini, NASA berkata ini:
Peraturan ini seperti tali pinggang keledar di dalam kereta Anda mungkin berasa sedikit tidak selesa pada mulanya, tetapi selepas beberapa ketika ia akan menjadi kebiasaan dan anda tidak boleh bayangkan jika tidak menggunakannya.
Mengenai pengarang:
Adarsh Verma ialah pengasas bersama Fossbytes Beliau adalah seorang usahawan yang disegani yang sentiasa memberi perhatian kepada sumber terbuka, penemuan teknologi dan kesempurnaan. Anda boleh menghubunginya melalui e-mel — [email protected]
Atas ialah kandungan terperinci Sepuluh prinsip pengaturcaraan untuk pengaturcara NASA yang hebat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!