软件设计工程

上传人:夏** 文档编号:568840733 上传时间:2024-07-27 格式:PPT 页数:84 大小:558KB
返回 下载 相关 举报
软件设计工程_第1页
第1页 / 共84页
软件设计工程_第2页
第2页 / 共84页
软件设计工程_第3页
第3页 / 共84页
软件设计工程_第4页
第4页 / 共84页
软件设计工程_第5页
第5页 / 共84页
点击查看更多>>
资源描述

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

1、设计工程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计准则软件设计准则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审 正正如如任任何何工工程程项项目目一一样样,在在生生产产之之前前要要做做设计,软件编码前,也必须先进行软件设计。设计,软件编码前,也必须先进行软件设计。 软软件件设设计计是是软软件件开开发发的的关关键键步步骤骤,直直接接影影响软件质量。响软件质量。 软件需求分析解决软件需求分析解决“做什么做什么”的问题,软的问题,软件设计过程则解决件设计过程则解决“怎么做怎么做”的问题的问题 4.1 4.1 软件设计工程概述软件设计

2、工程概述软件设计是把软件需求变换成软件表示的过程,它主要包含软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:两个阶段:软件体系结构设计软件体系结构设计阶段和阶段和部件级设计部件级设计; 有称为有称为总体设计总体设计和和详细设计详细设计两个两个阶段。阶段。 其其工作流程工作流程可用下图表示:可用下图表示: 总体总体设计设计需求需求 说明书说明书复审复审体系体系 结构结构数据数据/ /类结构类结构修修 改改详细详细设计设计可接受可接受部件过程描述部件过程描述复审复审修修 改改设计说设计说 明书明书1 1、设设计计阶阶段段结结束束要要交交付付的的文文档档是是设设计计说说明明书书,根根据

3、据设设计计方方法法的的不不同同,有不同的设计文档。有不同的设计文档。2 2、每个设计步骤完成后,都应进行复审。、每个设计步骤完成后,都应进行复审。 常用的设计方法有:常用的设计方法有: SD法、法、Jackson法、法、OOD法、层次式输入法、层次式输入-处理处理-输出法输出法(又称又称HIPO法法)、 Parnas法、法、 Warnier法等。法等。软件设计阶段软件设计阶段设计任务:设计任务:使用一种设计方法使用一种设计方法,将分析阶段获得的需求说将分析阶段获得的需求说明的明的软件分析模型中通过数据、功能和行为模型所展示软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息传送给设计阶

4、段,的软件需求的信息传送给设计阶段,完成系统的完成系统的数据数据/类类设计、体系结构设计、接口设计、部件级设计设计、体系结构设计、接口设计、部件级设计 最后得到最后得到软件设计说明书。软件设计说明书。过程设计过程设计结构设计结构设计数据设计数据设计界面设计界面设计软件设计软件设计1.1.软件设计阶段的任务软件设计阶段的任务软件设计的目标就是构造一个高内聚低耦合的软件设计模型。软件设计的目标就是构造一个高内聚低耦合的软件设计模型。提高可靠性;提高可维护性;提高可理解性;提高效率。提高可靠性;提高可维护性;提高可理解性;提高效率。衡量该目标的准则衡量该目标的准则:1、软件实体有明显的层次结构,利于

5、软件元素间控制。、软件实体有明显的层次结构,利于软件元素间控制。2、软件实体应该是模块化的,模块具有独立功能。、软件实体应该是模块化的,模块具有独立功能。3、软件实体与环境的界面清晰。、软件实体与环境的界面清晰。4、设计规格说明清晰、简洁、完整和无二义性。、设计规格说明清晰、简洁、完整和无二义性。软件软件设计设计设计设计高可靠高可靠性性高可维高可维护性护性高可理高可理解性解性高效率高效率软件设计的目标2.2.软件设计的目标软件设计的目标3.3.软件设计的过程软件设计的过程1选取合理的系统体系结构2推荐最佳方案、技术选型3划分模块,确定软件结构 4数据结构和算法设计5设计用户界面6编写文档7审查

6、和复查一、选取合理的系统体系结构软软件件体体系系结结构构确确定定了了系系统统的的组组织织结结构构和和拓拓扑扑结结构构,显显示示了了系系统统需需求求和和构构成成系系统统的的元元素素之之间间的的对对应应关关系系,提供了一些设计决策的基本原理。提供了一些设计决策的基本原理。体体系系结结构构设设计计是是软软件件设设计计的的第第一一个个阶阶段段,该该阶阶段段侧侧重重于于系系统统宏宏观观结结构构的的设设计计,而而不不关关心心模模块块的的内内部部算算法。法。常见的软件体系结构常见的软件体系结构单主机结构单主机结构C/SC/S(ClieClient/Servernt/Server)结构)结构B/SB/S(Br

7、owser/ServerBrowser/Server)结构)结构3. 3. 软件设计的过程软件设计的过程一、选取合理的系统体系结构选取体系选取体系 针对以下问题考虑针对以下问题考虑:是单机还是客户机是单机还是客户机/服务器系统服务器系统是应用开发还是低层开发是应用开发还是低层开发(是否有单片机是否有单片机)客户机最大点数客户机最大点数是否提供给第三方接口是否提供给第三方接口网络网络(数据通信数据通信)连接方式连接方式胖客户机还是瘦客户机胖客户机还是瘦客户机数据文件的保存方式数据文件的保存方式(文本、本地数据库、大型文本、本地数据库、大型数据库数据库)3. 3. 软件设计的过程软件设计的过程二、

