软件工程-4-软件设计.ppt

上传人:pu****.1 文档编号:568597811 上传时间:2024-07-25 格式:PPT 页数:45 大小:3.59MB
返回 下载 相关 举报
软件工程-4-软件设计.ppt_第1页
第1页 / 共45页
软件工程-4-软件设计.ppt_第2页
第2页 / 共45页
软件工程-4-软件设计.ppt_第3页
第3页 / 共45页
软件工程-4-软件设计.ppt_第4页
第4页 / 共45页
软件工程-4-软件设计.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《软件工程-4-软件设计.ppt》由会员分享,可在线阅读,更多相关《软件工程-4-软件设计.ppt(45页珍藏版)》请在金锄头文库上搜索。

1、Software Engineering软件工程软件工程第四章 软件设计(1)场景互动场景互动场景互动场景互动v已经对用户的需求进行了深入的理解和整理,下面已经对用户的需求进行了深入的理解和整理,下面为软件的最终实现,我们还需要做哪些工作?为软件的最终实现,我们还需要做哪些工作?数据存储方式是什么?数据库?还是文件?如何表数据存储方式是什么?数据库?还是文件?如何表示?示?如何解决软件的复杂度,确保可支持性(可理解、如何解决软件的复杂度,确保可支持性(可理解、可维护、可扩展),有效地组织开发?可维护、可扩展),有效地组织开发?如何实现用户的性能上的要求?效率如何提高?如如何实现用户的性能上的要

2、求?效率如何提高?如何节省空间?何节省空间?与外界进行沟通的形式是什么?与外界进行沟通的形式是什么?一、软件设计概述一、软件设计概述v数据设计数据设计将分析时创建的数据模型变换成实现软件所需将分析时创建的数据模型变换成实现软件所需的数据结构。在实体关系图中定义的数据对象的数据结构。在实体关系图中定义的数据对象和关系以及数据字典中描述的详细数据内容提和关系以及数据字典中描述的详细数据内容提供了数据设计活动的基础。供了数据设计活动的基础。详细的数据结构设计将在过程设计中进行。详细的数据结构设计将在过程设计中进行。数据存储方式是什么?数据库?还是文件?如何表示?数据存储方式是什么?数据库?还是文件?

3、如何表示?v体系结构设计体系结构设计是建立系统的体系结构框架、详细设计必须符合是建立系统的体系结构框架、详细设计必须符合的组建结构以及组件之间相互通信的规范。的组建结构以及组件之间相互通信的规范。体系结构设计的表示是从分析阶段的系统模型中体系结构设计的表示是从分析阶段的系统模型中导出。导出。如何解决软件的复杂度,确保可支持性(可理解、可如何解决软件的复杂度,确保可支持性(可理解、可维护、可扩展),有效地组织开发?维护、可扩展),有效地组织开发?v接口设计接口设计描述了软件内部、软件和需要协作的系统之间以及软描述了软件内部、软件和需要协作的系统之间以及软件和人之间如何进行交互。件和人之间如何进行

4、交互。数据和数据流图提供了接口设计所需要的信息。数据和数据流图提供了接口设计所需要的信息。v构件级设计构件级设计也称为过程设计,将软件体系结构的结构性元素变换也称为过程设计,将软件体系结构的结构性元素变换成为对软件构件的过程性描述,也就是模块的数据结成为对软件构件的过程性描述,也就是模块的数据结构与算法的设计。构与算法的设计。如何实现用户的性能上的要求?效率如何提高?如何如何实现用户的性能上的要求?效率如何提高?如何节省空间?节省空间?与外界进行沟通的形式是什么?与外界进行沟通的形式是什么?v从技术角度来看的设计过程中包含的内容从技术角度来看的设计过程中包含的内容1. 1. 1. 1. 软件设

