引子:
今晚跟朋友討論DDD(領域驅動設計),說到如何分析業務、設計方案的事情,大家對於分析與設計的關系有點搞不清,DDD到底是分析,還是設計,談了很久的DDD,還是搞不清楚該怎么分析,怎么設計。我覺得在設計之前一定要搞清楚前一個問題,即什么是分析,什么是設計。
“業務分析”之寶寶哭了:
以領域的思維來分析問題,以分析的結果來驅動設計
----這是我理解的DDD(領域驅動設計)。
比如,嬰兒哭了,這個是問題,客戶拿着這個問題,來請你分析。
角色領域視角分析:
角色 | 領域視角 | 分析 | 設計 |
---|---|---|---|
媽媽 | 育兒領域 |
如果你是有經驗的媽媽(育兒領域專家),根據寶寶的哭聲洪亮 ,吸吮手指,你的分析是寶寶可能餓了。 |
於是你腦袋里面開始設計:喂奶?喂奶粉?米粉?。。。。 最終,你決定直接母乳。 在你最終采取行動之前的過程,是設計的過程,設計一種喂養方案。 |
爸爸 | 育兒領域 | 如果你是嬰兒的爸爸(嬰兒問題的另一種領域專家),你開始分析:是不是生氣了?沒有陪他玩?。。。。
|
於是你開始設計:我該用哪種玩具來哄他玩?小鈴鐺?風車?變形金剛?。。。。 最后,你拿了一個風車過來。 |
兒科醫生 | 醫學領域 |
如果你是醫生(嬰兒問題的另一個領域專家了),你開始分析:這孩子是不是消化不良?或者其它疾病? 先去做個檢查 ,根據檢查結果再進一步分析確診。 |
於是你開始設計嬰兒的檢查方案:查體溫、超聲波檢查、核磁。。。。。 最終你決定,查查體溫即可。這就是你對嬰兒哭鬧問題的設計方案。
|
領域分析的缺陷:
由上面的例子可見,我們對同樣一個問題,以不同領域專家的視覺,會得到不同的分析結果。
到底哪種分析是正確的?
這,就是領域事先不能評判的。所以這是領域分析的短板。
但是將問題放到歷史的時間軸去觀察,我們很快就能夠發現哪種領域分析是最可靠的,同時結合場景,就能夠做出正確的判斷。
場景角色分析法:
比如,在睡覺的場景,嬰兒突然哭鬧,那找媽媽這個領域專家即可解決,孩子可能做噩夢了,媽媽抱抱即可;
在玩耍場景,嬰兒突然哭鬧,那找爸爸這個領域專家即可解決。
而結合歷史情況,嬰兒有愛哭鬧的習慣,嬰兒身體體質不好....
那么同一個場景下可能又該使用不同的領域視覺去分析解決問題。而從分利用這個分析方式,就能夠設計出滿意的解決方案:
業務分析三維度理論:
所以,離開場景談領域,離開時間談領域,都是不合適的,領域都沒有找對,那么分析就算是有道理,但也無助於解決問題。 而具體會采用哪種領域視角,又跟場景中的角色有關。 不同的角色總有不同的領域思維。
因此我們發現,僅僅依靠領域的思維來分析解決問題,有很大的局限性。
所以我們可以總結出,采用 場景+角色+時間 這三個緯度的問題分析方式,才是最合適的方式。
注:本文的圖片均來自網絡,如果侵權請和我聯系。
本文理論屬於原創,歡迎轉載,轉載請注明出處。
相關鏈接:
春節前最后一篇,CRUD碼農專用福利:PDF.NET之SOD Version 5.1.0 開源發布(兼更名)