Re: [请益] Domain-driven design 推荐书

楼主: gnimnek168 (Gnimnek168)   2018-06-12 15:48:36
参考下个人于 10年前所介绍的一本书:Object Models — Strategies, Patterns, and Applications
http://www.kenming.idv.tw/ithome_a_cec_a_12_object_models_a_strate/
其中所揭露的 Transaction Pattern,即为跨 Domain-nature 非常受用的分析技术,借此得以捕捉系统的主结构。
底下是原个人的书评心得介绍。
一、直指企业核心的本质—交易样式:
本书主要的作者为 Peter Coad,最早研究所教科用书,有许多就是采用他的著作:“
Object Oriented Analysis、Design ”两本经典 OO 著作;不过软件人员对他仍很陌生
,那么说出 Borland Together,就会恍然大悟,原来就是他创立的公司研发的主力产品
(后被 Borland 花了两亿美金并购)。
先让读者了解一下,结构分析主要就是抓各领域的稳定元素来建构软件系统,而那往往就
是常在沟通的概念术语 (concept terminology)。在设计阶段一般是以 UML 类别图
(class diagram) 来呈现,而具体化在应用系统中的就是所谓的企业物件 (business
object);与在数据库的表格 (table)。两者的差别主要在于企业物件尚需分析各个物件
所应负担的责任 (在程式语言则称之为 方法, method)。分析领域物件与明确分派物件的
责任,正是影响软件结构弹性度的主要关键。
有别于绝大部分 SA/SD 是透过需求访谈记录一个一个的抓“名词”,虽然是行之有年,
但那实在不是一种好方法,所抓出来的类别往往见树不见林,无法有效的将相关的类别关
连于一起。 Peter Coad 是直接直指领域核心,观察企业行为的本质源自于交易。交易为
商业利益交换的一种契约 (contract),是一种非常必要保存的事件 (event)记录,再由
此为中心,来串连其它相关类别包括 参与者 (actor),地点 (place),物品 (item),以
及所包含的交易细项 (line-item) 等。这种先抓主干,再抓枝叶的方式,正是相当著名
由 Peter Coad 所揭露的 “交易样式 (transaction pattern)”。
以最常见的订购系统来说好了,“订购(order)”就是核心的交易类别,再由其串连出来
,就可以找出“订购细项(transaction lineitem)”、“客户(actor)”、“订购地点
(place)”、“商品项目(item)”等;再转分析另一个领域如保险业,“保险”绝对是一
个显而易见的交易类别,而“对保”则是与之有相关连后续的交易类别 (subsequent
transaction class);好啦,如果是要分析一个运动彩券投注系统,要你马上抓出第一个
类别,应该就知道该怎么抓吧? (投注, 派彩 均为该领域的核心类别)
二、不同层次,传不同层次的法:
我是从 amazon 购买 a4-size 的硬本精装版,本书可是有着四颗半星的高评价,读者对
之推崇甚高。封面为乐高玩具,甚是有趣,看起来其隐喻应该是意指软件的结构组成,就
如同乐高积木般,一个个地给聚合组装起来的。共有七个章节,前五章均为各自独立的案
例分析,后两章为策略与样式的整理列表。印刷很不错,字体大小恰当且清晰,也有很丰
富有趣的插图。不过内容可是相当艰深,没有充分的抽象与想像力,是不容易理解的。独
立阅读本书可说是非常吃力,我是建议能有几位同好们一起研读,甚至以角色扮演的方式
,来思考所抓出来的类别,以及所赋予其责任的合理性与正确性。
本书的类别表示法均是采用作者自创的语法 (Coad Notation),它可说是自成一格,例如
多重性(multiplicity)就刚好是与 UML 类别图的表示法完全相反,所以一定要先阅读附
录的语法说明。再则从每个案例研讨的过程当中,作者总是会列出他在某个分析阶段时所
使用的策略或样式,并将之编号整理在后两个章节。这个相当的有参考价值,但不要直接
就是翻阅这些策略与样式列表,那可是相当的枯燥乏味,最好就是配合著这些案例的过程
说明,久而久之,你阅读起来才会习惯也比较能有感觉。
谁需要阅读本书呢? 我是觉得想立志当个真正的“软件人”是必备的。要知道,软件设
计大概可以分为三个层次;1.把系统“做”出来;2.让系统效能好一些;3.让系统更有弹
性,来顺应变化。 第一个只要有不错的实作能力,以及功能需求的分析能力即可;第二
个则需要有对平台的专业知识能力,能充分发挥系统的效能特性;第三个那可真的需要对
软件的“道”有着长期持续的信仰与热情方可。我是以为,若能进入到第三个层次,修练
该层次所传授的法,那绝对会是一种无以言语的喜乐。不过,现今国内软件产业重视速食
文化,大约只要求在前两个层次,第三个层次,旷时废日,不太容易短时间内有着显著的
实质回馈,因而坚持者甚少,殊为可惜。
※ 引述《VisualStudio (2017)》之铭言:
: 各位前辈好,
: 小弟最近在工作上接触到
: “Domain-driven design 领域驱动设计”的概念方法,
: 有在网络上看了些介绍文章,
: 也有找到满多相关书籍,很多是英文书,
: 想请问大家有没有哪一本书比较推荐呢?
: 或平常有使用到领域驱动设计吗?
: https://i.imgur.com/CNvs61A.png
作者: VisualStudio (2015)   2018-06-14 19:51:00
感谢前辈分享

Links booklink

Contact Us: admin [ a t ] ucptt.com