2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

最近のトラックバック

無料ブログはココログ

« ダイヤグラム画面において、横罫線がある長さ以上は表示されない不具合 | トップページ | ユーザーズマニュアルを改訂しました »

2007年7月14日 (土)

OuDia開発の経緯-7
OuDiaのドメインモデリング(2005年5月18~19日)


OuDiaのドメインモデリング(2005年5月18~19日)

 

 この章では、OuDiaのプログラム開発に関するお話をしたいと思います。OuDiaのユーザー様の大部分は、ソフトウエア開発とは関わりのない鉄道ファンの方だと思いますので、そういう方々にはこの章の記事は何のことやら・・・だと思います。そういう方は読み飛ばしてくださって結構です。この記事は僕自身の記録も兼ねていますので、こういう章もあることをお許しください。


 近年では、ソフトウエアを開発するにあたっては、プログラミングにさきがけて『ドメインモデリング』という作業が行われます。
 『ドメインモデリング』の『ドメイン』は、「ソフトウエアが取り扱う世界」のことです。日本語では、『問題領域』という訳語が定着しています。ネットワーク上でコンピュータを識別する『ドメイン名』(例:"homepage2.nifty.com")とは関係がありません。
 『ドメインモデリング』は、僕も勉強不足のためかうまく説明できないんですが、「ソフトウエアが取り扱う世界の構成要素・関係・構造を分析し、文書化・図面化すること」と言えばいいでしょうか。なお、ソフトウエア開発の世界では、『ドメインモデリング』の構成要素のことを『クラス』と呼んでいます。

  OuDia では、『ドメイン』の中心になるクラスは『路線』です。そして、それを取り巻く以下のようなクラスがある、と分析しました。

  • 『路線』には、複数の『駅』が存在する。
  • 『路線』には、複数の『列車種別』が設定される。
  • 『路線』には、複数の『ダイヤ』が設定されている。
  • 『ダイヤ』には、『下り』『上り』それぞれの複数の『列車』が設定される。
  • 『列車』には、各『駅』毎に『駅時刻』が設定される。
  • 『駅時刻』には、着時刻・発時刻・駅扱{運行なし・停車・通過・経由なし のいずれか}の3つが指定される。

 今日、ソフト開発の世界では、このような構成の図面の表記法として、『UML』が広く使われています。『UML』では、『ドメイン』の世界に存在するクラスの関係・構成を『クラス図』で表します。OuDia 開発時に作成した図面は、以下のようなものでした。

 

DiagramEdit_Entity_cls01.gif 

この図面には、『OuDia』を構成するウインドウ・ダイアログ・ファイルといったものは含まれていません。『OuDia』のウインドウ・ダイアログはあくまで『ドメイン』内の『路線』・『駅』・『ダイヤ』・『列車』・『駅時刻』を編集するための窓口であり、「OuDia が取り扱う世界の構成要素」とはいえないからです。また、路線ファイルは「『ドメイン』の構成要素をファイルに記録したもの」であり、これも「OuDia が取り扱う世界の構成要素」ではないからです。

 ここでの作業は、いわば「当たり前のことを文書化・図面化している」だけにすぎません。しかし、プログラムの作成は、とても細かい作業の積み重ねのため、しばしば作業の進行方向を見失いそうになるんですね。そうなるとプログラム作成中に考えが混乱し、「自分自身が作っているものが正しいかどうか分からない」・「自分自身が作ったものを後で見ると、何のためのものか分からない」・「無駄なものを作ってしまった」という状況が発生しだします。そんなときに、『ドメインモデル』が明確にされていれば、それが開発の進行方向決定のヒントになるわけです。

« ダイヤグラム画面において、横罫線がある長さ以上は表示されない不具合 | トップページ | ユーザーズマニュアルを改訂しました »

コメント

コメントを書く

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

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/186995/15758703

この記事へのトラックバック一覧です: OuDia開発の経緯-7
OuDiaのドメインモデリング(2005年5月18~19日)
:

« ダイヤグラム画面において、横罫線がある長さ以上は表示されない不具合 | トップページ | ユーザーズマニュアルを改訂しました »