Therac-25!
Pengembang pada proyek Therac-25 cukup yakin tentang waktu antara UI dan masalah terkait antarmuka dalam mesin XRAY terapeutik.
Seharusnya tidak.
Anda dapat mempelajari lebih lanjut tentang bencana perangkat lunak hidup dan mati yang terkenal ini di:
http://www.youtube.com/watch?v=izGSOsAGIVQ
atau
http://en.wikipedia.org/wiki/Therac-25
Aplikasi Anda mungkin jauh kurang sensitif terhadap kegagalan daripada perangkat medis. Metode yang bermanfaat adalah menilai paparan risiko sebagai produk dari kemungkinan terjadinya dan biaya kejadian selama masa pakai produk untuk semua unit yang dapat diproduksi.
Jika Anda memilih untuk membuat kode Anda agar bertahan lama (dan sepertinya Anda memilikinya), Anda harus mempertimbangkan hukum Moore yang dapat dengan mudah memotong beberapa nol setiap beberapa tahun karena komputer di dalam atau di luar sistem Anda menjadi lebih cepat. Jika Anda mengirim ribuan salinan, potong lebih banyak nol. Jika pengguna melakukan operasi ini setiap hari (atau bulanan) selama bertahun-tahun, ambil beberapa lagi. Jika digunakan di mana Google fiber tersedia, lalu apa? Jika sampah UI mengumpulkan operasi pertengahan GUI, apakah itu memengaruhi balapan? Apakah Anda menggunakan Open Source atau Windows library di belakang GUI Anda? Bisakah pembaruan di sana memengaruhi waktu?
Semafor, kunci, mutex, sinkronisasi penghalang adalah beberapa cara untuk menyinkronkan aktivitas di antara utas. Berpotensi jika Anda tidak menggunakannya, orang lain yang mengelola program Anda mungkin dan kemudian dengan cepat asumsi tentang hubungan antara utas dapat bergeser dan perhitungan tentang kondisi balapan mungkin tidak valid.
Saya sarankan Anda menyinkronkan secara eksplisit karena meskipun Anda mungkin tidak pernah melihatnya membuat masalah, pelanggan mungkin. Selain itu, bahkan jika kondisi ras Anda tidak pernah terjadi, bagaimana jika Anda atau organisasi Anda dipanggil ke pengadilan untuk mempertahankan kode Anda (seperti yang Toyota lakukan dengan Prius beberapa tahun yang lalu). Semakin teliti metodologi Anda, semakin baik tarif Anda. Mungkin lebih baik untuk mengatakan "kami menjaga terhadap kasus yang tidak mungkin seperti ini ..." daripada mengatakan, "kami tahu kode kami akan gagal, tetapi kami menuliskan persamaan ini untuk menunjukkan bahwa hal itu tidak akan terjadi dalam masa hidup kami. Mungkin. "
Sepertinya perhitungan probabilitas berasal dari orang lain. Apakah mereka tahu kode Anda dan apakah Anda cukup mengenalnya untuk percaya bahwa tidak ada kesalahan yang terjadi? Jika saya menghitung keandalan 99,99997% untuk sesuatu, saya mungkin juga berpikir kembali ke kelas statistik perguruan tinggi saya dan ingat bahwa saya tidak selalu mendapatkan 100%, dan mundur beberapa persen dari perkiraan keandalan pribadi saya sendiri.