第05章 总体设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据耦合举例 标记耦合举例 控制耦合举例 控制耦合增加了理解和编程的复 杂性,调用模块必须知道被调模 块的内部逻辑,增加了相互依赖 去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调 用模块中进行 (2)被调用模块分解成若干单一功 能模块 改控制耦合为数据耦合举例 通信内聚模块例 过程内聚模块 逻辑内聚模块 消除重复功能 事务流设计举例 事务流设计举例 变换分析方法由以下四步组成: 重画数据流图; 区分有效(逻辑)输入、有效(逻辑) 输出和中心变换部分; 进行一级分解,设计上层模块; 进行二级分解,设计输入、输出和中心变换部分的中、下层模块。 2、分析设计 ⑴ 变换分析 变换处理 输出处理 输入处理 输入外部信息流 输出外部信息流 输入流 输出流 S S T 变换中心 S S T a.变换流模型 例:P.96 -101 汽车数字仪表板的设计 功能:① 通过模 - 数转换实现传感器和微处理机接口; ② 在发光二极管面板上显示数据; ③ 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等; ④ 指示加速或减速; ⑤ 如果车速超过55mph ,则发出警告铃声。 第一步:DFD的分界,先分出I、P、O三块 燃料流 传感器信号 SPS 旋转信号 读 旋转信号 收集和求平均 确定加/减速 转换成 转/分 计算里程 计算mph,超速值 产生 加/减速显示 计算燃料消耗 计算gph 读和校核 产生mpg显示 产生mph显示 发出铃声 产生里程显示 SPS ?SPS 箭头指示 燃烧流 上箭头 水平线 下箭头 rpm rpm gph mph mpg mph 超速值 英里 显示 铃声 mph显示 mpg显示 4、模块的作用域应该在控制域之内   模块的作用域是指受该模块判定影响的所有模块数。 模块的控制域包括它本身及其所有的从属模块。举例如图5-2。 如果一个判定的作用域包含在这个判定所在模块的控制域之内,则这种结构是简单的,否则,它的结构是不简单的。 ? ? ? ? 影响范围在控制范围之外 影响范围在控制范围之内,但是判定位置太高 判定 影响范围在控制范围之内,正确的实现 理想的影响范围在控制范围 影响范围和控制范围的4种情况 M A G B C F E D 图5-2 模块的作用域和控制域 图中:如果模块A的作用域为B、C,模块A的控制域为B、C、D、E、F,则A的控制域包括了作用域,软件结构的划分是合理的。如果模块A的作用域为B、C,G,模块A的控制域为B、C、D、E、F,则A的控制域不包括了作用域,软件结构的划分是不合理的,将使模块间出现控制耦合,应要重新划分调整。 ? 重新调整的方法(1)把做判定的点往上移。上例中,把判定从模块A中移到模块 M中,见下图① 。(2)把那些在作用域内但不在控制域内的模块移到控制域内,成为它的直属下级模块。上例中,把模块G移到模块A的下面,见下图② 。 M G B C F E D M A G B C F E D 图① A上调到M中 图② G下调由A作用 ? ? 5、力争降低模块接口的复杂程度 模块接口复杂是软件发生错误的一个主要原因,应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。 例如,求一元二次方程的根的模块Q-root(tbl,x) ,其中用数组tbl传送方程的系数,用数组x回送求得的根。这种传递信息的方法不利于对这个模块的理解,不仅在维护期间容易引起混淆,在开发期间也可能发生错误。下面这种接口可能是比较简单的: Q-root(A,B,C,root1,root2)其中A,B,C是方程的系数,root1和root2是算出的两个根。 接口复杂或不一致(即看起来传递的数据之间没有联系),是紧耦合或低内聚的前兆,应该重新分析这个模块的独立性。 6、设计单入口单出口的模块 该规则是说模块接口尽量要单入口、单出口,这样可避免出现模块的内容耦合,降低接口成本。 当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比较容易维护的。 7、模块功能应该可以预测 一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果。但是,如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的。对于这种模块,如果调用者不小心使用,其结果将不可预测。 但要避免过分受限制的模块 如果一个模块的局部数据结构的大小、控制流的选择或者与外界(人、硬软件) 的接口模式被限

文档评论(0)

yyh892289 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档