MIT phát triển hệ thống tự sửa lỗi cho phần mềm

CodePhage là hệ thống được phát triển tại viện công nghệ Massachusett (MIT) với khả năng tự động sửa lỗi trên các phần mềm bằng cách vay mượn dữ liệu từ những chương trình khác từ nhiều ngôn ngữ lập trình khác nhau mà không cần truy cập tới mã nguồn của chúng, sau đó tự dịch về ngôn ngữ của phần mềm nhận và chèn vào để sửa lỗi.

Hệ thống tự sửa lỗi cho phần mềm bằng cách "học" từ các phần mềm khác

Đây là một điều tuyệt vời đối với các lập trình viên, giúp họ tiết kiệm được hàng nghìn giờ lập trình, sửa lỗi, đồng thời tạo ra những phần mềm ổn định hơn.

Lỗi luôn là một phần không thể thiếu đối với cuộc sống của các lập trình viên. Việc khắc phục lỗi có thể được triển khai tùy vào mức độ và một số lỗi chỉ cần vài dòng code là có thể sửa được, nhưng việc xác định chính xác lỗi nằm ở dòng lệnh nào lại là một quá trình vô cùng mất thời gian và buồn chán, đặc biệt là đối với những dự án lớn. Giờ đây, hệ thống phần mềm do MIT phát triển có thể giải quyết được điều này và nó còn làm được nhiều hơn nữa.

Với tên gọi CodePhage, hệ thống có thể tự sửa lỗi đang tồn tại trên phần bằng cách kiểm tra các biến đầu vào, sau đó nhanh chóng tự mở rộng ra để sửa thêm nhiều dạng lỗi khác. Đáng chú ý hơn, theo nhà nghiên cứu Stelios Sidiroglou-Douskos tại MIT thì phần mềm còn có khả năng chủ động dịch và ghép mã (gọi là "horizontal code transplant", một quá trình tương tự trong di truyền học) mà không cần phải truy cập vào mã nguồn và qua các ngôn ngữ lập trình khác nhau. Thay vào đó, nó sẽ "học" cách sửa lỗi bằng cách trực tiếp phân tích các tập tin.

Hệ thống hoạt động như thế nào?

Thí dụ như bạn đang viết một chương trình máy tính đơn giản, yêu cầu người dùng nhập vào 2 con số và kết quả đầu ra là thương giữa số thứ 1 và thứ 2. Giả sử trong đoạn code, bạn quên kiểm tra lại rằng số thứ 2 phải khác 0 (phép chia cho 0 là vô nghĩa). Khi đó, CodePhage sẽ bắt đầu với ứng dụng (có lỗi) và 2 đầu vào, 1 cái không có lỗi (safe input) và 1 cái có lỗi gọi là (unsafe input). Bằng cách sử dụng cơ sở dữ liệu rất lớn nhằm tìm cách đọc và xử lý chính xác cả 2 input, hệ thống sẽ tìm một "kho dữ liệu lớn" (vast repository) dành cho một hàm để phép chia được thực hiện "an toàn".

Sidiroglou-Douskos cho biết: "Chúng tôi có hàng tấn mã nguồn trên những cơ sở dữ liệu mã nguồn mở khổng lồ, hàng triệu project và rất nhiều project thực hiện những chức năng tương tự nhau. Ngay cả khi không có chức năng lõi của chương trình, chúng cũng có các chi tiết phụ chia sẻ các chức năng của project lớn."

Hệ thống sẽ phân biệt giữa chương trình "cho" (phần mềm để vay mượn cách sửa lỗi) và phần mềm nhận (phần mềm có lỗi mà hệ thống muốn sửa chữa). Bước đầu tiên là cung cấp dữ liệu đầu vào an toàn vào trong đoạn mã "cho" và tự động theo dõi những ràng buộc đang được áp lên các biến đầu vào. Sau đó, phần mềm sẽ thực hiện điều tương tự với input thứ 2 vốn "không an toàn" và so sánh 2 bộ điều kiện ràng buộc. Điểm phân kỳ được xác định là những điều kiện phù hợp với input an toàn nhưng không xuất hiện trên biến không an toàn, và khi đó, hệ thống sẽ hiểu là có thể đoạn mã nhận đã thiếu chức năng kiểm tra bảo mật ở chức năng này.

Trở lại thí dụ nói trên, input an toàn là những phép chia có mẫu là số khác 0, còn input không an toàn là phép chia có mẫu là 0. Hệ thống của MIT sẽ tự phát hiện ra điều kiện rằng "một phép chia thì mẫu số phải khác 0" - điều này phù hợp với điều kiện của input an toàn, nhưng không phù hợp với input không an toàn, do đó cần phải có một bước kiểm tra cụ thể điều kiện này trong đoạn mã nhận, bằng không có thể có lỗi xảy ra.

Khi nhận thấy được điều đó, CodePhage sẽ lấy tất cả sự khác biệt giữa đoạn mã kiểm tra input trong phần mềm cho và dịch chúng sang ngôn ngữ lập trình của phần mềm nhận. Sau đó, hệ thống tiếp tục thử chèn đoạn mã vừa dịch xong vào trong bộ code của phần mềm nhận cho đến khi input không an toàn được xử lý một cách chính xác (và phần mềm vẫn hoạt động như ý khi kiểm tra lại bằng bộ test suite)

