Một chương trình bot có thể tự động sửa lỗi phần mềm với chất lượng ngang với con người

1507

Các bản vá lỗi phần mềm mà chương trình bot đó tạo ra đã được các nhà kiểm duyệt trên GitHub chấp nhận đưa vào code base, khi họ tưởng rằng nó do một nhà phát triển con người tạo nên.

Các chương trình máy tính hiện đại ngày nay đã trở nên phức tạp đến mức việc nó phát sinh lỗi trong quá trình phát triển là điều gần như chắc chắn. Đó là lý do vì sao tìm kiếm và viết các bản vá để sửa lỗi đó đang trở thành một phần không thể thiếu trong phát triển phần mềm. Trên thực tế, có những công ty như Travis còn cung cấp dịch vụ đó cho các nhà phát triển.

Nhưng tìm kiếm và đưa ra các bản vá lỗi là một công đoạn tiêu tốn thời gian và cần đến các nguồn lực không hề nhỏ. Vì vậy, hàng loạt nhà nghiên cứu đã phát triển các bot có thể tự động hóa quá trình này, nhưng chúng thường quá chậm hoặc các đoạn code mà chúng tạo ra quá nghèo nàn để có thể triển khai trong thực tế. Do đó một bot chất lượng cao, tốc độ nhanh, có thể tìm các đoạn code lỗi và sửa chúng vẫn là một giấc mơ đối với các nhà phát triển.

Nhưng đến nay, giấc mơ này đã sắp thành sự thật, nhờ vào công trình của Martin Monperrus và các đồng nghiệp đến từ Viện công nghệ KTH Royal Institute of Technology ở Stockholm, Thụy Điển, mới công bố vào tháng 11 năm 2018. Các nhà nghiên cứu đã xây dựng được một chương trình bot có thể cạnh tranh với các nhà phát triển con người trong việc tìm lỗi và viết các bản vá chất lượng cao.

Chương trình bot này có tên Repairnator và đã được thử nghiệm thành công khi nó thi với các nhà phát triển con người trong việc tìm và sửa lỗi. “Đây là một cột mốc cho khả năng cạnh tranh với con người trong nghiên cứu kỹ thuật phần mềm để tự động sửa lỗi chương trình.”

Các nhà khoa học máy tính từ lâu đã biết rằng việc tự động hóa quá trình viết bản vá là hoàn toàn khả thi. Nhưng việc các chương trình bot có thể đạt được tốc độ và chất lượng như con người hay không vẫn còn chưa rõ ràng.

Vì vậy, Monperrus và các đồng nghiệp đã kiểm tra điều này bằng cách để Repairnator đóng giả như một nhà phát triển và cạnh tranh với con người trong việc phát triển các bản vá lỗi trên GitHub. Monperrus cho biết: “Ý tưởng chủ chốt của Repairnator là tự động tạo ra các bản vá để sửa các lỗi phần mềm, sau đó biểu diễn chúng cho các nhà phát triển con người, để xem liệu các nhà phát triển con người đó có chấp nhận chúng như các đóng góp vào các code base hay không.”

Nhóm nghiên cứu tạo ra một tài khoản trên GitHub có tên Luc Esape, với cả hình ảnh profile và trông như một nhà phát triển trẻ tuổi, đang khao khát đóng góp cho GitHub, nhưng thực ra đó chính là Repairnator. Lý do các nhà nghiên cứu làm vậy là vì các nhà kiểm duyệt con người có xu hướng phân biệt công sức của người và máy khác nhau.

  Mobility và Digital Transformation làn sóng chuyển mình cho doanh nghiệp năm 2019
  Khi lập trình viên chơi facebook - Biến Facebook messenger thành bot tra cứu tử vi

Có khả năng cạnh tranh với con người trong việc tìm và sửa lỗi

Để chương trình bot này có thể cạnh tranh với con người, nó phải tạo ra được bản vá chất lượng cao trước khi con người làm vậy. Nghĩa là các bản vá phải đúng và có thể đọc được, khi so sánh với một bản vá do con người viết, để có thể được chấp nhận đưa vào code base. Và khung thời gian để các bot hoàn thành những bản vá như vậy được tính theo phút, không phải ngày.

Sơ đồ hoạt động của Repairnator khi chạy trên dịch vụ tích hợp của Travis.

Nhóm nghiên cứu thực hiện hai lần thử nghiệm với Repairnator. Lần đầu từ tháng 2 đến tháng 12 năm 2017, nhóm nghiên cứu đã chạy Repairnator trên một danh sách khoảng 14.188 dự án của GitHub để tìm kiếm lỗi. “Chúng tôi nhận thấy nguyên mẫu phần mềm của mình có thể sửa được khoảng 30 lỗi mỗi ngày.”

Trong lần chạy thử này, Repairnator đã phân tích hơn 11.500 bản build có lỗi. Tuy nhiên, với các bản build này, nó chỉ có thể tái hiện lại lỗi đối với hơn 3.000 trường hợp. Từ đó, nó phát triển bản vá cho 15 trường hợp.

Tuy nhiên, không bản vá nào trong các trường hợp này được chấp nhận đưa vào bản build do Repairnator mất quá nhiều thời gian để phát triển chúng hoặc chúng có chất lượng quá thấp để có thể chấp nhận được.

Lần thử nghiệm thứ hai mang lại nhiều thành công hơn. Lần này, nhóm nghiên cứu thiết lập để Repairnator có thể làm việc trên dịch vụ tích hợp liên tục của Travis từ tháng Một cho tới tháng 6 năm 2018.

Cho dù nhóm nghiên cứu không cho biết Repairnator đã được cải thiện những gì, nhưng vào ngày 21 tháng Một, một bản vá do Repairnator viết đã được nhà kiểm duyệt con người chấp nhận đưa vào bản build. “Nói cách khác, đây là lần đầu tiên Repairnator đã có thể cạnh tranh với con người.”

Trong 6 tháng tiếp theo, Repairnator đã tạo ra 5 bản vá khác được các nhà kiểm duyệt con người chấp nhận.

Đây là một nghiên cứu rất ấn tượng đối với việc mở đường cho một thế hệ mới của việc phát triển phần mềm. Tuy nhiên, nó cũng làm dấy lên một số câu hỏi thú vị khác: “Ai sẽ là người sở hữu các tài sản trí tuệ và chịu trách nhiệm cho một đóng góp của chương trình bot? Người điều hành con bot đó, người triển khai bot hay các nhà thiết kế thuật toán sửa chữa của bot đó?

Mặc dù là một câu hỏi hóc búa và có thể nó sẽ cần được giải đáp trước khi người và máy có thể cộng tác với nhau nhiều hơn, nhưng Monperrus và đồng sự vẫn tỏ ra rất lạc quan: “Chúng tôi tin rằng Repairnator đã hình dung trước một tương lai chắc chắn của phát triển phần mềm, nơi các bot và con người có thể hợp tác trôi chảy và thậm chí cộng tác cho việc tạo ra phần mềm.”

Tham khảo TechnologyReview

Techtalk via genk

  Google sử dụng Machine Learning chỉnh sửa lỗi chính tả trong Google Docs
  Dùng dữ liệu từ chính StackOverflow, hacker này đã tạo ra công cụ sửa lỗi lập trình hiệu quả cho coder
CHIA SẺ