XEAD Driverをハッキング(2010年DOA学習のまとめ)

1.渡辺幸三さんの著書、「業務システムのための上流工程入門」でDOAの重要性を認識する。
 DOA+コンソーシアムの活動資料、DOAの師匠の方々を知り、芋づるのようにDOA本を購入。
 椿正明氏、佐藤正美氏、真野正氏、...

2.2010-03-26に開催された、XEAD Driverの発表会に参加、渡辺さんにお会いし、
  発表会終了後の懇親会で飲む。

3. 2010-06-21〜22に開催された、DBC・渡辺さんの「上流工程入門セミナー」に参加。

4.自分のシステムをXEAD Modelerで、リバースエンジニアリングしてみる。

5.「門前の小僧習わぬ経を読む」気分で、現状のシステムをDOAででっち上げて設計しなおしてみる。
 最初は不整合なモデルだが、繰り返し反芻する中で、自分の中ではDOAらしくなってくる。
 概ね、形になったら、可能なら師匠にみてもらう方がよいです。
 自分が勘違いしている部分が修正できます。
  (身近な達人に相談してみたり、関西IT勉強宴会「技術話中心の飲み会」に参加してください。)

6.渡辺さんの三要素分析法は、渡辺流に昇華されたモデリングなので、
  自分が理解するためには他のモデリングの手法での補間が必要だった。
 渡辺流の特徴、トップダウンで設計、帳票は見ないと言い切っているくらいだ。
 自分のような、いわゆるPOAで実装の積み上げでシステムを作っているような
  ボトムアップ手法しか持たない者にとっては、
  ユーザーから依頼された帳票を効率よく登録、一覧、参照するような、
  システム概念しかないので、いきなりトップダウンのみは辛い。

 HatさんにDOAの1日レクチャーをお願いし、DOAの師匠それぞれの考え方や手法を解説して頂いた。
 また、Hatさんに紹介された真野正さんの著書「実践的データモデリング入門」、
 「独習データベース設計」を読み、トップダウンボトムアップの突合せを理解することで、
  DOAを理解しかけた様に感じた。

 モデリングの肝は、システムを関数従属性の塊として構築、
 とくに参照関係の賢い利用が重要なんだと理解した。

 関西IT勉強宴会で声をかけてくださった、
  有限会社ディーズコーポレーションの藤田さんにも相談に乗っていただき問題点の整理が出来ました。
  お忙しい中お付き合いいただき感謝しています。

 これまでの自分のシステムは、「業務システムのための上流工程入門」で挙げられている
  親子関係頻出のアンチパターンであった。
 関数従属性を利用しているのは、識別子と属性の関係性だけで、
  それ以上は属性に区分1、区分2、区分3、・・・を用意し
 コード側で処理を分岐していた。しかしこの方法は、仕様変更があると「苦行」を強いられ、
  最悪は破綻して、作り直さざるを得ない。
 (苦しいアジャイルとでもいえそうな...)

7. 渡辺幸三著「業務システムモデリング練習帳」を読むだけでなく、実際に演習してみる。
  家計簿システムは、基幹業務の帳簿組織の基礎理解に大変役に立ちます。
 
8.自分のシステムに渡辺式、3要素分析法を取り込もうとしても拒否反応をおこされうまくなじまない。

9.どこに問題があるのか考える。
 自分のシステムをベースに、渡辺式モデリングを組み込むのではなく。
  自分のシステムを渡辺式プラットフォームに乗せることが、
  CONCEPTWAREを利用する方法だとひらめく。
 公開されているCONCEPTWAREを参照するとベースになる部分はほとんど共通。
 この設計情報をもとに、自分のシステムの共通プラットフォームを用意する必要がある。
 (トップダウンで設計するには、設計を受容する基礎プラットフォームを用意する必要がある。)

10.渡辺式の実装環境が必要だ。
 自分でスクラッチから書くのか?(時間掛かりそう...)、
 恵まれたことにXEAD Driverという実装環境が提供されていた。
  XEAD Driverは渡辺幸三著「販売管理システムで学ぶモデリング講座」の設計を
  アプリケーションドライバにしたものである。
 「販売管理システムで学ぶモデリング講座」は、実際のコーディングに役立つよう、
  丁寧に解説されている、販売管理システムの実装仕様書そのものである。


11.兎にも角にも、DOA、CONCEPTWAREの設計に基づいて、
  実際に動作するデータベースがあることはありがたい。
 XEAD Driverは、シングルレコード、マルチレコード、
  見出し明細レコードの業務に必須なパネルのCRUD処理、ユーザー管理、セッション管理、
  印刷、組織変更、業務に必要とされるフレームワークが提供されている。
 CONCEPTWAREV/販売管理、SalesOrosi.xeadの実装環境であり、
  現在ベータ版だが、単なるデモサンプルではなく、充分業務に利用できそうだ。


※V0.R7.M15で動作確認、2011-02-06リリースV0.R7.M16では以下の方法では、動かなくなりました。

12.XEAD Driverのデータベース上に自分のシステムを実装する。
 XEAD Driverのデータベースは、Apache Derbyだが、
  自分の環境ではPostgreSQLが利用したいので、データベースの移行を行った。

 1)Apache Derbyの全テーブルのCreate文を作成し、PostgreSQLで受け付けない型を置換
  INTEGER(10) → INTEGER
  SMALLINT(5) → SMALLINT
  ZT051のTXERRORLOG LONG VARCHAR(32700)  → TEXT
  2)置換されたCreate文でテーブルを作成。
  3)Apache Derbyの全テーブルのデータをInsert文で作成し、PostgreSQLで走らせる。
  これで、一応テーブルは移行できている。
  4)JDBCドライバのpostgresql-8.4-701.jdbc4.jarをC:\Program Files\Xead\Driverへ
   postgresql-8.4-701.jdbc4.jarをderbyclient.jarにリネームする。
  (XEAD Editorでファイルパスの指定が出来ないので、無理やり名前を変えて置き換えた。)
 

  5)C:\Program Files\Xead\Driver\Sample\SalesOrosi.xeafをXMLエディタで変更する。
   DatabaseNameをjdbc:postgresql://localhost:5432/SalesOrosi に変更
   DatabasePasswordをhogehogeに変更  <- 自分のパスワードにしてね。
   DatabaseUserをpostgresに変更
 
13.XEAD Editorを起動、設計とデータベースの同期が取れていないとの表示で、
  ツリーのテーブル等に赤い×がでるが無視して「システム起動」
 XEAD Driverが起動し、ログインダイヤログにログインすれば、
  PostgreSQLに対して読み書き可能になっています。

  
14.XEAD Driverを「Microsoft Access」でリファクタリング。
 移行したPostgreSQLデータベースを基礎に、最初の実装は、使い慣れたACCESS VBAで作成する。
 基礎プラットフォームとなるログイン、セッション管理、ユーザ区分定義の部分を実装。
 XEAD Driver サンプルシステムは、SalesOrosi.xeafファイルのxml情報を元に動作しているので、
  ACCESSにおいても、SalesOrosi.xeaf参照利用する。

Accessリファクタリングした画面


15.DOAを研究してこられた、多くの方々の資料とDOAの達人の皆様に、
 直接交流する機会に恵まれたおかげで短期間で実装までたどり着けたように思います。

渡辺さん、hatさん、藤田さん、関西IT勉強宴会の皆様。今年は大変お世話になりました。
今後ともよろしくお願いいたします。