软件技术基础 教学课件 ppt 作者 张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3

上传人:E**** 文档编号:89494489 上传时间:2019-05-25 格式:PPT 页数:56 大小:710KB
返回 下载 相关 举报
软件技术基础 教学课件 ppt 作者  张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3_第1页
第1页 / 共56页
软件技术基础 教学课件 ppt 作者  张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3_第2页
第2页 / 共56页
软件技术基础 教学课件 ppt 作者  张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3_第3页
第3页 / 共56页
软件技术基础 教学课件 ppt 作者  张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3_第4页
第4页 / 共56页
软件技术基础 教学课件 ppt 作者  张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《软件技术基础 教学课件 ppt 作者 张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3》由会员分享,可在线阅读,更多相关《软件技术基础 教学课件 ppt 作者 张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)3-3(56页珍藏版)》请在金锄头文库上搜索。

1、1,计算机软件技术基础,课件,第一章 数据结构,第二章 操作系统,第三章 软件工程,第四章 数据库,制作者:张选芳 Email: 电话:5182508,2,第三章 软件工程,第一单元,第二单元,第三单元,第四单元,第五单元,第六单元,3,软件设计,第三单元,第三章 软件工程,4,3.4 软件设计,软件设计的基本目的 软件设计的基本目的就是回答“系统应该怎样做”的问题。软件设计的任务,就是把分析阶段得到的软件需求规格说明转换为计算机可以实现的软件系统的描述,形成用适当手段表示的软件设计文档。 3.4.1 软件设计概述 每个阶段完成的文档,都必须经过复审,确保设计的准确和优化。,5,3.4.2 软

2、件设计基本原理 1. 模块化 模块是一个独立命名的,拥有明确定义的输入、输出和特性的程序实体。 模块具有的特征: (1) 接口: 指模块的输入输出。 (2) 功能: 指模块实现什么功能,有什么作用。 (3) 逻辑: 描述模块内部如何实现要求的 功能及所需的数据。 (4) 状态: 指模块的于运行环境, 即模块间的调用和被调用关系。,6,模块化的依据 例:设函数C(x) 定义问题的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题P1和P2,如果: C(P1) C(P2),则有:E(P1) E(P2)。 根据人类解决一般问题的经验,有: C (P1+P2) C (P1) + C

3、 (P2) 这样,可以得出以下不等式: E(P1+P2) E(P1)+ E(P2) 由此可知,把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的依据。,7,软件成本与模块数量关系,图3.15 软件成本与模块数量关系图,8,模块化的优点 采用模块化原理可以使软件结构清晰,不仅容易实现设计,也使设计出的软件易于阅读和理解。这是由于程序错误通常发生在有关的模块及它们之间的接口中,所以模块化技术使软件容易测试和调试,进而有助于提高软件的可靠性。因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性。模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许

4、多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。,9,2. 抽象与逐步求精 抽象 抽象就是抽出事物的本质特性而暂时不考虑它们的细节。 抽象的概念被广泛应用于计算机软件领域。 在可行性研究阶段, 软件作为系统的一个最抽象的完整部件; 在需求分析期间,软件解决方案使用在问题环境中熟悉的术语来描述; 当由总体设计向详细设计过渡时,抽象的程度逐渐减小; 最后,当源程序写出来以后,也就达到了抽象的最低层,完全用实现的术语来描述。,10,逐步求精 逐步求精是一种先总体、后局部的思维原则,也就是一种逐层分解、分而治之的方法。在面对一个复杂的大问题时,它采用自顶向下、逐步细化的方

5、法,将一个大问题逐层分解成许多小问题,然后每个小系统再分解成若干个更小的问题,经过多次逐层分解,每个最低层问题都足够简单,最后再逐个解决。 抽象与逐步求精是一对互补的概念。,11,3. 信息隐藏 信息隐藏是指在设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的其他模块来说,是不能访问的。 “隐藏”意味着有效的模块化可以通过定义一组相互独立的模块来实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息,而将自身的实现细节与数据“隐藏”起来。,12,4. 模块独立性 模块独立性 模块独立性是指每个模块只完成系统要求的一个相对独立的特定子功能,并且和其他模块

