Bot giờ đây đã có khả năng fix bug thay cho lập trình viên
“Trong thế giới này không có gì có thể được cho là chắc chắn, ngoại trừ cái chết và thuế” Benjamin Franklin viết năm 1789 nhưng bản thân đã sống vượt thời đại của mình. Ngày nay, các chương trình máy tính hiện đại rất phức tạp đến nỗi các lỗi chắc chắn sẽ luôn xuất ...
“Trong thế giới này không có gì có thể được cho là chắc chắn, ngoại trừ cái chết và thuế” Benjamin Franklin viết năm 1789 nhưng bản thân đã sống vượt thời đại của mình.
Ngày nay, các chương trình máy tính hiện đại rất phức tạp đến nỗi các lỗi chắc chắn sẽ luôn xuất hiện trong quá trình phát triển. Đó là lý do tại sao việc tìm kiếm chúng và viết các bản patch để khắc phục là một phần bình thường của bất kỳ lịch phát triển phần mềm nào. Thật vậy, có những công ty như Travis được lập ra chỉ để cung cấp dịch vụ này cho các nhà phát triển.
Nhưng việc tìm kiếm và sửa chữa các bản vá lỗi là vô cùng tốn thời gian và ngốn rất nhiều tài nguyên quan trọng. Vì vậy mà các nhà nghiên cứu đã phát triển những chương trình tự động hóa quá trình này, nhưng chúng có vẫn còn chậm chạm và không đảm bảo chất lượng. Vì vậy mà một bot có khả năng tìm kiếm mã lỗi và sau đó viết các bản vá để sửa chúng, luôn là một niềm mơ ước cho bất cứ developer nào.
Ngày nay, điều này đã trở thành sự thật nhờ công trình của Martin Monperrus và những người đồng nghiệp tại viện công nghệ hoàng gia KTH ở Stockholm, Thụy Điển. Những chuyên gia cuối cùng đã xây dựng được một bot, với tên gọi là Repairnator, có thể tìm kiếm lỗi và viết các bản vá lỗi chất lượng cao không thua gì con người. “Đây là một cột mốc quan trọng trong nghiên cứu kỹ thuật phần mềm về sửa chữa chương trình tự động”, họ nói.
Các nhà khoa học máy tính từ lâu đã biết rằng có thể tự động hóa quá trình viết các bản vá lỗi. Nhưng không rõ liệu các bot có thể thực hiện công việc này nhanh chóng như con người và chất lượng có như nhau hay không.
Vì vậy, Monperrus và đồng nghiệp đã thử nghiệm điều này bằng cách biến Repairnator thành một nhà phát triển và tham gia cạnh tranh trực tiếp với những lập trình viên khác trong việc phát hiện lỗi và bổ sung bản vá lỗi trên GitHub – “Ý tưởng chính của Repairnator là tự động tạo các bản vá sửa chữa lỗi build, sau đó hiển thị chúng cho các nhà phát triển khác, để cuối cùng xem liệu họ có chấp nhận chúng như là những đóng góp hợp lệ cho cơ sở mã hay không”, Monperrus chia sẻ.
Như vậy, nhóm nghiên cứu đã tạo 1 profile trên GitHub cho bot với tên gọi là Luc Esape – “Luc được xây dựng hình ảnh trông giống như một junior developer, mong muốn đóng góp cho nguồn mở trên GitHub,” nhóm phát triển nói.
Nhưng Luc thực ra chính là Repairnator. Sự ngụy trang này là cần thiết bởi nó đảm bảo tính khách quan trong việc đánh giá của những người kiểm duyệt để không có bất cứ sự phân biệt đối xử nào giữa bot với người thật.
Nhóm nghiên cứu tiến hành hai lần chạy thử nghiệm Repairnator. Lần đầu tiên chạy từ tháng 2 đến tháng 12 năm 2017, khi nhóm điều hành Repairnator trên danh sách cố định 14.188 dự án GitHub để tìm kiếm lỗi. “Chúng tôi thấy rằng Repairnator có khả năng thực hiện khoảng 30 lần fix bug mỗi ngày”- họ nói.
Trong thời gian này, Repairnator đã phân tích hơn 11.500 build có lỗi. Trong số này, nó có thể tái tạo lại lỗi trong hơn 3.000 trường hợp. Sau đó, Repairnator tiếp tục phát triển một patch trong 15 trường hợp.
Tuy nhiên, không bản patch nào được chấp nhận vì Repairnator mất quá nhiều thời gian để phát triển chúng hoặc các bản patch có chất lượng thấp.
Lần chạy thử nghiệm thứ hai thành công hơn với việc nhóm để Luc làm việc trên dịch vụ tích hợp liên tục Travis từ tháng 1 đến tháng 6 năm 2018. Mặc dù nhóm đã không nêu ra những cải tiến mà họ đã áp dụng cho Repairnator, nhưng vào ngày 12 tháng 1, nó đã viết một bản vá và được một người điều hành chấp nhận. “Nói cách khác, Repairnator đã lần đầu tiên thành công trong việc tạo patch sửa build” – Monperrus nhận xét.
Trong sáu tháng tiếp theo, Repairnator tiếp tục sản xuất năm bản patch và đều được người kiểm duyệt chấp nhận.
Đó là một con số ấn tượng, tạo nên bối cảnh cho một thế hệ phát triển phần mềm mới. Nó cũng đặt ra những câu hỏi thú vị sau khi, nhóm đã nhận được thông báo từ một trong các nhà phát triển: “Chúng tôi chỉ có thể chấp nhận các pull-request đến từ những người dùng đã ký thỏa thuận Eclipse Foundation Contributor License Agreement”
Điều đó đặt ra một vấn đề hóc búa, vì một bot không thể ký giấy tờ được. “Ai sẽ là người chịu trách nhiệm cho bot: các nhà điều hành robot, người thực hiện bot hay các nhà thiết kế thuật toán sửa chữa?” Monperrus thắc mắc.
Chắc chắn rằng loạt vấn đề này sẽ phải được giải quyết trước khi con người và bot có thể cộng tác với nhau. Nhưng Monperrus và đồng nghiệp của mình vẫn tỏ ra khá lạc quan – “Chúng tôi tin rằng Repairnator sẽ định hình một tương lai phát triển phần mềm, nơi mà các chương trình và con người sẽ cùng nhau làm việc một cách suôn sẻ và thậm chí hợp tác để tạo ra những tuyệt tác”.
Techtalk via technologyreview