




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
16 11 曲阜师范大学计算机科学学院 1 第3篇软件开发及维护 第7章结构化总体设计 16 11 曲阜师范大学计算机科学学院 2 第7章结构化总体设计 本章的主要目标是运用结构化方法 介绍软件总体设计的相关工作 读完本章 你将了解以下基本内容 软件设计的基本原理 软件设计的启发式规则 软件结构的描述工具 面向数据流的结构化设计过程 16 11 曲阜师范大学计算机科学学院 3 Contents 7 1软件设计的基本概念和原理7 2软件结构的描绘工具7 3面向数据流的设计过程7 4启发式设计7 5设计优化原则 16 11 曲阜师范大学计算机科学学院 4 7 1软件设计的基本概念和原理 在完成了需求分析之后 项目开发人员对系统的需求有了完整准确的理解 即知道了 做什么 接下来就是回答 怎么做 第一个阶段为总体设计阶段 期间项目开发人员确定软件系统的基本框架 第二阶段为详细设计阶段 期间确定软件系统的内部实现细节 16 11 曲阜师范大学计算机科学学院 5 7 1 1抽象抽象是人类在认识复杂世界时所使用的最有力的工具 抽象是从众多的事物中抽取出共同的 本质性的特征 而舍弃其非本质的特征 例如苹果 香蕉 梨 葡萄 桃子等 它们共同的特征就是水果 7 1 2信息隐蔽信息隐蔽是指每个模块的内部实现细节对外部来说是看不见的 即模块内部的数据 代码等信息不允许其他不需要这些信息的模块使用 这样主要有两个好处 一是利于模块之间相互有效隔离 使每个模块更加具有独立性 二是可以使系统具有更好的健壮性 以及更好的可维护性 16 11 曲阜师范大学计算机科学学院 6 7 1 3模块化设计人们不断创新的目的在于更加高效 从软件开发的角度来看 人们希望开发维护同样一个系统所使用的时间最短 所耗费的成本最低 软件系统模块化就是出于这样的目的 提出了一种提高开发效率的思想 在结构化分析方法中 模块的规模可大可小 是一个功能单位 模块可以是软件系统中的一个子系统 也可以是子系统内一个功能程序块 由边界元素限定的数据说明 可执行的语句等的序列 而且有一个总体标识符来代表它 16 11 曲阜师范大学计算机科学学院 7 模块化可以简化软件问题 一个系统模块越多 模块与模块之间的通信或接口就越多 希望依靠模块化将系统不断被分解而使软件成本不断降低的愿望可能是不切实际的 随着系统的分解 系统中模块数目将会增加 模块接口也会增加 软件构造会由此变得复杂起来 模块连接的难度也会由此加大 16 11 曲阜师范大学计算机科学学院 8 那么如何确定一个软件系统的模块数目 分别从模块可分解性 可组装性 可理解性 连续性和保护性五个方面来理解 如果一种设计方法提供了把问题分解为子问题的系统化机制 它就能降低整个问题的复杂性 从而可以实现一种有效的模块化解决方案 如果一种设计方法能把现有的 可重用的 设计构件组装成新系统 它就能提供一种并非一切从头开始的模块化解决方案 如果可以把一个模块作为一种独立单元 无段参考其他模块 来理解 那么 这样的模块是易于构造和易于修改的 如果对系统需求的微小修改只会针对个别模块 而不是对整个系统的修改 则修改所引起的副作用将最小 如果在一个模块内出现异常情况时 它的影响仅局限在该模块内部 则由错误引起的副作用最小 16 11 曲阜师范大学计算机科学学院 9 7 1 4模块独立模块独立是模块化 抽象 信息隐蔽的直接结果 是指系统中的模块尽可能地只涉及自己特定的子功能 并且模块接口简单 与其他模块没有过多的通信 如果系统中每个模块都具有很好的独立性 系统实现起来就更加容易 因此 模块独立性是衡量软件中模块质量最重要的指标 一般来说 采用耦合和内聚这两个定性的技术指标来对这一模块的独立性进行衡量 内聚性可以衡量各模块内部功能的结合强度 模块内部各元素之间结合得越紧密 则它的内聚性就越高 耦合性显示了模块与模块之间相互的依赖关系 模块与模块之间联系越紧密 耦合性就越高 16 11 曲阜师范大学计算机科学学院 10 7 1 5耦合耦合度量了各模块之间相互关联的程度 各个模块之间接口的复杂程度 接口数据对模块内部运算的影响程度 使用模块的方式都决定了耦合的强弱 以下是耦合的几种主要形式 非直接耦合 两个模块之间的联系 仅限于被共同模块控制和调用 它们之间没有直接的联系 那么这种耦合就成为非直接耦合 因为模块和模块之间没有数据通信 所以它的耦合形式是最弱的 数据耦合 模块与模块之间发生联系 彼此之间通过接口参数实现通信 传递的接口参数是用于计算的 它们不会影响内部程序执行的路径 我们提倡用数据耦合 它是一种较弱的耦合方式 16 11 曲阜师范大学计算机科学学院 11 控制耦合 如果在数据耦合的基础上 模块间接口参数不仅传递数据 同时还传递标志 名字 开关等控制信息 从而影响模块的内部程序执行路径 显而易见 控制耦合比数据耦合的耦合性要强一些 它属于中等程度的耦合 如果需要通过接口传递模块内多项功能的选择时 就需要用到控制耦合 公共耦合 在软件系统中 可能有独立于模块而存在的数据文件 公共变量和公共数据环境 模块之间通过访问公共数据环境从而实现通信 内容耦合 内容耦合是一种耦合性很强的耦合 这种耦合严重影响了模块的独立性 它的表现形式主要有以下几种 i 模块直接访问另一模块的内部数据 ii 模块不通过正常的入口转到另一模块内部 iii 模块之间存在一部分代码重叠 iv 某个模块有多个入口 内容耦合致使模块的变动变得非常困难 程序维护和升级也极其困难 这要求在设计软件结构时 不允许出现内容耦合 16 11 曲阜师范大学计算机科学学院 12 7 1 6内聚内聚性是信息隐蔽概念的自然扩展 它度量了模块内部各个元素彼此结合的紧密程度 元素之间联系越紧密 其内聚性越强 把模块内聚分为以下几种主要类型 功能内聚 信息内聚 通信内聚 过程内聚 时间内聚 逻辑内聚和偶然内聚 16 11 曲阜师范大学计算机科学学院 13 偶然内聚 偶然内聚即模块内部各元素之间的联系很少或者没有 逻辑内聚 逻辑内聚将几种相关的功能组合在一起形成一个模块 时间内聚 时间内聚是指模块内部各功能之间的执行与时间相关 过程内聚 如果模块内各元素的执行是按照一定次序来进行的 即各个元素的处理是相关的 则称其为过程内聚 通信内聚 一个模块内部可以有几个功能部分 如果这些功能部分都使用相同的数据输入 或者产生相同的数据输出 这不是通信内聚 顺序内聚 如果模块内某一功能元素的输出作为另一个功能元素的输入 模块内各功能元素顺序联结 它们之间关系紧密 那么称这个模块为顺序内聚模块 功能内聚 如果为了实现模块的具体功能 模块内各个元素都是必需的 这些元素要协同工作 它们无法单独执行 称这样的模块为功能内聚模块 功能内聚模块的内聚程度很高 在进行软件设计时 应尽可能地实现功能内聚 16 11 曲阜师范大学计算机科学学院 14 7 2软件结构的描绘工具 7 2 1层次图和HIPO图层次图是用来描绘软件的层次结构 层次图很适合在自顶向下设计软件的过程中使用 16 11 曲阜师范大学计算机科学学院 15 HIPO图是美国IBM公司发明的 层次图加输入 处理 输出图 的英文缩写 为了能使HIPO图具有可追踪性 在H图 层次图 里除了最底层的方框之外 每个方框都加了编号 编号规则与数据流图的级联编号方式相同 图7 2加了编号后演变为图7 3 16 11 曲阜师范大学计算机科学学院 16 7 2 2结构图Yourdon提出的结构图是进行软件结构设计的另一个有利工具 结构图和层次图类似 也是描绘软件结构的图形工具 图中一个方框代表一个模块 框内注明模块的名字或主要功能 方框之间的箭头 或直线 表示模块的调用关系 在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息 尾部是空心圆表示传递的是数据 实心圆表示传递的是控制信息 16 11 曲阜师范大学计算机科学学院 17 图7 4是结构图的一个例子 16 11 曲阜师范大学计算机科学学院 18 图7 5表示当模块M中某个判定为真时调用模块A 为假时调用模块B 图7 6表示模块M循环调用模块A B和C 注意 层次图和结构图并不严格表示模块的调用次序 事实上 层次图和结构图只表明一个模块调用那些模块 至于模块内还有没有其他成分则完全没有表示 通常用层次图作为描绘软件结构的文档 结构图作为文档并不很合适 因为图上包含的信息太多有时反而降低了清晰程度 16 11 曲阜师范大学计算机科学学院 19 16 11 曲阜师范大学计算机科学学院 20 7 3面向数据流的设计过程 面向数据流的设计过程 也就是结构化设计方法 简称为SD 是根据需求阶段对数据流的分析 一般用数据流图和数据字典表示 设计软件结构 16 11 曲阜师范大学计算机科学学院 21 7 3 1基本概念和设计过程SD方法能方便地将数据流图转换为软件结构 需要5个步骤 确定信息流的类型 划清流程边界 将数据流图映射为软件结构 提取层次控制结构 通过设计复审和使用启发式方法优化所得到的结构 16 11 曲阜师范大学计算机科学学院 22 第3步所用映射方法涉及到信息流的类型 信息流分为变换流和事务流两种类型 变换流在基本系统模型 即顶层数据流图 中 信息通常以 外部世界 所具有的形式进入系统 经过处理后又以这种形式离开系统 输入信息流沿传入路径进入系统 同时由外部形式变换为内部形式 经系统变换中心加工 处理 作为输出信息流又沿传出路径离开系统 并还原为外部形式 如果数据流图所描述的信息流具有上述特征 则称为变换流 16 11 曲阜师范大学计算机科学学院 23 事务流由于基本系统模型一般均可呈现为变换流 故任意系统中的信息均可用变换流刻画 16 11 曲阜师范大学计算机科学学院 24 值得注意的是 在大型系统的DFD中 变换流与事务流往往交织在一起 比如在基于事务流的系统中 当信息沿动作路径流动时可能呈现变换流的特征 16 11 曲阜师范大学计算机科学学院 25 7 3 2变换分析变换分析由一系列步骤组成 经过这些步骤就能把具有变换流特点的数据流图按预先确定的模式映射成软件结构 下面以 家庭保安系统 的传感器监测子系统为例说明变换分析的各个步骤 16 11 曲阜师范大学计算机科学学院 26 16 11 曲阜师范大学计算机科学学院 27 7 3 2变换分析图7 10和图7 11分别为 家庭保安系统 的顶级和第一级数据流图 16 11 曲阜师范大学计算机科学学院 28 16 11 曲阜师范大学计算机科学学院 29 步骤一 复审基本系统模型 步骤二 复审和精化软件数据流图 这一步主要是对软件需求规格说明书中的分析模型进行精化 直至获得足够详细的DFD 步骤三 确定DFD的特性 判定它为变换流还是事务流 设计人员首先要判定DFD中占主导地位的信息流 确定其特性 然后孤立具有变换特性或事务特性的支流 这些支流将用于精化由主导数据流推出的程序结构 数据沿1个传入路径进来 沿3个传出路径离开 无明显的事务中心 因此 该信息流是变换流 16 11 曲阜师范大学计算机科学学院 30 步骤四 划定输入流和输出流的边界 孤立变换中心 输入 输出流边界的划分可能因人而异 不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框 不过这对最后的软件结构影响不大 16 11 曲阜师范大学计算机科学学院 31 步骤五 执行 一级分解 FirstLevelFactoring 一级分解的目标是导出具有3个层次的程序结构 顶层为主控模块 底层模块执行输入 计算和输出功能 中层模块控制 协调底层的工作 程序结构可用Yourdon结构图 SC图 表示 图7 14所示的结构图对应于一级分解的上两层模块 即主控模块和下面几个中层控制模块 输入流控制模块 Ca 接收所有输入数据 变换流控制模块 Ct 对内部形式数据进行加工 处理 也称为中心变换 输出流控制模块 Ce 产生输出数据 主控模块 Cm 代表整个系统 16 11 曲阜师范大学计算机科学学院 32 传感器监测子系统 一级分解如图7 15所示 其中控制模块的名字概括了所有下属模块的功能 16 11 曲阜师范大学计算机科学学院 33 步骤六 执行 二级分解 二级分解过程是从中心变换的边界开始沿输入 输出通道向外移动 把遇到的每个处理框映射为程序结构中的一个模块 16 11 曲阜师范大学计算机科学学院 34 图7 13的输出流部分导出的程序结构如图7 17所示 16 11 曲阜师范大学计算机科学学院 35 16 11 曲阜师范大学计算机科学学院 36 16 11 曲阜师范大学计算机科学学院 37 有必要为每个模块写一个简要的处理说明 应包括 进出模块的信息 接口描述 模块的局部信息 处理过程陈述 包括主要的判断点和任务 对有关限制和一些专门特性的简要说明 例如文件I O 独立于硬件的特性 特殊的实时要求等 16 11 曲阜师范大学计算机科学学院 38 步骤七 采用启发式设计策略 精化所得到的结构雏形 改良软件质量 以 模块独立 为指导思想 对模块或合或拆 旨在追求高内聚 低耦合 易实现 易测试 易维护的软件结构 传感器监测子系统 的结构雏形可修改如下 因只存在惟一一条传入路径 故输入控制模块可删除 由变换中心产生的整个子结构可归并为 建立警报条件 一个模块 选择电话号码的功能纳入其中 变换控制模块不再需要 3 格式化显示 和 生成显示 两个模块归并为 产生显示 一个模块 16 11 曲阜师范大学计算机科学学院 39 传感器监测子系统 精化后的程序结构如图7 19 40 举例 人事信息更新 16 11 曲阜师范大学计算机科学学院 41 7 3 3事务分析当数据流具有明显的事务特征时 如果能找到一个事务 亦称触发数据项 和一个事务中心 采用事务分析法更为适宜 16 11 曲阜师范大学计算机科学学院 42 16 11 曲阜师范大学计算机科学学院 43 事务流的映射方法 16 11 曲阜师范大学计算机科学学院 44 16 11 曲阜师范大学计算机科学学院 45 7 3 3事务分析当数据流具有明显的事务特征时 如果能找到一个事务 亦称触发数据项 和一个事务中心 采用事务分析法更为适宜 在 家庭保安系统 中 用户交互子系统 是一个事务分析过程 16 11 曲阜师范大学计算机科学学院 46 事务分析法的步骤与变换分析方法基本相似 主要差别在于从数据流图到程序结构的映射 事务分析法可概括为7个步骤 步骤一 复审基本系统模型 步骤二 复审并精化软件数据流图 步骤三 确定数据流图的特征 显然 前三步与变换分析法相同 16 11 曲阜师范大学计算机科学学院 47 步骤四 找出事务中心 确定由事务中心发出的每一动作路径的数据流特征 数条路径的公共源头即为事务中心 事务中心定位为 启动命令处理 框 事务中心一经确定 即可划定接受路径与所有动作路径的界限 16 11 曲阜师范大学计算机科学学院 48 步骤五 把数据流图映射为事务处理型的程序结构 事务处理型的程序结构由 输入 和 散转 两部分组成 16 11 曲阜师范大学计算机科学学院 49 用户交互子系统 一级分解的结构如图7 23所示 16 11 曲阜师范大学计算机科学学院 50 步骤六 分解并精化事务结构以及每条动作路径所对应的结构 步骤七 使用启发式设计策略 精化所得程序结构雏形 改良软件质量 这一步骤与变换分析法相同 混合流 16 11 曲阜师范大学计算机科学学院 51 16 11 曲阜师范大学计算机科学学院 52 7 4启发式设计 改造程序结构 降低耦合度 提高内聚度 改造程序结构 减少扇出 在增加程序深度的前提下追求高扇入 16 11 曲阜师范大学计算机科学学院 53 深度表示软件结构中控制的层数 它往往能粗略地标志一个系统的大小和复杂程度 宽度是软件结构内同一层次上的模块总数的最大值 扇出是一个模块直接控制 调用 的模块数目 扇出过大意味着模块过分复杂 需要控制和协调过多的下级模块 扇出过小 例如总是1 也不好 扇出太大一般是因为缺乏中间层次 应该适当增加中间层次的控制模块 16 11 曲阜师范大学计算机科学学院 54 通过观察大量软件实例后发现 设计良好的软件结构通常顶层扇出较高 中层扇出较低 底层又高扇入到公共的实用模块中去 16 11 曲阜师范大学计算机科学学院 55 改造程序结构 使任一模块的作用域在其控制域之内 模块的作用域定义为受该模块内一个判定影响的所有模块的集合 模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合 16 11 曲阜师范大学计算机科学学院 56 改造程序结构 降低界面的复杂性和冗余程度 提高协调性 界面复杂是引起软件错误的一个基本要素 模块功能应该是可预言的 避免对模块施加过多限制 改造程序结构 追求单入口单出口的模块 为满足设计或可移植性的要求 把某些软件用包 Package 的形式封装起来 无论是采用变换分析法还是事务分析法 获得程序结构后 必须开发一系列辅助文档
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高效节能型电力设备安装及升级改造项目合同
- 2025年度生态农业加工园区土地承包合同
- 2025年度国有企业项目外包临时工人员配置及服务合同
- 2025年新型医疗耗材研发与市场推广合作协议
- 2025年智能汽车零部件OEM制造与供应合同
- 2025孕产期综合护理服务合同
- 2025年绿色环保型包装材料研发及物流配送一体化服务合同
- 2025年医药供应链一体化管理及执业药师专业服务合作协议
- 2025年离婚协议书编制与法律支持全方位服务协议
- 2025年新能源汽车技术研发合作协议:智能驾驶系统合作框架
- 2025新版企业员工劳动合同范本
- PCR实验室基因扩增检验人员培训试题及答案
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年西藏自治区三支一扶人员招募考试(公共基础知识)历年参考题库含答案详解(5卷)
- 2025年富县辅警考试题库(附答案)
- 2026届张家港市达标名校中考语文模试卷含解析
- 保密观试题含答案2025年
- 柏拉图教育思想体系解析
- 奶茶线上活动方案
- 军训医疗知识培训
- 公司适用法律法规标准清单2025年08月更新
评论
0/150
提交评论