在James O.Coplien的著作《Multi-Paradigm Design For C++》中,给出了公共点(Commonality)和差异点(Variability)分析方法(以下简称CV分析)。
CV分析主要分成C和V分析2部分。
C分析主要关注:
1) 业务抽象。要摒弃掉相关细节,关注于事物本质。
2) 领域词典的获取。领域词典要全面,细致。可以通过问以下重要问题获得:
l 定义是不是清楚?团队(客户、架构、用户)对概念是不是有共同的认识?
l 定义是否都被用到?术语是否符合预期的应用领域?
l 所有需要的条目都被定义了吗?
l 定义与需求文档中出现的定义是否一致?
3) 采用结构、名字和行为、算法进行C的维度分析
名字族又分为:
l 标示符:context中的唯一的名字
l 签名:函数
l 类型:签名集
4) C的重要点:完整、精确、准确、一致
C可以通过两种手段获得:
1) 历史经验或者直觉
2) 分析
V分析主要关注:
1) V分析要建立在C分析的基础上
2) 积极差异(不改变共同性的前提)和消极差异(打破共同性假设)
3) V的要点:完整、精确、一致、可否较好预测变化、排除了哪些族成员
CV分析是一个反复的迭代过程。
领域分析一般分为三个步骤:识别业务领域、分解为子领域和子领域抽象。
面向对象分析:行为优先、用例驱动
绑定时间是一个关键因素。面向对象的差异性是在运行时绑定的。推迟绑定时间是平衡语义共同性和行为差异性的关键。
多范型分析的步骤如下:
1、 将问题分解为由直觉得到的子领域
2、 可否复用以前的设计?
3、 分析每个应用子领域
4、 分析方案领域
5、 使用领域分析映射到可用的方案领域分析
6、 设计DSL
如何判断一个子领域划分是否合理呢?有以下几个标准:
1) 子领域应该是内聚而解耦的。
2) 有些领域自身可以销售
3) 领域之间尽可能少地交叠,并尽可能少地相互干扰

被折叠的 条评论
为什么被折叠?



