H26 技術士(情報工学)ソフトウェア工学 II-2-1:レガシーシステムのコンポーネント化


(1) 利点
レガシーシステムをコンポーネントとして新システムから利用すると以下のような利点がある。
@稼動実績のあるシステムであるため、新システムでの品質問題が発生するリスクを少なくすることができる。
A新システム上で同じ機能を開発する場合と比べ、少ない工数、費用で新システムを実現することができる。
Bコンポーネント化することで新システムとレガシーシステムの結合度を低くすることができ、将来的にレガシーシステムを新システムに移行する場合に稼動している新システムへの影響を少なくすることができる。

(2)課題
レガシーシステムの利用方法がこれまでと異なるため、与えるデータの内容やタイミングが変わり、これまで動作することのなかった経路でレガシーシステムが動き、潜在していた不具合が発生することがある。
こういった、レガシーシステムでは多くの場合、開発に携わった技術者が残っていないことや、設計資料が整備されていないなどの問題があり、不具合が発生するとその対策に多くの時間がかかることがある。

(3)対策
上記課題への対策としては
@新システムでコンポーネント化したレガシーシステムに伝達するデータをチェックし、異状の発生するデータで動作させないようにする。
A新システムとレガシーシステムの結合テストを十分に行い検証する。
が考えられる。
@の対策を行うと、レガシーシステムが異常な動作を行うような状況にならないので、課題として挙げたレガシーシステムの不具合が顕在化するリスクを回避することができる。なお、この場合、レガシーシステムで処理できないデータについては新システム内で処理を行うようにする必要がある。
Aの対策を行うと、新システムとレガシーシステムの連携にかかる箇所の品質を向上させることができ、課題として挙げたレガシーシステムの不具合が顕在化するリスクを軽減することができる。


[Intermission]
この問題のように、稼働中のシステムを新システムの一部として、使うことは珍しくないと思います。そして、“痛い目”にあった人も少なくないと思います。
10年以上も稼動しているシステムは細かな変更内容が設計書に反映されておらず、“話が違う”ということはよくあることです。
かといって、ソースレベルで機能の詳細を調査する時間も費用も人もいないので、“危ない橋は渡らない”の精神が大事だと思います。



戻る 一覧へ