5、计的过程软件设计的过程软件设计的过程软件设计的过程软件开发阶段的信息流软件开发阶段的信息流v从工程管理的角度来看的设计过程从工程管理的角度来看的设计过程最初只是描绘出软件的总的框架(概要设计),然最初只是描绘出软件的总的框架(概要设计),然后进一步细化,在此框架中填入细节,把它加工成后进一步细化,在此框架中填入细节,把它加工成在程序细节上非常接近于源程序的软件表示(详细在程序细节上非常接近于源程序的软件表示(详细设计)。设计)。概要设计概要设计将软件需求转化为数据结构和软件的体系结构。将软件需求转化为数据结构和软件的体系结构。详细设计详细设计 确定软件各个组成部分内的算法以及各部分的内部确定软

6、件各个组成部分内的算法以及各部分的内部数据组织数据组织 选定某种过程的表达形式来描述各种算法。选定某种过程的表达形式来描述各种算法。v软件设计不同观察角度之间的关系软件设计不同观察角度之间的关系2. 2. 2. 2. 软件设计的目的软件设计的目的软件设计的目的软件设计的目的v设计是一个建模活动,它使用分析阶段得出的信息设计是一个建模活动,它使用分析阶段得出的信息(即需求模型)并把这些信息转换为叫做解决方案(即需求模型)并把这些信息转换为叫做解决方案的模型。的模型。3. 3. 3. 3. 软件设计的目标软件设计的目标软件设计的目标软件设计的目标v层次关系明晰层次关系明晰软件实体有明显的层次关系,

7、利于软件元素软件实体有明显的层次关系,利于软件元素间控制间控制v软件实体模块化软件实体模块化软件实体应该是模块化的,模块具有独立功软件实体应该是模块化的,模块具有独立功能能v软件实体与环境的界面清晰软件实体与环境的界面清晰v设计规格说明清晰、简洁、完整、无二义性设计规格说明清晰、简洁、完整、无二义性v抽象抽象v逐步求精逐步求精v模块化模块化v信息隐藏信息隐藏v控制层次控制层次4. 4. 4. 4. 软件设计的概念软件设计的概念软件设计的概念软件设计的概念v抽象抽象“抽象抽象”的心理学观念使的心理学观念使人能够集中于某个一般性人能够集中于某个一般性级别上的问题,而不去考级别上的问题,而不去考虑无

8、关的底层细节。虑无关的底层细节。这种解决问题的方式也应这种解决问题的方式也应用于软件领域。软件过程用于软件领域。软件过程中的每一个步骤都是软件中的每一个步骤都是软件解决方案抽象级别上的求解决方案抽象级别上的求精精 。3计算手续费v逐步求精逐步求精逐步求精是由逐步求精是由Niklaus Wirth最初提出的一种自顶最初提出的一种自顶向下设计策略,系统是通过过程细节的连续的精向下设计策略,系统是通过过程细节的连续的精化层次开发的,层次结构通过逐步地分解功能的化层次开发的,层次结构通过逐步地分解功能的宏观声明直至形成程序设计语言的语句而开发。宏观声明直至形成程序设计语言的语句而开发。逐步求精和抽象是

9、互补的概念。随着抽象层次的逐步求精和抽象是互补的概念。随着抽象层次的降低,逐步求精越来越精化,并不断揭示底层的降低,逐步求精越来越精化,并不断揭示底层的一些细节。一些细节。 v模块化模块化软件被划分成独立命名和可独立访问的被称作模块的构成成软件被划分成独立命名和可独立访问的被称作模块的构成成分,它们集合到一起满足问题的需求。分,它们集合到一起满足问题的需求。v模块划分的目的模块划分的目的进行功能分解,把复杂的大的功能划进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每分成简单的小的子功能,尽量降低每个模块的成本。个模块的成本。尽量使每个模块间的接口不能太多,尽量使每个模块间的接口

10、不能太多,太多会使接口成本增加。兼顾二者可太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成取得最佳的划分状态,确保软件总成本最低。本最低。最小成本区最小成本区M2M1n1n2模块数模块数成本成本成本成本/模块模块接口成本接口成本软件总成本软件总成本模块化和软件成本之间的关系模块化和软件成本之间的关系模块化和软件成本之间的关系模块化和软件成本之间的关系v信息隐藏信息隐藏信息隐藏的原则提出信息隐藏的原则提出“特征在于每个模块都对其他特征在于每个模块都对其他模块隐藏的设计决策模块隐藏的设计决策”,也就是说模块应该设计成,也就是说模块应该设计成其中包含的信息(过程和数据)对不需要这些信

