【软件工程讲解】软件设计的启发式规则.ppt_第1页
【软件工程讲解】软件设计的启发式规则.ppt_第2页
【软件工程讲解】软件设计的启发式规则.ppt_第3页
【软件工程讲解】软件设计的启发式规则.ppt_第4页
【软件工程讲解】软件设计的启发式规则.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八讲 软件设计的启发式规则 面向数据流的设计方法 一、软件设计的启发式规则 提高模块独立性 设计规模适中的模块 深度、宽度、扇入、扇出适中 模块的作用域应该在控制域之内 降低接口复杂性 设计单入口和单出口的模块 设计功能可以预测的模块 启发式规则是一种经验规律 ,对改进设计和提高软件质 量具有重要的参考价值,但 不要过分拘泥于这些规则 1) 提高模块独立性 是划分模块的最高准则。 高内聚,尽量一个模块一个功能; 低耦合,避免“病态连接”; 降低接口的复杂程度; 综合考虑模块可分解性、模块可组装性 、模块可理解性、模块连续性和模块保 护(因修改错误而引起的副作用被控制 在模块的内部)等。 2) 设计规模适中的模块 w. m. weinberg的研究表明:如果一个模 块长度超过30条语句,其可理解性将迅速 下降; f. t. baker : 最好控制在50行左右,能够打 印在一张纸上。 由于模块独立性是最高原则,对于一个设 计合理的功能性模块,即使长达千句或小 到几行,也是允许的。 分解模块不应该降低模块独立性。 3) 深度、宽度、扇入、扇出适中 深度:软件结构中控制的层数。一般而言 它与系统的复杂度和系统大小直接对应。 宽度:软件结构中同一个层次上的模块总 数的最大数。 扇出:一个模块直接控制(调用)的模块 数目。 扇出过大说明模块过分复杂;过 小也不好,不利于系统平衡分解,3到9为 宜。 扇入:一个模块的扇入是指直接控制该模 块的模块数目。扇入越大说明共享该模块 的上级模块越多。 整个系统结构呈现“椭圆外型”。 a bcdf gh kji e 如图的系统中:深度为4;宽度为5;模块a的扇出 为5,扇入为0。模块k的扇出为0;扇入为2。 4) 模块的作用域应在控制域之内 控制域:控制范围,是包括模块本身以 及所有下属模块(直接调用模块和间接 调用模块)的集合。 作用域:作用范围,它是一个与条件判 定相联系的概念。是受该模块内一个判 定影响的所有模块的集合。 对作用域不在控制域的两种改进方法: 判定上移和在作用域但不在控制域的模 块下移。 a cd gh kji e 如果d中判定影响到e,通常需在d为判定结果设置 一标记,并把该标记通过上级模块a传递给e,导 致控制耦合。其作用域为d,g, h, i, j, k和e ,作用 域在控制域内。 模块d的控制域为 d,g,h,i,j ,k。 如果d中有一个条件判 定仅影响到模块g和h, 其作用域为g, h, i, j, k ,作用域在控制域内。 5) 降低接口复杂性 尽量少用go to,避免病态连接和内容耦合 。 注意全局变量的使用,控制外部耦合和公 共耦合的使用。 将数据结构的传递改成数据传递,例如: 在求一元二次方程根的模块 quad_root(table, x)中,利用系数数组table 和根数组x进行参数传递。如果将其改为直 接的系数和根传递,即quad_root(a, b, c, x1,x2),则特征耦合数据耦合。 6) 设计单入口和单出口的模块 符合结构化程序设计的思想 应避免病态连接和内容耦合。 “一个功能一个模块”提高软件的可读性 和可理解性。 有效阻断“涟漪效应(ripple effect)” 提高 软件的可靠性和可维护性。 7) 设计功能可以预测的模块 “可以预测”模块的输入和输出之间的 关系比较简单。 功能可以预测的模块:如果一个模块可以 当作一个“黑盒子(black box)”来对待,对 于该模块的输入数据来说,可以在不考虑 其内部处理细节的情况下生成输出数据。 模块功能应该可以预测,但不要过分受其 局限。 二、面向数据流的设计方法 基于dfd的结构化设计的基本概念 变换流结构 事务流结构 变换分析过程 示例 设计优化 1)基于dfd的结构化设计的基本概念 yourdon等structured design 目标:使程序结构适应问题结构。结 构化设计方法(sd) 映射关系:dfd hipo or sc,即从 数据流图映射到软件结构图,其中数 据流(信息流)的类型决定了映射的 方法。 两种类型的信息流(p95) 变换流 事务流 2)变换流结构 三个组成部分: (参见p95图5.8) 传入路径(afferent path) 变换中心(transform center) 传出路径(efferent path) 分别对应的三种数据流 传入流 变换流 传出流 3) 事务流结构 三个组成部分:(参见p95图5.9) 至少一条接受路径(reception path) 一个事务中心t(transaction center) 多条动作路径(action path) 事务中心的三个任务 接受输入数据(事务); 分析每个事务以确定它的类型; 选取一条动作路径(活动通路)。 说明 原则上所有信息流都可以归结为变换 流结构; 混合型结构 4) 变换分析过程 复审基本系统模型 复审并精化dfd 确定dfd的类型 确定输入流和输出流的边界,从而孤立出 变换中心 完成“第一级分解” (确定顶层和第一层) 完成“第二级分解”(把每个处理映射到sc的一 个模块) 利用启发式规则和设计度量对软件结构进 一步精化 b c a d p q r w uv e 打印 显示 键盘输入 传感器 确定类型;确定边界,即确定逻辑输入(离物理输入端最远 ,但仍然可以被看作系统输入的那些数据流)和 逻辑输出(离物理输出端最远,但仍然可以被看 作系统输出的那些数据流)。 第一级分解 ,确定顶层 和第一层 mc mamtme qpr get cget e get b read a b to cread dd to e a to b put uwrite w u to vwritev 从边界沿输出通路向外移动,将每个处理映射成 me的子模块;在输入、输出路径上数据的内容 和形式也可能发生变化,但应区别于中心加工) 第二级分解:从边界沿输入通路向外移 动,将每个处理映射成ma的子模块; 将变换中心内的处理映射成mt的子模块 5)实例分析 p96 例一:某企业销售管理系统的功能为: (1)接受顾客的订单,检验订单,若库存有货 ,进行供货处理,即修改库存,给仓库开备 货单,并将订单留底;若库存不足,将缺货 订单登入缺货记录。 (2)根据缺货记录进行缺货统计,将缺货通知 单发给采购部门,以便采购。 (3)根据采购部门发来的进货通知单处理进货 ,即修改库存,并从缺货记录中取出缺货订 单进行供货处理。 (4)根据留底的订单进行销售统计,打印统计 表给销售经理。 分析以上功能要求,画出分层的数据流图,并 将其转换成对应的软件结构。 销售管理系统 顾客 采购部门 仓库 经理 缺货通知单 进货通知单 订单 备货单 统计表 进货通知单 销售统计 5 订单记录 统计表 原缺货现可供 货订单 供货处理 2 处理进货单 4 缺货统计 3 订单可供货单 缺货记录 库存登记 备货单 缺货通知单 处理订单 1 0. 销售管理系统 1. 处理 订单 2.供货 处理 3.缺货 统计 4.处理 进货单 5.销售 统计 1.1 检 验 订 单 1.2 查 阅 库 存 1.3 确 定 能 否 供 货 2.1 修 改 库 存 2.2 开 备 货 单 3.1 处 理 缺 货 订 单 3.2 修 改 缺 货 记 录 4.1 打 印 缺 货 通 知 单 5.1 按 日 期 统 计 5.2 按 货 物 统 计 5.3 按 顾 客 统 计 例二:图书馆的预定图书系统有如下功能: (1)由供书部门提供书目给订购组; (2)订购组从各单位取得要订的书目; (3)根据供书目录和订书书目产生订书文档留底; (4)将订书信息(包括数目、数量等)反馈给供书 单位; (5)将未订书目通知订书者; (6)对于重复订购的书目由系统自动检查,并把结 果反馈给订书者。 试根据要求画出该问题的数据流程图,并把其转换 为软件结构图。 订书 系统 0 订书组供书单位 要订书目 订书结果 订书清单 供应书目 选择 检查 1 整理 归类 2 登陆 3 订书组 要订书目 订书结果 供书单位 订书清单预定书目 供书单位 供应书目 订单记录 已订书目 归类书目 订单记录 新订书目 0. 订 书 系 统 1. 生成预 定书目 2. 整理 归类 3.处理归 类书目 4.输出订 书清单 1.1 取 得 供 书 目 录 1.2 取 得 要 订 书 目 1.3 取 得 已 订 书 目 1.4 选 择 检 查 3.1 归 类 登 陆 3.2 更 新 留 底 清 单 1.4.1输出订 书结果 6)设计优化(p103) 对软件软件结构进行优化(启发式规则 ) 软件结构是否简洁? 设计风格? 效率? 对效率起决定作用的软件设计的优化 在不考虑时间因素的前提下开发并精 化软件结构。 孤立并在详细设计阶段重点关注那些 对整个软件效率起决定作用的模块(10% 到20%的模块开销50%到80%的时间)。 在使用高级语言编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论