模块和模块化.ppt

上传人:大张伟 文档编号:9346834 上传时间:2021-02-20 格式:PPT 页数:51 大小:217KB
返回 下载 相关 举报
模块和模块化.ppt_第1页
第1页 / 共51页
模块和模块化.ppt_第2页
第2页 / 共51页
模块和模块化.ppt_第3页
第3页 / 共51页
模块和模块化.ppt_第4页
第4页 / 共51页
模块和模块化.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《模块和模块化.ppt》由会员分享,可在线阅读,更多相关《模块和模块化.ppt(51页珍藏版)》请在三一文库上搜索。

1、概要设计的表示形式,正文加工系统的层次图,带编号的层次图( HIPO ) 与层次图( H )中每个方框相对应(按编号),都有一张IPO图描述该框代表的模块的处理过程,称为HIPO图。,IPO图的一个例子,软件的模块结构图:,描述一个软件系统由哪些模块组成,以及模块之间的调用关系 结构图的基本成分有:模块、调用和数据,模块是指具有一定功能并可以用模块名调用的一组程序语句,如函数、子程序等,它们是组成程序的基本单元 一个模块具有其外部特征和内部特征 外部特征包括:模块的接口(模块名、输入/输出参数、返回值等)和模块的功能 内部特征包括:模块的内部数据和完成其功能的程序代码 在结构图中,模块用矩形框

2、表示,每个模块都有一个应能适当反映该模块功能的名字,调用(call):用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者 为了方便,有时常用直线替代箭头,此时,表示位于上方的模块调用位于下方的模块 数据(data):模块调用时需传递的参数可通过在调用箭头旁附加一个小箭头和数据名来表示,其中小箭头的方向是数据的传输方向,SC图的模块调用,简单调用,简单调用的两种表示法,B,(a),X,Y,Z,A,C,Z,B,(b),1,A,C,2,选择调用,A,B,C,D,注意:图中必须画出数据流,循环调用,A,B,C,注意:图中必须画出数据流,结构图的几个概念 深度:程序结构图中控制的层数,例如图

3、中所示的结构图的深度是5 宽度:程序结构图中同一层次上模块总数的最大值,例如图中所示的结构图的宽度为7 扇出(fan out):该模块直接调用的模块数目。例如,例如图中模块M的扇出是4,模块A的是2,模块B的扇出是1 扇入(fan in):能直接调用该模块的模块数目。例如图中模块G的扇入是1,模块I的扇入是2,模块R的扇入是4,深度和宽度在一定程度上反映了程序的规模和复杂程度 相对而言,如果程序结构图的深度和宽度较大,则说明程序的规模和复杂程度都较大。 模块的扇入扇出会影响结构图的深度和宽度,例如减少模块的扇出,可能导致宽度变小而深度增加 一个模块的扇出过大通常意味着该模块比较复杂,然而扇出太

4、少,可能导致深度的增加 一般情况,一个模块的扇出以39为宜 一个模块的扇入表示有多少模块可直接调用它,它反映了该模块的复用(reuse)程度,因此模块的扇入越大越好,模块和模块化,模块化:当系统的每项功能恰好由一个输入输出都明确定义的组件完成的时候,我们称这个系统模块化。 模块表示能够用计算机程序代码实现的,相对独立的单一数据处理功能,所以模块有时也叫功能模块。 进一步明确模块是拥有明确定义的输入、输出和特性的程序实体。,设计方法的选择,应该允许不同的设计者使用他们喜欢的技巧,只要他们的文档能让其他设计者明白就可以了。 设计方法的选择又是取决于设计者的偏好,而更多的时候取决于系统要求的结构或数

5、据。,软件设计中涉及的问题,抽象(abstract)与细化(refinement) 抽象:分层次考虑和处理问题(数据和过程) 细化:从高到低的逐步分解过程 信息隐藏 对其它模块隐藏模块内部的数据和过程,抽象,抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。 先注意问题的本质及描述,其次是实现过程或细节。 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。 代码抽象:描述某类对象的共有的行为特征或具有的功能。 抽象的实现:通过类的声明。,模块化设计的好处,信息隐藏 从不同角度了解系统 将难以解决的问题独立出来;抽象层次通过逐层分析来了解问题 允许不同的模块采

6、用不同的设计方法,模块化设计,把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块 重要指导思想: 分解 模块独立性,分解(Decomposition),模块化是为了使一个复杂的大型程序能被人的智力所管理 设函数c(x)定义问题x的复杂程度,函数E(X)确定解决问题x需要的工作量(时间)。对于两个问题P1 和P2,如果,显然,模块化的依据,人类解决一般问题时一个有趣的规律: C (P1+P2)C (P1)+C (P2) E (P1+P2)E (P1)+E (P2) 结论:各个击破把复杂的问题分解成容易解决的小问题,原来的问题也就容易解决了,问题提出,如果无限的分割软件,最后为

