《软件工程》07 总体设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《软件工程》07 总体设计

2)对设计方法的需求  1) 提供可体现”原理/原则”的一组术语(符号),形成一个特定的抽象层,用于表达设计中所使用的部件. 2) 依据术语所形成的”空间”,给出表达软件模型工具. 3) 给出设计的过程指导. 启发式规则(1) 什么叫做“启发式”? 根据设计准则,从长期的软件开发实践中,总结出来的规则。 既不是设计目标,也不是设计时应该普遍遵循的原理 常见的六种启发式规则 改进软件结构,提高模块独立性; 模块规模适中-每页60行语句; 深度、宽度、扇入和扇出适中; 模块的作用域力争在控制域之内; 降低模块接口的复杂性; 模块功能应该可以预测。 通过模块的分解和合并,力求降低耦合,提高内聚。 例:多个模块公用的子功能可以独立形成一个模块,供这些模块调用。 改进软件结构,提高模块独立性 模块最好能够写在一页纸内(60行) 心理学研究表明:模块语句30之后,可理解性迅速下降。 方法 进一步分解过大的模块 将频繁调用的小模块合并到上级模块中 模块规模适中,每页60行语句 深度、宽度、扇入和扇出适中 深度:软件结构中的控制的层数 标示一个系统的大小和复杂程度 宽度:软件结构中同一个层次上的模块总数的最大值 宽度越大的系统越复杂 扇入:表示有多少个上级模块直接调用它 一般而言,扇入越大说明共享该模块的上级模块越多 不违背模块独立性的条件下,扇入越大越好 扇出:一个模块直接控制(调用)的下级模块数目 扇出过大意味着模块过分复杂 扇出过小意味功能过度集中 典型的3或者4(上限5-9) 好的系统:顶层扇出高,中层扇出少,底层扇入高,系统呈“葫芦”型 深度 宽 度 扇出 扇入 作用域 受该模块内一个判定影响的所有模块的集合 控制域 模块本身+所有直接或者间接从属于它的模块的集合 模块的作用域力争在控制域之内 M A G B C D E F A的控制域 作用? 使得信息传递简单并且和模块的功能一致 接口复杂或不一致往往导致紧耦合和低内聚 例子:求A x^2+B x + C=0的根 QUAD-ROOT(TBL,X) 数组TBL传送方程系数,数组X回送求得的根 QUAD-ROOT(A,B,C,Root1,Root2) 降低模块接口的复杂性 什么叫做“功能可以预测”? 什么样的模块功能不可预测? 模块带有内部状态?输出取决于该状态 模块功能应该可以预测 模块 相同输入 相同输出 输入部分 Get gph Get rpm Get sps Get 燃料流 变换燃料流为gph Get 燃转信号 变换燃转信 号为燃料流 变换sps为 rpm Get sps Get sps 转换为 sps Get 转速信号 变换为sps 变换为 sps 转速信号 转速信号 燃料流 燃料流 燃料流 gph sps sps rpm sps rpm gph sps sps sps sps sps sps sps 转速信号 转速信号 输入部分进一步精化 改进软件结构,提高模块独立性 输入部分的精化 输入部分 计算gph 计算rpm 计算 sps 读燃转信号 采集sps 读转速信号 其中:sps为转速的每秒信号量;sps 为sps的平均值; sps为sps的瞬时 变化值;rpm为每分钟转速;mph为每小时英里数;gph为每小时燃烧 的燃料加仑数;rpm为行进里程。 输出部分 PUT mpg PUT mph PUT里程 PUT 加/减速 PUT 超速量 显示 显示 显示 显示 输出部分进一步精化 把相同或类似的物理输出合并为一个模块, 以减少模块之间的关联。 输出部分的精化 输出模块 生成mpg 显示 生成mph 显示 生成里程 显示 生成加/减速显示 生成蜂鸣 显示 变换部分的精化 对于变换部分的求精,是一项具有挑战性的工作。其中主要是根据设计准则,并要通过实践,不断地总结经验,才能设计出合理的模块结构。 变换部分的精化 变换模块 计算mpg 计算mph 计算里程 计算加/减速 把“确定加/减速”的模块放在 “计算速度mph”模块下面, 则可以减少模块之间的关联, 提高模块的独立性。 总体设计总结 将一个给定的DFD转换为初始的模块结构图 基本上是一个 “机械”的过程 一般体现不了设计人员的创造力 优化设计 将一个初始的模块结构图转换为最终的模块结构图 对设计人员将是一种挑战 其结果将直接影响软件系统开发的质量。 * 过去的一张胶片(比较老) 2 结构化设计方法 1)何谓设计 设计目标:依据需求规约,在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构),以及详细的处理算法,产生设计规格说明书. 即:要回答如何解决问题-给出软件解决方案 结构化设计分为: (1

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档