11、息其中包含的信息(过程和数据)对不需要这些信息的其他模块式不可访问的。的其他模块式不可访问的。信息隐藏为后期的软件测试和维护提供了极大的方信息隐藏为后期的软件测试和维护提供了极大的方便。一旦在进行测试时发现缺陷,那么对模块的变便。一旦在进行测试时发现缺陷,那么对模块的变更不会影响或者至少很少影响其他模块,不会将影更不会影响或者至少很少影响其他模块,不会将影响扩大并传播。响扩大并传播。 v控制层次控制层次也称为也称为“程序结构程序结构”,它代表了程序构件(模块),它代表了程序构件(模块)的组织并暗示控制的层次结构。的组织并暗示控制的层次结构。一般用四个特征来描述:深度、宽度、扇入和扇出。一般用四

12、个特征来描述:深度、宽度、扇入和扇出。深度深度定义为控制层次的层数,或者说是控制级别的数量。定义为控制层次的层数,或者说是控制级别的数量。宽度宽度定义为控制层次的跨度。定义为控制层次的跨度。扇入扇入指明有多少个模块直接控制一个给定的模块。指明有多少个模块直接控制一个给定的模块。扇出扇出指明被一个模块直接控制的其他模块的数量。指明被一个模块直接控制的其他模块的数量。二、独立性原则二、独立性原则二、独立性原则二、独立性原则 v含义含义模块独立性模块独立性, 是指软件系统中每个模块只涉及软件要是指软件系统中每个模块只涉及软件要求的具体的子功能求的具体的子功能, 而和软件系统中其它的模块的接而和软件系

13、统中其它的模块的接口是简单的口是简单的v衡量独立性的标准衡量独立性的标准内聚内聚模块功能强度模块功能强度(一个模块内部各个元素彼此结合的紧一个模块内部各个元素彼此结合的紧密程度密程度)的度量。的度量。耦合耦合模块之间的互相连接的紧密程度的度量模块之间的互相连接的紧密程度的度量高内聚低耦合的模块具有较强的模块独立性。高内聚低耦合的模块具有较强的模块独立性。1.1.1.1.内聚内聚内聚内聚v偶然内聚偶然内聚设计者随意决定将无关系的几个功能组合在一个模设计者随意决定将无关系的几个功能组合在一个模块中,该模块的内聚程度就是偶然内聚。块中,该模块的内聚程度就是偶然内聚。v例子例子为了节省空间,将多个模块

14、中重复出现的语句提取为了节省空间,将多个模块中重复出现的语句提取出来,组成一个新的模块出来,组成一个新的模块v缺点缺点这样的模块使产品的可维护性降低这样的模块使产品的可维护性降低这些模块是不可重用的这些模块是不可重用的v矫正办法矫正办法因为它执行多个操作,可将模块分成更小的模块,因为它执行多个操作,可将模块分成更小的模块,每个小模块执行一个操作。每个小模块执行一个操作。v逻辑内聚逻辑内聚把逻辑上相似的功能结合到一个模块中。把逻辑上相似的功能结合到一个模块中。放到一个模块中的原因是,使用统一动词但针对不同的对放到一个模块中的原因是,使用统一动词但针对不同的对象,有相同的代码段;起始于某多路开关,

15、以后转向不同象,有相同的代码段;起始于某多路开关,以后转向不同的代码段,但各代码段间关系很少。的代码段,但各代码段间关系很少。缺点缺点增加了开关量;接口不易理增加了开关量;接口不易理解;效率低;完成多个操作解;效率低;完成多个操作的代码纠缠在一起,导致严的代码纠缠在一起,导致严重的维护问题。重的维护问题。v例子例子1 调用模块调用模块new_operrationfunction_code=7;New_operation(function_code,dummy_1,dummy_2,dummy_3);/dummy_1、dummy_2和和dummy_3是伪变量,如是伪变量,如果果function_c

