软件工程课本讲解第3章 软件设计理论(第3章+第8章)

上传人:子 文档编号:52185962 上传时间:2018-08-19 格式:PPT 页数:94 大小:799KB
返回 下载 相关 举报
软件工程课本讲解第3章 软件设计理论(第3章+第8章)_第1页
第1页 / 共94页
软件工程课本讲解第3章 软件设计理论(第3章+第8章)_第2页
第2页 / 共94页
软件工程课本讲解第3章 软件设计理论(第3章+第8章)_第3页
第3页 / 共94页
软件工程课本讲解第3章 软件设计理论(第3章+第8章)_第4页
第4页 / 共94页
软件工程课本讲解第3章 软件设计理论(第3章+第8章)_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《软件工程课本讲解第3章 软件设计理论(第3章+第8章)》由会员分享,可在线阅读,更多相关《软件工程课本讲解第3章 软件设计理论(第3章+第8章)(94页珍藏版)》请在金锄头文库上搜索。

1、结构图结构图(SC)(SC)n n结构图是精确表达程序结构的图结构图是精确表达程序结构的图 形表示方法形表示方法n n结构图反映程序中模块之间的层结构图反映程序中模块之间的层 次调用关系和联系:它以特定的次调用关系和联系:它以特定的 符号表示模块、模块间的调用关符号表示模块、模块间的调用关 系和模块间信息的传递系和模块间信息的传递1 模块模块:模块用矩形框表示,并用:模块用矩形框表示,并用 模块的名字标记它。模块的名字标记它。结构图的主要内容结构图的主要内容2 模块的调用关系和接口模块的调用关系和接口:模块之:模块之 间用单向箭头联结,箭头从调用模间用单向箭头联结,箭头从调用模 块指向被调用模

2、块。块指向被调用模块。3 模块间的信息传递模块间的信息传递:当一个模块:当一个模块 调用另一个模块时,调用模块把调用另一个模块时,调用模块把 数据或控制信息传送给被调用模数据或控制信息传送给被调用模 块,以使被调用模块能够运行。块,以使被调用模块能够运行。 而被调用模块在执行过程中又把而被调用模块在执行过程中又把 它产生的数据或控制信息回送给它产生的数据或控制信息回送给 调用模块调用模块4 两个辅助符号:在模块A的箭头尾部 标以一个菱形符号,表示模块A有条 件地调用另一个模块B。当一个在调 用箭头尾部标以一个弧形符号,表示 模块A反复调用模块C和模块D。5程序的系统结构图程序的系统结构图( (

3、主从关系主从关系) )6同一名字的模块在结构图中仅出现调用关系只能从上到下不严格表示模块的调用次序,习惯从左 到右,有时为减少交叉,适当调整同一层 模块左右位置画结构图应注意:7模块化模块化n n软件系统的模块化是指整个软件软件系统的模块化是指整个软件 被划分成被划分成若干单独命名和可编址若干单独命名和可编址 的部分,称之为模块的部分,称之为模块。这些模块。这些模块 可以被组装起来以满足整个问题可以被组装起来以满足整个问题 的需求。的需求。n n把问题子问题的分解与软件开把问题子问题的分解与软件开 发中的系统子系统或系统模发中的系统子系统或系统模 块对应起来,就能够把一个大而块对应起来,就能够

