Để có câu trả lời hoàn chỉnh cho câu hỏi này, tôi sẽ loại bỏ suy nghĩ về "độ tin cậy của mã" và thay vào đó hãy nghĩ về "độ tin cậy của thiết kế", bởi vì mã chỉ là biểu thức cuối cùng của thiết kế.
Vì vậy, bắt đầu với các yêu cầu và viết và kiểm tra những yêu cầu. Nếu bạn không có tài liệu yêu cầu, hãy chỉ vào một dòng mã ngẫu nhiên và tự hỏi "tại sao dòng đó lại cần thiết?" Nhu cầu về bất kỳ dòng mã nào cuối cùng cũng có thể truy nguyên theo yêu cầu, ngay cả khi nó đơn giản / rõ ràng như "nguồn cung cấp sẽ xuất ra 5VDC nếu đầu vào nằm trong khoảng 12-36VDC." Một cách nghĩ về điều này là nếu dòng mã đó không thể được truy tìm theo yêu cầu, thì làm sao bạn biết đó là mã đúng, hay nó hoàn toàn cần thiết?
Tiếp theo, xác minh thiết kế của bạn. Sẽ ổn nếu nó hoàn toàn nằm trong mã (ví dụ: trong các bình luận), nhưng điều đó làm cho khó biết liệu mã đó có đang thực sự có ý nghĩa gì không. Ví dụ: mã có thể có dòng ghi output = 3 * setpoint / (4 - (current * 5));
là current == 4/5
Đầu vào hợp lệ có thể gây ra sự cố? Nên làm gì trong trường hợp này để ngăn chia cho 0? Bạn có tránh các hoạt động hoàn toàn hoặc làm giảm sản lượng thay thế? Có một lưu ý chung trong tài liệu thiết kế của bạn về cách xử lý các trường hợp cạnh như vậy giúp việc xác minh thiết kế ở mức cao hơn dễ dàng hơn nhiều. Vì vậy, bây giờ kiểm tra mã dễ dàng hơn vì đó là vấn đề kiểm tra xem mã có thực hiện đúng thiết kế đó không.
Cùng với đó, kiểm tra mã phải kiểm tra các lỗi phổ biến mà IDE của bạn không mắc phải (bạn đang sử dụng IDE phải không?), Chẳng hạn như '=' khi bạn có nghĩa là '==', thiếu dấu ngoặc làm thay đổi ý nghĩa của 'nếu 'báo cáo, dấu chấm phẩy nơi họ không nên, v.v.
Khi tôi viết bài này, tôi nhận thấy rằng thật khó để tóm tắt nhiều năm đào tạo / kinh nghiệm về chất lượng phần mềm trong một bài viết. Tôi viết mã cho các thiết bị y tế và ở trên là một bản tóm tắt cực kỳ đơn giản về cách chúng ta tiếp cận nó.