解题的一般方法
一、软件设计题要点
综观1990年到2004年的高程下午设计题,主要包括以下考点:
1. 完善处理流程,或指出处理内容,或指出处理结果。
2. 指出流程图中错误,或为避免错误应在某处添加处理项目。
3. 为达到某目的,需要改动哪些处理,或改变处理方法会引起什么后果。
4. 指出错误清单内容。
5. 文件的记录应包含哪些内容。
6. 完成处理需要什么样的文件,或文件有什么特征,或引入某文件有什么好处。
7. 文件怎样分类,或指出关键字。
8. 某处理的频度。
9. 输入数据的格式。
10. 题意中的分类有何好处。
11. 为实现某目的适当修改文件的记录内容。
12. 指出图中数据流名,或指出哪些位置数据可增加或删去。
考点最集中的部分是关于文件记录的内容,其次是文件的分类排序,再次是当目的改变应该改动哪些。
二、答题注意事项
事务处理流程图一般由若干处理与若干数据组成,在评估流程图并回答试题的问题时,应该注意下面一些问题。
从“处理”的角度来说,必须注意:
1. 每个事务处理均有一个特定目标,这一目标往往都是文字说明的。与此对应的处理应能覆盖所设定的目标。对于说明处理要求,都应从问题目标进行考虑。
2. 除覆盖问题目标的处理外,还有两类处理应予考虑:一是为了保证处理的正确性,设计一些处理框,以检查输入数据的数据项及数据的值域;另一种是检查数据会合时数据的一致性。二是为了处理的效率,如速度、次数、减少处理访问等而引进了一些处理。
3. 在一个流程图内,在一条流程上的各个处理不能有功能上的重复。如有重复,不是有错,就是流程还可优化。
4. 每个处理都是由“处理的依据”到“使用数据”,以及从“处理结果”到“产生数据”。“使用数据”或者“产生数据”与处理相互匹配是十分重要的。
从“数据”的角度来说,必须注意:
1. 注意流程图最初的输入数据与最终输出数据,考虑从输入到输出之间数据演变的情况。根据数据的演变与流程,关于从输入到输出应有哪些数据就比较清楚了,其作用也可以从演变方面了解。
2. 考虑数据流程中,哪些数据应作为文件形式出现,哪些是中间使用的临时数据。在数据演变中,一些数据经多个“处理”加工后得到结果,每加工一次就产生一个新数据,对这些数据分析,就能得出各数据的存储要求。
3. 对数据按问题要求设计数据结构。输入(输出)数据的结构与问题有关,而中间数据的结构除与输入(输出)数据有关外,还与处理有关。
4. 为减少数据冗余,要保证数据一致性,数据文件设计中应考虑关系,亦即各种文件的记录之间的联系。
我们对高级程序员软件设计题的解题方法做了分析,现在我们来分析一道例题。
★解答实例
2000年试题3:阅读以下说明和流程图,回答问题1和问题2。
【说明】
某供销系统接受顾客的订货单。当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采购单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。该供销系统的分层数据流图中部分数据流和文件的组成如下:
文件
配件库存=配件号+配件名+规格+数量+允许的最低率库存量
数据流
订货单=配件号+配件名+规格+数量+顾客名+地址
提货单=订货单+金额
采货单=配件号+配件名+规格+数量+供应商名+地址
送货单=配件号+配件名+规格+数量+金额
假定顶层图是正确的,“供应商”文件已由其他系统生成。
[问题1]
指出哪张图中的哪些文件可不必画出。
[问题2]
指出在哪些图中遗漏了哪些数据流。回答时用如下形式之一。
(1) X X 图中遗漏了 X X 加工 (或文件) 流向 X X 加工 (或文件) 的 x x 数据流;
(2) X X 图中 X X 加工遗漏了 X X 输入 (或输出) 数据流。
在顶层图中,供销系统的3个输入数据流(订货单、送货单与销售及库存情况)和5个输出数据流(不合法的订货单、不合法的送货单、提货单、采购单与销售及库存情况表)在0层图中都得到反映。考查0层图中所有的输入数据流和输出数据流,是否有遗漏的加工呢?在顶层图中总经理的查询是单独的加工,但在0层图中却给包括到加工1中去了,成为加工1.3,其输入或输出数据流也都包括在该加工中。考查加工1子图,加工1.3包含在加工1中是科学的,因为该加工需要来自加工1数据支持,且事务简单,包含在加工1中可以大大减小系统分析和设计的复杂程度。因此不能说0层图遗漏了加工。至于文件,在0层图中凡是需要文件的地方都是从文件输入的,未发生遗漏现象。
仔细研究0层图,大体上确定加工1有3个输入数据流(订货单、到货通知和查询销售及库存情况),加工1子图中只有订货单与查询销售及库存情况两个数据流,显然遗漏了输入数据到货通知,该数据流应该从哪个子加工输入呢?看试题中的说明“收到供应商的送货单并更新了库存后,向顾客发出了提货单”。据此至少可以判定输入数据流到货通知是子加工1.4更新库存的前提条件,没有到货通知,就无法更新库存。是直接输入加工1.4吗?再看子加工1.4与其他子加工的关系。子加工1.5输出数据流的去向是子加工1.4。而子加工1.5需要到货通知的支持,但从子加工1.4到子加工1.5却没有数据流。综合以上分析,应该在子加工1.5处输入数据流到货通知。
首先看配件库存文件。在加工1子图(图3)中,配件库存文件经过加工1.4更新库存而修改,然后还要为加工1.1和加工1.2提供数据支持,在加工1.1中,通过检查订货单中订购的配件在配件库存中是否有记录,来确定该配件是否属于经销范围,然后以此来确定订货单是否合法。其次,还要在加工1.2中比较合法订货单的数量与库存数量,以此确定是否需要发出采购请求。再次,在发出提货单后,如果库存量低于允许的最低库存量,也要发出采购单。可以看出,在该加工图中,未发现对配件库存文件的不适当的使用。
在加工2子图(图4)中,在加工2.4核对送货单后要更新库存文件然后加工2.3计算增量提供数据支持,计算出需要采购的配件的数量。应该说这里对配件库存文件的使用是正确的。因此我们可以确定配件库存文件在加工1和加工2中都有应用,画在0层图中是合适的。
缺货订单文件在试题说明中没有提到,具体的应用需要我们自己分析。0层图中显示该文件被加工1和加工2使用。现在的任务就是确定两个加工中对该文件的使用是正确的。在加工1中缺货订单的数据来自加工1.2和加工1.4,在加工1.2中,接受合法的订货单后,如果订货单上数量大于配件库存文件的数量,将产生缺货订单文件。在加工1.4中,在有货订单送达后,需要交出提货单,然后更新库存。如果库存量低于允许的最低库存量,应该将缺货信息反映到缺货订单中。在加工2中,缺货订单为加工2.3提供部分数据支持,在计算配件增量以明确需要增加的配件的清单时,需要参照缺货订单。结合以上对使用缺货订单文件的分析,可以认为,因此将该文件画在0层图中是有必要的。
我们分析了配件库存文件和缺货订单文件,再来看采购清单。
0层图显示该文件只应用于加工2。采购清单如果只应用在加工1中,最有可能的地方是加工1.2及其后的采购请求数据流,但在这里采购清单是有必要的吗?从加工2中可以看出,采购清单是按供应商对采购单进行汇总来产生的,对采购单进行汇总,显然已经属于加工2的工作,不应在加工1中予以反映。由此可以断定在加工1中不应该有采购单文件。所以在0层图中画采购清单是不合适的。
以上考查了0层图、加工1子图和加工2子图中缺货订单、配件库存及采购清单的使用,下面研究加工1中的销售历史文件。如果没有该文件支持,加工1.3是无法制作销售及库存情况表的;而且该文件由加工1.4更新库存产生,其输入数据流和输出数据流均在加工1中,在加工1中使用该文件是合适的。
问题2要求指出哪些图中遗漏了哪些元素。一般来说,这类题目的解答首先要考虑各层次图的数据平衡,其次要考虑加工的输入数据流和输出数据流要平衡,即保证加工的输出数据流都有其对应的输入数据流。所谓数据平衡,就是在多层次数据流程图中,父图和子图之间的数据流必须保持一致,比如说在父图中某加工有2个输入数据流和一个输出数据流,那么在该加工的子图中的输入(输出)数据流必须在数目上和内容上与父图保持一致。
考查0层图,加工1有不合格订货单、销售及库存情况表、提货单与采购请求4个输出数据流。但在加工1子图中,却没有输出数据流提货单,这显然是不符合数据平衡原则的。但该数据流应从何处输出呢?根据试题说明,在更新库存后应向顾客发出提货单。显然这里合适的位置是子加工1.4。
- 推荐给朋友
- 收藏此页
·网络工程师资料:网络体系结构-软考网络类题解 (2008-4-25 14:33:38)
·计算机网络基础网络拓扑结构及优缺点分析 (2008-2-22 14:04:32)
·网络工程师必知:静态路由协议配置方法 (2008-2-22 14:03:39)
·计算机网络尼奎斯特 香农公式例题解析 (2008-2-22 14:02:35)
·软考复习:因特网IP的分类、寻址规则及子网掩码 (2008-2-22 13:57:21)