16、ode等于等于7则不使用它们。则不使用它们。v例子例子2一个执行所有输入输出的对象一个执行所有输入输出的对象1 1、处理所有输入和输出的代码、处理所有输入和输出的代码2 2、只处理输入的代码、只处理输入的代码3 3、只处理输出的代码、只处理输出的代码4 4、处理磁盘和磁带的输入、处理磁盘和磁带的输入/ /输出的代码输出的代码5 5、处理磁盘输入输出的代码、处理磁盘输入输出的代码6 6、处理磁带输入输出的代码、处理磁带输入输出的代码7 7、处理磁盘输入的代码、处理磁盘输入的代码3737、处理键盘输入的代码、处理键盘输入的代码v时间内聚时间内聚 在某一时间同时执行的任务放在同一模块中。在某一时间同

17、时执行的任务放在同一模块中。v例如例如初始化模块,集中了初始化功能的模块。初始化模块,集中了初始化功能的模块。v过程内聚过程内聚如果一个模块执行一系列与产品要遵循的步骤顺序有关的操作,如果一个模块执行一系列与产品要遵循的步骤顺序有关的操作,则该模块具有过程行内聚则该模块具有过程行内聚这种情况往往发生在流程图中相邻的处理功能。这种情况往往发生在流程图中相邻的处理功能。例如:从数据库读取零件编号并在维护文件中更新修复记录例如:从数据库读取零件编号并在维护文件中更新修复记录v通信内聚通信内聚如果一个模块执行一系列与产品要遵循的步骤顺序有关的操如果一个模块执行一系列与产品要遵循的步骤顺序有关的操作,并

18、且如果所有操作都在相同的数据上进行,则该模块具作,并且如果所有操作都在相同的数据上进行,则该模块具有通信性内聚有通信性内聚例如,更新数据库中的记录,并将该记录写入审计追踪中例如,更新数据库中的记录,并将该记录写入审计追踪中v信息内聚信息内聚一个模块中执行一系列动作,每个动作都有自己的入口点和一个模块中执行一系列动作,每个动作都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上,这样的模处理代码,所有的动作都作用在相同的数据结构上,这样的模块具有信息内聚。块具有信息内聚。对象是一个具有信息内聚的模块对象是一个具有信息内聚的模块v功能内聚功能内聚模块中的各部分是为了完成一个确定的功能存在

19、模块中的各部分是为了完成一个确定的功能存在于一个模块中的。于一个模块中的。只执行一个操作或只达到一个单一目的的模块只执行一个操作或只达到一个单一目的的模块例如,获取室外的温度、计算销售佣金、写入磁例如,获取室外的温度、计算销售佣金、写入磁盘盘 巧合内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚低高弱强模块内聚性模块独立性v内容耦合内容耦合一个模块访问另一个模块边界中的数据或控制,这种耦合是一个模块访问另一个模块边界中的数据或控制,这种耦合是内容耦合也是最强的耦合。内容耦合也是最强的耦合。如果发生下列情形,两个模块之间就发生了内容耦合如果发生下列情形,两个模块之间就发生了内容耦合 (1)

20、一个模块直接访问另一个模块的内部数据一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭(只可能出现在汇编语只可能出现在汇编语言中言中);2.2.2.2.耦合耦合耦合耦合v公共耦合公共耦合多个模块都访问一块全局数据区中的数据项(一个磁盘文多个模块都访问一块全局数据区中的数据项(一个磁盘文件、一个全局可访问的内存区),这种耦合程度就是公共件、一个全局可访问的内存区),这种耦合程度就是公共耦合。耦合。 公共耦合的复杂程度随耦合模块的个数增加而显著增加。公共耦合

21、的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。松散公共耦合和紧密公共耦合。v外部耦合外部耦合当模块连接到软件外部环境上时会发生的偶合关系,当模块连接到软件外部环境上时会发生的偶合关系,具有相对较高的偶合度。具有相对较高的偶合度。v控制耦合控制耦合模块与模块之间传递的模块与模块之间传递的参数是控制决策作用的。参数是控制决策作用的。中级别的耦合度。中级别的耦合度。v标记耦合标记耦合当模块与模块之间传递的参数是数据结构的一当模块与模块之间传递的参数是数据结构的一部分时,这种