6、之间的关系尽可能简单。 模块独立性的概念 模块独立性的概念是模块化、抽象和信息隐藏概念的直接产物。 模块独立的重要性 有效的模块化(即具有独立的模块)的软件比较容易开发出来。 独立的模块比较容易测试和维护。,13,模块独立性两个定性标准 内聚 内聚是一个模块内部各成分之间彼此结合的紧密程度的度量,也称为块内联系或模块强度。 耦合 耦合是对一个软件结构内不同模块之间相互联系的紧密程度的度量,也称为块间联系。 内聚和耦合是密切相关的,与其他模块存在高耦合的模块通常意味着低内聚,而高内聚的模块通常意味着与其它模块之间存在低耦合。模块设计追求高内聚,低耦合。,14,(1)内聚 这是从功能的角度对模块内

7、部聚合能力的度量。模块的内聚性按由弱到强的顺序分为六类,如图3.16所示。,偶然内聚: 指一个模块内的各处理元素之间没有任何联系。 例如,为了节省空间,将几个模块中共同的语句抽出来放在一起组成一个模块,该模块就具有偶然内聚性。,15,逻辑内聚: 这种模块把几个逻辑上相似的功能组合在一起,每次被调用时,由传递给模块的参数来确定该模块应完成哪一个功能。 时间内聚: 指一个模块中包含的任务必须在同一段时间内执行。例如,系统初始化模块中各个功能必须在同一时间内执行。 通信内聚: 指模块内的各个成分都使用同一输入数据,或产生同一输出数据。它们靠公共数据而联系在一起,故称为通信内聚。,16,顺序内聚: 如

8、果一个模块的各个成分和同一个功能密切相关,而且必须顺序执行,通常一个处理成分的输出数据作为另一个处理成分的输入数据,则称为顺序内聚。 功能内聚: 指模块内所有成分属于一个整体,完成一个单一的功能。 功能内聚的模块易于理解和修改,也易于实现软件重用,是最理想的模块内聚。 “一个模块,一个功能”,已成为模块化设计的一条重要准则。,模块的内聚性类型,18,(2)耦合 耦合是对一个软件结构内不同模块之间相互联系的紧密程度的度量。模块间联系越紧密,耦合性就越强,模块的独立性就越差。软件设计中应追求尽可能松散耦合的系统。,19,非直接耦合: 指两个模块没有直接的关系,它们之间的联系完全是通过主程序的控制和

9、调用来实现的。 数据耦合:如果一个模块访问另一个模块,相互传递的信息以参数形式给出,并且传递的参数是基本类型的数据值,称这种关系为数据耦合。 特征耦合:当模块调用时传递的参数是复杂的数据结构,而被调用的模块只需要使用数据结构中的一部分数据元素时,这种耦合就是特征耦合。,20,控制耦合: 模块间传递的信息不是一般的数据,而是作为控制信息的开关值或标志量。 被调用模块通过控制信息有选择地执行模块内某一功能,即被调用模块内应具有多个功能,哪个功能被执行受调用模块的控制。因此,调用模块必须知道被调用模块内部的逻辑关系,从而增强了模块间的相互依赖,降低了模块的独立性。 外部耦合: 若允许一组模块访问同一

10、个全局变量,可称它们为外部耦合。,21,公共耦合: 若允许一组模块访问同一个全局性的数据结构,则称之为公共耦合。如果模块间共享的数据很多,通过参数的传递很不方便时,可使用公共耦合。 公共耦合会引起以下问题 耦合的复杂度随耦合模块个数的增加而增加; 无法控制各个模块对公用数据的存取; 使软件的可维护性变差; 降低了软件的可理解性,,22,内容耦合: 当一个模块可以直接使用另一模块内部的数据,或者允许一个模块直接转移到另一个模块内部,这就构成内容耦合。内容耦合是最强的耦合,也是最差的耦合,一般出现在汇编程序设计中,高级程序设计语言已经不允许出现任何形式的内容耦合。 模块化设计的目标是实现模块间尽可

11、能松散的耦合,为此应尽量使用数据耦合,少用控制耦合,慎用或有控制地使用公共耦合,完全不用内容耦合。,23,模块间耦合的类型,低 非直接耦合 耦 数据耦合 合 特征耦合 性 控制耦合 外部耦合 公共耦合 高 内容耦合,模 块 独 立 性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),24,(1)改进软件结构,提高模块独立性 通过模块的分解或合并,力求降低耦合、提高内聚,简化模块接口,以及少用全局性数据和控制信息等。 (2)模块规模应该适中 一个模块的规模不应过大。过大的模块会增加阅读理解的难度。过大的模块应该进行分解,但分解后不应降低模块的独立性。过小的模块开销大于有效操作,而且模块

