- 1、本文档共148页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 这一步的任务是确定数据流图是变换型数据流图还是事务型数据流图 从上图中可以看出,数据沿着两条输入通路(旋转信号和燃料流量传感器信号)进入系统,然后沿着五条通路(4个显示,一个警告铃声)离开,没有明显的事务中心(虽然变换“计算mph与超速值”可以看作是一个事务中心)。因此,可以认为这个数据流图的类型是变换型数据流图 3、确定数据流图的类型 * 4、确定输入流和输出流的边界,从而孤立出变换中心 * 5、进行“第一级分解” 第一级分解的方法 * 第一级分解的结果 * 6、进行“第二级分解” 第二级分解的方法 * 第二级分解的结果: 未经精化的输入结构 未经精化的变换结构 * 未经精化的输出结构 * 7、使用设计度量和设计准则对第一次分割得到的软件结构进一步精化 对于从前面的设计步骤得到的软件结构,还可以进行许多修改: 输入结构中的模块“转换成rpm”和“收集sps”可以合并 模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合 模块“加速/减速显示”可以相应地放在模块“显示mph”的下面 * 精化的数字仪表板系统的软件结构 * 事务分析的映射方法 事务设计 * I P1 P2 P3 事物流 事务中心 事务处理 事务控制 原 始 的 数 据 流 图 对 应 模 块 图 “事务分析”技术 ① 确定流界 首先从数据流图中找出事物流、事务处理中心和事务路径。事务中心前是接收事务,事务中心后是事务路径。 进行一级分析,设计顶层模块 * I P1 P2 P3 事物流 事务中心 事务处理 事务控制 接收事务 发送事务 原 始 的 数 据 流 图 对 应 模 块 图 事务分析技术 (续一) ②进行一级分析,设计上层模块 事务分析的任务是从数据流图中导出具有接受分支和发送分支的软件结构。对事务中心应设计“事务控制”模块;对事务流应设计“接收事务”模块;对事务路径,应设计“发送控制”模块 * I P1 P2 P3 事物流 事务中心 事务处理 事务控制 接收事务 发送事务 P1 P2 P3 原 始 的 数 据 流 图 对 应 模 块 图 事务分析技术 (续二) ③进行二级分解,设计中下层模块 对于接受分支,可用类似于转换处理型数据流图中对输入数据流的方法设计中下层。对于发送分支,在发送控制模块下为每条事务路径设计一个事务处理模块,这一层称为事务层。在事务层模块下,沿各事务路径进行进一步细化 * 设计的后处理 在确定系统的软件结构以后,还必须做好下述工作: 为每个模块开发一份功能说明 为每个模块提供一份接口说明 定义局部的和全程的数据结构 给出所有的设计限制或约束 进行总体设计评审 如果需要和可能的话,进行设计“优化” * 启发规则 改进软件结构提高模块独立性 设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;有时可以通过分解或合并模块以减少控制信息的传递及对全程数据的引用,并且降低接口的复杂程度 * 消除重复功能 Q1 C Q2 C Q1 Q2 C 改进前 Q1、Q2功能相似 X Y Q’ X Y X Y 重复部分 改进方法1: 将Q1、Q2 合并为Q’ 不可取 改进方法2: 将Q1、Q2的公共 部分分离出来 * 启发规则 模块规模应该适中 经验表明,一个模块的规模不应过大,最好能写在一页纸内(通常不超过60行语句)。过大的模块往往是由于分解不充分,过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂 * 启发规则 深度、宽度、扇出和扇入都应适当 深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度 宽度是软件结构内同一个层次上的模块总数的最大值。一般说来,宽度越大系统越复杂 扇出是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块 扇入表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的,但是,不能违背模块独立原理单纯追求高扇入 * 减少高扇出争取高扇入 编外 人员 工资 取得 工资 数据 计时 制工 资额 薪金 制工 资额 编外 人员 税款 编外 人员 扣款 常规 扣款 税收 扣款 计算实发工资 避免平铺结构 * 增加中间层降低扇出 编外 人员 工资 取得工资数据 计时 制工 资额 薪金 制工 资额 编外 人员 税款 编外 人员 扣款 常规 扣款 税收 扣款 计算实发工资 计时工人实发工资 计薪工人实发工资 编外人员实发工资 * ? 模块的作用域应该在控制域之内 设计好的系统,受判断影响的模块应该从属于做出判断的模块,最好局限在做出判断的那个模块本身
文档评论(0)