« 取引先にEDI用Webサービスを提供する | トップページ | オブジェクトモデリングとデータモデリング »

2014.03.27

システムの「基盤交換性」を見極める

 WindowsXPの保守期限が迫っていることから、いろいろな苦労話を耳にする。その中から、業務システムに関する深刻な問題を取り上げよう。

 昔、EUC(エンドユーザコンピューティング)という流行語があった。いまどきの「内製」に似ているのだが、気の利いた開発ツールを使ってちょっとした機能をエンドユーザ自身がプログラミングしてしまうことをいう。

 EUC向けに人気を集めた当時の開発基盤が、DelphiやVisual Basicだった。私自身、Delphi1.3でPCでのプログラミングを始めた手合いで、このツールには今でも初恋の相手のような懐かしさがある。それらのツールに夢中になったのは、私のようなプロの開発者ばかりではなかった。正真正銘の「素人」によるEUCが全国津々浦々でなされた。

 その結果、今になって何が起こっているか。その種の古い基盤で開発されたモジュールが新しいOSで動かないことに気づいて、関係者があわてている。当時の開発者に連絡がつかないし、まともなドキュメントもない。そういうものが業務システムと連係している場合、たかだかOSのアップグレードによってシステムがいきなり動かなくなる。けっきょく、どんな気の利いた開発基盤であっても、そこから去らねばならない事態が起こり得るということだ。

 そんな状況を最小限のコストで切り抜けるために、われわれは「開発基盤の交換容易性」にもっと注目していい。現在稼動中のシステムについて、「現在の基盤をまったく異なる基盤に移し替えるためのコスト」を評価しておくのである。

 もう少し厳密に言うと、「そのシステムのあり方を分析して、移行先で開発を開始するために必要なドキュメントをまとめるためのコスト」である。実装条件が変わるので論理設計書のような内容になるだろう。それを、旧基盤に詳しくない要員だけで作成する。そのためのコストが小さいほど「基盤交換性(基盤からの撤退しやすさ)」が良好とみなせる。ここで言う「基盤」は開発言語とかフレームワークといった広い意味で理解してもらっていい。

 まあ実際にはその種のコストを見積もることは簡単ではないだろうが、選択されようとしている2つの開発方針のうちどちらが基盤交換性が高いかについては評価できる。開発の過程で仕様書や基本設計書といったドキュメントの作成・保守が徹底されない体制は、基盤交換性が劣悪である。なぜか。そのようなシステムは遅かれ早かれ「残っているのはせいぜいコードだけ」になるからだ。小さなソフトなら大した影響はないが、業務システムくらいに複雑なソフトとなると、別の基盤に移行させるためのコストは経営に打撃を与えるほどに甚大だ。

 これまでしつこく語ってきたが、アジャイル手法の問題もそこらへんにある。アジャイル開発宣言にある「包括的ドキュメントよりも、動くソフトウエアを」の姿勢はしばしば「残っているのはせいぜいコードだけ」という素人のEUCのような成果を生み出す。なぜか。プロだろうが素人だろうが、プログラマはコーディングや動くソフトウエアが大好きだからだ。私自身がそうであるゆえに、その危うさがよくわかる。我々の飽くなきコーディング欲を社会で有効活用するには、ある種のタガが要る。それが仕様書やデータモデルといったドキュメントだ。

 具体的にはどうしたらいいのか。従来は、せいぜいウォーターフォール方式を厳格に運用するしかなかった。関連するドキュメントを保守しない限りモジュールの修正を許さない――しかしこういうやり方は、保守のための人員も予算も潤沢な特殊なプロジェクトでは可能だが、一般的なプロジェクトにとっては絵に描いた餅である。

 今では別の選択肢がある。「仕様書駆動の開発基盤」を利用すればよい。これによって仕様書の作成・保守を開発手順の中に組み込んでしまえる。なにしろ、リポジトリに保管されている仕様書どおりにしかシステムは動作しないので、仕様書と実システムの不整合が起こり得ない。どうせドキュメントを整備しなければならないのであれば、ドキュメントでシステムが駆動されるようにすればいい。そんな開発基盤は昔は夢物語だったが、今ではいくつかのメーカーから提供されているし、自作することさえ可能だ。昔と比べて実装技術が各段に進歩しているからだ。

 担当者の突然の交代だけでなく、将来の基盤交換に備えるためにも、ドキュメンテーションの優先度を下げてはならない。そのために我々がやれることは何か。「包括的ドキュメントよりも、動くソフトウエアを」ではなく、「動かない包括的ドキュメントよりも、包括的ドキュメントによって動くソフトウエアを」と宣言することである。

|

« 取引先にEDI用Webサービスを提供する | トップページ | オブジェクトモデリングとデータモデリング »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: システムの「基盤交換性」を見極める:

« 取引先にEDI用Webサービスを提供する | トップページ | オブジェクトモデリングとデータモデリング »