本书处于 开放评论 状态。希望获得来自读者的更多反馈以完善内容。阅读时,如果遇到一些文字内容需要求助,可以采用如下方式与我互动: 先用鼠标选择文本 在释放鼠标左键时将会有 annotate 弹窗,点击弹窗上的 ,如果已经注册的话,可以直接留言评论,否则先注册再留言。 你也可以点击页面右上角的 符号,可以看到其他人的留言评论。

4.3 应用软件功能分析

原有系统中存在的问题可能是业务流程不尽合理,也可能是因为电子商务系统的建设为优化原业务流程提供新的可能性,需要在对现有业务流程进行分析的基础上进行业务流程重组,产生新的更为合理的业务流程。

4.3.1 业务流程分析

业务流程分析应顺着业务处理中信息流动的过程逐步地进行,内容包括各环节处理的业务、信息来源、处理方法、计算方法、信息流经去向、提供信息的时间和形态(报告、单据等文档)。

业务流程图 TFD(Transaction flow Diagram):是一种用于描述组织内各部门之间、部门与人员之间、人员之间的业务关系、作业顺序和信息流向的图表,是一个反映企业业务处理过程的“流水帐本”,通常借助Visio来绘制。

业务流程图的作用:

  • 业务流程图是系统分析员作进一步系统分析的依据。

  • 业务流程图是系统分析员,业务部门人员相互交流的直观工具。

  • 系统分析员可以直接在业务流程图上拟出计算要处理部分。

  • 利用业务流程图分析业务流程是否合理。

4.3.2 数据流程分析

数据流图表示法
数据流图(Data-fiow diagram,DFD)描述数据在外部实体和系统内的处理与数据存储之间的转移的图形。

数据流图4.8是用途广泛的图形化工具。DFD中使用4种符号表示数据流、数据存储、处理和源点/汇点(外部实体)。

数据流图

图 4.8: 数据流图

数据流是移动的数据,这些数据作为一个单元从系统中的某一处移动到另一处。数据流可以表示顾客订单或工资支票上的数据,也可以表示数据库查询的结果,印制报表的内容,或计算机显示的数据录入表单上的数据。数据流可以由很多同时生成并一起流向共同目的地的独立数据块组成。

数据存储是静止的数据,可以呈现为多种不同的物理表现形式。它可以表示数据的很多不同物理位置之一,包括文件夹、一个或多个计算机文件、笔记本。数据存储可能包含有关顾客、学生、顾客订单或供应商发票的数据。

处理是度数据执行的工作或动作,以便更换、存储或分发数据。

源点/汇点是数据的起源和/或目的地。源点/汇点有时被称为外部实体,因为它们在系统之外。数据或信息经过处理之后,就离开系统并转到另外的地方。因为源点和汇点在我们研究的系统之外,所以我们对它们很多特征并不感兴趣,特别是不考虑下列问题:

  • 源点和汇点之间发生的交互。

  • 源点或汇点用信息做什么或如何操作(即源点或汇点是“黑箱”)。

  • 如何控制或重新设计源点或汇点,因为从我们正在研究的系统角度来看,汇点接收的数据和源点通常提供什么数据是固定的。

  • 如何为源点和汇点提供对存储数据的直接访问,因为,它们作为外部代理不能直接访问或操作系统内部存储的数据;也就是说,系统内的处理必须接收数据或者在系统及其外部环境之间的分发数据。

绘制流程图规则

处理

1.不存在只有输出的处理。如果某对象只有输出,那么它必是一个源点。
2.不存在只有输入的处理。若某对象只有输入,那它必定是一个汇点。
3.处理的标签是动词短语。

数据存储

4.数据不能从一个数据存储直接移到另一个数据存储。数据必须由处理移动。
5.数据不能直接从外部源点移动到数据存储。数据必须由处理移动,该处理从源点接收数据并将数据放入数据存储。
6.数据不能直接从数据存储移动到外部汇点。数据必须由处理移动。
7.数据存储的标签是名词短语。

源点/汇点

8.数据不能直接从源点移动到汇点。如果数据和系统有关系,那么必须由处理移动数据;否则,该数据流不在DFD上出现。
9.源点/汇点的标签是名词短语。

数据流

10.一个数据流在符号之间的流动是单向的。数据流可以在处理和数据存储之间双向移动,说明在更新之前的读取。不过,后一种情况经常用两个单独的箭头表示,因为读取和更新通常不在同一时间发生。
11.数据流中的分叉意味着完全相同的数据从一个共同位置转向两个或多个不同的处理、数据存储或源点/汇点(通常表示转向不同位置的相同数据的不同副本)。
12.数据流中的合并意味着从两个或多个不同的处理、数据存储或源点/汇点来到共同位置的完全相同的数据。
13.数据流不能直接回到它离开的同一个处理。另外必须至少有一个处理操作该数据流、产生另外的数据流和将最初的数据流返回给开始的处理。
14.到达数据存储的数据流意味着更新(删除或修改)
15.离开数据存储的数据流意味着检索或使用。
16.数据流的标签是名词短语。在同一箭头上的所有流作为一个包一起移动的时候,可以在一个箭头上出现多个数据流名词短语。

除了以上所列规则以外,还经常用到两条DFD指导原则
处理的输入和输出不同:因为处理是有意图的,一般将输入变换成输出,而不是没有操作就简单地让数据穿过。同样的输入可以进入在离开一个处理,但是该处理也产生其他新的数据流,即处理输入的结果。

