MIT phát triển 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

ND Minh Đức
2/7/2015 15:38Phản hồi: 55
MIT phát triển 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
Tinhtr-MIT-CodeRepair.jpg

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


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)


Tham khảo MIT
55 bình luận
Chia sẻ

Xu hướng

Ruiz
CAO CẤP
9 năm
Rồi sẽ tới 1 ngày AI sẽ mạnh lên như fim, giờ nó tự sữa mã luôn thì bá đạo rồi, AI của Google mà tự học được cái này nữa là ngon
Xong, con người càng lúc càng quá rảnh rỗi không có việc để làm. Nghiên cứu mấy cái này thì tương lai các lập trình viên càng trở nên mù mịt. Họ sẽ không có ý thức là kiểm soát lỗi của chính mình mà cứ chăm chăm sử dụng các công cụ trợ giúp như thế này. Hơn nữa, các AI cũng có thể lợi dụng những việc này và có thể trở nên mất kiểm soát.
Rõ vớ vẩn với các nhà khoa học kiểu này o_O
Rác in, rác out.. Lổi chương trình khó kiểm soát nhất chính là hiệu ứng lề. Và cái thứ này lại làm tăng hiệu ứng lề... Thật ngớ ngẩn!!!
@vietthuongtinhte Mình không hiểu nhiều lắm, bạn có thể giải thích rõ hơn chút đc ko?
Trời ơi dân lập trình sắp bị tuyệt chủng rồi
doithatbuon
ĐẠI BÀNG
9 năm
@Daddy Help Me Chả khác nào tôi làm ra 1 cái máy làm bánh từ bột mì, hệ thống kia chỉ đẩy nào là bột mì, bột nếp, đất, cát ... vào thử xem có ra bánh hay không. rồi nó tìm cách tự khắc phục 1 vài chỗ nhỏ thôi. Để nó nghĩ ra ý tưởng làm cái máy đấy, làm thế nào, thiết kế ra làm sao ... vẫn còn xa lắm. vì cơ bản những người làm ra cái hệ thống kia chắc gì đã biết làm cái máy làm bánh của tôi mà họ có thể chế ra robot sản xuất máy làm bánh.
Những code lớn và phức tạp thì cũng chả auto thế được đâu.
@dualshock Họ sử dụng lượng dữ liệu cực lớn để xử lý đấy.
Con người cần thời gian để học tập cách làm, còn máy móc thì cần năng lượng. Công nghệ phát triển thì liệu con người( toàn bộ) có sống tốt (như nhau) không? :oops::eek:
@Toki Oha Năng lượng có bằng ông trời thì vẫn có những thứ mà máy móc không thể hiểu và tư duy được như con người !
@dualshock Vâng, như khoa học tình dục chẳng hạn 😁
MavicVN
ĐẠI BÀNG
9 năm
@dualshock Cũng chẳng ai lại auto cả 1 chương trình đâu bạn. Người ta làm từng step, section, function, module được mà.
Không ai hiểu rằng khi LTV rảnh hơn, nghĩa là họ có thời gian tìm tòi, nghiên cứu để phát triển nhanh hơn, về cả mặt sản phẩm và công nghệ. Yêu cầu cho họ lúc đó sẽ cao hơn, và sẽ lại phát sinh thêm các nghề liên quan tới chính việc cấu hình cái CodePhage đó chẳng hạn 😁
Cao siêu quá. Mấy anh lập trình viên Mỹ quả là pro
anhhung7461
ĐẠI BÀNG
9 năm
trí thông minh nhân tạo, tự update tự sửa lỗi hệ thống, tương lai không xa con người và máy móc chiến đấu với nhau liệu có thành sự thật
noname04
ĐẠI BÀNG
9 năm
Việc debug tìm lỗi và sửa lỗi là một trong những công đoạn giúp developer rèn luyện kỹ năng chuyên môn cực tốt. Nếu như thế này thì chắc mất hết kỹ năng quá. Haizz. Không phải cái gì tự động cũng tốt đâu.
secret90
ĐẠI BÀNG
9 năm
tương lai sẽ thành the matrix :eek::eek::eek::eek: tự sửa lỗi bằng cách học từ phần mềm khác và có thể học từ... con người 😁:D
peterpan80
TÍCH CỰC
9 năm
một khi sì-kai-nét tự sửa lỗi, tự hủy các giới hạn con người đặt ra thì terminator ra đời.... "ngày phép xét" sẽ đến...
sorry các bác.. e hơi nhiễm phim...😁:D:D
không đụng tới mã nguồn? từ nhiều ngôn ngữ lập trình khác nhau? vô lí thật.
casperpas
ĐẠI BÀNG
9 năm
Nó có tự tìm ra lỗi của chính nó đc k nhở? 😁
baodng
TÍCH CỰC
9 năm
Khuyên con cháu ko theo IT nữa vì sắp hết đất dụng võ rồi, chắc sau này robo nó tự viết app cho nó.
tự sửa lỗi luôn thì quá bá đạo rồi. Nhưng nếu học từ phần mềm khác vậy các hacker lợi dụng điều này cài mã độc vào thì sao???
Giống Sky Net rồi đó...
Vẫn ko có gì đảm bảo rằng hệ thống này cũng có lỗi (số lỗi có thể ít hơn so với dev), do nó được làm ra bởi dev. Tương lai có thể dev sẽ làm những việc như đưa ra ý tưởng & cách thức vận hành hệ thống, sau đó mấy con AI tự xử. Còn hiện tại thì:
😁
webzone.vn
TÍCH CỰC
9 năm
Chỉ cần cái autocomplete của các IDE hoạt tốt (thông minh tí) là đã vui lắm rồi. Cái này chắc là mình xuống lỗ chắc cũng chưa ứng dụng vào đc quá. Hy vọng là tới đời con cháu mình ^^
Kiểu này thì viết javascript đở vất vã đây.

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019