




已阅读5页,还剩153页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章概要设计 4 1什么是概要设计 理解 4 2概要设计的原理及启发式规则 理解 4 3软件结构设计的图形工具 重点 4 4软件结构设计 重难点 4 5概要设计文档4 6小结 2 本章学习要求 掌握 1 软件设计过程遵循的基本原理和相关概念 2 描绘软件结构的图形工具的运用 3 面向数据流设计方法概念 变换分析 事务分析法过程和应用 理解 1 典型的总体设计过程包括的步骤 2 设计中的启发式规则 3 本章重点 难点 重点 1 软件设计过程遵循的基本原理 2 面向数据流设计方法 难点 变换分析 事务分析法过程和应用 4 软件设计的两个阶段 概要设计 总体设计 初步设计根据需求 设计软件系统结构和数据结构 确定程序的组成模块及模块之间的关系 详细设计 过程设计确定模块内部的算法和数据结构 选定某种过程的表达形式来描述各种算法 产生精确描述各模块程序过程的详细文档 并进行评审 5 4 1什么是概要设计 4 1 1概要设计的任务4 1 2概要设计的过程4 1 3概要设计的方法4 1 4概要设计的参与者 6 4 1 1概要设计的任务 概要设计的任务 1 根据需求分析结果 确定可选的技术方案 2 划分出组成软件系统的物理元素 黑盒子 程序 文件 数据库 人工过程和文档等3 进行软件结构设计和数据设计 即确定系统中每个程序由哪些模块组成 以及这些模块之间的关系 即系统结构图 4 编写出本阶段的阶段性成果 概要设计文档 7 4 1 2概要设计的过程 概要设计的主要过程如下 寻找可能的系统实现方案 选择可行的待推荐的系统实现方案 确定合理的系统实现方案 设计树形或层次结构的软件结构图 8 1 寻找可能的系统实现方案 需求分析阶段得到的经过细化的数据流图DFD是概要设计的起点 软件分析人员可以将DFD中的某些加工逻辑地归并到一个自动化边界内 作为一组 而将其它加工逻辑同样归并起来 不同的自动化边界划分方法就确定了系统的不同实现策略 可借助系统流程图STD来描述物理实现策略 9 定货系统 L2层数据流图的自动化边界划分 以批量方式更新库存 10 以批量方式更新库存 并生成定货信息 内部逻辑描述 仓库管理员每天 或每周 每月 称为更新频度 多次接收不同事务 即出库事务和入库事务 然后暂存事务信息到事务数据库 待每天下午下班前1小时 停止事务接收 软件系统批量读取事务数据库中的待更新事务 并根据实时库存信息生成每日定货报表 提交给采购员 此时 软件分析人员设想可能的系统物理方案 假设挑选一种成本相对较高的实现方案 11 图4 2批量方式更新的高成本方案物理描述 高成本实现方案 12 详细分析该方案特点 较适用于大型仓库的定货管理 即事务较多需由多个仓库管理员来维护 每个仓库管理员分别在一个工作站上处理事务信息 待提交事务的时刻点到来之后 统一提交给服务器进行批量更新 产生定货信息和定货报表 该方案成本相对较高 若要降低成本可考虑减少工作站数量 并将事务数据库统一建立在数据库服务器上 13 第二种自动化边界的划分方式 图4 3联机方式的自动化边界划分方法 14 图4 4联机方式的高成本物理方案 以联机方式更新库存 即实时接收事务信息 然后立即更新库存 并产生定货信息和定货报表 此方案即时处理事务 不需设计事务数据库 可能的系统物理方案如下 15 该方案适用于小型仓储企业 一名仓库管理人员即完成事务的提交 并由单独的数据库服务器更新库存信息 生成定货报表 若要降低系统的成本 可考虑去除数据库服务器 由工作站承担其数据存储的功能 16 17 2 选择可行的推荐的系统实现方案 在明确了系统的物理实现策略之后 即可评估不同方案的成本 效益 并为它们规划出项目实施的进度计划 同时画出每个方案的系统流程图 列出组成系统的物理元素清单 形成推荐方案 交由用户 相关技术专家以及项目管理人员进行评审 18 3 确定合理的系统实现方案 软件分析人员综合比较各种合理方案的利弊 推荐出一个最佳的实现方案 由用户及相关技术专家对其进行审查 决定该方案是否满足了用户的需要 且在当前的技术条件下能否实现 再通过使用部门的负责人的审批之后即可进入到软件结构设计阶段 例如 若用户需对某大型仓库进行信息化管理 且用户对项目的各种投资非常充足 则可以考虑如图4 2所描述的系统实现方案 19 4 设计树形或层次结构的软件结构图 软件结构也称为程序结构 它是在确定了系统的实现方案之后 综合运用模块化思想 模块独立性思想 信息隐蔽和信息局部化思想以及软件设计的启发式规则 将软件进行功能的分解 并把分解之后的软件模块按照自上而下的树形或层次结构组装在一起 因此 概要设计的关键任务之一就是导出符合要求的软件结构 而软件结构设计的依据是需求分析阶段得到的经过细化和确认的数据流图 DFD 20 4 1 3概要设计的方法 概要设计主要任务 设计系统的物理方案和软件结构 对于系统的物理方案 正确辨别系统可能存在的多种自动化边界划分方法 设想系统包含的物理元素 最后 结合系统流程图描绘出物理方案的模型 对于软件结构 分析需求分析阶段提交的数据流图 确定数据流图的类型然后应用 映射规则 成功导出树形或层次结构的软件结构 21 4 1 4概要设计的参与者 软件分析人员 设计目标系统的物理方案和软件结构 用户 参与评价并最终审批系统的物理方案和最终的软件结构 软件项目管理人员 参与评价软件分析人员设计的系统的物理方案和软件结构 并对软件分析人员的设计工作进行指导 相关的技术专家 则主要参与评价软件分析人员设计的系统的物理方案以及软件结构 22 4 2概要设计的原理及启发式规则 4 2 1抽象予求精4 2 2模块与模块化4 2 3耦合与内聚4 2 4信息隐藏与信息局部化4 2 5启发式规则 23 4 2 1抽象与求精 什么是抽象 认识复杂事物和现象时 抽出事物本质的共同特性而暂不考虑细节 24 抽象的层次 最高抽象层次 使用问题所处环境的语言 自然语言 概括描述问题的解法 较低抽象层次 采用过程化的方法 程序流程图 盒图等 叙述问题加的解法 最低抽象层次 采用软件实现的方式 源程序 伪代码等 给出问题的解法 25 例 开发一个CAD软件的三种抽象层次 最高抽象 用问题所处环境语言描述 CAD软件包含一个绘图交互界面和绘图工具条 用户在绘图交互界面上完成二维图形的绘制 绘图工具条包含直线 折线 圆 曲线 颜色填充等图形元素 用户在绘制完图形之后可以保存绘图为绘图文件 26 例 开发一个CAD软件的三种抽象层次 降低抽象 用过程化方式描述软件的任务需求 CAD软件包含以下的子任务 完成与用户交互的子任务 完成二维图形绘制的子任务 完成图形化显示的子任务 完成对绘制文件的管理子任务 27 最低抽象 用伪代码描述 Procedure2 DdrawingcreationBeginRepeatuntil 二维图形绘制任务结束 Begin接受所绘图形的命令Caseline 绘制直线Rectangle 绘制矩形 绘制其它图形的选择语句 同上省略endend 28 29 二 求精 求精 人类解决复杂问题时所采用的基本方法 由NiklausWirth提出的设计策略 适用于大而复杂的软件系统开发 Miller法则 一个人在任何时候都只能把注意力同时集中在 7士2 个知识块上 但是 在开发软件的过程中 软件工程师在一段时间内需要考虑的知识块数远远多于7个 软件系统的开发也是一个逐步求精的过程 30 自顶向下 逐步细化的基本思想 将功能 信息的说明分为多个层次 最高层也最抽象 仅仅只是概念性地描述功能或信息 不提供功能的内部工作情况或信息的内部结构 设计者从最高层开始 仔细推敲 进行功能和信息的细化 给出下层实现的细节 随着每个后续细化逐步的完成 提供越来越多的细节 最终得出用程序设计语言表达的程序 31 结合了模块化和逐步细化思想建立的软件结构图 32 抽象与求精注意注意问题 在理解抽象和求精时需要注意 抽象和求精均可在软件问题的不同层次进行 抽象是忽略多余细节而强调有关细节的过程 求精则是强调多余细节的过程 抽象和求精互补 降低了软件问题的抽象等级其实是提高了该问题的求精等级 抽象和求精都是非常有用的软件分析和设计方法 33 34 4 2 2模块与模块化 什么是模块和模块化思想 采取自顶向下的方式 逐层把软件系统划分成若干可单独命名和可编址的部分 模块 每个模块完成一个特定的子功能 所有模块按某种方法组成一个整体 完成整个系统所要求的功能 软件系统就是通过这些模块的组合来实现 35 模块化思想 36 模块化的优点 模块化是软件解决复杂问题所具备的手段 可降低软件复杂性 减少开发工作量 从而降低开发成本 提高软件生产率 37 模块化与软件成本的关系 每个软件都有一个最适当的模块数目M使得软件开发的成本最小 38 4 2 3耦合与内聚 耦合是模块之间互相连接的紧密程度的度量 内聚是模块内部各个元素彼此结合的紧密程度的度量 模块独立性要求 高内聚低耦合 39 1 藕合 也称块间的联系 衡量各模块间联系紧密程度的一种度量 设计目标 低藕合 40 耦合类型 41 非直接耦合 非直接耦合 两个模块之间没有直接关系 它们之间的联系完全是通过主模块的控制和调用来实现 42 数据耦合 数据耦合 一模块访问另一模块时 通过传递简单数据参数 不是控制参数 公共数据结构或外部变量 交换输入 输出信息 43 特征耦合 标记耦合 两个模块通过传递复杂数据结构加以联系 例如 模块之间传递数据库记录 数组结构元素 链表结构元素等 44 特征耦合 示例 住户情况 是一个数据结构 图中模块都与此数据结构有关 计算水费 和 计算电费 本无关 由于引用了此数据结构产生依赖关系 它们之间是特征耦合 45 特征耦合改为数据耦合举例 46 控制耦合 控制耦合 模块之间传递的是控制参数 如开关 标志 名字等 控制被调用模块的内部逻辑 47 控制耦合举例 48 去除模块间控制藕合的方法 控制藕合增加了理解和编程的复杂性 调用模块必须知道被调模块的内部逻辑 增加了相互依赖 解决方法 1 将被调用模块内的判定上移到调用模块中进行 2 被调用模块分解成若干单一功能模块 49 改控制藕合为数据藕合举例 50 公共环境藕合 一组模块引用同一个公用数据区 也称全局数据区 公共数据环境 公共的数据环境可以是全局变量 全局数据结构 共享的通信区 内存的公共覆盖区等 51 公共环境藕合 示例 模块A B C间存在错综复杂的联系 52 公共环境藕合存在的问题 公共环境藕合的问题 1 软件可理解性降低 2 诊断错误困难 3 软件可维护性差 4 软件可靠性差 53 内容耦合 有下列情况之一属于内容耦合 54 模块间藕合强度 55 降低藕合度的设计原则 1 根据问题特点 选择合适的藕合类型 尽量使用数据耦合 少用控制耦合和外部耦合 限制公共耦合的范围 完全不用内容耦合 2 降低模块接口的复杂性 减少每个模块的参数个数 尽量使用标准过程调用方式 少用直接引用的方式 传送的信息以标准 直接的方式提供 3 把模块的通信信息放在缓冲区中 56 耦合概念总结 尽量使用数据耦合 少用控制耦合 限制公共环境耦合的范围 完全不用内容耦合 57 2 内聚性 又称块内联系 指一个模块内部各个元素彼此结合的紧密程度的度量 若一个模块内各元素 语句之间 程序段之间 联系的越紧密 则它的内聚性就越高 设计目标 高内聚 58 内聚的类型 59 高内聚 功能内聚 10分 模块内所有处理元素属于一个整体 完成一个单一的功能 最高程度的内聚 判断一个模块是不是功能内聚 只要看这个模块是 做什么 是完成一个具体的任务 还是完成多任务 例如 计算雇员年龄并给出生日的子程序就是功能内聚性的 因为它只完成一项工作 而且完成得很好 60 高内聚 顺序内聚 9分 一个模块内部各部分彼此紧密联系 为实现某一功能结合在一起 并按照顺序方式执行 通常一个处理元素的输出数据作为下一个处理元素的输入数据 输入成绩 编辑成绩 显示成绩 61 顺序内聚 举例 有一个按给出的生日计算雇员年龄 退休时间的子程序 假如它是利用所计算的年龄来确定雇员将要退休的时间 那么它就具有顺序内聚性 62 中内聚 通信内聚 7分 模块内所有元素使用相同的输入数据 或产生相同的输出数据 63 通信内聚 举例 有一个按给出的生日计算雇员年龄 退休时间的子程序 假如它是分别计算年龄和退休时间的 但使用相同生日数据 那它就只具有通讯内聚性 64 中内聚 过程内聚 5分 一个模块内各处理元素相关 且必须以特定次序执行 65 低内聚 时间内聚 3分 模块内部的所有组成部分必须在同一段时间内执行完成 例如 初始化系统模块系统结束模块紧急故障处理模块等 66 低内聚 逻辑内聚 1分 把几种相关功能 逻辑上相似的功能 组合在一模块内 每次调用由传给模块的参数确定执行哪种功能 67 逻辑内聚 举例 一个子程序负责打印季度开支报告 月份开支报告和日开支报告 具体打印哪一个 由传入的控制标志决定 它具有逻辑内聚性 因为它的内部逻辑是由输进去的外部控制标志决定的 显然 这个子程序不是按只完成一项工作并把它作好的原则 将这个子程序变为功能内聚的方法 建立三个子程序 一个打印季度报告 一个打印月报告 一个打印日报告 修改原来的调用子程序 让它根据传送的控制标志来调用这三个子程序之一 调用子程序将只有调用代码而没有自己的计算代码 因而具有功能内聚性 而三个被调用的手程序也显然是功能内聚性的 68 低内聚 偶然内聚 0分 块内各组成成份在功能上是互不相关的 也称无内聚性 模块M中的三个语句分别完成各自的功能 之间没有任何联系 缺点 可理解性差 可修改性差 69 模块内聚设计原则 尽量追求功能内聚少用逻辑内聚和偶然内聚顺序内聚和通信内聚可以使用没有必要精确定义内聚的级别 只要能够识别出低内聚的模块即可 70 3 模块独立性 模块独立性的本质 设计高内聚 低耦合的软件结构 内聚和耦合是衡量模块独立性的定性标准 耦合和内聚是相互的 在提高模块内聚的同时也可能会降低模块间的耦合 71 4 2 4信息隐蔽和信息局部化 信息隐蔽和信息局部化相互影响 相互作用 信息隐蔽的同时已经将模块内部的元素局部化 而信息局部化更有助于实现信息隐蔽 信息隐蔽 该模块内部包含的所有信息 算法和数据结构 对于不需要这些信息的模块来说是不能访问的 其本质是隐蔽模块实现细节 信息局部化 将一些关系密切的软件元素物理地放置在一起 其本质就是放入模块内部的元素被局部化了 函数就是一种典型的信息局部化 72 4 2 5启发式规则 在软件设计中 有大量在工程实践中由设计人员总结出来的设计方法和经验 这些方法和经验可能不具备通用性 但它们却是启发软件设计人员设计出好的软件结构的重要规则 并且随着时间的推移这些规则还会不断丰富和完善 故在软件工程中把这些规则称为 启发式规则 73 1 消除重复功能 多个模块都包含相同的程序代码段 则这些相同的程序代码段即为重复功能 好的软件设计中的重复功能应该尽可能少 故需要设法消除软件中的重复功能 74 1 消除重复功能 模块Q1 Q2包含重复代码 改进方法2 将Q1 Q2的公共部分分离出来 75 2 改进软件结构 提高模块独立性 对软件结构的改造方法 模块分解 将完成多个功能的模块分解成多个独立完成一个功能的小模块 模块合并 将多个小模块合并在一起 使合并后的大模块能完成一个特定的功能 通过分解和合并 软件设计人员可以降低软件模块间的耦合度 提高软件模块的内聚度 76 3 模块规模适中 模块过大 可理解程度下降 模块过小 开销大于有效操作 系统接口复杂 在考虑模块的独立性同时 为了增加可理解性 模块的大小最好在50 150条语句左右 可以用1 2页打印纸打印 便于人们阅读与研究 77 4 深度 宽度 扇出 扇入适中 深度 分层的层数 过大则分工过细 宽度 同一层上模块数的最大值 宽度越大系统越复杂 扇出 一个模块直接调用 控制的模块数目 过大则说明需要调用 控制的下级模块过多 一般为3 9个 扇入 表示有多少个上级模块直接调用本模块 过大则上级模块过多 这是有好处的 但不能违背模块独立性原则 78 4 深度 宽度 扇出和扇入适中 79 扇出过大 示例 80 增加中间层降低扇出 81 5 模块的作用域在控制域内 作用域 受该模块内一个判定影响的所有模块的集合 控制域 这个模块本身以及所有直接或间接从属于它的模块的集合 82 示例 模块C的控制范围 C D E F G H如果模块C作出的决策影响了模块L L超出C的控制范围 改进方法 把做判定的点上移 把在作用域内但不在控制域内的模块移动到控制域内 83 6 降低模块接口的复杂性 接口传递信息应简单且和模块功能一致 模块的接口要简单 清晰 含义明确 便于理解 易于实现 测试与维护 例如 求一元二次方程根的模块 QUAD ROOT TBL X 数组TBL传送方程的三个系数 数组X回送求解的两个根 QUAD ROOT A B C ROOT1 ROOT2 A B C是方程的系数 ROOT1和ROOT2是两个根 84 7 设计单入口单出口的模块 单入口 从程序顶部进入程序 单出口 从程序的底部退出程序 任何从程序的中部进入程序或退出程序的情况均视为非正常入 出口 当从顶部进入模块并且从底部退出来时 软件比较容易理解 容易维护 85 多出口模块 For i 0 i 10 i If i 4 Gotos1 此处强制跳出了循环语句 是一个非正常出口 S1 i 10 86 8 模块功能可预测 如果把模块视为一个黑盒 模块功能可以预测的含义是 输入相同数据 必然产生相同的预期输出结果 可以预测的模块有利于实现及测试 功能单一的模块具有高内聚 但模块功能过分局限 使用范围将过分狭窄 缺乏灵活性和可扩充性 87 4 3软件结构设计的图形工具 4 3 1层次图和HIPO图4 3 1结构图 88 4 3 1层次图和HIPO图 层次图 描述软件的层次结构 而非数据结构 层次图中 一个方框代表一个模块 方框间的连线表示调用关系 而非组成关系 适用于自顶向下设计软件的过程 HIPO图 层次 H 图 IPO图除最顶层的方框外 其他方框都要加编号 编号规则同数据流图 89 层次图示例1 正文加工系统 输入 输出 编辑 加标题 存储 检索 编目录 格式化 添加 删除 插入 修改 合并 列表 图5 3正文加工系统的层次图 H图 90 层次图示例2 91 带编号的层次图示例 正文加工系统 输入1 0 输出2 0 编辑3 0 加标题4 0 存储5 0 检索6 0 编目录7 0 格式化8 0 添加3 1 删除3 2 插入3 3 修改3 4 合并3 5 列表3 6 92 4 3 2结构图 反映程序中模块之间的层次调用关系和联系 结构图基本符号 方框 模块方框间连线 模块调用关系 上方的模块调用下方的模块 带注释的箭头 模块间传递的信息箭头尾部空心圆 数据信息箭头尾部实心圆 控制信息 93 结构图中4种类型的模块 实现数据从下层模块传入到上层模块 实现数据从上层模块传出到下层模块 实现数据的变换 协调传入 传出和变换模块 传入模块 传出模块 变换模块 协调模块 94 结构图中还可采用如下两种模块的调用关系 图4 23M模块选择调用模块A和B 图4 24模块M循环调用A B C三个模块 95 控制信息与数据信息 96 产生最佳解的一般结构 97 4 4软件结构设计 4 4 1基于DFD的变换分析与事务分析4 4 2基于数据流图的结构映射4 4 3结构化设计的步骤4 4 4设计优化4 4 5变化分析举例 重难点 4 4 6事务分析举例 重难点 4 4 7混合型举例 98 什么是软件结构设计 软件结构设计 也称为结构化设计 SD 指在需求分析的基础之上 将已经细化的数据流图 DFD 根据映射规则映射成上述的软件结构图 层次图或结构图 结构化设计是基于对数据流的分析 由于任一个软件系统的核心问题都是对信息 即数据 进行处理或加工 故可用数据流图形式化地表达任一个软件问题 99 4 4 1基于DFD的变换分析与事务分析 数据流图中的数据流可分为两种类型 变换型数据流事务型数据流 100 变换型数据流 变换型数据流的特点 具有明确的传入 变换 或称主加工 和传出界面的DFD 另一种表示形式 101 变换型数据流举例 102 事务型数据流基本模型 事务型数据流 数据流沿着某输入通路到达一个数据加工之后 该加工根据数据类型在若干个动作序列中选出一个来执行 离开系统 103 事务型数据流另一种表示方式 104 事务型数据流图举例 105 混合型数据流图 实际的软件系统大多是混合型数据流图 如下例 图4 29混合型数据流图 106 变换分析 运用变换分析的方法将变换型数据流图映射成软件结构 事务分析 采用事务分析的方法将事务型数据流图映射成软件结构 面向数据流设计方法的基本流程如下图 面向数据流方法设计过程 108 软件结构可归纳为两种典型形式 109 4 4 2基于数据流图的结构映射 结构映射 将数据流图中的数据加工转换成软件结构图中的模块 并结合一组规则来确定模块之间的调用关系 110 1 变换型数据流图映射规则 几个重要概念 物理输入 直接由外部实体提交给软件系统的一组数据流 物理输出 直接由软件系统输出给外部实体的一组数据流 逻辑输入 直接由变换型数据流图的输入部分提交给变换中心的一组数据流 逻辑输出 直接由变换型数据流图的变换中心提交给输出部分的一组数据流 111 图4 31变换型数据流图中的几个重要的概念 几个重要概念 112 变换型数据流图映射规则1 划分出数据流图的输入部分 变换中心和输出部分之后 首先在软件结构中映射出主模块Cm 它抽象地表达目标软件系统 然后 映射出输入处理控制模块Ca 变换中心控制模块Ct和输出处理控制模块Ce 如下图所示 此时得到了初始的软件结构 113 变换型数据流图映射规则1 114 变换型数据流图映射规则2 对输入部分的加工进行映射 从数据流图的逻辑输入边界开始向其物理输入边界逐层映射 所有模块均映射为输入控制Ca的下层模块 且加工与模块之间一一对应 115 变换型数据流图映射规则2 116 映射规则3 映射规则4 映射规则3 对输出部分的映射 从数据流图的逻辑输出边界开始向其物理输出边界逐层映射 所有模块均映射为输出控制Ce的下层模块 且加工与模块之间一一对应 示意图同上 故省略 映射规则4 对变换中心的映射 变换中心中的加工逐个映射为变换控制Ct的下层模块 加工与模块之间一一对应 117 2 事务型数据流图映射规则 映射规则1 事务型数据流图包括三大部分 即输入通路 事务调度中心以及活动通路 首先在软件结构中映射出主模块 它抽象地表达目标软件系统 然后逐个分支地映射输入通路 接着映射一个事务调度控制模块 并为每条活动通路映射一个控制模块 此时就得到了初始的软件结构 用下图表示 118 图4 34事务型数据流图的映射规则1的应用示意图 119 2 事务型数据流图映射规则 映射规则2 对每条活动通路分别映射 逐个分析每条活动通路的数据流图类型 按事务型或变换型数据流图映射规则继续设计 直到每条通路均映射完毕 给出上例A活动通路的映射情况如图4 35所示 图中可见A活动通路必为一个变换型的数据流图 它的一种映射结果如下图 120 图4 35事务型数据流图的映射规则2应用示意图 121 4 4 3结构化设计的步骤 精化数据流图 确定数据流图类型 若是变换型数据流图 确定其输入部分 变换中心和输出部分 若是事务型数据流图 确定其输入通路 事务调度中心以及活动通路 分别根据变换型或事务型的映射规则1 完成初始软件结构设计 即第一级映射 根据映射规则2 3 4 事务型数据流图则为映射规则2 完成对其它所有加工的映射 即第二级映射 得到一个最初的软件结构 根据模块独立性原理和启发式规则 对最初的软件结构进行设计优化 得到最终的软件结构 122 4 4 4设计优化 设计优化的主要理论依据是模块独立性原理和8条启发式规则 它们的本质都是为了得到高内聚 低耦合的软件结构关系 为后续的软件实现 软件测试以及软件维护打下坚实的基础 设计优化的主要方法是对模块进行分解或合并 但软件设计人员需综合考虑这些优化之后的实际模块的耦合度 模块内聚度是否趋于积极变化 是则优化成功 否则需重新考量 123 4 4 5变换分析举例 汽车数字化仪表板的嵌入式软件系统 主要功能如下 通过模 数转换装置实现各种传感器和微处理机之间的接口 即通过传感器捕获模拟信号 并转换为数字信号 为汽车行驶的相关数据的计算做好准备 指示汽车当前时速 单位每小时英里数 mph 累加并显示汽车已经行驶的里程 计算并指示汽车每加仑油行驶的英里数 mpg 等 指示当前汽车的行驶状态 如加速 减速或匀速 适时发出超速警告 如果汽车时速超过55英里 小时 则发出超速警告铃声 在发光二极管面板上显示所有计算出的数据 即显示mph mpg等数据 124 图4 36描述汽车仪表板嵌入式软件系统的数据流图 125 设计软件结构图的步骤 Step1 复查并精化数据流图 确定该图能准确地表达问题需求 然后指出其数据流图类型 该图为变换型 也可以看做事务型 Step2 确定数据流图的输入部分 变换中心和输出部分 126 图4 37确定了各种边界的数据流图 127 Step3 根据映射规则1 得到初始软件结构图 图4 38汽车仪表板的初始软件结构图 128 Step4 根据映射规则2 3 4 完成对其它所有数据加工的映射 即第二级映射 得到一个最初的软件结构 图4 39输入部分和变换中心部分映射出的软件结构图 129 图4 40输出部分映射出的软件结构图 130 Step5 根据模块独立性原理和启发式规则 对最初软件结构进行设计优化 优化1 输入结构中的模块 转换成rpm 和 收集sps 可以合并 减少模块间的耦合 提高模块内部的内聚 经过合并之后的模块的内聚是顺序内聚 优化2 模块 确定加速 减速 可以放在模块 计算mph 下面 以减少耦合 优化3 模块 加速 减速显示 可以相应地放在模块 显示mph 的下面 以减少耦合 131 图4 41汽车仪表板嵌入式软件的最终软件结构图 132 变换型结构映射 示例2 例2 有如下数据流图 133 步骤1 区分输入 变换中心 输出部分 在DFD上标明分界线 注意 所谓 输入 输出 是站在整个系统的角度来看的 是整个系统的输入 输出部分 134 步骤2 第一级分解 设计顶层和第一层模块 135 步骤3 第二级分解 自顶向下分解SC各分支 设计出每个分支的中 下层模块 传入分支 136 1 输入分支的分解 137 1 输出分支 变换中心的分解 138 4 4 6事务分析举例 适用情况 数据流具有明显的事务中心 事务分析步骤 1 在DFD上确定事务中心 接收部分和发送部分 2 画出sc框架 把DFD上的三部分分别映射为事务控制模块 接收模块和动作发送模块 3 分解细化接收分支和发送分支 完成初始sc 139 首先 用阿拉伯数字标示出输入通路和A通路中的所有加工的名称 140 图4 43一级映射之后的初始软件结构 接着 根据映射规则1 映射出初始软件结构图 141 注意 输入通路中加工的映射是从与调度中心最接近的加工开始沿着数据流变换的相反方向逐层映射的 然后 对每条输出活动通路分别映射 以A通路为例加以说明 给出其中一种映射结果如下图 142 图4 44针对事务型数据流图的软件结构设计 143
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人事制度培训试题附有答案
- 低血容量性休克护理流程试题(含答案)
- 2025新闻记者采编人员从业资格考试试题(含答案)
- 解放思想大讨论活动图书馆系统个人剖析材料范文
- 地铁站钢结构工程质量保证体系及施工措施
- 人教版初中物理实验室安全演练实施计划
- 电脑安全防护培训服务创新创业项目商业计划书
- 初中数学考试题及答案
- 动物源性食品健康饮食品牌创新创业项目商业计划书
- 本地美食发现App创新创业项目商业计划书
- 4.《花之歌》教学设计-2024-2025学年统编版语文六年级上册
- 诉讼业务培训课件
- 12345热线培训课件
- 危险废弃物管理培训试题(附答案)
- 2025国投生物制造创新研究院有限公司招聘(31人)考试备考试题及答案解析
- 多彩的超轻泥教学课件
- 新学期,新征程+课件-2025-2026学年高二上学期开学第一课主题班会
- 赛事租赁用品租赁模式分析报告
- 学校防坠楼安全知识培训课件
- 护士长领导力提升与团队管理技巧
- 产前筛查答案及试题(附答案)
评论
0/150
提交评论