DFD中对象的名字是唯一的:每个处理的名字都是唯一的。为保持DFD简单整洁,可以重复数据存储和源点/汇点。当两个箭头的数据流名字相同时,必须确认这些数据流是否一样。当两个数据包几乎相同但又不同时,重复使用相同的数据流名字是错误的;由于数据流名字表示特定的数据集合,因此另外的数据流即使多一点或少一点数据也必须有唯一的不同名字。

4.9为不正确的DFD绘制方法和相应的正确画法(字母与上表相对应):

 DFD正确与不正确的绘制方法比较 DFD正确与不正确的绘制方法比较 DFD正确与不正确的绘制方法比较 DFD正确与不正确的绘制方法比较 DFD正确与不正确的绘制方法比较

图 4.9: DFD正确与不正确的绘制方法比较

DFD的分解平衡

1.将一层的DFD向下一层分解时,处理的输入和输出必须守恒。

DFD的第一层分解图

图 4.10: DFD的第一层分解图

4.10中,顶层图包含一个系统输入A和一个系统输入B。但在第一图层中,有一个额外的输入C,且数据流A和数据流C来源于不同的源点。这两个DFD是不平衡的。如果某个输入出现在第一层图中,则它必须出现在顶层图中。

若在分析时认为计算系统B还需要C,将A和C在第一层图中画出来,切记不要忘了更新顶层图;同时将源点一和源点二都包含在顶层图中。

2.第n图层上包含几个子数据流的数据流可以在第n+1图层上分解,作为该数据流处理的输入。如图4.11

DFD的第n层分解图

图 4.11: DFD的第n层分解图

在1中,“付款”和“凭证”总是一起流动,且同时为处理的输入;在2中,处理被分解为两个子处理,每个子处理接受高层的组合数据流的一个组成部分。

由于两个图中所包含的是完全相同的数据流,所以仍是平衡的。

3.平衡原则和保持DFD尽可能简单的目标引致4个附加的绘制DFD的高级规则,如下:

  • 一层上的组合数据流可以在下一层分解为多个组件数据流,但是不能增加新数据,并且组合中的所有数据必须在一个或多个子流中说明。

  • 处理的输入必须足够产生输出(包括放入数据存储的数据)。因而,所有的输出都要产生,输入中的所有数据都要移动到某处,要么到另一个处理,要么到处理外面或者说明该处理分解的更详细的DFD上的某个数据存储。

  • 在DFD的最低层,可以加入新数据表示异常条件下传送的数据,这些数据流一般代表错误消息(如,“顾客不存在;是否创建新顾客?”)或者确认通知(例如,“你要删除这条记录吗”?)

  • 为了避免数据流线条相互交互,可以在DFD上重复数据存储或源点/汇点。用附加符号表明重复的符号,如数据存符号当中的垂线上的双线,或者源点/汇点正方形一角上的对角斜线。

数据流程图 Q&A

关于数据流程图的练习,请下载 附件 独立完成后再对照答案检查正误。

4.3.3 系统处理逻辑

虽然数据流图对标识处理很有效,但是它们没有描述处理内部的逻辑。即使是基本数据流图上的处理也没有说明最主要的处理步骤。处理内部发生了什么?输入数据是怎么样被转换为输出信息的呢?因为数据流图的设计事实上不是为了描述处理的详细逻辑,所以必须用可以描述复杂处理逻辑的工具对整个系统功能进行详细描述的方法。包括结构化语言、决策树和决策表等。

1.结构化语言表示法

这是一种模仿计算机语言的处理逻辑描述方法。它使用了由 “IF”、“THEN”、“ELSE”等词组成的规范化语言。图4.12是处理订货单逻辑过程的结构英语表示法。

处理订货单逻辑过程的结构

图 4.12: 处理订货单逻辑过程的结构

决策树法

决策树是一种图形化的处理逻辑分析工具,适合描述具有多种判断的处理。决策树比较直观,容易理解,但当条件多时,不容易清楚地表达出整个判别过程。该方法是一种用树形图来描述各方案在未来收益的计算。比较以及选择的方法,其决策是以期望值为标准的。人们对未来可能会遇到好几种不同的情况。每种情况均有出现的可能,人们现无法确知,但是可以根据以前的资料来推断各种自然状态出现的概率。在这样的条件下,人们计算的各种方案在未来的经济效果只能是考虑到各种自然状态出现的概率的期望值,与未来的实际收益不会完全相等。

4.13是一张用于根据用户欠款时间长短和现有库存量情况处理用户订货方案的决策树。

决策树

图 4.13: 决策树

2.决策表法

决策表是一个二维表格,它能清楚地表述复杂的条件组合与相应决策之间的对应关系,常用于描述有多种条件交叉组合的处理逻辑。

决策表由条件、行动、条件组合及结果四部分组成。决策表最突出的优点是能够将复杂的问题按照各种可能的情况全部列举出来,简单并避免遗漏。同时利用决策表能够设计出完整的测试用例集合;可以将条件理解为输入,将动作理解为输出。

决策表的生成:

(1)确定规则的个数:有n个条件的决策表有2n个规则(每个条件取真、假值)。
(2)列出所有的条件和行动
(3)填入条件组合
(4)填入行动项,得到初始决策表
(5)简化决策表,合并相似规则:若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为“无关条件”。这里仍以处理用户订货的例子4.14来说明:

用户订货

图 4.14: 用户订货