Giáo sư Martin Rinard, người tham gia nhóm phát triển cho biết: "Tầm nhìn dài hạn của dự án là bạn không bao giờ cần phải viết những đoạn code ngắn được viết bởi người khác trước đó. Hệ thống sẽ tìm thấy đoạn code cần thiết và tự động chèn vào cùng với những đoạn khác mà bạn cần để chương trình vận hành như ý." Ông cho rằng hệ thống này có thể giúp các lập trình viên giảm thời gian, công sức cho việc kiểm tra dữ liệu đầu vào. Thay vào đó, họ sẽ sử dụng hệ thống này để tự động chuyển các công cụ check input khác mạnh mẽ hơn từ cơ sở dữ liệu cực lớn, bao gồm cả những ứng dụng độc quyền có mã nguồn đóng.

Theo nhóm nghiên cứu, trong các phần mềm thương mại hiện đại, phần code kiểm tra an toàn chiếm tới 80% . Do đó, tác động của hệ thống tự khắc phục lỗi về mặt thời gian và công sức là khá đáng kể. Hơn nữa, hiện tại hệ thống chỉ mối giới hạn trong việc phân tích các biến kiểm tra, nhưng họ cho biết rằng kỹ thuật tương tự cũng có thể được sử dụng để theo dõi, trích xuất và chèn bất kỳ đoạn code có chức năng khác, miễn là hệ thống có thể xác định được chính xác các giá trị gán vào biến trong phần mềm cho.

Bên cạnh đó, hệ thống của MIT còn có thể sử dụng chuyển đổi kiểm tra giữa các phiên bản khác nhau của cùng một ứng dụng, hỗ trợ công tác phát hành cách bản vá và update ứng dụng khi lỗi phát sinh. Khi thử nghiệm trên 7 chương trình mã nguồn mở, nhóm nghiên cứu nhận thấy CodePhage có thể vá những lỗ hổng vào bất cứ lúc nào và chỉ mất 10 phút để sửa 1 lỗi. Trong những phiên bản trong tương lai, nhóm hy vọng thời gian này sẽ được giảm xuống càng nhanh càng tốt. Nếu quan tâm về hệ thống này, các bạn có thể đọc báo cáo đầy đủ của nó tại đường dẫn miễn phí sau đây (link).

Loading...
TIN CŨ HƠN
NTT Resonant - công cụ search độc đáo của Nhật Bản

NTT Resonant - công cụ search độc đáo của Nhật Bản

Tập đoàn Bưu chính viễn thông Nhật Bản NTT vừa tiến hành một cuộc kiểm tra công cụ tìm kiếm thông tin trên Internet. Công cụ tìm kiếm NTT Resonant mang nét đặc thù mới, các kết quả tìm kiếm thông tin chỉ hiển thị trên một trang d

Đăng ngày: 01/02/2025
Treo ảnh của bạn lên Desktop

Treo ảnh của bạn lên Desktop

Sẽ có lúc bạn cảm thấy chán giao diện màn hình lúc nào cũng chỉ có một hình background. Với phần mềm XDeskPhoto thì điều đó “không có gì là khó tưởng tượng“.

Đăng ngày: 01/02/2025
Những điều cần biết về pin lithium-ion và cách tránh chai pin

Những điều cần biết về pin lithium-ion và cách tránh chai pin

Đây là những phương pháp chống chai pin có cơ sở khoa học dựa trên đặc tính của pin lithium-ion.

Đăng ngày: 25/01/2025
Cách đơn giản để giữ bí mật các file cá nhân

Cách đơn giản để giữ bí mật các file cá nhân

Chỉ có một cách để giữ cho các file một cách bí mật đó là mã hóa chúng. Encrypting File System (EFS) trong hầu hết các thế hệ của Windows Vista, XP, 2000 mã hóa nội dung các file và thư mục, làm cho chúng trở lên khó khăn đối với những ng

Đăng ngày: 26/12/2024
20 trang web kỳ quặc trên thế giới

20 trang web kỳ quặc trên thế giới

Bạn sẽ không bao giờ biết tới những trang web kỳ quặc này cho đến khi..... bạn thực sự cần chúng.

Đăng ngày: 14/12/2024
Các cách đơn giản để không bao giờ nhiễm virus

Các cách đơn giản để không bao giờ nhiễm virus

Không cần sử dụng phần mềm diệt virus vẫn có thể tạo ra được chế độ phòng thủ hoàn hảo cho máy tính, để không bao giờ bị lây nhiễm các mầm mống độc hại đó.

Đăng ngày: 28/11/2024
Thành phố Atlantis biến mất trên Google Earth

Thành phố Atlantis biến mất trên Google Earth

Dấu vết thành phố này trên Google Earth được phát hiện năm 2009 khi người sử dụng internet phát hiện ra một mạng lưới dưới đáy biển trông rất giống một thành phố trong truyền thuyết. Google nhanh chóng giải thích rằng dấu vết đó là do kho dữ liệu bị chồng lên nhau, và thành phố Atlantis chưa từng được tìm thấy. Tuy nhiên, bản đồ đó vẫn tồn tại tới ngày nay.

Đăng ngày: 05/11/2024
Tiêu điểm
Khoa Học News