Bản mẫu chứng minh ý tưởng khả thi. Hệ thống chạy được chứng minh nó dùng được. Khoảng cách giữa hai thứ đó thường bị đánh giá thấp ba tới năm lần về công sức.
Xử lý mọi thứ có thể sai
Phần chiếm nhiều mã nhất trong hệ thống thật.
Bản mẫu giả định đường đi thuận lợi. Cảm biến trả dữ liệu hợp lệ, robot tới được vị trí, vật ở đúng chỗ.
Hệ thống thật phải xử lý. Cảm biến không phản hồi. Dữ liệu về nhưng vô lý. Robot báo lỗi. Vật không có ở đó. Vật ở đó nhưng khác dự kiến. Mạng chậm. Đĩa đầy.
Mỗi trường hợp cần một quyết định. Thử lại bao nhiêu lần. Chờ bao lâu. Khi nào thì bỏ qua và tiếp tục. Khi nào thì dừng và gọi người.
Nguyên tắc thiết kế. Không bao giờ để hệ thống ở trạng thái không xác định. Mọi nhánh lỗi phải dẫn tới một trạng thái an toàn đã biết.
Lỗi phải hiển thị được. Người vận hành cần biết chuyện gì xảy ra bằng ngôn ngữ họ hiểu, không phải mã lỗi hay dấu vết ngăn xếp.
Tỷ lệ thường thấy. Trong hệ thống chín, mã xử lý đường đi thuận lợi có thể chỉ chiếm hai mươi phần trăm. Phần còn lại là xử lý những gì có thể sai.
Ghi nhật ký và chẩn đoán
Đầu tư có tỷ lệ hoàn vốn cao nhất và hay bị hoãn.
Vì sao cần. Sự cố xảy ra khi bạn không có mặt. Không có nhật ký thì không biết chuyện gì đã xảy ra, và sẽ lặp lại.
Ghi gì. Mọi quyết định của hệ thống kèm dữ liệu vào. Trạng thái trước và sau mỗi thao tác. Mọi lỗi kèm ngữ cảnh đầy đủ.
Ghi cả dữ liệu cảm biến khi có sự cố. Ảnh, đám điểm, giá trị lực. Đây là thứ quý nhất để chẩn đoán và cũng là dữ liệu huấn luyện tốt.
Có mức độ chi tiết điều chỉnh được. Chi tiết cao khi gỡ lỗi, thấp khi chạy bình thường để không đầy đĩa.
Xoay vòng và giới hạn dung lượng. Nhật ký làm đầy đĩa là nguyên nhân dừng hệ thống thực tế phổ biến, và nó hoàn toàn tránh được.
Xem được từ xa. Phải chẩn đoán mà không cần tới tận nơi. Với hệ thống triển khai ở nhiều nơi thì đây là điều kiện bắt buộc.
Đồng bộ thời gian. Nhật ký từ nhiều thành phần với đồng hồ lệch nhau thì không ghép lại được để dựng lại chuỗi sự kiện.
Giao diện cho người vận hành
Phần kỹ sư ít quan tâm và người dùng quan tâm nhất.
Bản mẫu điều khiển bằng dòng lệnh. Chấp nhận được khi người xây là người dùng. Không dùng được với công nhân.
Cần tối thiểu. Nút khởi động và dừng rõ ràng. Hiển thị trạng thái hiện tại bằng chữ. Thông báo lỗi có kèm hướng dẫn xử lý. Cách khôi phục sau lỗi mà không cần chuyên gia.
Ngôn ngữ. Tiếng Việt, dùng từ ngữ của công việc chứ không phải từ ngữ kỹ thuật. Robot báo lỗi hiệu chỉnh không giúp gì; báo cần lau ống kính camera thì giúp được.
Nhìn thấy từ xa. Đèn báo trạng thái nhìn được từ đầu kia xưởng có giá trị thực tế rất cao.
Không có tuỳ chọn nguy hiểm. Nút nào bấm nhầm gây hại thì đừng đặt ở nơi dễ bấm.
Thử với người thật. Đưa cho người sẽ dùng, quan sát họ dùng, đừng giải thích. Chỗ họ lúng túng là chỗ cần sửa, và luôn có những chỗ như vậy mà người xây không đoán được.
Cài đặt, cấu hình và bảo trì
Phần quyết định hệ thống có nhân rộng được không.
Quy trình cài đặt lặp lại được. Bản mẫu chạy trên một máy đã cấu hình bằng tay qua nhiều tháng. Hệ thống thật phải cài được ở nơi mới trong một ngày.
Cấu hình tách khỏi mã. Mọi thứ khác nhau giữa các nơi triển khai phải nằm trong tệp cấu hình, không nằm rải rác trong mã.
Quy trình hiệu chỉnh có hướng dẫn. Người kỹ thuật tại chỗ phải làm được mà không cần gọi người xây.
Sao lưu và khôi phục. Máy tính hỏng thì bao lâu để dựng lại. Nếu câu trả lời là vài ngày thì chưa đủ.
Cập nhật từ xa có quay lui. Đẩy bản mới xuống nhiều nơi và rút lại được nếu có vấn đề.
Danh sách phụ tùng. Cái gì hay hỏng, có sẵn ở đâu, thay thế nào. Nên viết trước khi cần chứ không phải khi đã hỏng.
Tài liệu cho người kế nhiệm. Người xây hệ thống sẽ rời đi. Hệ thống không có tài liệu là hệ thống có hạn sử dụng bằng thời gian người đó ở lại.
Lập kế hoạch cho giai đoạn này
Lời khuyên về quản lý dự án.
Ước lượng gấp ba. Thời gian từ bản mẫu tới hệ thống chạy được thường gấp ba tới năm lần thời gian làm bản mẫu. Kế hoạch không tính khoản này sẽ trễ.
Đừng để một người làm cả hai giai đoạn. Kỹ năng nghiên cứu và kỹ năng kỹ thuật hệ thống khác nhau. Nhiều nhà nghiên cứu giỏi làm phần này không tốt và cũng không thích làm.
Bắt đầu phần kỹ thuật hệ thống sớm. Ghi nhật ký, xử lý lỗi và cấu hình nên có từ đầu. Thêm vào sau thường phải viết lại nhiều.
Triển khai thí điểm ở một nơi trước. Chạy vài tháng, sửa mọi thứ phát hiện được, rồi mới nhân rộng. Nhân rộng sớm là nhân rộng cả lỗi.
Tính chi phí duy trì vào kế hoạch. Hệ thống cần người chăm sóc liên tục. Không có người đó thì nó suy giảm.
Và biết khi nào nên dừng. Có bản mẫu không có nghĩa là nên làm thành sản phẩm. Nếu chi phí đưa vào vận hành vượt giá trị mang lại thì kết luận đó nên được đưa ra sớm, và đó là quyết định tốt chứ không phải thất bại.
Câu hỏi thường gặp
Phần nào chiếm nhiều mã nhất trong hệ thống thật?
Xử lý lỗi. Trong hệ thống chín, mã xử lý đường đi thuận lợi có thể chỉ chiếm hai mươi phần trăm, phần còn lại là xử lý những gì có thể sai.
Vì sao ghi nhật ký là đầu tư có hoàn vốn cao nhất?
Vì sự cố xảy ra khi bạn không có mặt. Không có nhật ký kèm dữ liệu cảm biến thì không biết chuyện gì đã xảy ra và nó sẽ lặp lại.
Giao diện cho người vận hành cần gì tối thiểu?
Nút khởi động và dừng rõ ràng, hiển thị trạng thái bằng chữ, thông báo lỗi kèm hướng dẫn xử lý bằng tiếng Việt dùng từ ngữ công việc, và cách khôi phục không cần chuyên gia.
Nên ước lượng thời gian giai đoạn này thế nào?
Gấp ba tới năm lần thời gian làm bản mẫu. Và nên triển khai thí điểm một nơi vài tháng trước khi nhân rộng, vì nhân rộng sớm là nhân rộng cả lỗi.
Đọc thêm trong Benchmark & tập dữ liệu và Điều khiển & lý thuyết.