8、 推荐最佳方案、技术选型技术选型,明确以下信息:技术选型,明确以下信息:主要硬件环境操作系统应用系统内的各种服务器软件开发语言及开发工具CASE软件3. 3. 软件设计的过程软件设计的过程三、划分模块,确定软件结构 开开发发方方法法不不同同,确确定定软软件件结结构构的的方方法法也也不不同同。例例如如SDSD法法,是是从从分分层层的的DFDDFD图图导导出出初初始始的的结结构构图图,再再对对初初始始的的结结构构图图进进行行改改进进,获获得得最最终终的的结构图。结构图。 一一般般包包括括确确定定系系统统的的软软件件结结构构,分分解解模模块块 ,确确定定系系统统的的模模块块层层次次关系。关系。四、确

9、定系统的数据结构、算法 数数据据结结构构的的建建立立对对于于信信息息系系统统而而言言尤尤为为重重要要。要要确确定定数数据据的的类类型型,组织、存取方式,相关程度及处理方式等。组织、存取方式,相关程度及处理方式等。五、设计用户界面 作作为为人人机机接接口口的的用用户户界界面面起起着着越越来来越越重重要要的的作作用用,它它直直接接影影响响到到软件的寿命。软件的寿命。3. 3. 软件设计的过程软件设计的过程六、编写文档设设计计阶阶段段结结束束要要交交付付的的文文档档是是设设计计说说明明书书,根根据据设设计计方方法法的的不同,有不同的设计文档。不同,有不同的设计文档。七、审查和复查每个设计步骤完成后,

10、都应进行复审。每个设计步骤完成后,都应进行复审。1抽象化与逐步求精抽象化与逐步求精 2模块化准则模块化准则3信息隐蔽准则信息隐蔽准则4模块独立性准则模块独立性准则4.2 4.2 软件设计准则软件设计准则 软软件件设设计计是是软软件件开开发发过过程程的的重重要要阶阶段段,对对保保证证软软件件系系统统的的质质量量起起着着关关键键作作用用。但但是是如如何何保保证证软软件件设计的质量呢?有以下经过长期考验的设计准则:设计的质量呢?有以下经过长期考验的设计准则:抽象抽象,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。 抽象的过程是从

11、特殊到一般的过程,上层概念是下层概念的抽象,下层概抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。念是上层概念的精化和细化。 软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述 一、抽象化与逐步求精准则一、抽象化与逐步求精准则软件设计中主要抽象手段有:软件设计中主要抽象手段有:过程抽象和数据抽象过程抽象和数据抽象 过程抽象过程抽象(也称功能抽象)是指任何一个完成明确定义功能的操(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用者当作单个实体看待,尽管这个操作实际上是由一作都

12、可被使用者当作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的系列更低级的操作来完成的数据抽象数据抽象是指定义数据类型和施加于该类型对象的操作,并限定是指定义数据类型和施加于该类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数据了对象的取值范围,只能通过这些操作修改和观察数据逐步求精逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法步更精化,更接近问题的解法抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有助于设计

13、者在设计过程中揭示低层的细节助于设计者在设计过程中揭示低层的细节 模模块块(Module)是是程程序序对对象象有有名名字字的的集集合合。又又称称“构构件件”,一一般般指指用用一一个个名名字字可可调调用用的的一一段段程程序序。例例如如,过过程程、函函数数、子子程程序序、宏宏等等,是是构构成成软软件件系系统统结结构构的的基基本本元元素。素。它一般具有如下三个基本属性:它一般具有如下三个基本属性:功能功能 即指该模块实现什么功能,做什么事情。必须注意,即指该模块实现什么功能,做什么事情。必须注意,这里所说的模块功能,应是该模块本身的功能加上它这里所说的模块功能,应是该模块本身的功能加上它所调用的所有

14、子模块的功能。所调用的所有子模块的功能。逻辑逻辑 即描述模块内部怎么做。即描述模块内部怎么做。状态状态 即该模块使用时的环境和条件。即该模块使用时的环境和条件。二、模块化准则二、模块化准则4.2 4.2 软件设计准则软件设计准则 模模块块化化:所所谓谓模模块块化化就就是是将将系系统统划划分分成成若若干干模模块块,每每个个模模块块完完成成一一个个子子功功能能,把把这这些些模模块块集集中中起起来来组组成成一一个个整体,以满足所要求的整个系统的功能。整体,以满足所要求的整个系统的功能。 模模块块化化的的目目的的是是将将系系统统“分分而而治治之之”,模模块块化化能能够够降降低低问问题题的的复复杂杂性性

15、,使使软软件件结结构构清清晰晰,易易阅阅读读、易易理理解解,易易于测试和调试,因而也有助于提高软件的可靠性。于测试和调试,因而也有助于提高软件的可靠性。二、模块化准则二、模块化准则4.2 4.2 软件设计准则软件设计准则模块化降低软件复杂度的模块化降低软件复杂度的简单证明简单证明令:令:C C(X X)表示问题)表示问题 X X 的复杂度函数;的复杂度函数; E E(X X)解解决决问问题题 X X 所所需需工工作作量量的的复复杂度函数;杂度函数;若:有问题若:有问题 P1 P1,P2 P2 ;C C(P1P1) C C(P2P2);); 显然:显然:E E(P1P1) E E(P2P2)由经

16、验:由经验:C C(P1+P2P1+P2) C C(P1P1)+ C+ C(P2P2)于是:于是:E E(P1+P2P1+P2) E E(P1P1)+ E+ E(P2P2)将将问问题题(P1+P2P1+P2)划划分分为为两两个个问问题题P1P1和和P2P2后,其工作量和复杂度都降低。后,其工作量和复杂度都降低。 并并非非模模块块分分得得越越小小越越好好,因因为为模模块块之之间间接接口口的的复复杂杂度度和和工工作作量量增增加加。显显然然,每每个个软软件件系系统统都都有有一一个个最最佳佳模模块块数数M M。注注意意选选择择分分解解的的最最佳佳模模块块数数。右上图描述了模块化与软件成本的关系。右上图

