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
Nhan sắc xinh đẹp của dàn thí sinh thi bikini ở chung khảo Hoa hậu VN miền Bắc

Một số thí sinh được chú ý ngay từ đầu là "cô gái tặng hoa cho Tổng thống Donald Trump" Phạm Ngọc Hà My,...

Chung khảo Hoa hậu Việt...

Justin Bieber phản ứng cực 'đàn ông' khi được hỏi về chuyện mang thai của vợ sắp cưới

Mới đây, cánh săn tin đã bắt gặp Justin Bieber trên phố và có những câu hỏi liên quan đến lễ cưới sắp tới...

Justin Bieber Hailey Baldwin

Quán nước mía ngoại ô TP.HCM có doanh thu hơn nửa tỷ đồng mỗi tháng

Mỗi ngày, quán nước mía ở ngoại thành TP.HCM bán hơn 1.000 ly, cuối tuần và dịp lễ, số lượng tăng gấp 2-3...

Quán nước mía ngoại ô TP.HCM...

3 câu hỏi cần làm rõ sau rà soát điểm thi tại Lạng Sơn

Ngày 21/7, tổ công tác của Bộ GD&ĐT công bố kết quả rà soát điểm thi tại Lạng Sơn. Tuy nhiên, nghi vấn...

câu hỏi tại điểm thi lạng...

Xôn xao câu chuyện 9X Hải Dương có bằng trung cấp Y, buôn rau củ tiết kiệm 20-25 triệu/tháng

Ai nói bán rau là nghèo thì hãy đọc câu chuyện sau. Tuy nhiên, đúng là đôi khi tiền bạc không thể mua được...

Buôn rau củ cộng đồng mạng

Tuấn Hưng tức giận phản ứng mạnh trước tin đồn ngoại tình

Xuất hiện tin đồn ngoại tình từ trên trời rơi xuống khiến nam ca sĩ vô cùng tức giận gay gắt đáp trả dư...

Tuấn Hưng bà xã tuấn hưng

Lạc bước đến 'vùng đất sử thi' Ai Cập

Còn gì tuyệt vời hơn khi được dạo bước ở Ai Cập, một trong những đất nước có nền văn minh phát triển sớm...

khám phá Ai Cập khám phá nước Ai Cập

Sau 'Bống bống bang bang', có ai ngờ rằng đây là MV thứ 2 của Việt Nam cán mốc 300 triệu view

Đạt mốc 300 triệu view, MV này đã bỏ khá xa bản hit đứng ở vị trí thứ 3 "Phía sau một cô gái" của Soobin...

MV 300 triệu view Bống Bống Bang Bang

Đã tìm ra đối tượng trả 900.000 đồng tiền âm phủ cho 2 du khách nước ngoài, tài xế xích lô được minh oan

Theo đó, tài xế taxi lợi dụng du khách không biết tiếng cũng như mệnh giá tiền đã lừa đưa 3 đồng tiền âm...

trả tiền lẻ cho khách trả tiền âm phủ