モデルの一般化のアイデア

モデルの一般化をどこですれば良いか、
クラス図などを眺めながら発見的に見つけたり、パターンを適用したりいろいろ考えられる。しかし、エンドユーザとの会話をしながらこのようなことは難しいかもしれない。そこでユーザとの会話で利用する台帳レベルでできないかふと思いついた。そこで、ハンバーガショップの商品台帳の項目を試しに一般化して考えてみる。元の台帳はこんなものである。

まずは、サイズのバリエーションをなくすために、サイズがないものは「なし」にする。次に構成アイテムはセット商品だけでなく付属品も含めて商品もアイテムを全て扱うものとして位置づける。さらに空の場合も認めるようにすることで、以下のようになる。

当たり前のような感じも受けるが、台帳の項目を一般化していることになる。ここで、複数の意味を単に合成するのではなく一般化することがポイントになると考えている。

これを元に分析モデルを作成した。ついでにお買い上げも一般化して合わせて1つにしてみた。

純化した物理ERはこんな感じ。だいぶシンプルになったな。

もう少しいろいろなバリエーションで試してみる必要があるが、台帳作成時に意図的に揺さぶりをかけながら項目の一般化を行うアイデアは使えるかも。