17、描述了模块化与软件成本的关系。软件总成本模块化与软件成本的关系成本模块数目模块成本接口成本最小成本区M三、信息隐蔽准则三、信息隐蔽准则4.2 4.2 软件设计准则软件设计准则由由parnas方方法法提提倡倡的的信信息息隐隐蔽蔽如如下下:每每个个模模块块的的实实现现细细节节对对于于其其他他模模块块来来说说是是隐隐蔽蔽的的。也也就就是是说说,模模块块中中所所包包含含的的信信息息(数数据据和和过过程程)不不允允许许其其他他不不需需要要这这些些信信息息的的模块使用。模块使用。通过信息隐蔽,则可定义和实施对模块的过程细节和局通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取限制部数据结构的

18、存取限制 该该原原则则有有利利于于提提高高模模块块的的内内聚聚性性。由由于于一一个个软软件件系系统统在在整整个个软软件件生生存存期期内内要要经经过过多多次次修修改改,在在划划分分模模块块时时要要采采取取措措施施,使使得得大大多多数数过过程程和和数数据据对对软软件件的的其其他他部部分分是是隐隐蔽蔽的的。这这样样,在在将将来来修修改改软软件件时时,可可将将偶偶然然引引入入错误所造成的影响限制在一个局部范围之内,错误所造成的影响限制在一个局部范围之内,不致波及到软件的其他部分不致波及到软件的其他部分。例如:定义栈(stack)操作模块makenull(置空栈);push(进栈);pop(出栈);ge

19、ttop(取栈顶) empty (判栈空)其操作均被封装,无需了解模块内部的实现过程。对外实现了信息隐蔽。三、信息隐蔽准则三、信息隐蔽准则4.2 4.2 软件设计准则软件设计准则四、模块独立性准则四、模块独立性准则u软软件件模模块块独独立立性性的的含含义义是是指指开开发发具具有有功功能能专专一一,模模块块之之间无过多相互作用的模块。又称为间无过多相互作用的模块。又称为模块独立性准则模块独立性准则。软件系统中每个模块只涉及软件要求的具体的子功能,软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。这种类型的而和软件系统中其他模块的接口是简单的。这种类型的模块可以

20、并行开发,开发容易,能减少错误的影响,使模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。模块容易组合、修改及测试。提高模块质量在于提高模块独立性。提高模块质量在于提高模块独立性。模块的独立性的度量标准是用模块的独立性的度量标准是用耦合性和内聚性耦合性和内聚性两个定两个定性指标来衡量。性指标来衡量。独立性比较强的模块应该是具有高内聚性和低耦合度独立性比较强的模块应该是具有高内聚性和低耦合度4.2 4.2 软件设计准则软件设计准则耦合性耦合性(Coupling)模模块块分分解解的的一一个个目目标标是是使使块块间间联联系系尽尽可可能能小,达到这个目标可通过以下措施。小,达到

21、这个目标可通过以下措施。每个模块用过程语句(或函数方式等)调用其他模块。模块间传送的参数为数据型。模块间公用的信息(如参数等)尽量少。耦耦合合性性是是指指软软件件结结构构中中模模块块相相互互连连接接的的紧紧密密程程度度,是是模模块块间间相相互互连连接接性性的的度度量量。模模块块分分解解的的一一个个目目标标是是使使块块间间联联系系尽尽可可能能小小,块块间间联联系系的的大小可从三个方面衡量:大小可从三个方面衡量: 方式 块间联系方式有“直接引用”或“用过程语句调用”。 作用 块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型)。 数量 块间传送的共用信息的数量。方