22、耦合是标记耦合。是数据耦合的部分时,这种耦合是标记耦合。是数据耦合的变体。变体。v数据耦合数据耦合模块与模块之间需要通过常规的参数表访问,模块与模块之间需要通过常规的参数表访问,数据通过该列表传递,传递的数据是简单类型数据通过该列表传递,传递的数据是简单类型的,这种耦合称为数据耦合。的,这种耦合称为数据耦合。v非直接耦合非直接耦合两个模块式不同模块的从属模块,相互之间无关两个模块式不同模块的从属模块,相互之间无关因而没有直接耦合发生,称为非直接耦合。因而没有直接耦合发生,称为非直接耦合。内容耦合公共耦合外部耦合控制耦合 数据结构耦合数据耦合非直接耦合高低弱强模块耦合性模块独立性v如何降低模块间

23、耦合度?如何降低模块间耦合度?如模块必须存在耦合,选择适当的耦合类型如模块必须存在耦合,选择适当的耦合类型原则:原则:尽量使用数据耦合尽量使用数据耦合少用控制耦合少用控制耦合限制公共耦合的范围限制公共耦合的范围坚决避免使用内容耦合坚决避免使用内容耦合降低模块间接口的复杂性降低模块间接口的复杂性3.3.3.3.内聚与耦合的关系内聚与耦合的关系内聚与耦合的关系内聚与耦合的关系v内聚与耦合密切相关,同其它模块强耦合的模块内聚与耦合密切相关,同其它模块强耦合的模块意味着弱内聚,强内聚模块意味着与其它模块间意味着弱内聚,强内聚模块意味着与其它模块间松散耦合。松散耦合。v设计总原则:设计总原则:使每个模块

24、执行一个功能使每个模块执行一个功能模块间传递数据型参数模块间传递数据型参数模块间共用信息尽量少模块间共用信息尽量少设计目标:设计目标:力争力争高内聚高内聚、低、低耦合。耦合。v练习练习1软软件件设设计计中中划划分分程程序序模模块块通通常常遵遵循循的的原原则则是是要要使使各各模模块块间间的的耦耦合性尽可能合性尽可能 A 。三种可能的模块耦合是三种可能的模块耦合是 B 。例如,一个模块直接引用另一模块中的数据。例如,一个模块直接引用另一模块中的数据。 C 。例如,一个模块把开关量作为参数传递给另一模块。例如,一个模块把开关量作为参数传递给另一模块。 D 。例例如如,一一个个模模块块把把一一个个数数

25、值值量量作作为为参参数数传传递递给给另另一一模模块块。其中其中 E 的耦合性最强。的耦合性最强。A: 强强 适中适中 弱弱 BE:公共耦合公共耦合 数据耦合数据耦合 逻辑耦合逻辑耦合 外部耦合外部耦合 内容耦合内容耦合 控制耦合控制耦合 v练习练习2模块内聚度用于衡量模块内部各成分之间彼此结合的紧密程度模块内聚度用于衡量模块内部各成分之间彼此结合的紧密程度1、一一组组语语句句在在程程序序的的多多处处出出现现,为为了了节节省省内内存存空空间间把把这这些些语语句放在一个模块中,该模块的内聚度是句放在一个模块中,该模块的内聚度是 A 的。的。2、将将几几个个逻逻辑辑上上相相似似的的成成分分放放在在一一个个模模块块中中,该该模模块块的的内内聚聚度是度是 B 的。的。3、模模块块中中所所有有成成分分引引用用共共同同的的数数据据,该该模模块块的的内内聚聚度度是是 C 的。的。4、模模块块中中所所有有成成分分结结合合起起来来完完成成一一项项任任务务,该该模模块块的的内内聚聚度度是是 D 的。的。AE:功能性功能性 逻辑性逻辑性 通信性通信性 过程性过程性 偶然性偶然性 瞬时性瞬时性v练习练习3模块间的耦合模块间的耦合Q QR RS ST TU UP P数据数据数据或印记数据或印记公共公共公共公共Q Q控制控制数据或印记数据或印记R R数据数据S S数据数据T T公共公共

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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