Trong's BSE Diary vol.17

コウェルのBSEのTrongによる日本で働くとは?BSEの仕事とは?日本で働きたいベトナム人、BSEを目指す人へ贈る日記です。

バグの修正について

第17回、[IT読解]レッスン3:
バグ修正時の特別な注意点

The author is Trong.
Global Innovation Headquarters
SystemEngineer
I joined CO-WELL in August, 2018


[IT読解]レッスン3回目の今回は、バグ修正についてお伝えします。
こちらのblogは、大変大切な内容なので、日本人の感覚を理解するためにも下記のblogからの直接引用になります。
日本語の原文のものをベトナム人にも分かりやすいように翻訳しました。語学の勉強にもなりますし、興味深い内容なので、これを読めば一石二鳥です。(Hatena Blog『プログラマyasuhoの隠れ家』 http://yasuho.hatenablog.com/entry/20061127/p1
もしかしたらあなたの考え方と異なることもあるかも知れませんが、日本で働く上で必ず目をお通しておきたい内容です。


バグ修正において最も大切なことはドキュメントを残すということに尽きると思います。プログラムは動作環境によって様々な問題が発生します。
また、他の要因により不本意な修正をすることも多いでしょう。そういった修正により、プログラムはだんだん複雑に、より変更の難しいものになっていきます。そんな時、箇条書きでも情報を残す。そういった習慣が大切なのではないでしょうか。

バグが発生したら

Đối ứng khi phát sinh bug

プログラマーなら誰しもバグ修正をした経験があるでしょう。
ソフトウェアが完全になることはありません。プログラムを人間が作っている限り、これは避けられないことなのかもしれません。
バグを修正する時は、もう問題が発生しないようにと考えて修正します。しかし、実際には予期せぬ新たな問題が発生してしまったり、最悪の場合、問題そのものが解決しない場合もあります。
このような事態を避けるには、どのようなことを心掛ければいいのでしょうか。
この記事では主にプログラマーが心掛けたいことについて、考えてみたいと思います。



Đã là lập trình viên thì ai cũng có kinh nghiệm fix bug cả. Bởi vì không có chương trình nào hoàn hảo. Lý do là chương trình nào cũng được tạo ra bởi con người, vậy nên có lẽ việc phát sinh lỗi là không tránh khỏi rồi nhỉ.
Bây giờ ta hãy suy nghĩ về việc làm sao để fix bug này không làm phát sinh ra bug khác. Tuy nhiên, trên thực tế sẽ phát sinh ra những bug mới ngoài dự tính, và có trường hợp xấu nhất mà ta sẽ phải chấp nhận đó là sẽ không thể xử được các lỗi đó.
Để tránh tình trạng này thì sẽ có những chú ý đặc biệt. Ta hãy thử suy nghĩ về những gì mà lập trình viên cần để tâm.



-前バージョンの回避コードを正しく修正する  Fix đúng bug tồn động từ version trước

ソフトウェアがバージョンアップする場合は、バグの回避コードを正しい形にしましょう。
リリース後の修正は大規模な改変が難しく、何らかの回避コードが埋め込まれていることが多いものです。こういった、ちょっとトリッキーな変更を正すことはメンテナンスを楽にします。ソースコードにコメントとして残すのはもちろん、可能であればこういった修正のリストを作っておくとよいでしょう。

Trường hợp nâng cấp version phần mềm, ta hãy định hình đúng “kaihi bug code” – tức là mã số các bug mình chưa fix kịp hoặc chưa nghĩ ra cách làm sao fix, 1 dạng cài bom trong code có chủ đích và nằm trong phạm vi có thể xử lý được. Việc chỉnh sửa sau khi bàn giao sản phẩm (release) thì với những thay đổi qui mô lớn là rất khó, vậy nên có nhiều khi dev nhà ta giấu nhẹm bug đi. Nói như vậy thì việc cài bom khôn lanh kiểu đỏ sẽ đẩy được bug sang giai đoạn maintain làm mình dễ thở hơn. Vậy nên để cho chắc ăn thì hiển nhiên các bạn phải comment cho đầy đủ, rồi còn phải tạo danh sách các đoạn đã chỉnh sửa nếu có thể.



-各コンポーネントの独立性を高める  Nâng cao tính độc lập cho các component (cái này nằm trong nguyên tắc SOLID – các bạn google thêm)

各コンポーネントの関連性が少ないほど、コードの変更は楽になります。
これは言うまでもありませんね。GlobalやPublic変数、その他関連するモジュールが多いと、コードの変更部分が多くなり、検証も難しくなります。コードの可視性向上の点からも、プログラムの独立性は高めておくべきでしょう。

Nếu tính liên kết giữa các component càng thấp thì việc chỉnh sửa code càng dễ dàng.
Nói suông vậy chắc hơi khó hiểu. Ví dụ nhé, ta có 2 biến “Global” vs “Public”, có nhiều module sử dụng nó, điều này dẫn đến khi có 1 thay đổi thì việc điều tra chỉnh sửa sẽ khá vất vả. Vì vậy không chỉ code sao cho dễ đọc – dễ hiểu, mà các lập trình viên còn phải nâng cao tính độc lập cho các component.



-優れたコードを参考にする  Tham khảo các code đẹp (kotex code hoặc clean code tùy bạn hiểu sao hiểu)

コードをたくさん読んで、良いと思われるところはどんどんマネしましょう。 優秀と言われる、それも長く安定して使われているプログラムのソースコードには、多くのノウハウが詰まっているものです。これらを多く読み、自分のものにしていくことには大きな意味があります。

Đọc càng nhiều code thì sẽ hình thành nên ý thức code sao cho tốt.
Để lập trình viên có thể tạo ra những dòng code chất lượng ổn định và tuyệt hảo thì cần có know how (hiểu biết) rộng. Có nghĩa là nếu ta đọc nhiều thì chất lượng code của mình sẽ càng tốt lên.



-本当の問題を見極める  Tìm ra vấn đề mấu chốt

修正コードを作る前に、本当の問題が何かを正しく見極めましょう。
当たり前のことだと思われるかもしれませんが、本質的な問題解決を行っていないことは意外と多いのです。現象だけを見て修正しても、別のケースでは応用できていないかもしれません。
様々な事情から対処療法的な変更をしなくてはならない場合もあります。その場合は、情報をコメントや資料で残しておくべきでしょう。

Trước khi sửa code chúng ta nên tìm hiểu thật kỹ mấu chốt vấn đề là gì.
Có lẽ đây là điều hết sức bình thường nhưng trên thực tế việc tiến hành giải quyết vấn đề mà không đánh đúng trọng tâm thì không hiếm. Nếu chỉ dựa vào hiện tượng ta nhìn thấy, sau khi sửa xong có thể sẽ còn tồn động những case khác mà không hề hay biết.
Vì nhiều lý do mà cũng có trường hợp phải tiến hành các chỉnh sửa mang tính chữa cháy. Đối với case này, ta phải ghi chép hay comment lại thật đầy đủ.



-修正が他のルートに影響を及ぼさないように  Làm sao để sửa bug này không lòi bug khác.

これは特にリリース後のプログラムにいえることです。そういった場合、テスト時間があまり取れないことも多いです。修正は特定のルートに絞るのが無難です。変更の元となったバグ情報へのリンクがあると、後に役立ちます。

Đây là điều nhắn nhủ đặc biệt gửi đến các lập trình viên khi fix bug giai đoạn sau khi đã release sản phẩm. Vậy nên đừng chống chế kiểu “em không đủ thời gian test”. Hay “em đã fix được cái đó rồi mà”. Trong khi bug vẫn chưa giải quyết triệt để thì trách nhiệm cuối cùng cũng thuộc về lập trình viên (số khổ).



-性能を落とさないように注意する  Chú ý đừng làm sập tính năng ứng dụng

これもリリース後のプログラムに言えることです。バグを直すことに着目しすぎるあまり、性能への配慮がおろそかになることがあります。どうかお忘れなく。
時には性能劣化が避けられないこともあるでしょう。その場合はあらかじめ利用者に説明しておくと効果的です。後で発覚するとかなり面倒なことになりますよ。:)