22、式数据作用少多数量控制混合直接引用过程调用模块间耦合的类型:模块间耦合的类型:模模块块独独立立性性弱弱(低耦合低耦合)强强(中耦合中耦合)(较强耦合较强耦合)(强耦合强耦合)外部耦合公共耦合内容耦合无直接耦合数据耦合标记耦合高高低低耦耦合合性性控制耦合(1) 无直接耦合 两个模块没有直接关系两个模块没有直接关系(模块模块1和模块和模块2),模块独,模块独立性最强。立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 4(2) 数据耦合数据耦合(数据耦合(Data Coupling): 一个模块传送给另一个模块一个模块传送给另一个模块的参数是一个单个的数据项。的参数是一个单个的数据项。

23、一一模模块块调调用用另另一一模模块块时时,被被调调用用模模块块的的输输入入、输输出出都都是是简简单单的数据的数据( (若干参数若干参数) )。属松散耦合。属松散耦合。数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额(3) 标记耦合(复合型耦合)复合耦合(复合耦合(Stamp Coupling)(标记标记,特征耦合特征耦合) 一个模块传送给另一个模块的参数是一个复合的一个模块传送给另一个模块的参数是一个复合的数据结构。例如,包含几个数据单项的记录。数据结构。例如,包含几个数据单项的记录。 如果两个模块通过传递数据结构如果两个模块通过传递数据结构( (不是简单数据,而不

24、是简单数据,而是记录、数组等是记录、数组等) )加以联系,或都与一个数据结构加以联系,或都与一个数据结构有关系有关系, , 则称这两个模块间存在标记偶合。则称这两个模块间存在标记偶合。标记耦合举例标记耦合举例“住户情况住户情况”是一个数据结构是一个数据结构, ,图中模块都与此数据结构有关图中模块都与此数据结构有关. .“计算水费计算水费”和和“计算电费计算电费”本无关本无关, ,由于引用了此数据结构产生依赖关系由于引用了此数据结构产生依赖关系, ,它们之间也是标记偶合它们之间也是标记偶合. .将标记耦合修改为数据耦合举例将标记耦合修改为数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计

25、算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费(4) 控制耦合(Control Coupling)控制耦合控制耦合 一个模块传递给另一模一个模块传递给另一模块的信息是用于控制该块的信息是用于控制该模块内部逻辑的控制信模块内部逻辑的控制信号。显然,对被控制模号。显然,对被控制模块的任何修改,都会影块的任何修改,都会影响控制模块。响控制模块。ABFlagf1f2fn.一模块向下属模块传递的信息一模块向下属模块传递的信息 (开关量、标志等控制被调开关量、标志等控制被调用模块决策的变量用模块决策的变量) 控制了被调用模块的内部逻辑。控制了被调用模块的内部逻辑。控制耦合举例控制耦合举例(

26、控制信号控制信号)控制耦合增加了理解和编程的复杂性,调用模块控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖必须知道被调模块的内部逻辑,增加了相互依赖(1)(1)将被调用模块内的判定上移到调用模块中进行将被调用模块内的判定上移到调用模块中进行(2)(2)被调用模块分解成若干单一功能模块被调用模块分解成若干单一功能模块去除模块间控制耦合的方法去除模块间控制耦合的方法改控制耦合为数据耦合举例改控制耦合为数据耦合举例(5) 外部耦合一组模块均与同一外部环境关联一组模块均与同一外部环境关联( (例如例如,I/O,I/O模块与特模块与特定的设备、格式和通信协议相关联定

27、的设备、格式和通信协议相关联),),它们之间便它们之间便存在外部耦合。存在外部耦合。外部偶合必不可少外部偶合必不可少, ,但这种模块数目应尽量少。但这种模块数目应尽量少。(6) 公共耦合(公共数据区耦合)公共耦合(公共耦合(Common Coupling) 若干模块访问一个公共的数据环境,则它们之间的耦合称为若干模块访问一个公共的数据环境,则它们之间的耦合称为公共耦合。公共环境可为全局数据结构、共享的通信区、内存的公共耦合。公共环境可为全局数据结构、共享的通信区、内存的公共覆盖区等。显然,公共数据区的变化,将影响所有公共耦合公共覆盖区等。显然,公共数据区的变化,将影响所有公共耦合模块,严重影响

28、模块的可靠性和可适应性,降低软件的可读性。模块,严重影响模块的可靠性和可适应性,降低软件的可读性。一一组组模模块块引引用用同同一一个个公公用用数数据据区区( (也也称称全全局局数数据据区区、公公共共数数据据环环境境) )。 公共数据区指:公共数据区指: 全局数据结构全局数据结构 共享通讯区共享通讯区 内存公共覆盖区等内存公共覆盖区等公共耦合举例公共耦合举例(1)(1)软件可理解性降低软件可理解性降低(2)(2)诊断错误困难诊断错误困难(3)(3)软件可维护性差,软件可维护性差,(4)(4)软件可靠性差软件可靠性差( (公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施) )慎用公共数

29、据区和全程变量慎用公共数据区和全程变量!公共耦合存在的问题公共耦合存在的问题(7) 内容耦合内容耦合(content coupling)l一个模块直接访问另一模块的内部数据。l一个模块不通过正常入口转到另一模块的内部。l一个模块有多个入口。l两个模块有部分代码重迭。AB进入另一模块内进入另一模块内AB部分代码重迭部分代码重迭Entry1.Entry2 .多重入口多重入口最不好的耦合形式最不好的耦合形式 ! !如何降低模块间耦合度:如何降低模块间耦合度:耦合是影响软件复杂程度和设计质量的重要因素耦合是影响软件复杂程度和设计质量的重要因素模块化设计的目标:建立模块间耦合度尽可能松散的模块化设计的目

30、标:建立模块间耦合度尽可能松散的系统系统(1) (1) 尽量使用数据耦合尽量使用数据耦合少用控制耦合少用控制耦合限制公共耦合的范围限制公共耦合的范围坚决避免使用内容耦合坚决避免使用内容耦合(2) (2) 降低接口的复杂性降低接口的复杂性内聚性内聚性(cohesion)内内聚聚性性表表示示一一个个模模块块内内部部各各种种数数据据和和各各种种处处理理之之间间联联系系的的紧紧密密程程度度,它它是是从从功功能能的的角角度度来来度度量量模模块块内内的联系。的联系。显显然然, ,块块内内联联系系愈愈紧紧, ,即即内内聚聚性性愈愈强强, ,模模块块独独立立性性愈好。愈好。低低偶然内聚偶然内聚逻辑内聚逻辑内聚

31、时间内聚时间内聚过程内聚过程内聚通信内聚通信内聚信息内聚信息内聚功能内聚功能内聚模模块块独独立立性性弱弱( (功能分散功能分散) )强强( (功能单一功能单一) )模块的内聚性类型:模块的内聚性类型:内内聚聚性性高高模模块块T T中中的的三三条条语语句句毫毫无无关关系系,A A、B B、C C、D D都都不不在在文文件件CARD CARD FILE FILE 中。模块中。模块P P、Q Q、R R分别与三条语句有关。分别与三条语句有关。PQRMOVEATOBREADCARDFILEMOVECTODT 偶然型模块偶然型模块又称为巧合型,为了节约空间,将毫无关系(或者联系不多)的各成又称为巧合型,

32、为了节约空间,将毫无关系(或者联系不多)的各成分放在一个模块中。这样的模块显然不易理解,不易修改分放在一个模块中。这样的模块显然不易理解,不易修改。 缺点:可理解性差,缺点:可理解性差, 可修改性差可修改性差(1)偶然型()偶然型(Coincidental Cohesion)将几个逻辑上相似的功能放在一个模块中,调用时由调用模块传递的将几个逻辑上相似的功能放在一个模块中,调用时由调用模块传递的参数确定执行的功能。由于要进行控制参数的传递,必然要影响模块的内参数确定执行的功能。由于要进行控制参数的传递,必然要影响模块的内聚性。聚性。如图所示由调用模块传递的参数,经过判定后,才能确定是进行读还如图

33、所示由调用模块传递的参数,经过判定后,才能确定是进行读还是进行写操作。是进行写操作。调用模块判定读一个记录写一个记录逻辑型模块被调用模块(2)逻辑型()逻辑型(Logical Cohesion)逻辑内聚模块逻辑内聚模块将需要同时执行的成分放在一个模块中,因为模块中的各功能与时间有关,将需要同时执行的成分放在一个模块中,因为模块中的各功能与时间有关,因此又称为时间内聚或经典内聚。因此又称为时间内聚或经典内聚。例如例如: : 初始化系统模块、初始化系统模块、 系统结束模块、系统结束模块、 紧急故障处理模块等均是时间性聚合模块紧急故障处理模块等均是时间性聚合模块. .这类模块内部结构较简单,一般较少

34、判定,因此比逻辑内聚强,但是由于这类模块内部结构较简单,一般较少判定,因此比逻辑内聚强,但是由于将多个功能放在一起,给修改和维护造成困难。将多个功能放在一起,给修改和维护造成困难。(3)瞬时型()瞬时型(Temporal Cohesion)时间内聚时间内聚(经典内聚经典内聚)模块中某个成分的输出是另一成分的输入。由于这类模块无论数据还是执模块中某个成分的输出是另一成分的输入。由于这类模块无论数据还是执行顺序,模块中的一部分依赖于另外一部分。因此具有较好的内聚性。行顺序,模块中的一部分依赖于另外一部分。因此具有较好的内聚性。读入编辑A数据累加打印B结果 顺序型模块(4)顺序型()顺序型(Sequ

35、ential Cohesion) (过程内聚)(过程内聚)顺序型顺序型( (过程内聚过程内聚) )模块模块模块中的成分引用共同的输入数据,或者产生相同的输出数据,则模块中的成分引用共同的输入数据,或者产生相同的输出数据,则称为是通信内聚模块。称为是通信内聚模块。通信型模块比瞬时型模块的内聚性强,因为模块中包含了许多独立通信型模块比瞬时型模块的内聚性强,因为模块中包含了许多独立的功能,但却引用相同数据。的功能,但却引用相同数据。A打印报告1打印报告2打印报告2B存入打印C修改删除打印(a)(b)(c) 通信型模块(5)通信型()通信型(Communicational Cohesion)通信内聚模

36、块例通信内聚模块例(6)信息内聚)信息内聚模块完成多个功能,各功能都在同一数据结构上操作,每一功能有模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口。唯一入口。一个模块包括而且仅包括完成某一具体功能所必须的所有成分。一个模块包括而且仅包括完成某一具体功能所必须的所有成分。或者说,模块的所有成分都是为完成该功能而协同工作、紧密联系、或者说,模块的所有成分都是为完成该功能而协同工作、紧密联系、不可分割的。不可分割的。例如仅完成以下功能的模块为功能模块:例如仅完成以下功能的模块为功能模块: 求平方根求平方根 求解一元二次方程求解一元二次方程 计算利息计算利息 判素数判素数 求解方程

37、的功能模块求解方程的功能模块A AB B内聚性最强内聚性最强(7)功能型()功能型(Sequential Cohesion)耦合、内聚与模块独立性关系耦合、内聚与模块独立性关系内聚与耦合密切相关,强耦合的模块意味者弱内聚,内聚与耦合密切相关,强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合强内聚模块意味着与其它模块间松散耦合. .耦合与内聚都是模块独立性的定性标准,都反映模耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。模块独立性进行衡量

38、。设计目标:设计目标: 力争强内聚、弱耦合力争强内聚、弱耦合4.3 4.3 软件体系结构设计软件体系结构设计 软件体系结构关注系统的一个或多个结构,软件体系结构关注系统的一个或多个结构,包含软件构件、这些构件的对外可见的性包含软件构件、这些构件的对外可见的性质以及它们之间的关系质以及它们之间的关系 Bass提出体系结构重要的三个关键理由:提出体系结构重要的三个关键理由:方便利益相关人员的交流方便利益相关人员的交流 有利于系统设计的前期决策有利于系统设计的前期决策 可传递的系统级抽象可传递的系统级抽象 体系结构发展过程体系结构发展过程 常见的软件体系结构常见的软件体系结构单主机结构单主机结构C/

39、S(Client/Server)结构)结构B/S(Browser/Server)结构)结构 客户机客户机/服务器模型服务器模型(Client/Server Architectural Model) C/S结构是一种分布式模型,采用发请求、得结果的模式:结构是一种分布式模型,采用发请求、得结果的模式:客户机客户机 向服务器发出请求向服务器发出请求(数据请求、网页请求、文件传输请求等等数据请求、网页请求、文件传输请求等等),服务器服务器 响应请求,进行相应的操作,将结果回传给客户机,客户机再响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。将格式化后的结果呈现给用户

