お客様: 計測システム企業様

ご依頼内容

  • 自社で開発した測定データ変換ソフトが、担当者の退社により、仕上げと保守ができなくなった。不具合の修正と機能の追加、その後のサポートまでお願いしたい、というご相談。
  • 仕様書や設計の意図は残っておらず、既存のコードだけを引き継いだ状態から進めたい。
  • 変換の条件やオフセットは、顧客側でも画面から調整できるようにしたい。
  • 利用者へ配布している実行形式のまま、更新を続けたい。

課題

  • 技術的には、仕様書も設計の意図も残っていない他者製のソフトについて、報告された現象から、原因のあるコードまで遡ることが困難なこと。
  • 座標の回転、利得の算出、出力形式ごとの処理の意図を、既存のコードから復元すること。
  • 出力形式ごとに異なる回転・反転の結果と、評価指標の算出の差を、原因まで切り分けること。
  • オフセットや回転角を、顧客側で調整し、その設定を次回も再利用できるようにすること。
  • 既存の出力との互換性を保ったまま、改修を進めること。

ソリューション

  • 仕様書の残っていないソフトの改修は、報告された現象ごとに直すのではなく、共通で使われている処理まで遡って原因を特定するのが本質的と考え、今回は不具合の報告を1件ずつ、サンプルデータで再現するところから始めた。
  • 画面付きのプログラムであるMATLAB App Designerのアプリと、その補助関数を追跡し、処理の流れを復元した。
  • 出力形式の間で結果が食い違う原因を、共通で使われている回転処理まで遡り、配列の長さと起点の、1点のずれとして切り分けた。
  • 修正の方針を3案提示し、既存の出力形式との互換性を確認したうえで、実装した。
  • カット面のオフセット、水平面の反転、回転角を、GUIから設定できるようにした。
  • 利得差の算出範囲を顧客の定義に合わせ、サンプルデータとの値の一致を確認した。
  • 入力した情報をファイルへ保存し、次回の起動時に初期値として読み込む機能を追加した。
  • 改修のたびに実行形式を更新し、MATLABのランタイムを同梱した配布物として、リリースを重ねた。
共通の回転処理を経て出力形式AとBで結果が食い違うことと、配列の先頭の位置が1点ずれることを示した模式図
不具合の原因の切り分け。同じ入力でも出力形式ごとに回転・反転の結果が食い違う現象を、複数の出力形式で共用されている回転処理まで遡り、配列の長さと起点の、1点のずれとして特定した。処理の関係を示した模式図で、実際のデータは含まない。
改修前はコードに固定値、改修後はGUIから設定して保存する構成を並べた模式図
変換条件の設定の改修前後。コードに固定されていたカット面のオフセット、水平面の反転、回転角を、GUIから設定できるようにし、設定値をファイルへ保存して次回の起動時に初期値として読み込む形にした。画面の構成を示した模式図で、実際の画面ではありません。
課題、アプローチ、結果の3パネルと、要望に応じて着手する保守の進め方をまとめた図
案件の課題、アプローチ、結果と、保守の進め方。要望を受けるたびに着手し、約半年にわたり複数回のリリースを重ねた。

結果

  • 利得、前後の利得差、回転と反転、複数の出力形式、既定値の保存に関する主要な不具合を、解消した。
  • 約半年、累計約40時間の保守・改修で、止まっていたソフトの運用が再開した。
  • 変換の条件は、顧客側でGUIから調整でき、細かな設定のたびに開発側へ依頼する必要がない。
  • 設定した内容は保存され、次回の起動時に初期値として読み込まれる。
  • データ構造が変わる未対応の形式は、既存コードから安全に改修できない範囲として明示し、対応の判断材料を示した。

ひとこと

  • 他の人が書いたプログラムを引き継いで直す作業は、直し方が複数あり、どれを選べるかがコードの状態によって変わるため、方針を決めるのが難しいところです。報告された現象だけを見て直すと、別の出力で新しい食い違いが出ることもあります。
  • 既存の出力との互換性を崩さない判断も必要になるので、対象の分野と、プログラムの両方の知識を持っている人が担当するのが良いと思います。
  • また、今回の事例では、変換の条件をGUIから変えられるようにしたので、プログラムに不慣れな方でも、調整をご自身の手で行えます。
  • 今回は、「開発した担当者がいなくなり、ソフトの更新が止まってしまった。引き継いで直してほしい。」というご相談でした。既存コードの解読から、不具合の修正、機能の追加、実行形式での配布までを、一式でお引き受けしています。

お問い合わせ

開発事例にご興味ありましたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
早急に回答致します。

今すぐお問い合わせ