« 「逆方向バリデーション」との付き合い方 | トップページ | 複合主キー「否定派」と「許容派」の論争 »

2013.11.09

仕様書の類型化と様式化

 拙作のOSS開発基盤XEAD Driverの"Driver"は、私のいう「アプリケーション・ドライバ」のことで、これが「仕様書でアプリを動的制御する」ための中心的役割を担っている。そのしくみを説明しよう。デザインパターンの知識としても役に立つだろう。

 この「アプリケーション・ドライバ・クラス」は、ユーザがログインした時(セッション開始時)にインスタンス化されて待機状態になる。ユーザがメニューのオプションを選ぶなどすれば、セッションがドライバにその機能IDを通知する。するとドライバは、機能IDに対応する機能の仕様と、その機能が利用するテーブルの仕様とをシステム定義から読み出して統合し、その場で自らを変形させて立ち上がる。
20131108 ここで重要なのは、読み出される仕様情報(②,③)が、ドライバクラスによって解釈できるように事前に様式化されている点だ。「テーブル仕様(③)」を様式化することは難しくない。もともとテーブル定義は機械処理しやすい画一的な表形式であるし、テーブルオブジェクトのメタデータをプログラム中で取り込む手段もある。

 問題は「機能仕様(②)」だ。ひとくちにデータ処理機能といっても多種多様であって、それらをシミュレートするための単一の仕様様式を用意できるものだろうか。不可能ではないにせよ困難であろう。そこで機能の類型化を行う。分析された類型(機能タイプ)にしたがって機能仕様を効果的に様式化するためだ。

 この問題における類型化と様式化の重要さを、喩え話で説明しよう。地球上の生物種をコンピュータでシミュレートすることを考える。単一の「生物ドライバ・クラス」を用意して、それに個々の生物種の定義を渡せば、地球上の多種多様な生物種を再現できるだろうか。そのための単一の定義様式を用意することは、やはり困難に違いない。

 どうすべきか。「鳥類」、「哺乳類」、「節足動物」といった類型毎に、生物種定義を様式化して、さらにそれぞれ向けのドライバ・クラスを用意すればよい。たとえば鳥類向けの生物種定義の様式には、「翼に関する諸問題」といった鳥類固有の項目が含まれている。この様式にしたがって、たとえば「カラスの定義」をまとめて「鳥類ドライバ・クラス」に渡せば、ドライバがカラスに変形して立ち上がる。毛ガニについてはその定義を節足動物用の様式でまとめて「節足動物ドライバ・クラス」に渡せば、美味そうな毛ガニに変形して立ち上がる。要するにそういうことだ。
20131108b 仕様書の類型化と様式化――それが「仕様書でアプリを動的制御する」ための鍵である。私は業務システム開発に長年携わった者として、アプリの類型がわずか8種類に収まることに気づいた。その分類基準は「処理されるテーブルのトポロジー」である。たとえば、一次テーブル中の複数レコードを一覧表示するものは「一括表示」の類型だし、親テーブル中の1レコードと子テーブル中の複数レコードを更新するものは「親子更新」である。いったんこれらの類型が揃えば、それぞれ向けに仕様情報を様式化することは難しくない。

 興味深いことに、仕様書の類型化と様式化の双方において、DOA(データ指向アプローチ)が役にたった。DOAは個別案件の開発生産性や品質を向上させるための技術と理解されているが、じつは開発基盤レベルの革新をもたらす鍵にもなっている。これは、DOAが業務システムを効果的に記述するための「ドメイン特化言語」であることの証拠のように私には思える。

 もうひとつ興味深いことに、上述したようなオブジェクト指向レベルの検討が開発基盤において完結しているため、個別案件の開発の際にクラス構造について考える必要がない。ゆえに開発者は、システム要件にもとづいてDB構造を構想することに集中できる(それだけでもじゅうぶんに難しい)。DB構造だけでなくクラス構造までも考えるやり方をとれば、ORマッピングなんて余計な課題にまでつきあう羽目にもなる。

 DB構造さえ的確に構想できれば、規定の類型にしたがってデータ処理機能を切り出してその仕様書を書けばよい。それでシステムは動作する。動きがおかしければ仕様書を直せばよい。いったんこの体制に慣れると、仕様書を眺めながらいちいちプログラミングしたりテストを書いたりしていたことが悪い冗談のように思えてくる。それらの手順が「期間限定の必要悪」でしかなかったことが、今ではよくわかる。


◆特別講演のお知らせ◆
「APSサミット2013 “グローバルに挑む日本流ものづくり”」
演題:設計するだけで生産管理システムが動作する
   ~データモデルとOSSツールの活用事例~
平成25年12月4日(水) 詳細と申し込み

|

« 「逆方向バリデーション」との付き合い方 | トップページ | 複合主キー「否定派」と「許容派」の論争 »

コメント

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 仕様書の類型化と様式化:

« 「逆方向バリデーション」との付き合い方 | トップページ | 複合主キー「否定派」と「許容派」の論争 »