软件工程第三章习题及参考答案 联系客服

发布时间 : 星期一 文章软件工程第三章习题及参考答案更新完毕开始阅读04ae274a102de2bd97058844

个左右问题是不应该包括打开和关闭文件这样的细节问题的。打开和关闭文件与特定软件的设计无关,它们只是作为任何设计的一部分的实现细节。然而,在后面的求精步骤中,打开和关闭文件变得重要起来,必须加以处理。

从前述设计过程可知,可以把逐步求精方法看作是建立在某个阶段内需要解决的各种问题的优先级的一种技术。逐步求精方法能够确保每个问题都得到解决,并且是在合适的时间解决,在任何时刻都不需要同时考虑7个以上的问题。

2.答:从图3.1所示的层次图可以看出,这个程序的功能是计算若干个指定地点的每日平均温度。变量sum保存某地一天之内在指定的时间取样点的温度之和。程序运行时首先初始化变量sum并打开文件,然后读取地点、时间和温度等原始数据,创建用于保存这些数据的温度记录,接下来计算特定地点的日平均温度,存储温度记录。重复调用“读取地点、时间和温度”、“创建新的温度记录”、“计

算特定地点的日平均温度”和“存储温度记录”等模块,直至计算出并保存好所有指定地点的日平均温度。最后,打印平均温度并关闭文件。

从上述叙述可知,“计算多个地点的日平均温度”、“读取地点、时间和温度”、“创建新的温度记录”、“计算特定地点的日平均温度”和“存储温度记录”等5个模块,每个都完成一个单一的功能,模块内所有处理元素都为完成同一个功能服务,彼此结合得十分紧密,因此,这5个模块的内聚类型都是功能内聚。 初看起来,由于初始化变量sum和打开文件这两个操作都是在程序运行的初始阶段完成的,“初始化变量sum并打开文件”这个模块的内聚类型似乎是时间内聚。但是,初始化变量sum是本程序特有的操作,而打开文件是硬件要求的操作,是任何使用文件的程序都包含的一个操作,并非本程序特有的操作。当可以分配两个或更多个不同级别的内聚类型给一个模块时,规则是分配最低级别的内聚类型给该模块。因此,“初始化变量sum并打开文件”这个模块的内聚类型是偶然内聚。同理,“关闭文件并打印平均温度”这个模块的内聚类型也是偶然内聚。这个模块的内聚类型也是偶然内聚。

3.答:综合分析图3.2和表3.1所提供的信息可知各个模块之间的耦合情况。例如,当模块p调用模块q时(接口1),它传递了一个参数———飞机类型。当模块q把控制返还给模块p时,它传回一个状态标志。

某些模块之间的耦合类型是明显的,例如,模块p和q之间(接口1)、模块r和t之间(接口5)及模块s和u之间(接口6)都是数据耦合,因为它们传递的都是一个简单变量。如果两个模块中的一个模块给另一个模块传递控制元素,也就是说,如果一个模块明显地控制另一个模块的逻辑,则它们之间具有控制耦合。例如,当给具有逻辑内聚的模块传递功能代码时就传递了控制元素。另一个控制耦合的例子是把控制开关作为一个参数传递。图3.2中模块q调用模块r时(接口3)传递一个功能代码,因此,这两个模块之间是控制耦合。 图3.2右侧文字说明,模块p、t和u更新同一个数据库,因此,它们之间具有公共环境耦合。

当模块p调用模块s时(接口2),如果模块s使用或更新模块p传递给它的零件清单中的所有元素,则模块p和s之间的耦合是数据耦合;但是,如果模块

s只访问该清单中的一部分元素,则模块p和s之间的耦合是特征耦合。模块q和s之间(接口4)的耦合情况与此类似。由于图3.2和表3.1中给出的信息尚不足以准确地描述各个模块的功能,所以不能确定这两对模块之间的耦合是数据耦合还是特征耦合。

4.答:我们在解答第2章第11题的过程中,已经用结构化分析方法详细地分析了这个工资支付系统,并且认真审查了结构化分析所得出的结果。因此,可以从图2.19所示的工资支付系统完整数据流图出发,设计工资支付系统的结构。 从图2.19可以看出,事务数据和人事数据沿着两条输入通路进入系统,输出数据沿着一条输出通路离开系统,数据流图中没有明显的事务中心。因此,从整体上看这个数据流图具有变换流的基本特征。

接下来应该分析确定输入流和输出流的边界,以孤立出变换中心。“取数据”和“收集数据”显然位于输入流中。“审核数据”仅仅对收集来的事务数据进行校核,并不对数据进行加工处理,它的基本功能是确保输入的事务数据是合理的,因此,也应该归入输入流的行列。“更新人事数据”由人事科通过另一个程序完成,不属于本系统应完成的功能。“印表格”显然应该位于输出流中。“分发工资明细表”由人工完成,它不是工资支付程序的一部分。综上所述,得出画有流边界的数据流图,如图3.14所示。

下一个设计步骤是,完成“第一级分解”。所谓第一级分解就是确定系统的总体控制结构。通常,变换分析得出的系统高层结构是一个“三叉”的控制结构,针对工资支付系统得出的高层控制结构如图3.15所示。

再下一个设计步骤是,完成“第二级分解”。所谓第二级分解,就是把数据流图中的每个处理映射成软件结构中的一个适当的模块。变换分析的映射规则是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射