0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

デグレードの発生原因とその対策、発生時の対応

Posted at

 ソフトウェア開発にデグレードは付き物です。
 ソフトウェア開発経験が長ければ長いほどデグレードを発生させてしまったことがあるのではないでしょうか?
 本記事ではデグレードが発生してしまったその後、どのように対応していけば良いかを記載します。

#デグレードとは
 客先リリース後にソフトウェアの変更を行い、修正モジュールをリリースする際に
 対応による影響範囲から外れたところに思わぬ影響があり、
 結果、新たに不具合があるままのソフトウェアをリリースしてしまうこと。

例えば・・・・
 「昨日までは動いてたけど、リリース後に動かなくなった」
 「iPhoneのアプリをアップデートしたら起動しなくなった」

#なぜデグレードすると怒られるのか
 お客さんからすればソフトウェアの構成などは知らぬ話。
 例えば、ベンツSクラスを点検に出して、返ってきた車がAクラスに変わってたら・・・?
 一方、ソフトウェア技術者的には「すぐ直る」話なので深刻に考えない。
 両者のギャップが怒りに繋がる。

#なぜグレードが起こるのか

  • プログラムが密に構成されていて、再利用部分が多岐に渡っている。結果、プログラムの修正の際に影響範囲を特定しきれず、意図しない変更部分が発生する。
  • ソース管理が不十分であり、他者が行った修正を上書きしてしまった。
  • リリースの管理が不十分であり、リリースすべきモジュールがリリースされなかった。
  • 利用しているモジュールのアップグレードによる仕様変更で、自開発のモジュールが正常に動かなくなった。
  • 利用している計算機資源の設定変更により、自開発のモジュールが正常に動かなくなった。

 

#デグレードが発生した場合にすべき対応
以下の順で対応を行う。

  1. 問題が発覚した部分を早急に修正する
  2. お客さんに報告の上、暫定リリースを行う。
  3. 問題が発覚した部分の原因を調べる(=ここで初めてデグレードだとわかる状態)
  4. デグレード原因となった変更に関連する部分のテストを早急に行う
  5. 追加で修正が必要であれば修正を行う。
  6. 追加対応分についてお客さんと協議を行う。(次回リリースで修正か、早急に修正するか決める)
  7. お客さんに正式報告と謝罪を行う。
  8. 損害賠償等があれば対応を行う。
  9. デグレードが発生した時に気がつける仕組みを作る(テストコード作成の強化など)
  10. デグレードが発生した時に気がつけるルールを作る

#デグレードを発生させない対処法

####プログラムが密に構成されていて、再利用部分が多岐に渡っている。結果プログラムの修正の際に影響範囲を特定しきれず、意図しない変更部分が発生する。

  • テストコードを作成する。テスト密度を高くする。
  • コミット前にリグレッションテストをする。
  • 密になりすぎていて弊害がある場合は疎にする。ただしこの変更で新たなデグレードが発生しないように十分考慮する。

ソース管理が不十分であり、他者が行った修正を上書きしてしまった。

  • gitを使う。衝突時のルールを決めておく。
  • コミット時の差分チェックを行う。
  • マージ時の差分チェックを行う。

リリースの管理が不十分であり、リリースすべきモジュールがリリースされなかった。

  • 個別の環境でビルドしているケースがないか確認する。ビルド専用環境を作成する
  • リリース手順を確立する。
  • 作成したモジュールに対してリグレッションテストを行う

利用しているモジュールのアップグレードによる仕様変更で、自開発のモジュールが正常に動かなくなった。

  • 設計段階から使用するモジュールのバージョンを固定しておく。必要のないアップグレードはダウングレードを行う。
  • アップグレードが必要なモジュールの場合、検証環境を用いて全件再テスト(単体、結合テスト)を行い、その後本番環境へ適応する。
  • アップグレードが必要ないモジュールの場合、アップグレードを行わない。

利用している計算機資源の設定変更により、自開発のモジュールが正常に動かなくなった。

  • 計算機資源の設定ファイルに依存するプログラムを作成しない。
  • 計算機資源の設定ファイルを変更した場合、関連するモジュールの動作確認テストを行う。
  • 計算機資源の設定ファイルを元に戻す。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?