Lỗi phần mềm là mối lo ngại của các lập trình viên trong gần 75 năm qua, kể từ ngày lập trình viên Grace Muray Hopper báo cáo nguyên nhân gây ra lỗi trong một máy tính Harvard Mark II đời đầu. Cụ thể, nguyên nhân được phát hiện là do một con sâu thật bị kẹt giữa các tiếp điểm, gây rối loạn cho các mạch điện của máy tính. Từ đó, thuật ngữ “bug” (sâu bọ) đã ra đời để chỉ những khiếm khuyết trong một thành phần hoặc hệ thống khiến thành phần hoặc hệ thống này không thực hiện đúng chức năng yêu cầu của nó và có thể gây ra hậu quả nghiêm trọng.
Trong thập niên 1980, ít nhất năm bệnh nhân đã chết sau khi thiết bị xạ trị Therac-25 bị trục trặc do lỗi của một lập trình viên thiếu kinh nghiệm. Năm 1962, trung tâm điều khiển nhiệm vụ của Cơ quan Hàng không và Vũ trụ Mỹ (NASA) đã phải phá hủy tàu thăm dò không gian Mariner I vì nó chuyển hướng khỏi hành trình dự định trên Đại Tây Dương, nguyên nhân là do mã viết tay được lập trình không chính xác. Năm 1982, một lỗi phần mềm được cho là đã được cấy vào đường ống dẫn khí xuyên Siberia của Liên Xô bởi Cơ quan Tình báo Trung ương Mỹ (CIA) đã gây ra một trong những vụ nổ phi hạt nhân lớn nhất trong lịch sử.
Theo công ty quản lý dữ liệu Coralogix, trung bình các lập trình tạo ra 70 lỗi trên mỗi 1.000 dòng mã, với mỗi giải pháp cho một lỗi đòi hỏi lượng thời gian nhiều hơn gấp 30 lần thời gian ban đầu dùng để viết mã. Coralogix ước tính Mỹ chi khoảng 113 tỉ USD một năm để xác định và khắc phục lỗi phần mềm. Vì vậy, thông báo gần đây của Microsoft về việc công ty đã tạo thành công một mô hình học máy có thể xác định các lỗi phần mềm với độ chính xác cao đến 97% trong hầu hết thời gian áp dụng là một tin tức đáng hoan nghênh.
“Chúng tôi phát hiện ra rằng bằng cách ghép đôi các mô hình học máy với các chuyên gia bảo mật, chúng tôi có thể cải thiện đáng kể việc xác định và phân loại các lỗi”, Scott Christiansen, người quản lý chương trình bảo mật cao cấp của Microsoft, cho biết trong một báo cáo được đăng trực tuyến hồi đầu tháng này. Mô hình này còn có tỷ lệ thành công cao hơn nữa, lên đến 99%, trong việc phân biệt giữa các lỗi bảo mật và không bảo mật.
Microsoft đã dùng hai kỹ thuật thống kê để thiết kế hệ thống phát hiện lỗi. Một là thuật toán tần số tài liệu nghịch đảo tần số (TF-IDF) để kiểm tra các bộ tài liệu lớn cho các từ khóa và tính toán mức độ liên quan của chúng. Hai là một mô hình hồi quy logic để xác định xác suất tồn tại của một sự kiện cụ thể. Ban đầu chương tình được áp dụng để phân loại các lỗi bảo mật và không bảo mật, sau đó được cải tiến để phân loại khả năng đe dọa ở các mức độ “nghiêm trọng”, “quan trọng” hoặc “tác động thấp”.
Theo ông Christiansen, mục tiêu của Microsoft là thiết kế một hệ thống phát hiện lỗi “với độ chính xác gần nhất có thể so với khả năng của chuyên gia phần mềm”. Đột phá quan trọng của dự án này là khả năng “báo cáo lỗi có thể được thực hiện ngay cả khi chỉ có tiêu đề”. Hệ thống này sẽ được Microsoft cung cấp trên kho lưu trữ mã nguồn GitHub.
Phương Anh