mike-neckのブログ

Java or Groovy or Swift or Golang

セキュア・バイ・デザイン 3章前半

読書メモ、対象がでかいし、ダラダラ読んでたのであまりまとまってない


全般的にいわゆる DDD 本(エリック・エヴァンスの本)のエッセンスが提示されている章。議論はそれなりに花が咲きそうだけど、結論はエヴァンス本読めになりそう。以下は個人的におっと思った部分のみピックアップしている

3.1.1 対象のドメインを簡素化したモデル

モデルは現実の簡素化です。 …ここで言うモデルとは、特定の表現方法のことではないのです。モデルとは、その対象となる現実の中で何が本質だと考えているのか…、ということを捉えた結果なのです。(p.80)

モデルと言うと何らかの図で何かを表現したものと考えていたが、そうではなく、現実から何かを捨て現在の課題にとって重要なものが何であるかを選別する行為であると読める。もしかしたら、ここは原文では modeling になっているかもしれないと思った。

3.1.2 モデルの厳格さ

ドメイン・モデルは豊富な情報を失う代わりに、厳格さ、ふるまいの明確さを得る。

システム開発において、そのシステムのユーザーとなる人に目を向けることは明らかに重要なことです。そして、そのシステムはユーザーとなる人が慣れ親しんだドメインを認識できるように…常に使っている言葉をシステムで使うように選択しなければなりません。(p.84)

ユビキタス言語の重要性

開発者にとって、結果としてすべきことはコードを書くことです。…コンピューターに対して受け取ったデータをもとに定義したルールに従って処理を行うように指示するものなのです。まさに、このことが、システム開発において厳格さが求められる理由なのです。

アプリケーションの開発者が行うのはコードを書くことなので、コンピューターを厳密に動かすためにモデルには厳格さが求められる。

厳格さは下記のように導かれる

  • ドメイン・エキスパートとの会話から導出
  • 開発者地震が今までの経験を元に推測する

3.1.3 深い理解を捉えたモデル

自転車に乗るロボットを作るのであれば、自転車に乗ることに関してほとんどのエキスパート…が有する知識よりも深い知識を持っていることが求められます。(p.88)

開発者がドメイン・エキスパートの頭の中を覗けたとしても、そこにはそのまますぐに使えるモデルが見つからない…ドメイン・エキスパートの中には真のモデルがないのです。…最高のドメイン・モデルを作り上げるためには、開発者とドメイン・エキスパートとの共同作業が必要不可欠であり、そのことを時間を掛けて何度も繰り返し行うことでモデルを進化させていきます。(p.89)

3.1.4 モデルの作成はモデルの選択を意味する

モデルを作成するには、多くの可能性のあるモデルの中から意思を持って選択していき、その中で、開発するシステムに対して要求されることにもっとも適したモデルを選択しなければなりません。つまり、モデルの目的を定義するのです。(p.90)

ここまでのまとめ