Lập trình viên cần phải tập trung và sửa các lỗi, đặc biệt là khi phần mềm đã được triển khai và người dùng đang sử dụng nó. Tùy thuộc vào loại lỗi, bạn sẽ phải quyết định cách tốt nhất để gỡ rối – với số lượng tác động nhỏ nhất đến trải nghiệm người dùng.
Mọi thứ trở nên khẩn cấp hơn khi một lỗ hổng bảo mật được phát hiện, và tất cả mọi người phải hợp tác để triển khai một giải pháp sẽ ngăn chặn việc khai thác thành công của điểm yếu trong hệ thống, loại bỏ hoặc làm giảm khả năng tấn công.
Tìm và sửa lỗi chỉ là bước đầu tiên. Sau đó, bạn phải quyết định cách sửa lỗi và cách triển khai nó một cách tối thiểu ảnh hưởng đến người dùng. Những biện pháp này có thể được triển khai qua:
Patch
Trong những ngày đầu của máy tính, một patch đúng nghĩa là một miếng dán. Các máy tính tương tự sử dụng thẻ hình ảnh và giấy để nhập các chương trình mà máy tính sử dụng để thực hiện các phép tính của nó. Những “gói” này chứa những hàng lỗ và khoảng trống là phần mềm của máy tính và giống như ngày nay, các nhà cung cấp phần mềm sẽ cần thay đổi chương trình.
Những cập nhật này được phân phối trên các thu nhỏ hơn của thẻ hình ảnh hoặc giấy đã đục lỗ và người nhận được mong đợi cắt phần mã lỗi ra khỏi đống và dán vào đoạn mã thay thế – từ đó có tên gọi.
Tất nhiên, việc gắn dán đã đi xa rồi. Các bản vá cho máy tính hiện nay thường là bản vá mà mã nguồn đã tồn tại bằng cách sửa đổi hoặc thay thế nó bằng cách sử dụng một chương trình thực thi đã được công khai phát hành.
Các bản vá thường là các sửa đổi tạm thời giữa các phiên bản phần mềm đầy đủ. Các bản vá được sử dụng để sửa các vấn đề lớn và nhỏ mà có thể cần hoặc không cần sự chú ý ngay lập tức, chẳng hạn như:
- Sửa lỗi phần mềm
- Cài đặt driver mới
- Giải quyết các lỗ hổng bảo mật mới
- Giải quyết các vấn đề ổn định phần mềm
- Nâng cấp phần mềm
Thường thì các bản vá là các bản cập nhật tự động tự cài đặt các gói có kích thước khác nhau, từ vài kilobyte cho đến bản vá lớn như các bản vá của Windows có thể lên đến hơn 100 Mb. Và như bất kỳ người dùng Windows nào cũng xác nhận, việc cài đặt một số bản vá nhất định (vào thứ Ba của bản vá, tất nhiên) có thể gây gián đoạn và thời gian chờ đợi trong quá trình cài đặt và có thể thậm chí yêu cầu khởi động lại hệ thống một hoặc hai lần.
Hầu hết các bản vá được phân phối theo lịch trình cố định. Chúng có thể được bao gồm trong bản phát hành phiên bản mới của sản phẩm với các cập nhật và sửa lỗi bổ sung.
Hotfix
Hotfix cũng có thể giải quyết rất nhiều vấn đề tương tự như một bản vá, nhưng được áp dụng cho một hệ thống “nóng” – một hệ thống đang hoạt động để sửa một vấn đề:
- Ngay lập tức
- Mà không gây gián đoạn hệ thống hoạt động hoặc ngừng hoạt động.
Hotfix cũng được biết đến với tên gọi cập nhật QFE, viết tắt của quick-fix engineering update, một tên gọi cho thấy tính khẩn cấp.
Thường thì, bạn sẽ tạo ra một hotfix nhanh chóng, như là một biện pháp khẩn cấp chống lại các vấn đề cần được sửa chữa ngay lập tức và nằm ngoài luồng phát triển bình thường của bạn. Khác với các bản vá, hotfix giải quyết các vấn đề cụ thể như:
- Thêm một tính năng mới, sửa lỗi hoặc bảo mật
- Thay đổi cấu trúc cơ sở dữ liệu
Một điều quan trọng, hotfix không phải lúc nào cũng được công khai, trái ngược với các bản vá.
Ví dụ: Hãy tưởng tượng một ngân hàng biết rằng ứng dụng ngân hàng của họ có thể bị hack, khai thác và tiết lộ dữ liệu người dùng như mật khẩu, tên người dùng và thông tin tài khoản. Ngay cả khi cuộc tấn công chưa xảy ra, đây là một nguy cơ đáng kể mà đã đòi hỏi hành động khẩn cấp. Đội ngũ bảo mật có thể bỏ tất cả mọi thứ, cố gắng cung cấp một hotfix giải quyết các lỗ hổng ngay lập tức, với sự gián đoạn tối thiểu.
Coldfix
Trong trường hợp hotfix được thực hiện nhanh chóng mà không cần khởi động lại hệ thống hoặc phần cứng nào, coldfix lại ngược lại. Việc triển khai coldfix đòi hỏi người dùng đăng xuất khỏi phần mềm trong khi toàn bộ hệ thống cần phải khởi động lại để áp dụng sửa chữa.
Các loại cập nhật này phổ biến trong các trò chơi trực tuyến nhiều người chơi, ví dụ, vì vậy thông báo thông báo thường được đưa ra vài ngày trước để cho người dùng biết trước dịch vụ sẽ không khả dụng trong khi sửa chữa được hoàn thành. Thông báo thường bao gồm thời gian dự kiến mà dịch vụ sẽ hoạt động trở lại vì thời gian ngừng hoạt động có thể kéo dài từ vài phút đến một vài giờ tuỳ thuộc vào cập nhật.
Bugfix
Chúng ta đều quen thuộc với thuật ngữ lỗi: một khuyết điểm hoặc rủi ro lập trình tạo ra lỗi trong hệ thống hoặc phần mềm. Việc loại bỏ những lỗi này được gọi là gỡ lỗi.
Mặc dù tên đáng yêu này làm cho các lỗi này nghe nhẹ nhàng và chỉ gây khó chịu nhẹ, giống như một con muỗi, nhưng các nhà phát triển và lập trình viên có thể dành rất nhiều thời gian tìm kiếm nhiều lỗi thông thường khác nhau, chẳng hạn như:
- Cú pháp hoặc lỗi kiểu
- Lỗi chính tả và lỗi đơn giản khác
- Lỗi thực thi
- Lỗi logic
Triển khai bugfix, còn được gọi là bản vá tạm thời của chương trình (PTF), có thể đơn giản như thêm ngoặc đơn bị thiếu trong một đoạn mã. Nhưng việc sửa lỗi có thể trở nên rất thách thức nếu các triệu chứng không cho rõ nguyên nhân.
Ví dụ, nguyên nhân và triệu chứng có thể rời xa nhau, với mỗi một cái nằm trong mã chương trình và một trong việc thực thi của chương trình, hoặc cả hai.
Triệu chứng cũng có thể khó tái hiện để hiểu rõ hơn về vấn đề. Tuy nhiên, sau khi đã tìm ra nguyên nhân và phát hành một bugfix, không phải hiếm gặp các lập trình viên của bạn phát hiện ra rằng một bugfix có thể thực sự giới thiệu một lỗi mới.
Một bugfix nghe gần giống với một hotfix, nhưng sự khác biệt nằm ở thời gian và thực hiện sửa chữa. Bugfix thường mô tả các vấn đề được tìm thấy và giải quyết trong quá trình sản xuất hoặc giai đoạn thử nghiệm hoặc ngay sau khi triển khai như một phần của chu trình phát hành bình thường của sản phẩm. Hotfix được áp dụng chỉ sau khi sản phẩm đã được phát hành và đang hoạt động.
Hình ảnh được sử dụng trong bài viết này có nguồn từ bài viết gốc.
Khi phần mềm ngày càng phức tạp, việc gỡ rối trước và sau khi sản phẩm ra mắt là rất quan trọng để bảo vệ thương hiệu của bạn.
Các ứng dụng ngày càng phức tạp, đa luồng và lớn hơn, với số lượng nhà phát triển làm việc trên nó ngày càng nhiều. Tất cả sự phức tạp này làm cho việc tìm lỗi khó khăn và không thể đoán trước. Các chương trình đa luồng:
- Làm tăng thời gian diễn ra từ nguyên nhân chính của lỗi đến việc phát hiện nó.
- Làm cho việc tìm lỗi và tái hiện chúng trở nên khó khăn.
Lỗi là một rủi ro quá lớn để bạn có thể bỏ qua. Các lập trình viên sẽ dành số ngày để tìm kiếm chúng hoặc thậm chí cung cấp bug bounties để nhờ giúp đỡ trong việc tìm ra các vấn đề trong mã của họ trước khi họ có thể áp dụng sửa chữa phù hợp.
Cách duy nhất để tránh lỗi và tiết kiệm thời gian sửa chữa chúng là viết mã tốt hơn. Và cho đến khi mọi người bắt đầu viết mã hoàn hảo, chúng ta có thể mong đợi một vài lỗi nữa xuất hiện ở những nơi chúng không nên xuất hiện.