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.

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

Đâ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)

Bấm để mở rộng...

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.

Video đang hot
Thanh niên nhọ của năm: Muốn làm anh hùng bàn phím trên mạng, ai ngờ gặp phải quán quân Olympia!

[Kul.vn] Đang mải "nổ" về Olympia, thanh niên "phản biện không đối thủ" bị chính thí sinh chung kết Olympia...

Án phạt nữ sinh Việt mang 360 trứng vịt lộn và 10kg nem chua vào Nhật Bản sẽ đối mặt

[Kul.vn] Theo như quy định mới nhất của Đạo luật về kiểm soát bệnh truyền nhiễm trong gia súc tại Nhật...

Xăm dòng chữ mang tên bài hát ở chân, Đồng Lan chia sẻ về khoảnh khắc định mệnh của cuộc đời

[Kul.vn] Sau khi ghi dấu ấn tại chương trình Giọng Hát Việt 2012 và hàng loạt những giải thưởng, dự án...

Cận ngày diễn ra Sky Tour, Sơn Tùng M-TP chu đáo quay clip dặn dò fan đầy tình cảm

[Kul.vn] Chỉ còn chưa đầy 1 tuần nữa, "Sky Tour" sẽ khởi động tại TP.HCM vào ngày 28/7. Trước thời điểm...

Sam, Phạm Quỳnh Anh khóc nức nở trước hoàn cảnh của nữ sinh 17 tuổi một mình nuôi 2 em nhỏ ở Hát Mãi Ước Mơ

[Kul.vn] Lần đầu tiên tham gia chương trình Hát Mãi Ước Mơ, ca sĩ Phạm Quỳnh Anh đã không giấu nổi sự xúc...

Chiếc 'food tour' 1 vòng Hà Nội của chàng trai khiến CĐM ghen tị đỏ mắt với cô gái nào được hưởng phúc

[Kul.vn] Câu chuyện về một "chiếc food tour" ngày cuối tuần của chàng trai dẫn bạn gái đi ăn thôi lại nhận...

Quen nhau chỉ vì 1 cái nắm tay trên máy bay, CĐM hoang mang 'tình yêu lúc nào sẽ ập đến?'

[Kul.vn] Ngôn tình thật ra vẫn tồn tại ở khắp mọi nơi và nếu bạn chưa gặp thì chỉ là do bạn không may mắn...

Trường trung học Đài Loan lần đầu tiên cho phép nam sinh được thoải mái mặc váy đến trường nếu muốn

[Kul.vn] Ý tưởng này mang ý nghĩa thúc đẩy bình đẳng giới giữa nam và nữ ở Đài Loan, được chính phủ Đài...

Clip: Khoảnh khắc xe tải tông đổ dải phân cách rồi lật nghiêng đè 5 người tử vong ở Hải Dương

[Kul.vn] Đoạn camera hành trình ghi lại hình ảnh vụ tai nạn kinh hoàng ở Hải Dương sáng ngày 23/7 được...