原文分析法(Textual Analysis),是在用例说明与流程分析的基础上进行的业务领域分析,是一项在需求研讨会后整理和分析需求的工作。当我们完成了用例图的绘制,为每个用例编写出用例说明以后,原文分析的工作就可以开始了。要讲解原文分析,我们还是用一个实例更简单明了:

这是一个实际项目的用例说明。在进行原文分析的时候,我们首先要做的事情就是对用例说明中事件流部分的文字描述,提取其中的名词。在这个实例中都有些什么名词呢?这些名词我在用例中用蓝色标注了出来,经过整理就是这些:触发器、考核指标(简称指标)、执法行为、指标定义、过错标准(过错判断标准)、过错行为、考核结果、年度、月份、机关、分子数、分母数、过错数、正确率。

领域模型中的实体,往往就在我们通过原文分析提取出来的这些名词中,但需要我们进行进一步分析。并不是所有名词都可以成为实体,那么哪些可以呢,而哪些又不能呢?首先,系统外的参与者不能。系统外的参与者是触发本系统某个事件的人或者物,但它本身存在于系统之外,比如用户使用鼠标点击了一个按钮,而领域模型是描述系统之内的事物,因此系统外的参与者应当被排除。本例中的触发器就是系统外的参与者(参见《功能角色分析与用例图》),它应当被排除。

其次,系统之内的事物转化到领域模型中,可能会变成两种东西:实体与实体中的属性。什么变成实体而什么变成实体中的属性呢?自身有自己的属性,可以成为系统中行为的执行者或施与者的,才是实体。比如考核指标就是实体,因为它有它的考核标准、过错行为、分子数、分母数、过错数、正确率等属性,它在系统中会去执行考核,所以是实体;分子数是不是实体呢?它仅仅是一个数据,没有自己的属性和方法。另一个判断是实体还是属性的方法就是判断它将如何持久化。如果一个事物被持久化到数据库中时是一个表,则是一个实体;如果仅仅是表中的一个字段,则是一个属性。

然而,是实体还是属性并不是那么绝对,关键看系统对这个事物进行怎样的处理。比如过错标准是一个实体还是一个属性呢?如果我们在系统中仅仅是一个文字描述则是考核指标中的一个属性,如果需要对它进行分解,有它的判断公式,需要让它去执行判断,则应当是一个实体。在需求分析的初期,可以先将其设计成一个属性,待日后的细化阶段再进行调整。

另外一个非常重要、值得我们着重关注的地方是名词的多义性。在本例中,我们考察一下“过错行为”这个名词。“一种过错行为”与“一个过错行为”显然不是一个概念。“一种过错行为”代表的是一种类型,有它的过错定义与判断标准;“一个过错行为”则代表的是一个实例,一个执法行为中的某个错误的行为。正因为它们概念上的差异,我们在领域模型中将其分为“过错类型”与“过错行为”。

经过一番分析,我们绘制出了一个基本的领域模型。毫无疑问,这个领域模型使用的是一个类图,实体在图中就是一个个的类。同时,我们将各个类之间的关系标注出来:一对一、一对多、多对多、聚集、组合、继承,等等。为了提高模型的可读性,我们在必要时可以标注关系的名称。如考核指标与执法行为之间是类型与实例的关系,等等。

现在,让我们重新回到原文分析。这次要分析的不是用例说明中的名词,而是动词,在本例中我用红色标注出来。最后,我们整理出这些动词:触发、执行考核、预警、采集、判断、是过错、是正确、打分、统计。

对用例说明中的动词分析,是为了定义各个实体之间的各种行为。同样,并不是所有动词都是实体的行为。参与者的行为显然不是实体的行为,应该被排除掉,如:实例中的“触发”。还有一些动词是某个行为的一个细节,如:“是过错”、“是正确”,被合并到“过错判断”中。最后,将行为添加到行为的执行者中。最后绘制出这样一个领域模型:

领域模型有别于后期的分析模型,其中最关键的就是目的,它的目的仅仅是分析需求,因此在很多地方会比较模糊而不考虑技术实现,比如本例中的“指标定义”、“过错标准”。另外一个比较关键的地方就是,系统中的行为到底由谁来执行,这个标准常常是说起来容易做起来难。我给大家的建议是参考GRASP中的“信息专家”模式。

GRASP是一种职责驱动设计的系统分析方法,它的“信息专家”模式是这样描述的:应当将系统中的行为交给信息专家去执行,而信息专家就是掌握着执行该行为所需数据的实体。在本例中,由于考核指标掌握着指标的定义,还有那些执法行为,所以它可以执行考核,而过错类型则掌握着过错标准,因此可以执行过错的判断。注意,这里的“执行”什么行为,是软件意义上的概念,即一个类可以拥有什么行为,而非现实世界的概念。要知道现实世界中的事物是不可能有主动执行什么操作的能力的。

过去我们拿到需求不知道该怎样去业务领域分析。有了原文分析方法,给了我们一个简单可行、易于操作的方法,让我们准确而高效地完成业务领域分析。

