第1章作业参考答案
第3章软件需求获取与结构化分析方法
3.1 为什么结构化分析要叫“结构化”?有其他可替代的术语吗?
“结构化”一词应来源于“结构化程序设计”,先有“结构化程序设计”的思想,后有结构化设计及结构化分析。有时称传统的分析方法,指的就是结构化分析方法。 3.2顶层数据流图或称环境图的作用是什么?
顶层数据流图(或称环境图)仅包括一个数据处理过程,也就是要开发的目标系统。其作用如下:
(1) 确定系统在其环境中的位置,与系统有联系的外部实体(包括硬件、软件、组织机构及人)有哪些。
(2) 通过确定系统的输入和输出与外部实体的关系确定系统的边界,也就是要确定哪些功能或处理属于系统范围之内,哪些属于系统范围之外,需要由其他系统处理或人工处理。 3.3 在对数据流图进行分解时需要注意哪些问题?
在对数据流图进行分解时,需要注意以下两个问题:
(1) 当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。
(2) 注意分层细化时对编号的处理方法。
3.4 银行存款业务如下:客户到银行柜台存款时,首先填写存款单(包括帐号、姓名、存款金额、存款类型),如果还没有开户,则需要先开户,填写开户单(包括姓名、身份证号、地址、电话、是否留密码)。填写完存款单或开户单后,交给营业员,营业员将存款单或开户单信息输入计算机,系统记录开户信息或存款单信息,如果是开户并选择留密码,则需要客户输入密码。最后印出开户单或存款单给用户。请画出银行存款业务的分层数据流图(至少画出两层)。
(1) 识别外部实体及输入输出数据流 外部实体:储户、业务员。
输入数据流:存款单,开户单,密码。可以将存款单和开户单抽象为事务。 输出数据流:存款单,开户单。 (2) 顶层数据流图
6
第1章作业参考答案
(3) 一层数据流图
对银行储蓄系统进行分解,从大的方面分解为接收事务、处理开户、处理存款三部分,得到一层数据流图。
(4) 二层数据流图
对 “处理存款”及“处理开户”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理开户的数据流图。
处理存款的数据流图
7
第1章作业参考答案
处理开户的数据流图
3.5 按照以下描述,画出ER图。
一本教材由许多章组成,每一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。 ER图如下:
小结 习题 教材 章 节 序号 标题 序号 标题 8
第1章作业参考答案
第4章结构化设计方法
4.1 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?
在“编写”程序时并没有设计软件。软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。
4.4 是否存在一种情况:复杂问题需要较少的工作去解决?这样的情况对模块化观点有什么影响?
通过对复杂的问题进行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。这种情况能够较好地支持模块化的观点,每个子问题用单独的模块去解决,模块之间应该是高内聚、低耦合的,这样才能减少工作量,否则,虽然每个模块的工作简单了,但模块之间的联系很复杂,也增加了问题解决的难度和工作量。
4.8 用面向数据流的方法设计第3章习题3.4所描述的银行存款业务的软件结构,并使用改进方法对模块结构进行精化。
(1) 对第3章习题3.4给出的数据流图进行精化,确定其边界,如下图所示。
(2) 对上图按事务型数据流进行处理,完成第一级分解,得到顶层和一层模块结构图。
9
第1章作业参考答案
输入数据 存款业务 调度 第一级分解后的结构图
输出数据 (3) 完成第二级分解。对上图所示的“输入数据”、“输出数据”和“调度”模块进行分解,得到未经精化的输入结构、输出结构和事务结构。
输入事务 未经精化的输入结构
输入密码 输入数据 输出数据
打印存款单 未经精化的输出结构
打印开户单
调度
记录存款信息 记录开户信息 未经精化的事务结构
10
记录密码 处理存款 处理开户