見出し画像

109. 意味的に正しいモデルを作成する

前回の記事                        次回の記事

はじめに

前回は、もともと諸々の事柄が非同期でふるまっている実世界を適切に記述するための状態モデルを紹介しました。
しかし、概念ドメインに対するアクション(ドメインオペレーション)群に対して指摘した問題点は、アクションが状態モデルに変わっただけで、解決されていませんでした。今回は、それを解決する方法について考えてみます。

解決できていない問題と解決策

問題点

対象者を登録するアクションが複数同時並行的に起動したときに、概念情報モデルで定義された一意の識別子の制約が破られてしまう可能性がある、

SELECT ANY lgd FROM INSTANCES OF HC_LGD
 WHERE SELECTED.部局名 == param.部局名 AND SELECTED.所在地 == param.所在地 ;
IF NOT_EMPTY lgd
	CREATE OBJECT INSTANCE utgt OF HC_UTGT ;
	CREATE OBJECT INSTANCE t OF HC_T ;
	RELATE utgt TO t ACROSS R1 ;
	t.管理番号 = param.管理番号 ;
	t.氏名 = param.氏名 ;
	t.住所 = param.住所 ;
	t.電話番号 = param.電話番号 ;
	t.生年月日 = param.生年月日 ;
END IF;

と、問題点を指摘しましたが、”対象者”の状態モデル

”対象者”の状態モデル

においても、”HC_T1:登録”というイベントが同時並行的に発生してしまった場合、結局は重複して登録されてしまうことを防ぐことができません。

そんな IT システムが出来上がって導入されてしまっている不幸な場合なら運用でカバーってことになるのでしょうが、概念モデリングは、何をしたいのか、その意味の場を通じて見渡した現実世界を正確に記述することを目的としているので、完全にNGです。

解決策

これは要するに、ドメインオペレーションも、状態モデルにしても、前者の場合はその重複起動、後者の場合は重複イベント発生が許されているモデルに問題があるということで、結局は、ある一つの事柄が対象者の登録管理を行うという状況にしなければならない、ということです。
漫然と、こんな感じと考えた業務の流れ(ビジネスモデル)が、概念モデリングを行ったら、見落としていた問題点が発見されて、その解決策を考えたということと同義です。

ここから先は

2,481字 / 5画像

2022年3月にマイクロソフトの中の人から外の人になった Embedded D. George が、現時点で持っている知識に加えて、頻繁に…

この記事が気に入ったらチップで応援してみませんか?