40、。C/S结构的应用都由三个相对独立的逻辑部分组成:结构的应用都由三个相对独立的逻辑部分组成:用户界面用户界面应用逻辑应用逻辑数据访问数据访问三种逻辑之间的关系三种逻辑之间的关系1)两层客户机)两层客户机/服务器模型服务器模型 Two Tier Client/Server Architectural Model服务器服务器1网络网络服务器服务器2服务器服务器M客户客户1客户客户2客户客户N两层两层Client/Server结构结构请求请求结果结果请求请求 完完整整的的应应用用包包含含三三个个相相对对独独立立的的逻逻辑辑部部分分,而而两两层层的的C/S结结构构只只有有两两个个端端应应用用。应应用用

41、逻逻辑辑应应该该映映射射到到哪哪一一端端上上呢?呢? 三种情况:三种情况:网网网网 络络络络用户界面用户界面客户端逻客户端逻辑应用辑应用服务端逻辑服务端逻辑应用应用客户端客户端用户界面用户界面逻辑应用逻辑应用数据访问数据访问用户界面用户界面逻辑应用逻辑应用数据访问数据访问服务器服务器应用逻辑层的映射情况应用逻辑层的映射情况数据访问数据访问C/S应用应用3C/S应用应用1C/S应用应用2 两两层层C/S架架构构将将数数据据表表示示和和处处理理逻逻辑辑分分开开 ,但但应应用用逻逻辑辑和和两两端端之一是紧耦合的之一是紧耦合的 ,不适宜多用户、多数据库、非安全的网络环境。,不适宜多用户、多数据库、非安

