第4章-总体设计_第1页
第4章-总体设计_第2页
第4章-总体设计_第3页
第4章-总体设计_第4页
第4章-总体设计_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第4章总体设计 4 1总体设计的过程4 2软件设计的概念和原理4 3启发式规则4 4图形工具4 5面向数据流的设计方法 总体设计的任务 回答 怎么做 的问题 总体设计的成果是系统结构图 4 1总体设计的过程 分解软件的功能设计软件的结构设计软件数据库制定测试的计划书写软件的文档严格审查和复查 4 2软件设计的概念和原理 软件设计的方法 自顶向下 逐步求精 模块化概念 事情分解与难度公式假设 复杂度C P1 C P2 假设 工作量E P1 E P2 则 C P1 P2 C P1 C P2 则 E P1 P2 E P1 E P2 模块化概念 模块划分不是无限地分割软件 成本 模块数目 接口成本 成本 模块 软件总成本 最小成本区 M 模块化和软件成本之间的关系图 模块化概念 每个软件都有一个最适当的模块数目M使得软件开发的成本最小 模块化的优点 软件结构清晰 有助于提高软件的可靠性 有助于软件开发工程的组织管理 抽象 使用问题所处环境的语言概括地描述问题的解法 采用过程化的方法对问题加以描述 描述数据对象的细节 定义与该数据对象相关的操作 如数据字典 信息隐藏 模块中所包含的信息 包括数据和过程 不允许其它不需要这些信息的模块使用 信息局部化 把一些关系密切的软件元素物理地放在一起 局部化意味着模块中的错误也局部化了 易于发现 模块独立 模块独立是模块化 抽象 信息隐蔽和局部化概念的直接结果 模块独立的两条理由 有效的模块化软件比较容易开发 独立的模块比较容易测试和维护 模块独立是好设计的关键 模块独立的概念 衡量模块独立程度的定性标准 内聚 耦合耦合是模块之间的互相连接的紧密程度的度量 内聚是模块内部各个元素彼此结合的紧密程度的度量 模块独立性比较强的模块是高内聚低耦合的模块 耦合 一个软件结构内不同模块之间互相连接的度量 影响系统的可理解性 可测试性 可靠性和可维护性 尽量设计松散耦合的软件系统 耦合的种类 非直接耦合如果两个模块之间没有直接关系 它们之间的联系完全是通过主模块的控制和调用来实现的 这就是非直接耦合 耦合的种类 数据耦合如果两个模块彼此之间通过简单数据参数 不是控制参数 公共数据结构或外部变量 来交换输入 输出信息的 则称为数据耦合 软件中必然包含这种耦合 耦合度小 耦合的种类 标记耦合如两个模块通过传递数据结构 不是简单数据 而是记录 数组等 加以联系 或都与一个数据结构有关系 则称这两个模块间存在标记耦合 耦合的种类 标记耦合 住户情况 是一个数据结构 图中模块都与此数据结构有关 标记耦合改为数据耦合举例 耦合的种类 控制耦合如果一个模块通过传送开关 标志 名字等控制信息 明显地控制选择另一模块的功能就是控制耦合 耦合度高系统复杂 把它分解或将判定上移 耦合的种类 改控制耦合为数据耦合举例 耦合的种类 公共耦合当两个或多个模块都通过一个公共数据环境相互作用 则它们之间的耦合就称为公共耦合 公共的数据环境可以是全局变量 全局数据结构 共享的通信区 内存的公共覆盖区等 耦合的种类 只有两个模块有公共数据环境 耦合的种类 内容耦合 1 一个模块直接访问另一个模块的内部数据 2 一个模块不通过正常入口转到另一模块内部 3 两个模块有一部分程序代码重迭 只可能出现在汇编语言中 4 一个模块有多个入口 程序功能不独立 坚决避免内容耦合 耦合的种类 耦合概念总结 尽量使用数据耦合 少用控制耦合 限制公共环境耦合的范围 完全不用内容耦合 内聚 一个模块内部各个元素彼此结合的紧密程度 理想内聚的模块只做一件事情 内聚和耦合密切相关 但更应重视内聚 追求高内聚 内聚的种类 功能内聚10分一个模块中各个部分都是完成某一具体功能必不可少的组成部分 该模块中所有部分紧密联系 不可分割的 内聚的种类 顺序内聚9分如果一个模块内的处理元素和同一个功能密切相关 而且这些处理必须顺序执行 内聚的种类 通信内聚7分如果一个模块内各功能部分都使用了相同的输入数据 或产生了相同的输出数据 通信内聚模块是通过数据流图来定义的 内聚的种类 图通信内聚例子 内聚的种类 通信内聚例子 相同输入 内聚的种类 过程内聚5分用流程图设计程序时 把流程图中的某一部分划出组成模块 就得到过程内聚模块 例如 把流程图中的循环部分 判定部分 计算部分分成三个模块 这三个模块都是过程内聚模块 内聚的种类 过程内聚 内聚的种类 时间内聚3分时间内聚又称为经典内聚 模块要求所有功能必须在同一时间段内执行 例如初始化模块和终止模块 优于逻辑内聚 内聚的种类 逻辑内聚1分这种模块把几种相关的功能组合在一起 每次被调用时 由传送给模块的判定参数来确定该模块应执行哪一种功能 修改很困难 内聚的种类 逻辑内聚举例 内聚的种类 偶然内聚0分巧合内聚也称偶然内聚 当模块内各部分之间没有联系 或者即使有联系 这种联系也很松散 出错比例高 耦合与内聚总结 没有必要精确确定内聚的级别 设计时力争做到高内聚 并且能够辨认出低内聚的模块 具备修改模块以达到高内聚低耦合的能力 从而提高模块的独立性 4 3启发式规则 消除重复功能改进软件结构提高模块独立性模块规模适中深度 宽度 扇出和扇入都应适当模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单入口单出口的模块模块功能应该可以预测 4 3启发式规则 消除重复功能 4 3启发式规则 改进软件结构提高模块的独立性通过分解或合并 力求降低耦合提高内聚 模块规模适中不要过大 规模控制在60行语句 不要过小 接口复杂 4 3启发式规则 适当控制深度 宽度 扇出 扇入深度 分层的层数 过大表示分工过细 宽度 同一层上模块数的最大值 过大表示系统复杂度大 扇出 fan out 一个模块直接调用 控制的模块数 要求3 fan out 9扇入 fan in 直接调用该模块的模块数在不破坏独立性的前提下 fan in大比较好 但不能违背模块独立性原则 4 3启发式规则 顶层扇出较高 中层扇出较少 底层扇入较高 图程序结构图 4 3启发式规则 4 3启发式规则 增加中间层降低扇出 4 3启发式规则 作用域在控制域内作用域 为受该模块内一个判定影响的所有模块的集合 控制域 为这个模块本身以及所有直接或间接从属于它的模块的集合 4 3启发式规则 降低接口的复杂程度接口复杂可能表明模块的独立性差 单出单入 避免内容耦合 相同输入必产生相同输出 接口复杂是紧耦合低内聚的征兆 4 3启发式规则 模块功能应该可以预测把模块看作一个黑盒子 只要输入的数据相同则产生同样的输出 则这个模块是可预测的 但也要防止模块功能过分局限 4 4图形工具 层次图和HIPO图结构图 4 4图形工具 结构图反映程序中模块之间的层次调用关系和联系 模块 方框表示 方框中写有模块的名字 一个模块的名字应适当地反映这个模块的功能 调用 从一个模块指向另一个模块的箭头表示前一模块中含有对后一模块的调用 数据 调用箭头边上的小箭头表示调用时从一个模块传入给另一个模块的数据 小箭头也指出了传送的方向 结构图中的四种模块 结构图中的选择调用 A C B D A根据内部判断决定是否调用B A按另一判定结果选择调用C或D 结构图中的循环调用 A B C 4 5面向数据流的设计方法 结构化设计方法任何系统都可以用数据流图表示 利用 映射 可以把数据流图转换为软件结构结构化设计方法 SD 即基于对数据流的分析变换流事务流 信息流的两种形式 变换流 信息通常以 外部世界 的形式进入软件系统 经过处理后再以 外部世界 的形式离开系统 事务流 数据沿输入通路到达一个处理后 这个处理根据输入数据的类型在若干个动作序列中选出一个来执行 基本概念 图变换流 变换型数据流举例 变换中心 传入部分 输入信息 格式检查 处理 显示 正确信息 结果 数据 传出部分 图事务流 软件结构基本框架 变换分析设计 输入模块 输出模块 变换中心模块 c B C A a b 变换中心 传入部分

温馨提示

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

评论

0/150

提交评论