第4章 总体设计

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.2 软件结构设计原理
软件结构设计(结构化方法):
① ② ③ ④ 在系统设计中分析信息流程,绘制数据流程图; 根据数据的规范,编制数据字典; 根据概念结构的设计,确定数据文件的逻辑结构; 选择系统执行的结构化语言,以及采用控制结构 作为软件的设计工具。
4.2 软件结构设计原理
4.2.1 模块化 “由大化小,各个击破”
4.2 软件结构设计原理
4.2.4 模块独立性
设计原则:
尽量使用数据耦合,少用控制耦合和特征 耦合,限制公共环境耦合的范围,完全不用内 容耦合。
4.2 软件结构设计原理
4.2.4 模块独立性
内聚:一个模块内部各个元素彼此结合的紧密程度 的度量。
偶然内聚—逻辑内聚—时间内聚—过程内聚—通信内聚—顺序内聚—功能内聚
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章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4.4 软件结构设计启发式规则
1.模块独立性准则:通过模块分解或合并,力求
做到降低耦合提高内聚,保持模块相对独立性。
(1)如图4.13(a)所示, 若多个模块公有的一个子 功能(使用阴影部分表示 ),则可以将这个子功能 独立成一个模块,由这些 模块调用。
4.4 软件结构设计启发式规则
(1)深度能粗略地反映系统的规模和复杂程度, 宽度也能反映系统的复杂情况。宽度与模块扇出 有关,若一个模块的扇出太多,说明本模块过分 复杂,缺少中间层。 (2)单一功能模块的扇入数大比较好,说明本模 块为上层几个模块共享的公用模块,重用率高。 (3)不能把彼此无关的功能凑在一起形成一个通 用的超级模块,虽然它扇入高,但内聚低。因此 非单一功能的模块扇入高时应考虑重新分解,以 消除控制耦合的情况。
4.2 软件结构设计原理
4.2.2 抽象
抽出事物本质特性而不考虑细节
软件设计:从抽象概括到具体实现的过程
具体 抽象 具体
(系统功能) (建模) (程序代码)
4.2 软件结构设计原理
问题定义阶段: (具体)
用户给出对目标系统的实际需求。
系统定义阶段:(抽象)
软件可作为整个计算机系统的一个元素来看待。
优点:
成本(工作量)
软 件 总 成 本 接 口 成 本
提高可靠性、可修改性
错误一般出现在模块或接口中
成 本 /模 块 模 块 数 目
4.2 软件结构设计原理
4.2.1 模块化
模块: 数据说明、可执行语句等程序对象的集合,或
者是单独命名和编址的元素(如函数、子程序)等。
模块化: 解决一个复杂问题时自顶向下逐层把软件系
Miller法则:一个人在任何时候都只能把注 意力集中在(7±2)个知识块上。
4.2 软件结构设计原理
4.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.2 软件结构设计原理
4.2.4 模块独立性
良好的模块独立性的重要性: 能使开发的软件具有较高的质量。 设计的模块可理解性、可维护性及可测试性好, 必然导致软件的可靠性高。 接口简单、功能独立的模块易开发,且可并行工 作,有效地提高了软件的生产率。
数据结构的设计采用逐步细化的方法。在需求分析 阶段可通过数据字典对数据的组成、操作约束和数据之 间的关系等方面进行描述,确定数据的结构特性。在总 体设计阶段要加以细化,详细设计阶段则规定具体的实 现细节。
4.1 总体设计的目标及任务
3.确定测试要求并制定测试计划
软件开发早期阶段考虑测试问题,能促使软件设计 人员在设计时注意提高软件的可测试性。
4.2 软件结构设计原理
4.2.4 模块独立性
耦合:软件系统结构中各模块间相互联系紧密程度的一 种度量。模块之间联系越紧密,其耦合性就越强,模块 的独立性则越差。 模块间总是相互关联的,很少是相互独立的,完全独立 的模块是无法构成系统的。
模块间耦合wk.baidu.com低取决于模块间接口的复杂性、调用的方
4.2 软件结构设计原理
4.2.4 模块独立性
特征耦合:当模块之间传递的是某些数据结构,但是目标模 块只是使用了数据结构中的部分内容时,这种耦合方式称为特 征耦合。 公共耦合:指通过一个公共数据环境相互作用的那些模块间 的耦合。公共数据环境可以是全程变量或数据结构、共享的通 信区、内存的公共覆盖区及存储介质上的文件和物理设备等。 内容耦合:当一个模块直接使用另一个模块的内部数据,或 通过非正常入口而转入另一个模块内部时,这种模块之间的耦 合便为内容耦合。
过程:
将“做什么”的逻辑模型转变为“怎么做”的 物理模型,即将前期工程中的软件需求转换为软件 表示的过程。
4.1总体设计的目标及任务
总体设计的基本目的:
解决“系统应该如何实现”的问题
总体设计的两个阶段:
系统设计阶段:确定系统的具体实现方案 结构设计阶段:确定系统的软件结构
4.1 总体设计的目标及任务
软件需求分析阶段:(抽象)
软件的解决方案是使用问题环境中的术语来描述。
总体设计—详细设计阶段:(抽象—具体)
将面向问题的术语与面向实现的术语结合起来来描述 解决方法,直到产生源程序时到达最低抽象层次。
4.2 软件结构设计原理
4.2.2 逐步求精
为了能集中精力解决主要问题而尽 量推迟对问题细节的考虑。
低内聚———————— 中内聚 —————— 高内聚
4.2 软件结构设计原理
4.2.4 模块独立性
偶然内聚:指一个模块内的各处理元素之间没有任何联系。
逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数 确定该模块完成哪一个功能。 时间内聚:把需要同时执行的动作组合在一起形成的模块为 时间内聚模块。时间内聚模块中的各部分都要在同一时间内完 成。 过程内聚:如果一个模块内部的处理是相关的,而且这些处 理必须以特定的次序执行,则称过程内聚。
(1)模块接口设计要简单,以降低复杂程度和冗余度 。 (2)设计功能可预测并能得到验证的模块。 (3)适当划分模块规模,以保持其独立性。
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章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4.1 总体设计的目标及任务
总体设计:
应用各种技术和原理,对设备、过程或系统做 出足够详细的定义,使之能够在物理上得以实现。
作用域:指受该模块内一个判断影响的所有模块的 集合。 控制域:指模块本身以及其所有直接或者间接从属 于它的模块集合。
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章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4、编写总体设计文档《概要设计说明书》
4.1 总体设计的目标及任务
5、评审
对设计部分是否完整地实现需求中规定的功能、 性能等要求,设计方案的可行性、关键的处理及内外 部接口定义正确性、有效性,及各部分之间的一致性 等进行评审。
第4章 总体设计
4.1 4.2 4.3 4.4 4.5 总体设计的目标及任务 软件结构设计原理 软件结构设计工具 软件结构设计启发式规则 结构化设计方法
4.4 软件结构设计启发式规则
3( .软件结构的形态特征准则 1)深度指软件结构中模块的层次数,它表示控制的
层数,一定意义上能粗略地反映系统的规模和复杂程 度。 (2)宽度指同一层次中最大的模块个数,它表示控制 的总分布。 (3)扇出指一个模块直接调用的模块数目。经验证明 ,良好的系统结构平均扇出数一般是3-4,不能超过59。 (4)扇入指有多少个上级模块直接调用它。
4.2 软件结构设计原理
4.2.4 模块独立性
通信内聚:指模块内所有处理元素都在同一个数据结构上
操作,或指各处理使用相同的输入数据或者产生相同的输出 数据。 顺序内聚:指一个模块中各个处理元素都密切相关于同一 功能且必须顺序执行,前一功能元素的输出就是下一功能元 素的输入。 功能内聚:最强的内聚形式,指模块内所有元素共同完成 一个功能,缺一不可。模块不能再分割。
1、设计软件结构
(1)通过需求分析阶段得到的数据流图设想各种可能方 案。将一个复杂的系统按功能划分为若干模块; (2)确定每个模块的功能; (3)确定模块之间的调用关系; (4)确定模块之间的接口,即模块之间传递的消息; (5)评价模块结构的质量。
4.1 总体设计的目标及任务
2.数据结构及数据库设计
式及传递的信息。
4.2 软件结构设计原理
4.2.4 模块独立性
耦合类型
无直接耦合—数据耦合—控制耦合—特征耦合—公共耦合—内 容耦合 低——————————————————————高
4.2 软件结构设计原理
4.2.4 模块独立性
无直接耦合:指两个模块之间没有直接的关系,它们分别从 属于不同模块的控制与调用,它们之间不传递任何信息。 数据耦合:指两个模块之间有调用关系,传递的是简单的数 据值,相当于高级语言中的值传递。这种耦合程度较低,模块 的独立性较高。 控制耦合:指一个模块调用另一个模块时,传递的是控制变 量(如开关、标志等) ,被调模块通过该控制变量的值有选择地 执行块内某一功能。
相关文档
最新文档