42、全的网络环境。 2)三层)三层/多层应用模型多层应用模型(Three/Multi Tier Model) 第一级是数据库管理结点第一级是数据库管理结点(database management node)。第二级或中间级是第二级或中间级是“商业逻辑结点商业逻辑结点” (business logic node),是指是指具体应用中实施的具体应用中实施的 程序逻辑和法则。程序逻辑和法则。第三级是用户界面级,强调高效、方便易用的用户界面。第三级是用户界面级,强调高效、方便易用的用户界面。Database management node(数据库管理结点)(数据库管理结点)business logic n

43、ode(商业逻辑结点)商业逻辑结点)Security(安全)(安全)Event(事件)(事件)Search(搜索)(搜索)ClientAClientDClientBClientC服服务务器器客客户户机机第一级第一级第二级第二级第三级第三级软件体系结构的风格软件体系结构的风格 绝大多数可以被归类为相对小数量的体系结构风格之一绝大多数可以被归类为相对小数量的体系结构风格之一 每种风格描述一种系统范畴,范畴包括:每种风格描述一种系统范畴,范畴包括:一些实现系统所需的功能的部件(如数据库、计算模一些实现系统所需的功能的部件(如数据库、计算模块);块);一组用来连接部件一组用来连接部件“通信、协调和合作

44、通信、协调和合作”的的“连接子连接子”;定义部件之间怎样整合的系统约束;定义部件之间怎样整合的系统约束;使设计者能够理解整个系统属性并分析已知属性的语使设计者能够理解整个系统属性并分析已知属性的语义模型。义模型。 数据为中心体系结构数据为中心体系结构 一些数据(比如一个文件或者数据库)保存在整个结构一些数据(比如一个文件或者数据库)保存在整个结构的中心,并且被其他部件频繁地使用、添加、删除、或的中心,并且被其他部件频繁地使用、添加、删除、或者修改者修改 数据流风格的体系结构数据流风格的体系结构 这种结构适用于输入数据被一系列的计算或者这种结构适用于输入数据被一系列的计算或者处理部件变换成输出数

45、据。处理部件变换成输出数据。调用和返回风格的体系结构调用和返回风格的体系结构 包含:包含:主程序主程序/子程序子程序风格体系结构和风格体系结构和远程过程调用远程过程调用风风格的体系结构格的体系结构 面向对象风格的体系结构面向对象风格的体系结构 系统部件封装数据和操作数据的方法。部件之间的交互和协调通过消息来传递。 层次式风格的体系结构层次式风格的体系结构 在这种结构中,定义不同的层次,每层都完成了相对外层更靠近机器指令的操作评估可选的体系结构评估可选的体系结构 对于同一个软件需求,由于各种设计方法的原理不同,对于同一个软件需求,由于各种设计方法的原理不同,会导出不同的软件结构。会导出不同的软件

46、结构。 同一问题的不同软件结构:同一问题的不同软件结构:ATAM(architecture trade-off analysis method)体系结构权衡分析法体系结构权衡分析法 1)定义应用场景(定义应用场景(scenarios):通过):通过use case图来从用户的角度图来从用户的角度表现系统。表现系统。2)得出需求、约束和环境描述:这是需求工程的一部分,用以确定得出需求、约束和环境描述:这是需求工程的一部分,用以确定所有客户方关心的问题都被列出。所有客户方关心的问题都被列出。3)描述能处理上述情境和需求的体系结构风格。描述能处理上述情境和需求的体系结构风格。4) 单独地评价系统的各

47、项性能。单独地评价系统的各项性能。针对体系结构设计的性能包括:可靠性,安全性,可维护性,针对体系结构设计的性能包括:可靠性,安全性,可维护性,灵活性,可测试性,可移植性,可重用性和互操作性等。灵活性,可测试性,可移植性,可重用性和互操作性等。ATAM(architecture trade-off analysis method)5)针对不同的架构形式,评价第)针对不同的架构形式,评价第4步提到的这些性能的敏感程度。步提到的这些性能的敏感程度。可以通过这样的方法来评价:在整个架构中做一些小的变更,分析可以通过这样的方法来评价:在整个架构中做一些小的变更,分析并确定上诉性能有没有很敏感的变化。那些

48、在体系结构改动中并确定上诉性能有没有很敏感的变化。那些在体系结构改动中受到较大影响的性能被称为敏感点(受到较大影响的性能被称为敏感点(sensitive point)。)。6)通过第)通过第5步的敏感度分析来评价第三步中提出的那些体系结构。步的敏感度分析来评价第三步中提出的那些体系结构。SEI描述的方法如下:当一个架构的敏感点被确定,我们需要找到在描述的方法如下:当一个架构的敏感点被确定,我们需要找到在系统中最需要权衡利弊的因素(系统中最需要权衡利弊的因素(trade-off point)。权衡因素)。权衡因素就是指改变架构中的这项内容系统的很多性能就会发生敏感的就是指改变架构中的这项内容系统