12、数量过多会导致系统的接口变得复杂,可以在保持模块独立性的原则下进行适当的合并。,25,(3)保持适当的扇出和扇入 扇出数 扇出数是一个模块直接控制(调用)的模块数目。 扇出数过大 扇出数过小 扇出数过小(例如总是1)也不好,通常应保持在34为宜,最好不超过57。 扇入数 一个模块扇入数表明有多少个上级模块直接调用它。,扇入越大意味着共享该模块的上级模块数目越多,能够增加模块的利用率,但是不能违背模块独立性原理单纯追求高扇入数。 经验表明,设计良好的软件结构通常是顶层扇出数比较高,中间层扇出数较少,底层是扇入数较高的共享模块。,(4)模块的作用域应该在控制域内 一个模块的控制域,是模块本身以及所

13、有直接或间接从属于它(即所有可供它调用的下级模块)的模块的集合。一个模块的作用域,是受该模块内一个判定影响的所有模块的集合。只要模块中含有一些依赖于这个判定的操作,这个模块就在这个判定的作用范围之内。 本规则的含义是:一个模块的作用域应该在其控制域之内,即所有受判定影响的模块都应该从属于做出判定的那个模块,最好局限于做出判定的那个模块本身以及它的直属下级模块。而且,条件判定所在的模块应与受其影响的模块在层次上越靠近越好。,27,(5)降低模块接口的复杂程度 模块的接口应该简单、清晰及含义明确,易于理解、实现、测试和维护。 (6)设计功能可以预测的模块,但要避免过分限制性的模块。 模块的功能可预

14、测是指只要模块的输入数据相同,则运行产生的输出必然相同,也就是可以根据其输入数据预测模块的输出结果。 (7)设计单入口单出口的模块 这条规则是警告软件工程师不要使模块间出现内容耦合。,28,3.4.4 面向数据流的设计 面向数据流的设计方法,就是以数据流为基础导出软件的模块结构。通常所说的结构化设计方法主要就是指面向数据流的设计方法。 面向数据流的设计方法的核心任务 面向数据流的设计方法的核心任务就是把需求分析阶段完成的数据流图映射为软件结构。 面向数据流的设计方法所提供的原则与方法,主要是为了确定软件的体系结构和接口。,29,1. 概念 (1)变换型数据流图 变换型数据流图是由输入、变换(或

15、称加工)和输出三部分组成,如图3.18所示。信息沿输入通路进入系统,同时由外部形式变换成内部形式,也就是由物理输入变成逻辑输入。进入系统的信息通过变换中心,经加工处理后产生内部表示的信息,即逻辑输出。最后该信息沿输出通路变换成外部形式,即物理输出。,30,变换型数据流图,31,(2)事务型数据流图 某个加工将它的输入分离成许多发散的数据流,形成许多平行的动作路径,并根据输入的值选择其中一条路径来执行,这种特征的数据流图称为事务型数据流图,如图3.19所示。,值得注意的是, 一个大型系统的数据流图中,变换型和事务型往往同时存在。,32,(3)设计过程 图3.20说明了使用面向数据流方法的设计过程

16、。,图3.20 面向数据流方法的设计过程,33,2. 变换分析和事务分析 变换分析 变换分析是一系列设计步骤的总称,经过这些步骤把变换型的数据流图按预先确定的模式映射成软件结构。 在数据流具有明显的事务特点时,采用事务分析方法进行设计 具体的映射软件结构的步骤: (1)复查基本系统模型。 (2)复查并精化数据流图。,34, 如果数据流具有变换特性,确定输入流、输出流的边界,从而孤立出变换中心,如图3.21所示。,35, 如果数据流具有事务特性,则确定事务中心、接收部分和发送部分,如图3.22所示。,T,L,M,N,O,图3.22 确定事务中心,36,(3)完成“第一级分解”。 变换型数据流的第一级分解 变换型数据流的第一级分解

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

当前位置:首页 > 高等教育 > 大学课件

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