天天看点

续-如何划分DFD

续前面的问题1。本来应该在上篇文章中继续,却发现无法编辑保存过的文章,只有另起一篇了。

   现在说正题儿吧。为什么我所划分的DFD中加工之间往往不连续?

   不连续,就是说DFD中的各个加工之间往往比较独立,相互之间没有数据流直接相连,整个DFD就像是一个个彼此孤立的岛屿。说“不直接相连”也暗指加工之间也并非完全不相干,比如一个加工可能使用另一个加工产生的“历史”数据作为输入。但与《书》中的例子相对比就可以看出,《书》中的例子里(如第237页的图12-21)各个加工之间一般都有数据流相连,可以很明显的看出各个加工处理的时间上的先后。而我的售票DFD中则没有,如图所示。

   比如加工2.1,2.2,2.3,2.4之间就没有数据流相连。

   彼此之间通过数据流相连的加工,根据变换流或事物流的特征,在设计阶段就可以转化为相互之间有调用关系的模块。转换的规则书中也有详细的介绍(第13,14章)。但如果加工之间没有关联,那么应该怎样转化为设计,转化后的体系结构图应该是什么样子的?或者不应该存在彼此孤立的加工,这本身就是错误的分析?

问题2:DFD中的加工要不要明显地表现在加工成功和失败不同条件下的处理?还是隐含在加工之中?

比如有这样一个功能需要执行:

   执行加工A,产生数据dataA ,若加工A执行成功,则执行加工B,否则执行加工A1。

   加工B使用dataA 作为输入,若加工B执行成功,则执行加工C,否则执行加工B1 。

   加工C需要用户输入和存储数据dataC进行处理,若加工C 执行失败,则执行加工C1,否则执行加工C2 。

   加工A1,B1,C1,C2都分为两部分功能:显示一些信息,执行一些操作并返回。

   根据问题2,进行了两种划分,如下两个图所示。第一个图是显示的表现加工执行的成功或失败,另一个图则没有明显表示加工执行成功或失败的情况,加工的成功或失败蕴含在加工自身之中。

思考:哪一种加工的划分方法更合理?