49、的很多性能就会发生敏感的变化。比如说,一个变化。比如说,一个client-server结构的系统的表现性能和系结构的系统的表现性能和系统中统中server的数量是息息相关的(比如增加的数量是息息相关的(比如增加server的数量,一的数量,一定程度上系统的表现性能就会提高)定程度上系统的表现性能就会提高)这样的话,这样的话,server的数的数量就是这个架构中的平衡点。量就是这个架构中的平衡点。4.4 4.4 部件级设计技术部件级设计技术 在结构化分析和设计方法时部件往往被称在结构化分析和设计方法时部件往往被称为为模块模块在面向对象分析和设计时部件被称为在面向对象分析和设计时部件被称为类类在基

50、于构件的开发方法中,部件被称为在基于构件的开发方法中,部件被称为构构件。件。 4.4 4.4 部件级设计技术部件级设计技术 在部件级设计阶段,主要完成如下工作:在部件级设计阶段,主要完成如下工作:(1)为为每每个个部部件件确确定定采采用用的的算算法法,选选择择某某种种适适当当的的工工具具表表达达算算法法的的过过程程,编编写写部部件件的的详详细过程性描述;细过程性描述; (2)确定每一部件内部使用的数据结构;)确定每一部件内部使用的数据结构; (3)在在部部件件级级设设计计结结束束时时,应应该该把把上上述述结结果果写写入入部部件件级级设设计计说说明明书书,并并且且通通过过复复审审形形成成正正式式

51、文文档档,作作为为下下一一阶阶段段(编编码码阶阶段段)的的工工作依据。作依据。 4.4 4.4 部件级设计技术部件级设计技术 在在部部件件级级设设计计阶阶段段,对对部部件件的的执执行行过过程程,常常用用的描述方式一般有的描述方式一般有3种种:u图形描述图形描述程序流程图程序流程图结构化流程图(结构化流程图(N-S图)图)PAD图图问题分析图问题分析图u语言描述语言描述(PDL(Program Design Language))u表格描述表格描述(判定表判定表 ) 程序流程图程序流程图 程序流程图独立于任何一种程序设计语言,比程序流程图独立于任何一种程序设计语言,比较直观、清晰、易于学习掌握较直

52、观、清晰、易于学习掌握 为使用流程图描述结构化程序,必须限制流程为使用流程图描述结构化程序,必须限制流程图只能使用五种基本控制结构图只能使用五种基本控制结构 图形描述图形描述控制结构相互组合和嵌套的实例控制结构相互组合和嵌套的实例 结构化流程图结构化流程图N-S图图 Nassi和和Shneiderman 提出了一种符合结构化程序设计提出了一种符合结构化程序设计原则的图形描述工具,叫做盒图,也叫做原则的图形描述工具,叫做盒图,也叫做N-S图图 五种基本控制结构五种基本控制结构 结构化流程图(结构化流程图(N-S图)图)ab条条 件件 1TF Case Xi, i=2,3,4X2X3X4当条件当条

53、件3成立成立条条 件件 2直到条件直到条件4成立成立直直 到到 条条 件件 成立成立cdefghij顺顺序序结结构构选选择择结结构构多多分分支支选选择择结结构构先先判判定定型型循循环环结结构构后后判判定定型型循循环环结结构构FTTFPAD 问题分析图问题分析图PAD是Problem Analysis Diagram的缩写 ,由程序流程图演化而来五种基本控制结构 PAD实例实例 例例1:对数组:对数组X进行排序。进行排序。 “自顶而下,逐步求精自顶而下,逐步求精”J:=hk:=h+1,nJ:=kH:=1,n-1排好第排好第h个个X hW:=XhXh:=XjXj:=w1、循环一次,排好一个循环一次

54、,排好一个Xh排好第排好第H个个X h找找 XJ= MAX(XhXn)交换交换 XJ 和和 Xh2、细化、细化XkXJ(a)(b)(b)(a)3、连接各图,构成完整的连接各图,构成完整的PAD图图H:=1,n-1H:=1,n-1H:=1,n-1H:=1,n-1H:=1,n-1设计性语言设计性语言PDL PDL(Program Design Language)是一种用是一种用于描述功能部件的算法设计和处理细节的语言,于描述功能部件的算法设计和处理细节的语言,称为设计性语言。称为设计性语言。 它是一种伪码。一般地,伪码的语法规则分为它是一种伪码。一般地,伪码的语法规则分为“外语法外语法”和和“内语

55、法内语法” 外语法应当符合一般程序设计语言常用语句外语法应当符合一般程序设计语言常用语句的语法规则;的语法规则;内语法可以用英语中一些简单的句子、短语内语法可以用英语中一些简单的句子、短语和通用的数学符号,来描述程序应执行的功和通用的数学符号,来描述程序应执行的功能能 语言描述语言描述PDL的使用实例的使用实例PROCEDURE spellcheck IS 查找错拼的单词 BEGIN split document into single words 把整个文档分离成单词 lood up words in dictionary 在字典中查这些单词 display words which are

56、not in dictionary 显示字典中查不到的单词 create a new dictionary 造一新字典 END spellcheckPDL特点特点1.有固定的关键字外语法,提供全部结构化控制结构、数有固定的关键字外语法,提供全部结构化控制结构、数据说明和部件特征。属于外语法的关键字是有限的词汇据说明和部件特征。属于外语法的关键字是有限的词汇集,它们能对集,它们能对PDL正文进行结构分割,使之变得易于理正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词解。为了区别关键字,规定关键字一律大写,其它单词一律小写。一律小写。2.内语法使用自然语言来描述处理

