担当者が退社してしまうなどで、運用中のシステムの改修が出来ないということで、ご相談を頂くことがあります。普段からお付き合いのある会社であれば、どのようなシステムが稼働しているか事前に把握している場合も多いので相談に乗りやすいのですが、新規のお客様の場合もあります。新規の外注先探しに悩まれる方も多いのではないでしょうか。
ここからは、前任の担当者に連絡が取れないという前提でお話します。同じ会社内の部署移動などであれば連絡を取ることは可能と思いますので、今回の説明対象からは外させていただきます。
担当者が居ない場合に1番困るのが、制作当時の資料が失われていたり、現行システムのソースコードが見つからないといった場合です。また、特殊な技術が使われていたりする場合は、そもそも現行のシステムで代替することが不可能であったりします。
まず、制作当時の資料が失われている場合ですが、仕様を説明する資料がない場合には、実際に現場で使用している方から使用方法を伺う必要があります。この作業はかなり困難であることが予想されますが、理由の一つとしては現場で作業している方もすべての機能を知っている訳ではない事という現状があります。また、仕様確認作業が通常業務の妨げになることもありますので、時間が十分取れないということも考慮しなくてはいけません。そういった場合には、既に運用で使用している環境と同じものを別のPC上などに構築して、仕様のリバースエンジニアリングを行うということが手段としてはあります。この作業をすることにより、技術的な観点から仕様確認の漏れをある程度軽減することが出来ます。
また、現行システムのソースコードが見つからないといった場合ですが、この場合は、費用面でも技術的にも大変大きなハンデを背負うことになります。この場合、ソースコード上から現在の仕様を確認することが出来ない為、お客様に仕様を伺うか、運用中のシステムの動作から仕様を想像する必要があります。どちらの場合も、完全な仕様を把握することは困難なため、現行のシステムの改修をあきらめていただくご提案をしなければならないかもしれません。唯一の手段としては、実際に稼働しているプログラムからソースコードをリバースエンジニアリングで逆に作成するという方法もありますが、すべての場合にこれが利用できるわけではないので、なかなか難しいところがあります。
ここまで、システム改修における現状と課題などをお話しさせていただきました。ここからは費用面についてお話しさせていただきます。
まず、判断基準として①システム制作時の仕様書がない場合、②ソースコードがない場合、の2つがございます。①の場合は仕様を資料から把握することが出来ないので、仕様作成のためのコストがかかります。ただ、ソースコードがある場合はリバースエンジニアリングである程度仕様を把握することが出来るので、その分、コストを抑えることが出来るのではないかと思います。②の場合は、既存に販売されているソフトウェアで代替できないか検討するのが一般的ではないかと思います。技術的にはかなり困難なので、いずれにしてもコストはかなり掛かってしまうと思います。