2016-05-03 10 views
0

私はハードウェアとやりとりする複雑なドメインモデルを持っています。ハードウェア以外の人間のUIや他のシステムとの相互作用は事実上ありません。ドメインモデルを持つHibernate、クライアントはありません

ドメインモデルはハードウェアを連続的に操作し、効率的に動作するようにその側面を調整します。

ドメインモデルがHibernateを使用してデータベースに作成している主要な決定事項をいくつか保存します。ドメインモデルに、「アプリケーション層」がないと仮定して、どのようにすればよいのですか。私はHibernateの知識をドメインモデルに追加することを余儀なくされましたか?この場合、ドメインモデルがHibernateと直接対話することはOKですか?

+0

あなたの入力はどこから来ましたか?誰かまたは何かによって実行された「ユースケース」またはドメインタスクが識別されていますか?どの時点でデータベースからデータを読み込みますか? – guillaume31

+0

いいえ、これは真のオブジェクト指向のリッチドメインモデルアプリケーションです。 「ユースケース」は、システムの機能を定義するためには使用されません。私が言及したドメインモデルは決定自体をします。彼らは人間によって作られていません。あなたはそこにいるはずだと言っていますか? – Jon

+0

必ずしもそうではありません。アプリケーション層は、単に入力を受け取り、これらの入力に基づいてドメインモデルオブジェクトへの呼び出しを調整します。処理の最後に、オブジェクトをDBに保存し直します。問題の詳細な説明は、システムがそのモデルに該当するかどうかを示すのに役立ちます。 – guillaume31

答えて

0

私はアプリケーションコンポーネントを持っていて、ハードウェアとドメインモデルの間に座っていると思います。

さまざまなシナリオで自動化されたテストを作成する方法を検討することによって、おそらくどこに縫い目があるのか​​把握できます。つまり、ハードウェアをシミュレートする場合、どのビットを保持し、どのビットをスタブアウト/置き換えますか?

はおそらく、(実際には、実際にコントローラにコマンドを送信して、ハードウェアを聴く)

Given (these previous observations) 
When (this observation happens) 
Then (the domain model decides the right thing) 

「他のもの」のようになりますアプリケーションコンポーネントである可能性があり、テストを書きたいと思います。これで、Hibernateとのインターフェースが期待されます。

+0

ソフトウェアにはアプリケーションの「レイヤー」が必要ですか? 1つではありません。ハードウェアを模擬してテストを書くことができます。しかし、これはインテリジェントなドメインモデルによって行われた決定をデータベースに保存することに関する質問でしたか? – Jon

関連する問題