需求分析-原文分析法相关推荐

  1. 产品需求分析与市场分析方法汇总(SWOT+PDCA+波士顿矩阵BCG+5W2H分析法+STAR关键事件分析法+目标管理SMART+时间管理紧急重要矩阵+WBS任务分解法)

    产品需求分析与市场分析方法汇总(SWOT+PDCA+波士顿矩阵BCG+5W2H分析法+STAR关键事件分析法+目标管理SMART+时间管理紧急重要矩阵+WBS任务分解法) 产品需求分析与市场分析方法汇 ...

  2. (收藏):ASEB栅格分析法十分适合用户需求分析

    什么是ASEB栅格分析法 ASEB栅格分析法是以消费者需求为导向的一种市场分析方法,它把消费者的体验纳入分析范围中,重视从消费者的角度对项目的各个情况进行分析,对于分析体验式消费引发的问题有很好的针对 ...

  3. Science子刊: 类配对分析法揭示孤独症患者肠道菌群解毒功能受损

    Science Advances: 类配对分析法揭示孤独症患者肠道菌群解毒功能受损 标题:类配对法揭示孤独症谱系障碍儿童肠道微生物解毒功能受损 Title:A quasi-paired cohort ...

  4. 数据分析:杜邦分析法

    推荐:[报表分析篇]杜邦分析法只是一张四六级成绩单 作者:方糖冰红茶 原文链接:数据分析の杜邦分析法 好了,杜邦分析法在财务上是把净资产收益率作为一个总指标,然后对其进行分解成分其他财务指标,以此来评 ...

  5. 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择

    文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...

  6. 用AHP层次分析法挑选最佳结婚对象

    为了使文章读起来比较有趣,假设屏幕前的你现在中了彩票头奖,奖金5亿RMB.于是你彻底解放不用再写代码啦,天天开辆法拉利到处玩,来给你介绍对象的媒人踏破家门.经过初赛.复赛.泳装.晚装.才艺展示之后,仍 ...

  7. 等价类划分法与边界值分析法

    测试设计方法之等价类划分法与边界值分析法 在我们完成测试需求分析之后(在测试方案中的测试设计中的测试用例设计之前) 需要对测试用例进行设计,对测试用例设计要用到测试设计方法,但是测试设计方法不只是用在 ...

  8. 麦肯锡七步分析法 创业者应该如何分析商机

    "七步分析法"是麦肯锡公司根据他们做过的大量案例,总结出的一套对商业机遇的分析方法.它是一种在实际运用中,对新创公司及成熟公司都很重要的思维.工作方法.         第一步:确 ...

  9. 什么是鱼骨图分析法,详细解析

    一般来说,我们所了解的思维导图都是围绕一个中心发散开分支的,而鱼骨图是另外一种形式展开.它看上去有些像鱼骨,问题标在"鱼头"处,原因标在"鱼骨"上," ...

最新文章

  1. ffmpeg architecture(中)
  2. html太极图代码静态_如何做URL静态化?和页面的静态化
  3. tensorflow随笔-不动点迭代求一元方程
  4. Python第四章__装饰器、迭代器
  5. 全国计算机等级考试题库二级C操作题100套(第25套)
  6. 精通Java设计模式从初见到相爱之工厂+策略模式(3)
  7. 信守承诺:JAX-RS API的基于合同的测试
  8. C++实用技巧(一) - λ-calculus(惊愕到手了欧耶,GetBlogPostIds.aspx) - C++博客
  9. Java-程序的入口
  10. HTML代码transform,html-transform+onmouseover代码实例
  11. [特约· Keso ·东拉西扯] 我眼中的乔布斯
  12. 你真的会发朋友圈吗?
  13. 输出源文件的标题,目前执行行的行数,编译时间
  14. 安装php项目后图片路径不对,解决织梦CMS栏目绑定二级域名后图片不显示,路径错误办法...
  15. MySQL_02之增删改查、PHP数据库操作
  16. mimics能导出什么格式_Mimics到底支持怎样的图像格式(修正版)
  17. ROS机器人操作系统——什么是ROS(一)
  18. 安卓电子书格式_进阶能力 | 了解常见的电子书格式
  19. java fillrect_Java的graphics2D fillRect不能正常工作与半透明的颜色
  20. wireshark 找不到wifi网卡

热门文章

  1. 高德地图根据城市编码绘制边界
  2. 红帽RHCE之软硬链接
  3. matlab 圆形模板ROI
  4. oracle数据导入表空间,ORACLE导入数据文件到指定的表空间
  5. [XSIM 43-3225] Cannot find design unit xil_defaultlib.simple_ram_tb in library work located at xsim.
  6. π220N31 低功耗 3.0kV rms双向 I²C 隔离器 兼容ISO1540DR
  7. HTML模板布局页面教程,css网页布局教程 标签 HTML Nav CSS布局教程
  8. 【Grasshopper基础7】如何重写Grasshopper电池的预览 DrawViewportWires / DrawViewportMeshes
  9. 前后端分离项目在windows服务器上部署
  10. MFC容器MFC中容器类的使用