4、把一个大而 复杂的软件系统划分成易于理解复杂的软件系统划分成易于理解 的比较单纯的模块结构。的比较单纯的模块结构。8模块的独立性模块的独立性n n模块(模块(ModuleModule) “ “模块模块” ”,又称,又称“ “组件组件” ”。一般指用。一般指用 一个名字可调用的一段程序。它一个名字可调用的一段程序。它 一般具有如下三个基本属性一般具有如下三个基本属性: :uu功能功能:描述该模块实现什么功:描述该模块实现什么功 能能uu逻辑逻辑:描述模块内部怎么做:描述模块内部怎么做uu状态状态:该模块使用时的环境和:该模块使用时的环境和 条件,即模块的调用与被调用条件,即模块的调用与被调用 关

5、系关系9n n在描述一个模块时,还必须按模块在描述一个模块时,还必须按模块 的的外部特性外部特性与与内部特性内部特性分别描述分别描述n n模块的模块的外部特性外部特性uu 模块的模块名、参数表、其中模块的模块名、参数表、其中 的输入参数和输出参数,以及给的输入参数和输出参数,以及给 程序以至整个系统造成的影响程序以至整个系统造成的影响n n模块的模块的内部特性内部特性uu 完成其功能的程序代码和仅供完成其功能的程序代码和仅供 该模块内部使用的数据该模块内部使用的数据外部特性是概要设计的任务,内部特性是详细设计的任务10n n模块独立性模块独立性uu 模块独立性模块独立性, , 是指软件系统中每

6、个是指软件系统中每个 模块只涉及软件要求的具体的子功模块只涉及软件要求的具体的子功 能能, , 而和软件系统中其它的模块的而和软件系统中其它的模块的 接口是简单的接口是简单的uu 例如例如, , 若一个模块只具有单一的功若一个模块只具有单一的功 能且与其它模块没有太多的联系能且与其它模块没有太多的联系, , 则称此模块具有模块独立性则称此模块具有模块独立性uu 一般采用两个准则度量模块独立一般采用两个准则度量模块独立 性。即模块间性。即模块间耦合性耦合性和模块的和模块的内聚内聚 性性11uu 耦合耦合是模块之间的互相连接的是模块之间的互相连接的 紧密程度的度量。紧密程度的度量。uu 内聚内聚是

7、模块功能强度是模块功能强度( (一个模块一个模块 内部各个元素彼此结合的紧密程内部各个元素彼此结合的紧密程 度度) )的度量。的度量。uu 模块独立性比较强的模块应是模块独立性比较强的模块应是 高内聚低耦合高内聚低耦合的模块。的模块。12模块间的耦合模块间的耦合模块间的耦合程度强烈影响系统的可理 解性、可测试性、可靠性和可维护性。13模块间耦合的类型低 无直接耦合耦 数据耦合合 标记耦合性 控制耦合公共耦合高 内容耦合模 块 独 立 性弱(低耦合)强(中耦合) (较强耦合)(强耦合)14无耦合没有依赖关系松散耦合有 少量依赖关系紧密耦合有 很多依赖关系15非直接耦合非直接耦合( (Nondir

8、ectNondirect Coupling) Coupling)两个模块之间没有直接关系,它们之两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和间的联系完全是通过主模块的控制和 调用来实现的。调用来实现的。 非直接耦合的非直接耦合的 模块独立性最模块独立性最 强。强。16数据耦合数据耦合 (Data Coupling)(Data Coupling) 一个模块访问另一个模块时,彼此一个模块访问另一个模块时,彼此 之间是通过之间是通过简单数据参数简单数据参数 ( (不是控不是控 制参数、公共数据结构或外部变量制参数、公共数据结构或外部变量 ) ) 来交换输入、输出信息的。来交换输入

9、、输出信息的。A A统计总成绩总成绩值开发票计算水费单价 数量金额17标记耦合标记耦合 (Stamp Coupling)(Stamp Coupling) 一组模块通过一组模块通过参数表参数表传递传递记录信息记录信息, 就是标记耦合。这个记录是某一数据就是标记耦合。这个记录是某一数据 结构的子结构,而不是简单变量。结构的子结构,而不是简单变量。即即 传递的这个数据结构的传递的这个数据结构的地址:地址:如两个模块通过传递数据结构 (不是简单数据,而是记录、数组等)加以联系,或都与一个数 据结构有关系, 则称这两个模块间存在标记偶合。ABABAB记录名记录名数组名数组名 WRITE (记录地址) R

10、EAD(记录地址)18标记耦合举例 计算水电费计算水费计算电费住户情况水费电费住户情况“住户情况”是一个数据结构,图中模块都 与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.将标记耦合修改为数据耦合举例计算水电费计算水费计算电费本月 用水量本月 用电量水费 电费控制耦合控制耦合 (Control Coupling)(Control Coupling) 如果一个模如果一个模 块通过传送开块通过传送开 关、标志、名关、标志、名 字等控制信息,字等控制信息, 明显地控制选明显地控制选 择另一模块的择另一模块的 功能,就是控功能,就是控

11、 制耦合。制耦合。21控制耦合举例A计算平均分 或最高分B平均/最高 (控制信号)成绩读入信息输出结果计算平均分计算最高分平均/最高?B控制耦合增加了理解和编程的复 杂性,调用模块必须知道被调模 块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调 用模块中进行 (2)被调用模块分解成若干单一功能模块改控制耦合为数据耦合举例 A计算平均分B1平均成绩最高成绩计算最高分B2(本书将其合并到公共耦合)外(本书将其合并到公共耦合)外 部耦合部耦合 一组模块都访问一组模块都访问同一全局简单变量同一全局简单变量 而不是同一全局数据结构,而且不而不是同一全局数据结构,

12、而且不 是通过参数表传递该全局变量的信是通过参数表传递该全局变量的信 息,则称之为外部耦合。息,则称之为外部耦合。即直接访问全局简单变量即直接访问全局简单变量PUBLIC TPUBLIC TAB 25公共耦合(公共耦合(Common CouplingCommon Coupling) 若一组模块都访问若一组模块都访问同一个公共数据环境同一个公共数据环境 ,则它们之间的耦合就称为公共耦合。,则它们之间的耦合就称为公共耦合。 公共的数据环境可以是全局数据结构、公共的数据环境可以是全局数据结构、 共享的通信区、内存的公共覆盖区等。共享的通信区、内存的公共覆盖区等。ABAB全局数据结构全局数据结构公共数

13、据区CB模块A、B、C间存在错综复杂的联系26n n公共耦合的复杂程度随耦合模块的个公共耦合的复杂程度随耦合模块的个 数增加而显著增加。若只是两模块间数增加而显著增加。若只是两模块间 有公共数据环境,则公共耦合有两种有公共数据环境,则公共耦合有两种 情况。松散公共耦合和紧密公共耦合情况。松散公共耦合和紧密公共耦合 。27(1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差,(4)软件可靠性差(公共数据区无保护措施) 慎用公共数据区和全程变量!公共耦合存在的问题:内容耦合内容耦合 (Content Coupling)(Content Coupling) 如果发生下列情形,两个模块之间

14、就发生了内容耦合如果发生下列情形,两个模块之间就发生了内容耦合(1) (1) 一个一个模块直接访问另一个模块的内部数据直接访问另一个模块的内部数据; ;(2) (2) 一个模块不通过正常入口转到另一模块内部一个模块不通过正常入口转到另一模块内部; ;(3) (3) 两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭( (只可能出现在只可能出现在 汇编语言中汇编语言中); );(4) (4) 一个模块有多个入口。一个模块有多个入口。最不好的耦合形式 !29模块化设计的原则和目标耦合是影响软件复杂程度和设计 质量的重要因素目标:建立模块间耦合度尽可能松散的系统如何降低模块间耦合度:(1) 尽

15、量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合 (2) 降低接口的复杂性c模块内聚模块内聚一个模块内部元素在功能上相互关联的强度设计目标:高内聚(模块在软件过程中完成单一的任务)内聚性有以下几种类型:偶然内聚 逻辑内聚 时间内聚 通信内聚 顺序内聚 功能内聚低高内聚性内聚性也称块内联系,指模块的功能强度的度量,即一个模块内 部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语 句之间、程序段之间)联系的越紧密,则它的内聚性就越高。32功能内聚功能内聚(Functional Cohesion)(Functional Cohesion) 一个模块中各个部分都是一个模块中各个

16、部分都是完成某完成某 一具体功能一具体功能必不可少的组成部分必不可少的组成部分 ,或者说该模块中所有部分都是,或者说该模块中所有部分都是 为了完成一项具体功能而协同工为了完成一项具体功能而协同工 作,紧密联系,不可分割的。则作,紧密联系,不可分割的。则 称该模块为功能内聚模块。称该模块为功能内聚模块。内聚性最强例如:一个模块只完成矩阵加法运算或只打印输出一种特定的表格 功能。33顺序内聚顺序内聚如果一个模块内的处理元素是密切相关于同一功 能且必须顺序执行,前一功能的输出就是下一功能 元素的输入,则称为顺序内聚。使用流程图做为工具设计程序时,把流程图中使用流程图做为工具设计程序时,把流程图中 的某一部分划出组成模块,就得到顺序内聚的某一部分划出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号