57、特性。内语法比较灵活,内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。主要精力放在描述算法的逻辑上。3.有数据说明机制,包括简单的(如标量和数组)与复杂有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。的(如链表和层次结构)的数据结构。4.有子程序定义与调用机制,用以表达各种方式的接口说有子程序定义与调用机制,用以表达各种方式的接口说明。明。表格描述表格描述判定表判定表 当算法中包含多重嵌套的条件选择时,用程序流程图、当算法中包含多重嵌

58、套的条件选择时,用程序流程图、N-S图或图或PAD都不易清楚地描述。然而,都不易清楚地描述。然而,判定表判定表却能清晰地表达复杂的条件组合却能清晰地表达复杂的条件组合与应做动作之间的对应关系。与应做动作之间的对应关系。反映程序逻辑的判定表反映程序逻辑的判定表反映程序逻辑的判定表反映程序逻辑的判定表判定表的优点是能够简洁,判定表的优点是能够简洁,无二义性地描述所有的处无二义性地描述所有的处理规则。理规则。但判定表表示的是静态逻但判定表表示的是静态逻辑,是在某种条件取值组辑,是在某种条件取值组合情况下可能的结果,它合情况下可能的结果,它不能表达加工的顺序,也不能表达加工的顺序,也不能表达循环结构不

59、能表达循环结构 4.5 4.5 设计规约与设计评审设计规约与设计评审设计规约设计规约. 工作范围工作范围A. 系统目标系统目标 B. 运行环境运行环境C. 主要软件需求主要软件需求D. 设计约束设计约束限制限制. 体系结构设计体系结构设计A. 数据流与控制流复审数据流与控制流复审 B. 导出的程序结构导出的程序结构C. 功能与程序交叉索引功能与程序交叉索引 . 数据设计数据设计A. 数据对象与形成的数据结构数据对象与形成的数据结构 B. 文件和数据库结构文件和数据库结构 文件的逻辑结构文件的逻辑结构 文件逻辑记录描述文件逻辑记录描述 访问方式访问方式 C. 全局数据全局数据D. 文件文件数据与

60、程序交叉索引数据与程序交叉索引 . 接口设计接口设计A. 人机界面规格说明人机界面规格说明 B. 人机界面设计规则人机界面设计规则 C. 外部接口设计外部接口设计 外部数据接口外部数据接口 外部系统或设备接口外部系统或设备接口 D. 内部接口设计规则内部接口设计规则.各部件的各部件的过程程设计A. 处理与算法描述理与算法描述 B. 接口描述接口描述C. 设计语言言(或其它或其它)描述描述D. 使用的部件使用的部件E. 内部程序内部程序逻辑描述描述F. 注注释约束束限制限制 . 运行运行设计A. 运行部件运行部件组合合 B. 运行控制运行控制规则C. 运行运行时间安排安排. 出出错处理理设计A.

61、 出出错处理信息理信息 B. 出出错处理理对策策 设置后置后备 性能降性能降级 恢复和再启恢复和再启动. 安全保密安全保密设计. 需求需求设计交叉索引交叉索引. 测试部分部分A. 测试方方针 B. 集成策略集成策略C. 特殊考特殊考虑. 特殊注解特殊注解. 附附录设计评审设计评审 软件设计的最终目标是要取得最佳方案软件设计的最终目标是要取得最佳方案 “最佳最佳”是指在所有候选方案中,就节省开发费是指在所有候选方案中,就节省开发费用,降低资源消耗,缩短开发时间的条件,选用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可择能够赢得较高的生产率、较高的可靠性和可维护性的

62、方案维护性的方案 设计评审的内容设计评审的内容 1可追溯性可追溯性:即分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖即分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。 2接口:接口:即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。部件是否满足高内聚和低耦合的要求。部件作用范围是否在其已经明确定义。部件是否满足高内聚和低耦合的要求。部件作用范围是否在其控制范围之内。控制范

63、围之内。3风险:风险:即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。4实用性:实用性:即确认该软件设计对于需求的解决方案是否实用。即确认该软件设计对于需求的解决方案是否实用。5技术清晰度技术清晰度:即确认该软件设计是否以一种易于翻译成代码的形式表达。:即确认该软件设计是否以一种易于翻译成代码的形式表达。6可维护性:可维护性:从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。护。7质量:质量:即确认该软件设计是否表现出良好的质量特征。即确认该软件设计是否

64、表现出良好的质量特征。8各种选择方案:各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么。看是否考虑过其它方案,比较各种选择方案的标准是什么。9限制:限制:评估对该软件的限制是否现实,是否与需求一致。评估对该软件的限制是否现实,是否与需求一致。10其它具体问题其它具体问题:对于文档、可测试性、设计过程等等进行评估。:对于文档、可测试性、设计过程等等进行评估。设计评审设计评审评审分评审分正式评审正式评审和和非正式评审非正式评审两种两种 正式评审正式评审除软件开发人员外,还邀请用户代表和领除软件开发人员外,还邀请用户代表和领域专家参加,通常采用答辩形式域专家参加,通常采用答辩形式 非正式评审非正式评审多少有些同行切磋的性质,不拘泥于时多少有些同行切磋的性质,不拘泥于时间和形式间和形式 小结小结一般认为,软件开发阶段由设计、编码和测试三个基本一般认为,软件开发阶段由设计、编码和测试三个基本活动组成,其中活动组成,其中“设计设计”活动是获取高质量、低耗费、活动是获取高质量、低耗费、易维护软件的一个最重要环节。易维护软件的一个最重要环节。设计过程示意图设计过程示意图

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

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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