IT業界に長くいると必ず耳にするのが、設計書の無いレガシーシステムに関する悩みです。
レガシーと呼ばれるシステムは、開発されてから長い年月が経ち、その会社の業務を支える必須の存在となっている古いシステムを指して呼ばれることが多いですが、そうしたシステムの何割かは、設計書のメンテナンスがされていない、もしくは最初から設計書が作成されていない状態にあります。
設計書が無いレガシーシステムというのは大変厄介です。
なにせ、ITシステムというものは、サーバーという物理的な機器上で動いているため、それが故障して動かなくなってしまうと、別のサーバーにシステムを移行しなければなりません。
新しいサーバーにそのまま移すことができれば問題ありませんが、5年や10年経過したシステムを移行するとなると、使われているサーバーのファームウェアやOSのバージョンなどが大きく変わってしまい、そのまま移行しても動かない可能性が高いのです。
また、そこに使われているアプリケーションソフトの陳腐化やベンダー側の保守サービス停止を理由として、現状のシステムで実装されている機能をベースにして新システムを開発することもあります。
つまり、「今のシステムはどんな機能がどうやって実装されているのか」を知っていなければ、新しいサーバーへの移行や新システム開発を行うことも難しくなります。
難しさの程度で言えば、今あるビルと同じものを建造するケースと同じです。設計書なしでビルを作るというなら、外観だけを真似てビルを建造することになりますが、それでは目に見えない柱内部の構造が分からず、建造途中で倒壊してしまう危険もあるでしょう。
同じように、ITシステムも最初にシステムの設計書を作るからこそ、その後の構築フェーズで設計通りにプログラミングを行い、テストフェーズで動作検証することができるのです。
このことを逆手にとって、現行システムを開発運用しているベンダーから新しいベンダーへ切り替えようとする場合に、過去の設計書を引き継がせないという嫌がらせを盾にして、開発運用の仕事を引っ剥がされないようにするベンダーもいます。
サービス契約と称して、システムの開発から運用までを丸抱えし、ドキュメントやツールの著作権を自社のものにしているケースでは、こうした嫌がらせを受けやすいです。あまりにも有名なので実名を出しますが、NTTデータ社のデータ通信役務契約サービス(通称、デ通サ契約)やIBM社のストラテジックアウトソーシング契約(通称、SO契約)は、そうした弊害をユーザー企業が恐れてベンダー切り替えをしたくてもできないというケースがしばしばあります。
さて、かくも恐ろしき設計書の無いレガシーシステムですが、こうした状況を一変させる技術が前述のNTTデータから2014年1月に発表されました。
『NTTデータは、現行ITシステムのソースコードを自動解析し、設計書を復元する技術の適用範囲を拡大する。システムの開発目的や必要な機能などを定めた「要件定義書」までさかのぼって自動復元する技術の開発を2014年度に始める。長年の稼働を経たITシステムの役割を可視化し、更新や機能の追加を容易にする。開発期間の短縮にもつなげる。
現行システムのソースコードを自動解析し、設計情報を生成する。さらに生成した設計情報に顧客の業務を当て込み、人工知能(AI)の技術などを適用することで個々のプログラムが担っている業務や、そもそもプログラムが「なぜ」そうした設計になっているのか、といったシステムの根本的な目的を要件定義書などの形で復元する。
(後略)』
http://www.nikkan.co.jp/news/nkx0220140121bjan.html
これはIT技術者の夢ともいうべき技術です。
「動いているシステムが目の前にあるのだから、そこから設計書を自動的に作成できるはず!」
そう考えて数多の技術者やベンダーが散っていきましたが、NTTデータは人工知能を活用することで、プログラミングの設計思想を類推し、高度なレベルでの設計書復元を可能にしようと取り組んでいるようですね。
この技術が使える範囲がどこまでなのかは示されていませんが、ベースとなる既存サービスの応用技術ということなので、平文で確認できるソースコードファイルが必要になるものと思われます。さすがにコンパイル済のファイルからの設計書レベルの復元は無理でしょう。
※コンパイルされるとコメント文や内部的な変数などは判別できない形になるため、復元は不可能
ここまで読んですでにお気づきの方もいると思いますが、そうなんです、NTTデータではすでにソースコードから基本設計書レベルを自動生成するサービスを提供していたのです。
このサービスは設計書リカバリーサービスと呼ばれるものです。
『設計書リカバリーサービスは、システム運用者へのヒアリング・コンサルティングを行いながら、現行のソースコードを元に現行設計書の姿に合わせて設計書を再生し、提供するサービスです。
・ソースコードを100%自動解析、ドキュメントの回復が可能
・独自仕様の設計書フォーマットに対応可能
・レガシーな言語へ対応 』
http://www.nttdata.com/jp/ja/news/release/2013/042402.html
ちなみに、他のベンダーも設計書の自動作成サービスを続々と発表しています。たとえば、グループ売上規模が世界第4位のITベンダーとして知られる富士通では、2013年10月に「設計書化モダナイゼーションサービス」というCOBOL(メインフレームで使われる言語)で書かれたプログラムの設計書自動生成技術を発表しています。
『本サービスは、既存資産の業務アプリケーションを日本語の設計書に変換し、プログラムソースを自動生成します。これにより、効率的に短期間でオープン環境への移行を実現します。』
http://jp.fujitsu.com/group/fmcs/services/purpose/modernization.html
それにしても今回のNTTデータの発表した技術が革新的だったのは、人工知能を利用して要件定義書まで自動作成してしまうという点ですね。このレベルにまで達しているベンダーは、まだ他に出てきていないんじゃないでしょうか。
一方で、大量の設計書から一定の規則を見つけて意味を見出すという手法は、ビッグデータ分析に長けた企業であればチャレンジできる領域です。かつてグーグルは検索エンジンと一部のサービスのみを提供していましたが、専門文書の翻訳文を大量に読み込んで傾向分析を深めることで、並み居る既存の翻訳アプリベンダーを打ち破って、2006年の機械翻訳コンペで優勝してしまいました。
システム開発を大量に手掛けているIBMやアクセンチュアなどが同様の領域に踏み込んでくると、競争が激化し、そのうちシステム更改に伴う再要件定義の作業が数分の一のコストでできるようになるかもしれませんね。