どこもかしこもIT化が進んだ現代社会では、イチから新規でシステムを構築するだけでなく、既存のシステムに対して手を入れていく改修案件も多いです。そして新規システムの構築時と、既存システムに対するバグ対応や追加カスタマイズなどによる改修時では、求められる作業の質が変わってきます。

まずはじめに、同じバグ対応でも新規のシステムと、システム改修時で、どのような違いがあるのかを説明していきます。

バグ対応も新規と改修時では作業内容が変わってくる

新規システムの構築時には、プログラムにはバグが潜んでいることを前提として、テスト工程が設けられています。テストケースを作成し、消しこみを行っていくのですが、これは開発を進めていく上での基本であり、想定工数として開発予算にも計上されています。

しかし本番リリースを終えて、稼動しているシステムにはバグがないことが前提です。もしバグ対応をするのであれば、影響範囲の洗い出し、PG修正、テストケース作成・消しこみ(デグレードチェック含む)を行わなければなりません。

ただバグが発生している箇所を修正すればよいわけではなく、「従来の機能に影響を与えることなく、バグの部分のみを的確に修正すること」が求められます。これは追加カスタマイズの場合も考え方は同じです。

ということで、バグ対応や追加カスタマイズなどでシステム改修が発生するときに気を付けることについて、ご説明していきましょう。

影響範囲の洗い出し

既存システムに手を入れる前に、まずは改修による影響範囲がどこまで及ぶかを調査し、洗い出すことから始めます。

例えばとある入力画面にて、入力項目をひとつ追加する改修が発生するとします。外部的にはテキストボックスをひとつ追加するだけかもしれませんが、内部的には影響範囲が広範囲に及ぶ可能性もあります。

影響範囲の確認時には、以下の項目を意識するとよいでしょう。

  • テーブルに追加項目は発生しないか
  • SELECTやINSERTなど、SQL文の見直しが必要になるか
  • 既存の処理ロジックに修正を加える必要があるか

影響範囲の洗い出しをおろそかにしてしまうと、後々になって余計な作業が増えてしまいます。システム開発はなにごとも上流の工程が重要です。もし自信がなければ有識者にレビューをお願いするようにしましょう。

ソースの修正時は必ずコンペアツールで修正前後の確認を行う

システム改修でよくあるのが、バグ対応なり追加カスタマイズで目的の処理を組み込んだのはよいが、全然関係ないところの処理の動きがおかしくなってしまったという事例。作業を行ったエンジニアに話を聞くと「自分でもなぜか分からない」という答えが返ってくることが多いですが、たいていの場合は影響範囲外のソースコードを無意識のうちに触ってしまっています。

無意識のうちに予期せぬバグを生み出してしまうのは馬鹿げていますし、どこを変更したかの自覚もないため、異常処理の原因を探るのにも時間がかかってしまいます。そうならないためにも、必ず修正前後でソースコードの比較をして、しかるべき箇所のみ変更が行われていることを確認するべきです。

上記のような差分比較の確認作業は「Diff」や「WinMerge」といったコンペアソフトを利用することをおすすめします。
※どちらもフリーソフトのため無料で利用できます。

これらのソフトを利用して修正前後のソースコードを比較することで、差分となる箇所をピンポイントで把握できるようになります。もし修正対象となっていない箇所が差分として抽出されれば、それはまったく関係ないところを触ってしまったということが分かります。

必ずデグレードテストを行う

システム改修時も、プログラムを修正して「はい終わり」ではなく、必ずテストを行うようにしましょう。そしてシステム改修時のテストを行う際に、気をつけるべきことは以下の二点。

  • 修正内容が処理に反映されているか
  • 修正箇所以外は従来と同じ動きをするか(デグレードチェック)

バグ対応やカスタマイズ機能が追加されていることは当たり前ですが、改修時には上記二番目のデグレードチェックを忘れてはいけません。修正箇所が影響を及ぼすであろう範囲の機能は、全てデグレードチェックを行ってください。

デグレードチェックの方法は、プログラムの修正前後で同じ環境を用意し、それぞれで動かしてみて同じ結果が返ってくることを確認します。地味な作業ではありますが、こうした努力があってこそシステムの品質が保証されるのです。

 

おわりに

これまでご説明してきたように、システム改修は内容が軽微だったとしても、意外と手間のかかる作業です。システム改修の際には、デグレードを起こさないという意識を持って、新規でのシステム構築時とは少し違う目線で作業を行うようにしましょう。

 



【X(旧twitter)でも情報発信中】

Xを最近始めたので、フォローしてもらえると嬉しいです(エンジニア界隈の方はフォローバックさせていただきます)! システム開発に関することや、最新テクノロジーのことなど、世のエンジニアにとって有用な情報を発信してます!

"X" @TECH_KEYSYS