




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章结构化系统设计 1 本章主要内容 系统设计的任务总体设计结构化设计的概念 基本原则从数据流图导出结构图详细设计代码设计输出设计输入设计人机对话设计模块详细设计数据库设计 网络设计系统设计说明书 2 7 2 1模块的概念 模块 Module 一词使用很广泛 通常对应于用一个名字就可以调用的一段程序语句 子程序或函数 模块具有输入和输出 逻辑功能 运行程序 内部数据四种属性 计算年龄 模块的图形表示方法 模块的函数接口表示 intcomputeAge datebirthday 3 7 2 2模块结构图 结构图 StructuredChart 描述系统的模块结构及模块间的联系结构图中的主要成分有 模块 用长方形表示调用 从一个模块指向另一模块的箭头表示前一个模块调用后一个模块 有循环调用和条件调用数据 用带圆圈的小箭头表示从一个模块传递给另一模块的数据 有实义 控制信息 带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息 4 主调模块 被调模块 被调模块 主调模块 被调模块 被调模块 循环调用 条件调用 1 结构图无严格的模块调用顺序 但一般习惯从左至右2 因为约定遵从从上向下的调用 调用关系也可以不使用箭头 而直接使用直线3 模块间传递的信息如果出现在数据字典中 则视为数据 否则为控制信息 结构图的画法 5 一个完整的结构图 6 简单的模块结构图 凭证管理模块的下层模块 凭证输入 凭证审核 凭证查询打印 凭证汇总 记账 7 模块设计的度量标准 为了衡量模块的相对独立性 提出了模块间的耦合 Coupling 与模块的内聚 Cohesion 两个标准耦合 模块和模块之间的联系程度内聚 模块内部各元素之间的联系程度设计目标 模块内的联系越紧越好模块间的联系越少越好为什么 8 7 2 3模块的耦合 doubleCalculateAvg intn doubletotal average value scanf 输入个数 n 两个模块之间存在联系 9 影响耦合度的因素 如果使用模块A需要了解模块B 那么A和B是耦合的 影响模块间耦合程度有三方面的因素 联系方式 模块间通过什么方式联系来往信息的作用 模块间来往信息作什么用数量 模块间来往信息的多少 混合控制数据 用过程直接引用语句调用 少 多 数量 方式 作用 0 离坐标原点越远 耦合程度越高 10 模块联系方式 直接引用 一个模块直接存取另一个模块的某些信息 例如全程变量 FORTRAN的common量 语言的extern量 共享的通信区等 也称为公共环境耦合 commonenvironmentcoupling 降低这种耦合程度的办法是使数据局部化 即使用局部变量过程语句调用 一个模块调用另一个模块 所有数据来往都以参数或返回值方式传递并使用 11 来往信息的作用 模块间的来往信息可以作数据用 也可以作控制信息用 A 取平均成绩或最高成绩 平均 最高B a 控制耦合 成绩 取最高成绩 取平均成绩 A 平均成绩 最高成绩 b 数据耦合 12 来往信息的数量 模块间传递的信息量越大 它们之间的耦合程度越高 一个模块最好只了解它确实需要使用的数据 而完全不知道其他数据的存在 独立性好 13 耦合的类型 根据以上因素 对耦合分类如下 数据耦合 采用子程序调用 调用模块将需要进行处理的数据传递给被调模块 数据耦合是不可避免的 标记耦合 如果调用模块将整个数据记录传递给被调模块 而被调模块只使用了部分数据项 则称为标记耦合或特征耦合 控制耦合 一个模块将控制信息传递给另一个模块 以控制被调模块的内部处理逻辑 可以分解 公共环境耦合 如果两个模块共享同一全局数据 称为公共耦合 内容耦合 两个模块之间的内部属性有直接关联 也称病态耦合 某些GOTO语句 14 减低耦合的设计原则 结构化设计要求模块间的耦合程度尽可能小 为此应 用过程语句调用其它模块模块间的参数作数据用模块间的参数尽可能少 15 7 2 4模块的内聚 doubleCalculateAvg intn doubletotal average value scanf inputvalue 模块内部各元素 变量 语句 之间存在联系 16 内聚的好处 模块的内聚反映模块内部联系的紧密程度 一个模块只需要做好一件事情 不要过分关心其它任务 高内聚性的好处是可以提高程序的可靠性 有一个调查表明 50 的强内聚性子程序是没有错误的 而只有18 的弱内聚性子程序才是无错的 弱内聚性子程序的出错机会要比强内聚性出错机会高6倍 而修正成本则要高19倍 摘自 代码大全 17 内聚的类型 模块的内聚可以分以下七类 偶然内聚 coincidentalcohesion 逻辑内聚 Logicalcohesion 时间内聚 temporalcohesion 步骤内聚 proceduralcohesion 通信内聚 communicationalcohesion 顺序内聚 Sequentialcohesion 功能内聚 functional cohesion 18 当同一个子程序中的操作之间无任何联系时 为偶然内聚性 也叫作 无内聚性 比如只是为了将程序中某几处凑巧相同的一些语句组合起来形成的一个模块 P Q R S 1 偶然内聚 B A read Cardfile D C T 19 将几个逻辑上相似的功能放在一个模块中 比如常见的出错处理模块 工作模块发现错误后 调用错误处理模块 将错误号作为控制参数传入 然后出错处理模块根据不同的错误号执行相应的操作 2 逻辑内聚 20 将在有限时间单元内处理的成分组合为同一模块比如在程序初始化时所作的处理 m Medirecno psPerson MedirecnotxtMedirecno psPerson MedirecnotxtTel psPerson TeltxtContact psPerson ContacttxtAddr psPerson AddrtxtMedirecno Enabled False 可视化程序设计中在窗口打开时初始化窗口中得控件内容 如列表框的项目 文本框或单选钮的缺省取值还比如 C 的构造函数 析构函数 3 时间内聚 21 4 步骤内聚 当子程序中的操作是按某一特定过程结构进行的 就是步骤内聚 例如 用户想按一定的顺序打印告 子程序设计成是用于按顺序打印销售收入 开支 雇员电话表的 步骤内聚在时间内聚的基础上增加了次序的约束 22 模块划分示例 23 PREP PLANLOOP STMRO 主模块 TYPDECID 准备好的矩阵指示标记 准备好的矩阵指示标记 矩阵指示标记 部分结果 标签等 模块PERP是一个初始化模块 属时间内聚 模块PLANLOOP和TYPDECID都属于步骤内聚 前者的元素用于控制主循环 后者的元素负责主循环的整个判定执行过程 绘制划分后的模块图 24 当模块内的成分引用共同的数据 而不存在其他联系时 称为通信内聚 修改库存 购货单 开发货单 库存 A 销售模块 B 产生留退名单模块 期末不及格统计 累计不及格统计 5 通信内聚 25 模块中某个成分的输出是另一成分的输入 比如显示期末成绩通知 6 顺序内聚 26 6 顺序内聚 顺序内聚有较强的内聚性是步骤内聚和通信内聚的结合例如 一个模块用于计算高于平均分的人数 步骤是先循环累计总分 然后计算得到平均分 最后循环统计高于平均分的人数有步骤的先后 而且前一个步骤的结果要用于后一步骤的运算中但仍然不是最高的内聚类型 27 7 功能内聚 一个模块包括并且仅仅包括为完成一个具体任务所需要的所有成分 称为功能内聚 功能内聚性是最强也是最好的一种内聚例如 打印职工名单 PrintStaffList 例如 计算平均分 CalculateAvg 仅用一个动宾词组能明确指出这个模块的所有功能 28 内聚的评分 耦合和内聚的概念是Stevens等人提出的 是测量一个模块化系统好坏的标志 按他们的观点 给上述七种内聚评分如下 功能内聚 分顺序内聚 分通信内聚 分步骤内聚 分时间内聚 分逻辑内聚 分偶然内聚 分可以给一个软件的所有模块打分 最后计算平均分 作为软件结构质量评价的参考 29 耦合和内聚的关系 二者就像连体兄弟 存在紧密相关的关系 模块内的高内聚往往意味着模块间的松耦合反之 低内聚一般会带来紧耦合 30 7 2 5作用范围与控制范围 一个判断的作用范围是所有这样的模块的集合 这些模块内含有依赖于这个判断结果的处理 或称影响范围 一个模块的控制范围是指它本身及其所有下属模块的集合 D计算总工资 C计算职工工资 B计算临时工工资 A计算工资 模块A的控制范围是 A B C D 假如判断x出现在模块A中 并且仅在A中使用了x 则该判断的作用范围是 A 而B C D不受影响 31 判断的设计原则 一个设计原则 对于任何一个判断 其作用范围应该是这个判断所在模块的控制范围的一个子集该原则的目的 消除控制耦合 降低耦合度想象一下 假设某个控制标志在系统的很多部分发挥作用 那么可能会产生这样一种情况 错误发作的位置离产生错误的源头很远 这给程序调试和维护带来极大困难 32 a TOP X Y A B1 B2 b B X Y A B1 B2 TOP c X B A B1 B2 TOP d X Y A B1 B2 作用范围和控制范围图示 33 期末成绩查询 34 Main stuNo 读入学号模块调用成绩查询模块调用显示模块 主模块 35 成绩查询模块 调用查期末成绩模块如果有不及格科目则标志1 True调用不及格处理模块 不及格处理模块 标志2 确定留退模块 如果标志2 True则调用查补考安排模块 显示结果模块 调用显示成绩模块如果标志1 True则调用不及格显示模块 显示不及格处理模块 如果标志2 True则调用留退通知模块否则调用补考通知模块 子模块 36 学生期末成绩查询 读入学号 显示成绩 查询成绩 显示成绩 不及格处理 确定留退 显示补考 显示留退 改写后的模块图 37 7 2 6模块的扇入与扇出 模块的扇入是指有多少个上级模块调用它 模块的扇出是指模块的直属下层模块的个数 扇出系数不宜过大 A的扇出为2 A B C B1 C1 C2 C3 B的扇出为1 C的扇出为3 T T的扇入为2 38 总体设计原则 设计功能内聚的模块模块使用过程语句调用其它模块 传递的参数作数据用 并且尽可能少模块内语句数一般为50 100平均扇出系数最好是3 5高层模块高扇出 最低层模块高扇入一个判断的作用范围是判断所在模块的控制范围的子集 39 7 2 7模块总体设计举例 问题描述 病人监护系统中的实时监测模块 该模块使用病床专用设备测量病人的若干生理参数 如体温 脉搏 血压等等 每个病人各种指标的安全范围由医生预先指定 每经过一定的时间间隔 监测模块从监视设备读入这些数据 并存入数据库中 若发现某个指标超出合理范围 则向维修站发出设备故障通知 报告床号 若发现某个指标越出安全范围 则向护理站发出通知 报告病人号 40 分析产生的DFD 病历 合理数据 数据 不安全因素 读取数据 存储数据 检查数据 通报不安全因素 不合理数据 可以划分哪些模块呢 41 FS2 病人监护 采集数据 检查数据 处理数据 获取下一个病人 PN FS EOF EF EOF FS EF USF EF USF FS PN EF USF PN FS PN FS EF PN EF PN FS FSSR 读取数据 检查不合理范围 查询安全范围 判定病人是否安全 写数据库 通报设备故障 通报不安全因素 EF BN PN FS EF PN BN 初始结构图 PN 病人号 BN 床位号 SR 安全范围 FS 各指标数据 EF 设备故障标志 EOF 标志已查过最后一个病人 FS2 标志指标是否合理 USF 标志指标不安全 42 第1次改进 处理数据 模块没有实质性的功能 所包含的三个子模块相互之间没有什么关联 内聚程度很低 该模块只是充当了 管道 改进如下 废除 处理数据 模块 直接由主模块调用 通报设备故障 通报不安全因素 和 写数据库 三个模块 43 病人监护 写数据库 通报不安全因素 通报设备故障 检查数据 采集数据 第1次改进结果 44 第2次改进 通报设备故障时应通报床位号而不应是病人号 因此要传递床位号 床位号BN可由 采集数据 模块传给主模块 再由主模块传递给 通知设备故障 模块 但这样做增加了模块间的联系 改为由 采集数据 模块直接调用 45 PN FS 病人监护 采集数据 检查数据 通报不安全因素 获取下一个病人 PN FS EOF EF PN BN EOF FS EF USF USF PN FS2 PN EF PN FS FSSR SR 读取数据 检查不合理范围 查询安全范围 判定病人是否安全 写数据库 通报设备故障 EF BN PN FS EF FS 第2次改进结果 46 第3次改进 若由 检查数据 模块直接调用 通报不安全因素 模块 则可减少模块间的联系 即不用传递USF标志 排除控制耦合 这样的话 检查数据 的名字改为 报告不安全因素 更为恰当 47 第3次改进结果 病人监护 采集数据 报告不安全因素 写数据库 PN FS EOF EF EF USF PN SR FS EF PN FS 查询安全范围 通报不安全因素 PN FS 判定病人是否安全 48 第4次改进 获取下一个病人 模块要返回病人号和床位号 接口比较复杂 如果使 读取数据 模块包括从病人号查床位号的功能 则 获取下一个病人 模块的接口可以简化 49 第4次改进结果 采集数据 获取下一个病人 PN EOF FS EF PN BN FS 读取数据 检查不合理因素 从PN查BN PN 通报设备故障 FS2 BN 50 第5次改进 通过床号读取数据 功能很明确 但目前包含在 读取数据 模块中 这部分程序代码如果抽取出来单独成为一个模块更好 名字为 从床号读数据 该模块可以成为一个公用模块 很易于重用 51 第5次改进结果 采集数据 获取下一个病人 PN EOF FS EF PN BN FS EOF PN FS2 BN 从PN查BN 从床号读数据 通报设备故障 检查不合理因素 BN 采集病人数据 52 第6次改进 从床号读数据 应该是功能单一 调用 通报设备故障 不应属于该模块内容 将 通报设备故障 改为上层模块调用 使 从床号读数据 模块功能更明确 公用性也更好 53 第6次改进结果 病人监护 采集数据 报告不安全因素 写数据库 判定下一个病人 PN FS EOF EF PN EOF FS EF USF PN EF SR EF FS PN FS SR 采集病人数据 检查安全范围 判定病人是否安全 通报不安全因素 EF PN PN FS 从PN查BN 从床号读数据 通报设备故障 检查不合理因素 BN BN EF FS BN FS FS2 PN FS 54 第7次改进 给护士站或维修站的通报消息可能采用了同一种方式或界面 因此可能会有公用的模块 比如 写一行 或者 发出警报 之类 因此再抽出一个模块 写一行 供两个模块调用 55 第7次改进结果 病人监护 采集数据 报告不安全因素 写数据库 判定下一个病人 PN FS EOF EF PN EOF FS EF USF PN EF SR EF FS PN FS FS SR 采集病人数据 检查安全范围 判定病人是否安全 通报不安全因素 EF PN PN FS 从PN查BN 从床号读数据 通报设备故障 产生一行 写一行 检查不合理因素 BN BN EF EF FS BN FS FS2 PN FS 一行 一行 一行 56 结构图优化方法 减少模块间的联系 减少参数传递 特别是控制信息的传递消除重复功能消除 管道 模块考虑变化控制模块大小整体考虑参照系统分析说明书 57 7 2 8对已有程序进行重构 重构 Refactoring 在不改变程序代码功能的前提下 对程序结构所进行的改造因为不是总能提前做出最好的设计 或者对遗留系统的维护过程中提高品质而做出的结构变化参见 重构 改善既有代码的设计 58 VoidprintOwing Enumeratione orders elements doubleoutstanding 0 0System out println System out println CustomerOwes System out println While e hasMoreElements Ordereach Order e nextElement outstanding each getAmount System out println name name System out println amoutn outstanding 模块重构例1 59 重构后的例1 voidpr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《可怕的白色污染》(教学设计)-2023-2024学年四年级下册综合实践活动粤教版
- 七年级历史下册 第二单元 辽宋夏金元时期 民族关系发展和社会变化 第11课 元朝的统治教学设计 新人教版
- 2024年五年级数学上册 四 走进动物园-简易方程信息窗4列方程解应用题练习教学设计 青岛版六三制
- 七年级语文下册 第一单元 2 说和做-记闻一多先生言行片段第2课时教学设计 新人教版
- 2024-2025学年高中物理 第四章 电磁感应 4 法拉第电磁感应定律(1)教学设计 新人教版选修3-2
- 27故事二则 扁鹊治病 教学设计-2024-2025学年语文四年级上册统编版
- 7妈妈睡了教学设计-2024-2025学年统编版语文二年级上册
- 一年级品德与社会下册 和小树一起长大2教学设计 浙教版
- 05人美版七年级下册第3课大家动手做条龙教学设计
- 2024秋八年级英语上册 Unit 7 Will people have robots Section B 2(3a-Self check)教学设计 (新版)人教新目标版
- 肺结核患者管理结案评估表
- T-JSTJXH 15-2022 装配式劲性柱-钢梁框架结构设计规程
- 人教PEP版四年级下册英语Unit 3 B Let's learn说课稿
- 第1章 地理信息系统概述《地理信息系统教程》
- JJF 1109-2003 跳动检查仪校准规范-(高清现行)
- 水利水保监理过程中承包商、监理方用空表
- T∕CAOE 27-2021 海洋工程生态评估导则
- 军事地形学地形图基本知识
- 生物竞赛--细胞生物学课件
- 基于三菱PLC控制的恒压供水系统设计
- 心血管科普PPT
评论
0/150
提交评论