2012年11月4日日曜日

Domain-Driven Design の暗記事項(1)

この際、DDD本の見返しの、パターン関連図を暗記してしまおうと思う。

丸暗記ってそれ自体が批判される事が多いけど、広さ方向の知識に関しては暗記は有効だと自分は思う。もちろん深さ方向の知識のための、精読と実践も並行するのが前提だけど、両方やってく事で、知識の量が上手く増えていくと思うんだな。

つうわけで、2・3年前に JavaScript で書いた暗記用のツールを再利用してみた。問題データを<div>で書いて、これを JavaScript で読み込んでアプレット風のものに表示するようにしている。JavaScript 自体よりBlogger に組み込むのがちょっと苦心した覚えがある。

ちなみにIEについては、6で動かず、7以上でも色設定が想定通りにならないが、気にしないことにした。

DDD のパターン同士の関連を覚えてみる
{ "height":200, "width":400, "opacity":0.9, "start-color":"#000000", "start-bg-color":"#FEFFFE", "question-color":"#002200", "question-bg-color":"#FEFFFE", "statusbar-bg-color":"#FEFFFE", "statusbar-color":"#000000", "last-bg-color":"#FEFFFE", "last-color":"#002200", "answer-color":"#0044AA", "answer-bg-color":"#FEFFFE", "button-color":"#FEFFFE", "caption":"DDD のパターン同士の関連を覚えてみる", "caption-color":"#CCEEFF", }
*(1)* reduce cost of change with Conceptual Contours
Model-Driven Design
*(1)* simplify interpretation with Standalone Classes
Model-Driven Design
*(1)* express model through Intention-Revealing Interfaces
Model-Driven Design
*(1)* isolate domain with Layered Architecture
Model-Driven Design
*(1)* express model as Modules
Model-Driven Design
*(1)* express model as Entities
Model-Driven Design
*(1)* express model as Value Objects
Model-Driven Design
*(1)* express model as Services
Model-Driven Design
*(1)* model out loud Model-Driven Design
Ubiquitous Language
*(1)* make composition safe Assertions
Side-Effect-Free Functions
*(1)* make side effects explict with Assertions
Intention-Revealing Interfaces
*(1)* make safe and simple Side-Effect-Free Functions
Intention-Revealing Interfaces
*(5)* names enter Ubiquitous Language
Services
Value Objects
Entities
Modules
Bounded Context
*(2)* encapsulate with Factories
Value Objects
Aggregates
*(2)* encapsulate with Aggregates
Value Objects
Entities
*(1)* maintain integrity with Aggregates
Entities
*(2)* access with Repositories
Entities
Aggregates
*(2)* distill to Declarative Style
Generic Subdomains
Segregated Core
*(1)* point the way with Domain Vision Statement
Core Domain
*(1)* unencumber from Generic Subdomains
Core Domain
*(1)* repackage into Segregated Core
Core Domain
*(1)* emphasize in Ubiquitous Language
Core Domain
*(1)* relate disparate parts with Context Map
Core Domain
*(1)* concepts enter Core Domain
Evolving Order
*(1)* structure carried in Ubiquitous Language
Evolving Order
*(1)* keep unified by Continuous Integration
Bounded Context
*(2)* structure through Evolving Order
Context Map
Core Domain
Model-Driven Design reduce cost of change with *(1)*
Conceptual Contours
Model-Driven Design simplify interpretation with *(1)*
Standalone Classes
Model-Driven Design express model through *(1)*
Intention-Revealing Interfaces
Model-Driven Design isolate domain with *(1)*
Layered Architecture
Model-Driven Design express model as *(4)*
Modules
Entities
Value Objects
Services
Ubiquitous Language model out loud *(1)*
Model-Driven Design
Side-Effect-Free Functions make composition safe *(1)*
Assertions
Intention-Revealing Interfaces make side effects explict with *(1)*
Assertions
Intention-Revealing Interfaces make safe and simple *(1)*
Side-Effect-Free Functions
Services names enter *(1)*
Ubiquitous Language
Value Objects names enter *(1)*
Ubiquitous Language
Value Objects encapsulate with *(2)*
Factories
Aggregates
Entities names enter *(1)*
Ubiquitous Language
Entities encapsulate with *(1)*
Aggregates
Entities maintain integrity with *(1)*
Aggregates
Entities access with *(1)*
Repositories
Modules names enter *(1)*
Ubiquitous Language
Aggregates encapsulate with *(1)*
Factories
Aggregates access with *(1)*
Repositories
Generic Subdomains distill to *(1)*
Declarative Style
Segregated Core distill to *(1)*
Declarative Style
Core Domain point the way with *(1)*
Domain Vision Statement
Core Domain unencumber from *(1)*
Generic Subdomains
Core Domain repackage into *(1)*
Segregated Core
Core Domain emphasize in *(1)*
Ubiquitous Language
Core Domain relate disparate parts with *(1)*
Context Map
Core Domain structure through *(1)*
Evolving Order
Evolving Order concepts enter *(1)*
Core Domain
Evolving Order structure carried in *(1)*
Ubiquitous Language
Bounded Context names enter *(1)*
Ubiquitous Language
Bounded Context keep unified by *(1)*
Continuous Integration
Context Map structure through *(1)*
Evolving Order

覚えたら問題をもっと増やしていこうと思う。