Page 25 - 《软件学报》2021年第9期
P. 25

贾子甲  等:领域驱动设计模式的收益与挑战:系统综述                                                       2649


                                         Table 6  Data extraction items
                                              表 6   数据抽取项
             ID               数据抽取项                  是否提供代码                 解释说明
                                                  基础信息
             D1                 标题                       否                 文献的标题
             D2                作者列表                      否                文献作者的列表
             D3                发表时间                      否              文献正式发表的年月
             D4                 发表源                      否           文献发表的期刊或者会议信息
                                                  研究背景
             D5                研究形式                      是          研究主要采用的形式,如案例研究
             D6                贡献类型                      是        研究所作贡献的类型,如提出解决方案
             D7                研究问题                      否            指导其工作开展的研究问题
                                               研究问题相关信息
             D8           DDDP 的应用情况(RQ1)                否       研究中 DDDP 应用实践情况,包括模式列表
                 所讨论的 DDDP 详细数据(包含 a~g 子数据抽取项)           −                     −
                 a.  模式名称                                是              该特定 DDDP 的名称
                 b.  模式特征                                否           区别于其他 DDDP 的典型特征
                 c.  模式意图                                否             该 DDDP 被引入的目的
             D9
                 d.  范例用法                                否         该 DDDP 的使用建议或者范例用法
                 e.  收益(RQ2)                             否            应用该 DDDP 的实际价值
                 f.  挑战(RQ3)                             否        应用该 DDDP 所需要面对的问题和挑战
                 g.  缓解方法(RQ3)                           否          应对相应挑战的技巧或解决方案

         2.3.2   数据合成方法
             为了深入了解 DDDP,本研究的数据抽取过程产生了大量的定性数据.此外,在 DDDP 相关的基础研究中,同
         一个词语在不同的上下文中可能具有不同的含义,比如“服务(service)”可能表示一种 DDDP,但也可能表示软件
         工程中非常普遍的“Web 服务”         [25] ,这为数据合成造成了一定阻碍.因此,本研究需要使用一种合适的定性数据合
         成方法,来保证能够合成出语义合适的结果.
             本研究在进行定性数据合成的过程中,使用了来源于扎根理论(grounded theory)                   [26] 的两个抽象层次的编码
         方法,即开放码(open codes)和轴向码(axial codes)   [27] .本研究所使用的编码方法是 Braun 和 Clarke    [28] 提出的主题
         分析(thematic analysis),我们利用该方法获得了各种定性数据(见表 6)的聚合结果.
             这里简单介绍数据合成过程的一些细节.在熟悉了基础研究文献之后,两位作者分别对提取到的原始文本
         进行开放编码,即识别文本的语义内容和隐含内容,并将其与原始数据一起记录下来.例如,示例抽取数据的开
         放编码结果是“更好地理解领域需求”和“更有效的沟通”.当所有的数据集都完成了初始编码后,我们对不同的
         代码进行分析和比较,并将它们组合成主题.例如,开放编码“更好地理解领域需求”被整理成主题“促进业务理
         解”.之后,我们进一步对于候选主题进行了细化,比如因为证据不足而放弃了某些开放编码.在这个过程中,
         NVivo 被用来管理编码和主题之间的层次结构.此外,考虑到这一过程极大地依赖于经验和感知,在执行这一阶
         段工作之前,所有数据分析和合成的参与者都被要求仔细研读 DDD 相关的主流著作                            [1,3,4,20,29] .
         3    研究结果

             领域驱动设计模式的应用最终表现在一系列相关活动中,因此,本研究识别出了应用 DDDP 的相关活动,并
         以此为基础来组织应用 DDDP 所带来的收益与挑战.如图 2 所示,根据基础研究                       [30] ,应用 DDDP 的相关活动主要
         分为 4 类,即领域分析(domain analysis)、领域设计(domain design)、领域模型实现(domain model implementation)
         和普适性活动(umbrella activity),由此组成了 DDDP 应用框架,并且上述这些活动与 Bruegge 和 Dutoit            [31] 所描述
         的传统软件开发活动,即需求获取和分析、设计和实现及测试相对应.
             对于 DDDP 应用框架的进一步说明如下.
             •   领域分析是指与领域专家一起探索领域知识的过程.经过领域分析,将得到初始的领域模型;
             •   领域设计是指将模型分成不同部分(每个部分对应着独立的限界上下文),然后扩展和细化每个限界上
   20   21   22   23   24   25   26   27   28   29   30