软件工程实用教程4-软件设计(1).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程实用教程4-软件设计(1).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实用教程 软件设计
- 资源描述:
-
1、第四章第四章 软件设计(软件设计(1 1)任务任务1 1 构建软件体系结构构建软件体系结构软件设计概述软件设计概述体系结构风格体系结构风格结构化设计方法结构化设计方法2 2在第三章中我们针对图书管理系统进行了功能模在第三章中我们针对图书管理系统进行了功能模型的构建,理清了图书管理系统的业务规则和功型的构建,理清了图书管理系统的业务规则和功能性需求,那么,我们是否已经准备好将功能转能性需求,那么,我们是否已经准备好将功能转换成对应的代码了呢?我们知道,一个完整的应换成对应的代码了呢?我们知道,一个完整的应用程序,如果采用结构化语言进行编写,其主要用程序,如果采用结构化语言进行编写,其主要的组成构
2、件是函数,现在的问题是我们是否可以的组成构件是函数,现在的问题是我们是否可以借助于得到的功能模型为合理设定函数模块提供借助于得到的功能模型为合理设定函数模块提供帮助。帮助。3 3软件设计的目的软件设计的目的设计是一个建模活动,它使用分析阶段得出的信设计是一个建模活动,它使用分析阶段得出的信息(即需求模型)并把这些信息转换为叫做解决息(即需求模型)并把这些信息转换为叫做解决方案的模型。所以设计阶段的目标是定义、组织方案的模型。所以设计阶段的目标是定义、组织和构造将作为结构蓝图的最终解决方案系统的各和构造将作为结构蓝图的最终解决方案系统的各个组成部分。个组成部分。4 4抽象抽象逐步求精逐步求精模块
3、化模块化信息隐藏信息隐藏控制层次控制层次软件的体系结构软件的体系结构“抽象抽象”的心理学观念使人能够集中于某个一的心理学观念使人能够集中于某个一般性级别上的问题,而不去考虑无关的底层般性级别上的问题,而不去考虑无关的底层细节,这种解决问题的方式也应用于软件领细节,这种解决问题的方式也应用于软件领域。域。抽象的思维方式应用软件开发领域抽象的思维方式应用软件开发领域 ,软件过,软件过程中的每一个步骤都是软件解决方案抽象级程中的每一个步骤都是软件解决方案抽象级别上的求精。别上的求精。抽象的类型抽象的类型过程抽象过程抽象是对特定和有限的功能命名的序列。例如:查询子系统,实是对特定和有限的功能命名的序列
4、。例如:查询子系统,实现查询功能;进一步抽象层次降低,查询子系统分为:按书现查询功能;进一步抽象层次降低,查询子系统分为:按书名查询,按作者查询,按出版社查询等;按书名查询过程步名查询,按作者查询,按出版社查询等;按书名查询过程步骤,输入关键字,进行查询,显示结果。骤,输入关键字,进行查询,显示结果。数据抽象数据抽象是数据命名的集合。例如:查询是数据命名的集合。例如:查询“书书”,进一步详细定义其,进一步详细定义其属性:书名、作者、出版社、出版日期、属性:书名、作者、出版社、出版日期、ISBNISBN等;书名,等;书名,进一步定义为长度进一步定义为长度5050个字符的字符串。个字符的字符串。控
5、制抽象控制抽象是程序控制机制内部细节的设计。例如:在操作系统中用以是程序控制机制内部细节的设计。例如:在操作系统中用以协调某些活动的同步信号。协调某些活动的同步信号。逐步求精是由逐步求精是由Niklaus WirthNiklaus Wirth最初提出的一种自最初提出的一种自顶向下设计策略,系统是通过过程细节的连顶向下设计策略,系统是通过过程细节的连续的精化层次开发的,层次结构通过逐步地续的精化层次开发的,层次结构通过逐步地分解功能的宏观声明直至形成程序设计语言分解功能的宏观声明直至形成程序设计语言的语句而开发。的语句而开发。逐步求精和抽象是互补的概念。随着抽象层逐步求精和抽象是互补的概念。随着
6、抽象层次的降低,逐步求精越来越精化,并不断揭次的降低,逐步求精越来越精化,并不断揭示底层的一些细节。示底层的一些细节。模块化模块化软件被划分成独立命名和可独立访问的被称作模软件被划分成独立命名和可独立访问的被称作模块的构成成分,它们集合到一起满足问题的需求。块的构成成分,它们集合到一起满足问题的需求。模块划分的目的模块划分的目的 进行功能分解,把复杂的大的功能划分成简单进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。的小的子功能,尽量降低每个模块的成本。尽量使每个模块间的接口不能太多,太多会使尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳
7、的划分状态,接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低。确保软件总成本最低。最小成本区最小成本区M2M1n1n2模块数模块数成本成本成本成本/模块模块接口成本接口成本软件总成本软件总成本模块化和软件成本之间的关系模块化和软件成本之间的关系信息隐藏的原则提出信息隐藏的原则提出“特征在于每个模块都特征在于每个模块都对其他模块隐藏的设计决策对其他模块隐藏的设计决策”,也就是说模,也就是说模块应该设计成其中包含的信息(过程和数据)块应该设计成其中包含的信息(过程和数据)对不需要这些信息的其他模块式不可访问的。对不需要这些信息的其他模块式不可访问的。信息隐藏为后期的软件测试和维护提供
8、了极信息隐藏为后期的软件测试和维护提供了极大的方便。一旦在进行测试时发现缺陷,那大的方便。一旦在进行测试时发现缺陷,那么对模块的变更不会影响或者至少很少影响么对模块的变更不会影响或者至少很少影响其他模块,不会将影响扩大并传播。其他模块,不会将影响扩大并传播。控制层次控制层次也称为也称为“程序结构程序结构”,它代表了程序构件(模,它代表了程序构件(模块)的组织并暗示控制的层次结构。块)的组织并暗示控制的层次结构。一般用四个特征来描述:深度、宽度、扇入和一般用四个特征来描述:深度、宽度、扇入和扇出。扇出。深度深度定义为控制层次的层数,或者说是控制级别的数量。定义为控制层次的层数,或者说是控制级别的
9、数量。宽度宽度定义为控制层次的跨度。定义为控制层次的跨度。扇入扇入指明有多少个模块直接控制一个给定的模块。指明有多少个模块直接控制一个给定的模块。扇出扇出指明被一个模块直接控制的其他模块的数量。指明被一个模块直接控制的其他模块的数量。控制层次的优化控制层次的优化系统的控制结构中在某一层的模块中的判定或者条系统的控制结构中在某一层的模块中的判定或者条件在系统中产生的结果,影响到其他层的某个处理件在系统中产生的结果,影响到其他层的某个处理或数据,这样该处理就是条件依赖于那个判定。因或数据,这样该处理就是条件依赖于那个判定。因此在控制结构中产生另外两个概念:作用范围和控此在控制结构中产生另外两个概念
10、:作用范围和控制范围。制范围。作用范围作用范围一个模块的作用范围是指条件依赖于这个模块的全部模块。一个模块的作用范围是指条件依赖于这个模块的全部模块。即使一个模块全部处理中只有一小部分为这个判定所影响,即使一个模块全部处理中只有一小部分为这个判定所影响,整个模块也认作在作用范围中。整个模块也认作在作用范围中。控制范围控制范围一个模块的控制范围是指模块本身和它的全部子模块。一个模块的控制范围是指模块本身和它的全部子模块。作用范围和控制范围相关的设计原则作用范围和控制范围相关的设计原则对于任何判定,作用范围应该是这个判定所在模块的控制范对于任何判定,作用范围应该是这个判定所在模块的控制范围的一个子
11、集。通常我们采用把判定节点在结构中上移来达围的一个子集。通常我们采用把判定节点在结构中上移来达到这个原则。到这个原则。例子 模块E的控制范围是I、H、J,模块J的一个判定传递给E,然后再传递给I和H,此时模块J的作用范围是模块E、I、H。ABCDE+JFIGHABCDEFIGHJ内聚内聚耦合耦合含义含义模块独立性模块独立性,是指软件系统中每个模块只涉及软件要求是指软件系统中每个模块只涉及软件要求的具体的子功能的具体的子功能,而和软件系统中其它的模块的接口是而和软件系统中其它的模块的接口是简单的。简单的。衡量独立性的标准衡量独立性的标准内聚内聚模块功能强度模块功能强度(一个一个模块内部模块内部各
12、个元素彼此结合的紧密程度各个元素彼此结合的紧密程度)的度的度量。量。耦合耦合模块之间模块之间的互相连接的紧密程度的度量。的互相连接的紧密程度的度量。高内聚低耦合高内聚低耦合的模块具有较强的模块独立性。的模块具有较强的模块独立性。偶然内聚偶然内聚设计者随意决定将无关系的几个功能组合在一个模块中,设计者随意决定将无关系的几个功能组合在一个模块中,该模块的内聚程度就是偶然内聚。该模块的内聚程度就是偶然内聚。例子例子为了节省空间,将多个模块中重复出现的语句提取出来,组成一为了节省空间,将多个模块中重复出现的语句提取出来,组成一个新的模块个新的模块逻辑内聚逻辑内聚把逻辑上相似的功能结合到一个模块中。把逻
13、辑上相似的功能结合到一个模块中。放到一个模块中的原因是:使用统一动词但针对不同的对象,有相同放到一个模块中的原因是:使用统一动词但针对不同的对象,有相同的代码段;起始于某多路开关,以后转向不同的代码段,但各代码段的代码段;起始于某多路开关,以后转向不同的代码段,但各代码段间关系很少。这种聚和现象带来一些设计问题:增加了开关量;不易间关系很少。这种聚和现象带来一些设计问题:增加了开关量;不易修改;不易理解;效率低。修改;不易理解;效率低。时间内聚时间内聚 在某一时间同时执行的任务放在同一模块中。如:在某一时间同时执行的任务放在同一模块中。如:初始化模块,集中了初始化功能的模块。初始化模块,集中了
14、初始化功能的模块。过程内聚过程内聚 模块中各个功能相关,按特定次序执行。这种情况模块中各个功能相关,按特定次序执行。这种情况往往发生在流程图中相邻的处理功能。往往发生在流程图中相邻的处理功能。通信内聚通信内聚模块中各个功能需要用到同样的数据,而将其放于一个模块中各个功能需要用到同样的数据,而将其放于一个模块中。如:模块中的各功能都需要利用某个符号表模块中。如:模块中的各功能都需要利用某个符号表(或文件)进行操作。(或文件)进行操作。信息内聚信息内聚模块中各功能利用相同的输入或产生相同的输出。由于它模块中各功能利用相同的输入或产生相同的输出。由于它可能包含几个功能或只是某个功能的一部分,所以内聚
15、性可能包含几个功能或只是某个功能的一部分,所以内聚性不是最高的。不是最高的。功能内聚功能内聚 模块中的各部分是为了完成一个确定的功能模块中的各部分是为了完成一个确定的功能存在于一个模块中的。存在于一个模块中的。偶然内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚低高弱强模块内聚性模块独立性内容耦合内容耦合一个模块访问另一个模块边界中的数据或控制,一个模块访问另一个模块边界中的数据或控制,这种耦合是内容耦合也是最强的耦合。这种耦合是内容耦合也是最强的耦合。如果发生下列情形,两个模块之间就发生了内容如果发生下列情形,两个模块之间就发生了内容耦合。耦合。(1)(1)一个模块直接访问另一个模块的内
16、部数据一个模块直接访问另一个模块的内部数据 (2)(2)一个模块不通过正常入口转到另一模块内部一个模块不通过正常入口转到另一模块内部 (3)(3)两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭(只可能出现只可能出现在汇编语言中在汇编语言中)公共耦合公共耦合多个模块都访问一块全局数据区中的数据项(一个磁多个模块都访问一块全局数据区中的数据项(一个磁盘文件、一个全局可访问的内存区),这种耦合程度盘文件、一个全局可访问的内存区),这种耦合程度就是公共耦合。就是公共耦合。公共耦合的复杂程度随耦合模块的个数增加而显著增公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环
17、境,则公共耦合有加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。两种情况。松散公共耦合和紧密公共耦合。外部耦合外部耦合当模块连接到软件外部环境上时会发生的偶合关当模块连接到软件外部环境上时会发生的偶合关系,具有相对较高的偶合度。系,具有相对较高的偶合度。控制耦合控制耦合模块与模块之间传递的参模块与模块之间传递的参数是控制决策作用的。数是控制决策作用的。中级别的耦合度。中级别的耦合度。标记耦合标记耦合当模块与模块之间传递的参数是数据结构的一部分当模块与模块之间传递的参数是数据结构的一部分时,这种耦合是标记耦合。是数据耦合的变体。时,这种耦合是标记耦合。是数据耦
18、合的变体。数据耦合数据耦合模块与模块之间需要通过常规的参数表访问,数据模块与模块之间需要通过常规的参数表访问,数据通过该列表传递,传递的数据是简单类型的,这种通过该列表传递,传递的数据是简单类型的,这种耦合称为数据耦合。耦合称为数据耦合。非直接耦合非直接耦合两个模块式不同模块的从属模块,相互之间无关因而两个模块式不同模块的从属模块,相互之间无关因而没有直接耦合发生,称为非直接耦合。没有直接耦合发生,称为非直接耦合。内容耦合公共耦合外部耦合控制耦合标记耦合数据耦合非直接耦合高低弱强模块耦合性模块独立性(1)(1)如模块必须存在耦合,选择适当的耦合类如模块必须存在耦合,选择适当的耦合类型型原则:原
19、则:尽量使用数据耦合尽量使用数据耦合少用控制耦合少用控制耦合限制公共耦合的范围限制公共耦合的范围坚决避免使用内容耦合坚决避免使用内容耦合(2)(2)降低模块间接口的复杂性降低模块间接口的复杂性内聚与耦合密切相关,同其它模块强耦合的模内聚与耦合密切相关,同其它模块强耦合的模块意味着弱内聚,强内聚模块意味着与其它块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合。模块间松散耦合。设计目标:设计目标:力争力争高内聚高内聚、低、低耦合。耦合。软件设计是一个把软件需求变换成软件表示软件设计是一个把软件需求变换成软件表示的过程。最初这种表示只是描绘出软件的总的框的过程。最初这种表示只是描绘出软件的总的框
20、架,然后进一步细化,在此框架中填入细节,把架,然后进一步细化,在此框架中填入细节,把它加工成在程序细节上非常接近于源程序的软件它加工成在程序细节上非常接近于源程序的软件表示。表示。从工程管理的角度来看的设计过程从工程管理的角度来看的设计过程概要设计概要设计将软件需求转化为数据结构和软件的系统结构。将软件需求转化为数据结构和软件的系统结构。详细设计(过程设计)详细设计(过程设计)通过对结构表示进行细化,得到软件的详细的数据结构和通过对结构表示进行细化,得到软件的详细的数据结构和算法。算法。从分析模型到设计模型之间的对应关系数据设计数据设计将分析时创建的数据模型变换成实现软件所需的数据将分析时创建
21、的数据模型变换成实现软件所需的数据结构。在实体关系图中定义的数据对象和关系以及数结构。在实体关系图中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计活动的据字典中描述的详细数据内容提供了数据设计活动的基础。基础。详细的数据结构设计将在过程设计中进行。详细的数据结构设计将在过程设计中进行。体系结构设计体系结构设计定义了软件的主要结构性元素,可以用于达成针对系定义了软件的主要结构性元素,可以用于达成针对系统而定义的需求的统而定义的需求的“设计模式设计模式”以及影响体系结构设以及影响体系结构设计的约束之间的关系。计的约束之间的关系。体系结构设计的表示是从分析阶段的系统模型中导出。体
22、系结构设计的表示是从分析阶段的系统模型中导出。接口设计接口设计描述了软件内部、软件和需要协作的系统之间以及描述了软件内部、软件和需要协作的系统之间以及软件和人之间如何进行交互。软件和人之间如何进行交互。数据和控制流图提供了接口设计所需要的信息。数据和控制流图提供了接口设计所需要的信息。构件级设计构件级设计也称为过程设计,将软件体系结构的结构性元素变也称为过程设计,将软件体系结构的结构性元素变换成为对软件构件的过程性描述,也就是模块的数换成为对软件构件的过程性描述,也就是模块的数据结构与算法的设计。据结构与算法的设计。软件设计不同观察角度之间的关系软件设计不同观察角度之间的关系概要设计的任务概要
23、设计的任务1.1.制定规范制定规范首先应为软件开发组制定在设计时应该共同遵守的标准,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作以便协调组内各成员的工作根据目标确定最合适的设计方法根据目标确定最合适的设计方法规定设计文档的编制标准规定设计文档的编制标准规定编码的信息形式,与硬件,操作系统的接口规约,命规定编码的信息形式,与硬件,操作系统的接口规约,命名规则名规则2.2.软件系统结构的总体设计:基于功能层次结构软件系统结构的总体设计:基于功能层次结构建立系统建立系统 采用某种设计方法,将系统按功能划分成模块的层次结采用某种设计方法,将系统按功能划分成模块的层次结构构
24、 确定每个模块的功能确定每个模块的功能 建立与已确定的软件需求的对应关系建立与已确定的软件需求的对应关系 确定模块间的调用关系确定模块间的调用关系 确定模块间的接口确定模块间的接口 评估模块划分的质量评估模块划分的质量3.3.处理方式设计处理方式设计确定为实现系统的功能需求所必需的算法,评估算法的性确定为实现系统的功能需求所必需的算法,评估算法的性能能确定为满足系统的性能需求所必需的算法和模块间的控制确定为满足系统的性能需求所必需的算法和模块间的控制方式方式 周转时间周转时间 响应时间响应时间 吞吐量吞吐量 精度精度 确定外部信号的接收发送形式确定外部信号的接收发送形式4.4.数据设计数据设计
展开阅读全文