バグ除去について

今までコンピュータシステムやらに携わっていて各種の開発・指導・火消し的な作業をしていて
出くわした問題について、少し書いてみようと思います。

バグが大量に残っているシステムを引き継いだ場合、効率的に除去するのには、
書いている人の欠落部分とシステム設計者の欠落部分を補完する事が良かったです。
・コーディングやプログラム設計では、IF分岐においてELSE句欠損者が多かったです
→ELSE句が不要な理由は必ずコメントで記載する癖をつけましょう
・ネットワーク設計においてはルーティングが回ってしまう状態を作ってしまっているケースが多い
→設計経験が薄いうちは目的地に着くルートは複数作ることは最初から狙わない
・ルータ言語は初歩的でかつ制限的なので正しく初期化していない場合が多い
→机上チェック及び、回線モニタなどを使用して各ロジックを各ステップ単位で試験してから組み立てるようにしましょう
・DB設計で極度に正規化をしてサブクエリや多段クエリをおこしていたりを良く見かけます
→並行展開、逆正規化、入出力項目単位のテーブルを起こすなどで改善検討しましょう
・DB環境設計を怠っていた、間違っていた、なども良く見かけます
→テーブルのサイズ見積、システム動作、システム資源、DBエンジン動作に関する基礎用語の意味と動作実態を知りましょう
・DBのインデックスに関して勘違いをしていて、とてつもなく低速になっているケースも良く見かけます
→テーブルに行数が1であるようなリポジトリ的以外は1つ以上のインデックスが必要です。理由は省略
・DBのエンジンが稼動しているサーバのHDDランプが稼動しつづけているケースも良く見かけます。破損も常。
→DBはHDD上で稼動させない設計を目指しましょう
→クエリでキーになる相当数は必ずインデックスを用意します
→インデックスはキャッシュしましょう
→無茶なデータサイズにならないようにし必要に応じて分割しましょう
→クライアントまたは中間リクエスタがのクエリは面で取るようにしましょう
→ネットワークが輻輳を起こさない事を考慮しましょう
・再現不能な障害を多数内包した状態で、仕様追加をして、悪化しているケースを良く見かけます
→稼動しているクリティカル部分を修正しないと、システム変更に絶えられない事を調べない、と決め付けている場合が多いです
→元々のバグを回避し清掃後にバージョンアップや仕様追加を行いましょう
→再現させるためには机上をして癖の悪い部分を取り除くことが早道です
→通信・ハード設計の根本を含めて再検討すると、元々完成可能性が無い場合も

あるあるのホームページへ戻る