多くの企業において,現行システムのブラックボックス化が進んでいる。ここで言う「ブラックボックス化」とは,システムが大規模化・複雑化してプログラムの構造やロジックが不透明になることを指す。内部仕様だけでなく,業務フローや画面,帳票など外部仕様が分からなくなるケースも珍しくない。

 システムがブラックボックス化する理由は,プログラムの度重なる改修や,ドキュメントの不備,担当者の退職などさまざまだ。ところが,それにより新規・保守開発の調査工数が膨らんだり,予期せぬ障害を招いたりするケースが後を絶たない。

 こうしたこともあって,システムの見える化は開発・運用現場が抱える大きな課題の一つになっている。筆者は取材を通じてそれを痛感し,ITproおよび日経SYSTEMSで「現行システムの見える化」に関する特集を担当することにした。ここでは1週間にわたって,現行システムの見える化に悩む現場の実態を紹介するとともに,本テーマについて有効な解決策を考えていきたい。

しわ寄せは現場にくる

 まず見える化がなぜ必要なのかをいくつかの事例から考えてみよう。「見える化するよい方法があれば,ぜひ教えてほしいよ」――。これは,取材で訪れた製造業のIT部門に所属するAさんのぼやきだ。Aさんは最近,生産管理システムの刷新に伴い,現行システムの調査に乗り出した。ところが,過去に各プログラマがソースコードを次々とコピーして修正を加えた結果,同じようなソースコードがあちこちにあった。どれが信頼できるソースコードなのか分からない。これじゃあプロジェクトが始められないと,Aさんらは数カ月をかけて全ソースコードを一つずつ確認する羽目になった。Aさんは言う。「現行システムを見える化する“魔法の杖”はないものか。結局,目視による地道な調査をするしかないのか」と。

 この場合,ソースコードの構成管理を徹底していないのがそもそもの問題である。しかし,長い年月をかけて改修に改修を重ねたシステムにおいて,構成管理を長期間根付かせるのは容易ではない。Aさんのように,不要なコードはどれなのか,どのコードを信頼すべきかなど,頭を悩ます現場は多いはずだ。

 現行システムの調査・分析に詳しいBさんによると,「重複」や「未使用」といったコードは,多くの企業で全体の3~4割に及ぶという。なかには6割のコードが“いらないコード”というケースもあった。Bさんは「ライブラリの管理がなおざりにされた結果だ。ブラックボックス化したままでは,保守開発や障碍発生時の調査工数がコードの分だけ膨らむことになる」と警鐘を鳴らす。

 リバースエンジニアリング機能を持つ開発支援ツールを使う方法もある。最近のツールなら,ソースコードからクラス図やシーケンス図を自動生成する機能がある。しかし,こうしたツールではコードの“価値”までは見極められない。Aさんの場合も,コストや習熟なども考慮して,開発支援ツールを使うことを見送った。

ドキュメントがない,担当者もいない

 大手ベンダーでプロジェクト・マネージャを務めるCさんは,企業合併に伴うシステム統合プロジェクトで,一方のシステムを他方のシステムに片寄せする作業で苦労した。最新のシステム状況を確認できるドキュメントはなく,開発に携わった担当者も既に退職していたためだ。

 最近では,ゼロから開発するシステムはほとんどないと言っていい。システム間連携も当たり前のようにあるので,プロジェクトでは関連するシステムの調査が必ず発生する。Cさんの場合も,システム統合に伴う影響範囲を特定する作業が発生し,手間取った。具体的には,影響範囲を特定するために関連するエンティティをたどっていく方法を選んだが,ドキュメントの不備や担当者の不在によって,実際のテーブルや画面を地道に確認していかざるを得なかった。「開発そのものよりも,現行システムを調査する時間のほうがかかったかも知れない」とCさんは打ち明ける。

 保守開発においては,なぜこの機能が存在するのか,なぜこういう構造やロジックになっているのかなどに疑問を持つことは多い。ソースコードやドキュメントに,その目的や意図が書かれるケースは少ないからだ。保守開発を数多く手掛けてきたSEのDさんは「開発時には明確な目的があって追加した機能かも知れないが,後になるとなぜその機能が必要なのか理解に苦しむことがある」と話す。安易にそれを修正・削除すると問題になる可能性もあるので,手を出せないという。

“魔法の杖”を探してみる

 このように,開発・運用の現場では現行システムがブラックボックス化し,それを見える化するために苦労している。もっとも,「見える化なんてしなくても,新規システムをしっかりと定義すればいい」という意見もあるかもしれない。しかし,業務システムでは多種多様なデータを扱う。これらのデータの種類や内容,アプリケーションとの関係を無視した開発では,業務や現行システムを移行できない可能性が高まることを覚悟しなければならない。その意味では,現行システムの見える化は多くの開発・運用の現場で避けては通れない道なのだ。

 第2回と第3回では,2008年8月末から現在まで実施したアンケート調査の結果を報告させていただく。多くのITpro読者の方々からお寄せいただいた,現行システムの見える化に関する悩みや,それを解決するまでの苦労話などを紹介しよう。