7、了开发软件而需要的工作量也就小得可以忽略了。 ?,模块数与开发工作量的关系,模块划分的基本原则,概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。 但是到目前为止,没有统一的标准判断一个系统化分成几个模块是最优的。,模块划分的四项基本原则,1.模块独立性强 块内联系强 块间联系弱 2.高内聚 模块内部各成分之间 3.低耦合 一个模块与其它模块之间 4.公共(共享)模块 多个模块公用,模块独立性,问什么模块的独立性很重要? 有效模块化的软件容易开发出来 独立的模块比较容易测试和维护 人的独立性强如何? 人没有独立性,什么都依赖别人如何?,内聚,内聚是模块功能强度(一个模块内

8、部各个元素彼此结合的紧密程度)的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其他模块之间的耦合就会减低,而模块独立性就越强。,内聚与耦合,内聚和耦合是相互关联的。在程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。但这也不是绝对的。软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合,但增加内聚比减少耦合更重要,应当把更多的注意力集中到提高模块的内聚程度上来。,内聚, ,弱 强,低内聚中内聚高内聚,低内聚,.偶然性内聚 模块内各部分没有联系,或者即使有联系,这种联系也很松散。 .逻辑性内聚 这种模块把几种相关的功能组合在一起,每次调用时,由传送给模

9、块的判定参数来确定该模块应执行哪一种功能。这种模块是单入口的多功能模块。类似的有错误处理模块。它接受出错信号,对不同类型的错误打印出不同的出错信息。,低内聚,.时间性内聚 时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,中内聚,.过程性内聚 如果一个模块内的处理是相关的,而且必须以特定次序执行,则称这个模块为过程内聚模块。 .通讯性内聚 如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。,高内聚,.顺序性内聚 如果一个模块内的处理元素和同一个功能密切

10、相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据) .功能性内聚 一个模块中各个部分都是某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,七种内聚的优劣评分,功能内聚 10分 顺序内聚 9分 通信内聚 7分 过程内聚 5分 时间内聚 3分 逻辑内聚 1分 偶然内聚 0分,高内聚,低内聚,逻辑内聚模块,判断,调用模块,读,一,个,记,录,写,一,个,记,录,被,调,用,模,块,常见内聚类型,常见内聚类型,耦 合,对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于

11、模块间接口的复杂程度、调用模块的方式以及哪些信息通过接口。 在软件设计中应该追求尽可能松散耦合的系统,耦合的七种类型(低高),非直接耦合:如果两个模块之间没有直接关系,它们之间的联系完全是通过主要模块的控制和调用来实现的,这就是非直接耦合。 数据耦合:如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。 标记耦合 :如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了这个记录,它是某一类数据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该纪录的结构,并按结构要求对此记录进行操作。

12、,耦合的七种类型(续),控制耦合 :如果一个模块通过传递开关、标志、名字等控制信息,明显的控制选择另一模块的功能,就是控制耦合。 外部耦合 :一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。 公共耦合 :若一组模块都访问同一个公共数据环境,则它们之间的耦合称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,弱耦合,公共耦合,公共耦合,公共耦合会引起下列问题: 1、 所有公共耦合模块都于某一个公共数据 环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。 2、无法控制各个模块对公共

13、数据的存取,严重影响软件模块的可靠性和适应性。 3、公共数据名的使用,明显降低了程序的可读性。,内容耦合,如果出现下列情况之一,两个模块间就发生了内容耦合: 一个模块访问另一个模块的内部数据 一个模块不通过正常入口而转到另一个模块的内部 两个模块有一部分程序代码重叠(只可能出现在汇编程序中) 一个模块有多个入口(这意味着一个模块有几种功能),内容耦合,(a)进入另一模块内部,(b)模块代码重叠,(c)多入口模块,内容耦合 0分 公共耦合 1分 外部耦合 3分 控制耦合 5分 特征耦合 7分 数据耦合 9分 非直接耦合 10分,高耦合,低耦合,七种耦合的优劣评分,关于耦合的设计原则,尽量使用数据

14、(特征)耦合 少用控制耦合 限制公共环境耦合的范围 完全不用内容耦合,建立公共(共享)模块,建立公共模块的目的是减少冗余,减少不必要的重复工作,划出某项功能成为一个能被几个模块共同利用的模块。也就模块结构图的形态是中层宽大,上下小的。 例:球场,田径场,哪种设计方案更好呢?,自顶向下和自底向上设计,自顶向下 顶层开始 逐步分解 由底向上 选择关键部分先设计 扩展到整个系统,两种设计方法的比较,3.如果在可行性上出现问题,可以较早发现,3.需要进行详细 可行性论证,2.整体测试可能在模块接口间发现不一致等问题,2.整体测试较易通过,1.可能导致较大的重新设计,1.易于修改和扩展,由底向上设计,自顶向下设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1