Các bạn programmer nhớ kỹ điều này nhé. Đừng vì quá chú ý đến việc fix 1 cái bug mà làm sập luôn cả ứng dụng. Tuyệt đối không được quên điều này.



-確認テスト手順の確立を行う  Tạo tài liệu hướng dẫn tuần tự test confirm

修正の確認というのは、なかなかやっかいなものです。問題の確認だけでなく、他の部分に影響がないか検証しなくてはなりません。そういった時、プログラムの動作を検証するテスト手順が確立されていると、作業がしやすいですよね。

Việc test lại sản phẩm sau khi fix bug, không chỉ chăm chăm test cái bug đó thôi mà phải coi cho rộng, xem nó có ảnh hưởng đến những phần khác hay không. Vậy nên cần phải tạo tài liệu tuần tự test confirm. Để khi xem tài liệu có thể dễ dàng phát hiện ra được thiếu sót mà test bổ sung.



まとめーバグ修正において最も大切なこと

CHÚ Ý QUAN TRỌNG NHẤT KHI FIX BUG

バグ修正において最も大切なことはドキュメントを残すということにつきると思います。
ここで言うドキュメントとは、文章ファイルだけでなく、ソースコードのコメント、バグ情報データベースの類などなど、バグとその修正方法に関する全ての情報を示しています。プログラムの変更を難しくしている理由の一つに、バグと変更の理由が不明、ということにあるのではないかと思います。



Quan trọng nhất trong việc fix bug theo tôi chính là việc phải ghi chép lại toàn bộ. Những tài liệu này không chỉ file giải thích bug bằng câu chữ, mà còn gồm cả comment source code, loại database thông tin bug, phương pháp fix, và những thông tin liên quan khác. Việc fix bug khó khăn 1 phần cũng vì việc ghi chép thiếu tường minh (rõ ràng)



※Facebookページ:https://www.facebook.com/kysubrse で質問も受け付けます。

では、次回もお楽しみに〜〜^ - ^

pagetop