第4章 总体设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作用域:指受该模块内一个判断影响的所有模块的 集合。 控制域:指模块本身以及其所有直接或者间接从属 于它的模块集合。
4.4 软件结构设计启发式规则
TOP A C E B D F A C E TOP B D F A C E TOP B D F
(b) (c) 图4.14 模块的作用域和控制域 (a) 差的结构图 (b) 不理想的结构图 (c) 理想的结构图
4.4 软件结构设计启发式规则
3( .软件结构的形态特征准则 1)深度指软件结构中模块的层次数,它表示控制的
层数,一定意义上能粗略地反映系统的规模和复杂程 度。 (2)宽度指同一层次中最大的模块个数,它表示控制 的总分布。 (3)扇出指一个模块直接调用的模块数目。经验证明 ,良好的系统结构平均扇出数一般是3-4,不能超过59。 (4)扇入指有多少个上级模块直接调用它。
1、设计软件结构
(1)通过需求分析阶段得到的数据流图设想各种可能方 案。将一个复杂的系统按功能划分为若干模块; (2)确定每个模块的功能; (3)确定模块之间的调用关系; (4)确定模块之间的接口,即模块之间传递的消息; (5)评价模块结构的质量。
4.1 总体设计的目标及任务
2.数据结构及数据库设计
(1)模块接口设计要简单,以降低复杂程度和冗余度 。 (2)设计功能可预测并能得到验证的模块。 (3)适当划分模块规模,以保持其独立性。
式及传递的信息。
4.2 软件结构设计原理
4.2.4 模块独立性
耦合类型
无直接耦合—数据耦合—控制耦合—特征耦合—公共耦合—内 容耦合 低——————————————————————高
4.2 软件结构设计原理
4.2.4 模块独立性
无直接耦合:指两个模块之间没有直接的关系,它们分别从 属于不同模块的控制与调用,它们之间不传递任何信息。 数据耦合:指两个模块之间有调用关系,传递的是简单的数 据值,相当于高级语言中的值传递。这种耦合程度较低,模块 的独立性较高。 控制耦合:指一个模块调用另一个模块时,传递的是控制变 量(如开关、标志等) ,被调模块通过该控制变量的值有选择地 执行块内某一功能。
4.4 软件结构设计启发式规则
(1)深度能粗略地反映系统的规模和复杂程度, 宽度也能反映系统的复杂情况。宽度与模块扇出 有关,若一个模块的扇出太多,说明本模块过分 复杂,缺少中间层。 (2)单一功能模块的扇入数大比较好,说明本模 块为上层几个模块共享的公用模块,重用率高。 (3)不能把彼此无关的功能凑在一起形成一个通 用的超级模块,虽然它扇入高,但内聚低。因此 非单一功能的模块扇入高时应考虑重新分解,以 消除控制耦合的情况。
统划分成若干模块的过程。每个模块完成一个特定的子 功能,所有的模块按某种方法组装起来,成为一个整体, 完成整个系统所要求的功能。
4.2 软件结构设计原理
4.2.1 模块化
模块的基本属性:
接口:模块的输入与输出。 功能:模块实现什么功能。 逻辑:描述内部如何实现要求的功能及所需的数据。 状态:指该模块的运行环境,是模块的调用与被调 用的关系。 功能、状态、接口反映模块的外部特性,逻辑反映 它的内部特性。
(a)
4.4 软件结构设计启发式规则
改进方法:
(1)上移判断点。如图4.14 (a)所示,将模块D中的判 断点上移到它的上层模块B中,或者将整个模块D合并 到模块B中,使该判断的层次升高,以扩大它的控制域 。 (2)下移受判断影响的模块。将受判断影响的模块下 移到判断所在模块的控制域内,如图4.14 (a)所示, 将模块C下移到模块D的下层。
4.2 软件结构设计原理
4.2.4 模块独立性
耦合:软件系统结构中各模块间相互联系紧密程度的一 种度量。模块之间联系越紧密,其耦合性就越强,模块 的独立性则越差。 模块间总是相互关联的,很少是相互独立的,完全独立 的模块是无法构成系统的。
模块间耦合高低取决于模块间接口的复杂性、调用的方
数据结构的设计采用逐步细化的方法。在需求分析 阶段可通过数据字典对数据的组成、操作约束和数据之 间的关系等方面进行描述,确定数据的结构特性。在总 体设计阶段要加以细化,详细设计阶段则规定具体的实 现细节。
4.1 总体设计的目标及任务
3.确定测试要求并制定测试计划
软件开发早期阶段考虑测试问题,能促使软件设计 人员在设计时注意提高软件的可测试性。
4.2 软件结构设计原理
4.2.4 模块独立性
模块独立是模块化、抽象、信息隐藏和局部化概 念的直接结果。 模块独立:每个模块完成一个相对独立的特定子 功能,并且和其他模块之间的关系很简单。
4.2 软件结构设计原理
4.2.4 模块独立性
良好的模块独立性的重要性: 能使开发的软件具有较高的质量。 设计的模块可理解性、可维护性及可测试性好, 必然导致软件的可靠性高。 接口简单、功能独立的模块易开发,且可并行工 作,有效地提高了软件的生产率。
过程:
换为软件 表示的过程。
4.1总体设计的目标及任务
总体设计的基本目的:
解决“系统应该如何实现”的问题
总体设计的两个阶段:
系统设计阶段:确定系统的具体实现方案 结构设计阶段:确定系统的软件结构
4.1 总体设计的目标及任务
4.2 软件结构设计原理
4.2.4 模块独立性
通信内聚:指模块内所有处理元素都在同一个数据结构上
操作,或指各处理使用相同的输入数据或者产生相同的输出 数据。 顺序内聚:指一个模块中各个处理元素都密切相关于同一 功能且必须顺序执行,前一功能元素的输出就是下一功能元 素的输入。 功能内聚:最强的内聚形式,指模块内所有元素共同完成 一个功能,缺一不可。模块不能再分割。
4.3 软件结构设计工具
M
如图所示,结构图的深度为5;宽度为8;模块M的扇出 A B C 为3;模块T的扇入为 4。
D
T
4.4 软件结构设计启发式规则
4.模块大小准则
在考虑模块的独立性时,为了增加可理解性,模块 的大小最好在50-150条语句左右,可以用1-2页纸打印 ,便于人们阅读与研究。
5.模块的接口准则
低内聚———————— 中内聚 —————— 高内聚
4.2 软件结构设计原理
4.2.4 模块独立性
偶然内聚:指一个模块内的各处理元素之间没有任何联系。
逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数 确定该模块完成哪一个功能。 时间内聚:把需要同时执行的动作组合在一起形成的模块为 时间内聚模块。时间内聚模块中的各部分都要在同一时间内完 成。 过程内聚:如果一个模块内部的处理是相关的,而且这些处 理必须以特定的次序执行,则称过程内聚。
4.2 软件结构设计原理
4.2.2 抽象
抽出事物本质特性而不考虑细节
软件设计:从抽象概括到具体实现的过程
具体 抽象 具体
(系统功能) (建模) (程序代码)
4.2 软件结构设计原理
问题定义阶段: (具体)
用户给出对目标系统的实际需求。
系统定义阶段:(抽象)
软件可作为整个计算机系统的一个元素来看待。
软件工程导论
天津市大学软件园
第4章 总体设计
理解总体设计的目的与任务 掌握总体设计的设计原理 掌握总体设计的启发式规则 熟练掌握结构化设计方法
第4章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4.2 软件结构设计原理
软件结构设计(结构化方法):
① ② ③ ④ 在系统设计中分析信息流程,绘制数据流程图; 根据数据的规范,编制数据字典; 根据概念结构的设计,确定数据文件的逻辑结构; 选择系统执行的结构化语言,以及采用控制结构 作为软件的设计工具。
4.2 软件结构设计原理
4.2.1 模块化 “由大化小,各个击破”
第4章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4.4 软件结构设计启发式规则
1.模块独立性准则:通过模块分解或合并,力求
做到降低耦合提高内聚,保持模块相对独立性。
(1)如图4.13(a)所示, 若多个模块公有的一个子 功能(使用阴影部分表示 ),则可以将这个子功能 独立成一个模块,由这些 模块调用。
第4章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4.1 总体设计的目标及任务
总体设计:
应用各种技术和原理,对设备、过程或系统做 出足够详细的定义,使之能够在物理上得以实现。
Miller法则:一个人在任何时候都只能把注 意力集中在(7±2)个知识块上。
4.2 软件结构设计原理
4.2.3 信息隐藏和局部化
信息隐藏原理:设计和确定模块时,使得一个
模块内包含的信息对于不需要这些信息的模块来 说,是不能访问的。
局部化:把一些关系密切的软件元素物理地放
得彼此靠近。 优点:防止错误的扩大与传播。
4.2 软件结构设计原理
4.2.4 模块独立性
设计原则:
尽量使用数据耦合,少用控制耦合和特征 耦合,限制公共环境耦合的范围,完全不用内 容耦合。
4.2 软件结构设计原理
4.2.4 模块独立性
内聚:一个模块内部各个元素彼此结合的紧密程度 的度量。
偶然内聚—逻辑内聚—时间内聚—过程内聚—通信内聚—顺序内聚—功能内聚
软件需求分析阶段:(抽象)
软件的解决方案是使用问题环境中的术语来描述。
总体设计—详细设计阶段:(抽象—具体)
将面向问题的术语与面向实现的术语结合起来来描述 解决方法,直到产生源程序时到达最低抽象层次。
4.2 软件结构设计原理
4.2.2 逐步求精
为了能集中精力解决主要问题而尽 量推迟对问题细节的考虑。
A
B
C
4.4 软件结构设计启发式规则
(2)若有多个功能相关 的模块,如图4.13(b)所 示B、C、D三个模块耦合 度较高,E、F两个模块 耦合度较高,应考虑对 它们进行合并以减少控 制信息的传递,降低接 口的复杂程度。
A B C D E F
A
B C D
E F
4.4 软件结构设计启发式规则
2.模块的作用域应该在控制域内
4.2 软件结构设计原理
4.2.4 模块独立性
设计原则:
力争做到高内聚,并且能辨认出低内聚的模 块,通过修改设计提高模块的内聚程度并降低模 块间的耦合程度。
【注】耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分成模块时, 尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 但也有内聚性与耦合性发生矛盾的时候,为了提高内聚性而可能使耦合性变差。在 这种情况下,建议给予内聚性以更高的重视。
优点:
成本(工作量)
软 件 总 成 本 接 口 成 本
提高可靠性、可修改性
错误一般出现在模块或接口中
成 本 /模 块 模 块 数 目
4.2 软件结构设计原理
4.2.1 模块化
模块: 数据说明、可执行语句等程序对象的集合,或
者是单独命名和编址的元素(如函数、子程序)等。
模块化: 解决一个复杂问题时自顶向下逐层把软件系
4、编写总体设计文档《概要设计说明书》
4.1 总体设计的目标及任务
5、评审
对设计部分是否完整地实现需求中规定的功能、 性能等要求,设计方案的可行性、关键的处理及内外 部接口定义正确性、有效性,及各部分之间的一致性 等进行评审。
第4章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4.2 软件结构设计原理
4.2.4 模块独立性
特征耦合:当模块之间传递的是某些数据结构,但是目标模 块只是使用了数据结构中的部分内容时,这种耦合方式称为特 征耦合。 公共耦合:指通过一个公共数据环境相互作用的那些模块间 的耦合。公共数据环境可以是全程变量或数据结构、共享的通 信区、内存的公共覆盖区及存储介质上的文件和物理设备等。 内容耦合:当一个模块直接使用另一个模块的内部数据,或 通过非正常入口而转入另一个模块内部时,这种模块之间的耦 合便为内容耦合。
相关文档
最新文档