04 软件设计工程.ppt
《04 软件设计工程.ppt》由会员分享,可在线阅读,更多相关《04 软件设计工程.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、设计工程软件工程(SoftwareEngineering)1内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计准则软件设计准则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审2 正正如如任任何何工工程程项项目目一一样样,在在生生产产之之前前要要做做设计,软件编码前,也必须先进行软件设计。设计,软件编码前,也必须先进行软件设计。软软件件设设计计是是软软件件开开发发的的关关键键步步骤骤,直直接接影影响软件质量。响软件质量。软件需求分析解决软件需求分析解决“做什么做什么”的问题,软的问题,软件设计过程则解决件设计过程则解决“怎么做怎么做”的问
2、题的问题 4.1 4.1 软件设计工程概述软件设计工程概述3软件设计是把软件需求变换成软件表示的过程,它主要包含软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:两个阶段:软件体系结构设计软件体系结构设计阶段和阶段和部件级设计部件级设计;有称为有称为总体设计总体设计和和详细设计详细设计两个两个阶段。阶段。其其工作流程工作流程可用下图表示:可用下图表示:总体总体设计设计需求需求 说明书说明书复审复审体系体系 结构结构数据数据/类结构类结构修修 改改详细详细设计设计可接受可接受部件过程描述部件过程描述复审复审修修 改改设计说设计说 明书明书1 1、设设计计阶阶段段结结束束要要交交付付的
3、的文文档档是是设设计计说说明明书书,根根据据设设计计方方法法的的不不同同,有不同的设计文档。有不同的设计文档。2 2、每个设计步骤完成后,都应进行复审。、每个设计步骤完成后,都应进行复审。常用的设计方法有:常用的设计方法有:SD法、法、Jackson法、法、OOD法、层次式输入法、层次式输入-处理处理-输出法输出法(又称又称HIPO法法)、Parnas法、法、Warnier法法等。等。软件设计阶段软件设计阶段4设计任务:设计任务:使用一种设计方法使用一种设计方法,将分析阶段获得的需求将分析阶段获得的需求说明的说明的软件分析模型中通过数据、功能和行为模型所展软件分析模型中通过数据、功能和行为模型
4、所展示的软件需求的信息传送给设计阶段,示的软件需求的信息传送给设计阶段,完成系统的完成系统的数据数据/类设计、体系结构设计、接口设计、部件级设计类设计、体系结构设计、接口设计、部件级设计 最后最后得到软件设计说明书。得到软件设计说明书。过程设计过程设计结构设计结构设计数据设计数据设计界面设计界面设计软件设计软件设计1.1.软件设计阶段的任务软件设计阶段的任务5软件设计的目标就是构造一个高内聚低耦合的软件设计模型。软件设计的目标就是构造一个高内聚低耦合的软件设计模型。提高可靠性;提高可维护性;提高可理解性;提高效率。提高可靠性;提高可维护性;提高可理解性;提高效率。衡量该目标的准则衡量该目标的准
5、则:1、软件实体有明显的层次结构,利于软件元素间控制。、软件实体有明显的层次结构,利于软件元素间控制。2、软件实体应该是模块化的,模块具有独立功能。、软件实体应该是模块化的,模块具有独立功能。3、软件实体与环境的界面清晰。、软件实体与环境的界面清晰。4、设计规格说明清晰、简洁、完整和无二义性。、设计规格说明清晰、简洁、完整和无二义性。软件软件设计设计设计设计高可靠高可靠性性高可维高可维护性护性高可理高可理解性解性高效率高效率软件设计的目标2.2.软件设计的目标软件设计的目标63.3.软件设计的过程软件设计的过程1选取合理的系统体系结构2推荐最佳方案、技术选型3划分模块,确定软件结构 4数据结构
6、和算法设计5设计用户界面6编写文档7审查和复查7一、选取合理的系统体系结构软软件件体体系系结结构构确确定定了了系系统统的的组组织织结结构构和和拓拓扑扑结结构构,显显示示了了系系统统需需求求和和构构成成系系统统的的元元素素之之间间的的对对应应关关系系,提供了一些设计决策的基本原理。提供了一些设计决策的基本原理。体体系系结结构构设设计计是是软软件件设设计计的的第第一一个个阶阶段段,该该阶阶段段侧侧重重于于系系统统宏宏观观结结构构的的设设计计,而而不不关关心心模模块块的的内内部部算算法。法。常见的软件体系结构常见的软件体系结构单主机结构单主机结构C/SC/S(ClieClient/Servernt/
7、Server)结构)结构B/SB/S(Browser/ServerBrowser/Server)结构)结构3.3.软件设计的过程软件设计的过程8一、选取合理的系统体系结构选取体系选取体系 针对以下问题考虑针对以下问题考虑:是单机还是客户机是单机还是客户机/服务器系统服务器系统是应用开发还是低层开发是应用开发还是低层开发(是否有单片机是否有单片机)客户机最大点数客户机最大点数是否提供给第三方接口是否提供给第三方接口网络网络(数据通信数据通信)连接方式连接方式胖客户机还是瘦客户机胖客户机还是瘦客户机数据文件的保存方式数据文件的保存方式(文本、本地数据库、大型文本、本地数据库、大型数据库数据库)3.
8、3.软件设计的过程软件设计的过程9二、推荐最佳方案、技术选型技术选型,明确以下信息:技术选型,明确以下信息:主要硬件环境操作系统应用系统内的各种服务器软件开发语言及开发工具CASE软件3.3.软件设计的过程软件设计的过程三、划分模块,确定软件结构 开开发发方方法法不不同同,确确定定软软件件结结构构的的方方法法也也不不同同。例例如如SDSD法法,是是从从分分层层的的DFDDFD图图导导出出初初始始的的结结构构图图,再再对对初初始始的的结结构构图图进进行行改改进进,获获得得最最终终的的结构图。结构图。一一般般包包括括确确定定系系统统的的软软件件结结构构,分分解解模模块块 ,确确定定系系统统的的模模
9、块块层层次次关系。关系。10四、确定系统的数据结构、算法 数数据据结结构构的的建建立立对对于于信信息息系系统统而而言言尤尤为为重重要要。要要确确定定数数据据的的类类型型,组织、存取方式,相关程度及处理方式等。组织、存取方式,相关程度及处理方式等。五、设计用户界面 作作为为人人机机接接口口的的用用户户界界面面起起着着越越来来越越重重要要的的作作用用,它它直直接接影影响响到到软件的寿命。软件的寿命。3.3.软件设计的过程软件设计的过程六、编写文档设设计计阶阶段段结结束束要要交交付付的的文文档档是是设设计计说说明明书书,根根据据设设计计方方法法的的不同,有不同的设计文档。不同,有不同的设计文档。七、
10、审查和复查每个设计步骤完成后,都应进行复审。每个设计步骤完成后,都应进行复审。111抽象化与逐步求精抽象化与逐步求精 2模块化准则模块化准则3信息隐蔽准则信息隐蔽准则4模块独立性准则模块独立性准则4.2 4.2 软件设计准则软件设计准则 软软件件设设计计是是软软件件开开发发过过程程的的重重要要阶阶段段,对对保保证证软软件件系系统统的的质质量量起起着着关关键键作作用用。但但是是如如何何保保证证软软件件设计的质量呢?有以下经过长期考验的设计准则:设计的质量呢?有以下经过长期考验的设计准则:12抽象抽象,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。,是在软件设计的规模逐渐增大的情况下,
11、控制复杂性的基本策略。抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。念是上层概念的精化和细化。软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述 一、抽象化与逐步求精准则一、抽象化与逐步求精准则软件设计中主要抽象手段有:软件设计中主要抽象手段有:过程抽象和数据抽象过程抽象和数据抽象 过程抽象过程抽象(也称功能抽象)是指任何一个完成明确定义功能的操(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用者当作单个实体
12、看待,尽管这个操作实际上是由一作都可被使用者当作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的系列更低级的操作来完成的数据抽象数据抽象是指定义数据类型和施加于该类型对象的操作,并限定是指定义数据类型和施加于该类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数据了对象的取值范围,只能通过这些操作修改和观察数据逐步求精逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法步更精化,更接近问题的解法抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有抽象使得设计者能够描述过程和数据
13、而忽略低层的细节,而求精有助于设计者在设计过程中揭示低层的细节助于设计者在设计过程中揭示低层的细节 13模模块块(Module)是是程程序序对对象象有有名名字字的的集集合合。又又称称“构构件件”,一一般般指指用用一一个个名名字字可可调调用用的的一一段段程程序序。例例如如,过过程程、函函数数、子子程程序序、宏宏等等,是是构构成成软软件件系系统统结结构构的的基基本本元元素。素。它一般具有如下三个基本属性:它一般具有如下三个基本属性:功能功能 即指该模块实现什么功能,做什么事情。必须注意,即指该模块实现什么功能,做什么事情。必须注意,这里所说的模块功能,应是该模块本身的功能加上它这里所说的模块功能,
14、应是该模块本身的功能加上它所调用的所有子模块的功能。所调用的所有子模块的功能。逻辑逻辑 即描述模块内部怎么做。即描述模块内部怎么做。状态状态 即该模块使用时的环境和条件。即该模块使用时的环境和条件。二、模块化准则二、模块化准则4.2 4.2 软件设计准则软件设计准则14 模模块块化化:所所谓谓模模块块化化就就是是将将系系统统划划分分成成若若干干模模块块,每每个个模模块块完完成成一一个个子子功功能能,把把这这些些模模块块集集中中起起来来组组成成一一个个整体,以满足所要求的整个系统的功能。整体,以满足所要求的整个系统的功能。模模块块化化的的目目的的是是将将系系统统“分分而而治治之之”,模模块块化化
15、能能够够降降低低问问题题的的复复杂杂性性,使使软软件件结结构构清清晰晰,易易阅阅读读、易易理理解解,易于测试和调试,因而也有助于提高软件的可靠性。易于测试和调试,因而也有助于提高软件的可靠性。二、模块化准则二、模块化准则4.2 4.2 软件设计准则软件设计准则15模块化降低软件复杂度的模块化降低软件复杂度的简单证明简单证明令:令:C C(X X)表示问题表示问题 X X 的复杂度函数;的复杂度函数;E E(X X)解解决决问问题题 X X 所所需需工工作作量量的的复复杂度函数;杂度函数;若:有问题若:有问题 P1P1,P2 P2;C C(P1P1)C C(P2P2););显然:显然:E E(P
16、1P1)E E(P2P2)由经验:由经验: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、本的关系。右上图描述了模块化与软件成本的关系。软件总成本模块化与软件成本的关系成本模块数目模块成本接口成本最小成本区M16三、信息隐蔽准则三、信息隐蔽准则4.2 4.2 软件设计准则软件设计准则由由parnas方方法法提提倡倡的的信信息息隐隐蔽蔽如如下下:每每个个模模块块的的实实现现细细节节对对于于其其他他模模块块来来说说是是隐隐蔽蔽的的。也也就就是是说说,模模块块中中所所包包含含的的信信息息(数数据据和和过过程程)不不允允许许其其他他不不需需要要这这些些信信息息的的模块使用。模块使用。通过信息隐蔽,则可定义和实施对模块的过程细节和局通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的
18、存取限制部数据结构的存取限制 17该该原原则则有有利利于于提提高高模模块块的的内内聚聚性性。由由于于一一个个软软件件系系统统在在整整个个软软件件生生存存期期内内要要经经过过多多次次修修改改,在在划划分分模模块块时时要要采采取取措措施施,使使得得大大多多数数过过程程和和数数据据对对软软件件的的其其他他部部分分是是隐隐蔽蔽的的。这这样样,在在将将来来修修改改软软件件时时,可可将将偶偶然然引引入入错误所造成的影响限制在一个局部范围之内,错误所造成的影响限制在一个局部范围之内,不致波及到软件的其他部分不致波及到软件的其他部分。例如:定义栈(stack)操作模块makenull(置空栈);push(进栈
19、);pop(出栈);gettop(取栈顶)empty(判栈空)其操作均被封装,无需了解模块内部的实现过程。对外实现了信息隐蔽。三、信息隐蔽准则三、信息隐蔽准则4.2 4.2 软件设计准则软件设计准则18四、模块独立性准则四、模块独立性准则u软软件件模模块块独独立立性性的的含含义义是是指指开开发发具具有有功功能能专专一一,模模块块之之间无过多相互作用的模块。又称为间无过多相互作用的模块。又称为模块独立性准则模块独立性准则。软件系统中每个模块只涉及软件要求的具体的子功能,软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。这种类型的而和软件系统中其他模块的接口是简
20、单的。这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。模块容易组合、修改及测试。提高模块质量在于提高模块独立性。提高模块质量在于提高模块独立性。模块的独立性的度量标准是用模块的独立性的度量标准是用耦合性和内聚性耦合性和内聚性两个定两个定性指标来衡量。性指标来衡量。独立性比较强的模块应该是具有高内聚性和低耦合度独立性比较强的模块应该是具有高内聚性和低耦合度4.2 4.2 软件设计准则软件设计准则19耦合性耦合性(Coupling)模模块块分分解解的的一一个个目目标标是是使使块块间间联联系系尽尽可可能能小,达到这个
21、目标可通过以下措施。小,达到这个目标可通过以下措施。每个模块用过程语句(或函数方式等)调用其他模块。模块间传送的参数为数据型。模块间公用的信息(如参数等)尽量少。耦耦合合性性是是指指软软件件结结构构中中模模块块相相互互连连接接的的紧紧密密程程度度,是是模模块块间间相相互互连连接接性性的的度度量量。模模块块分分解解的的一一个个目目标标是是使使块块间间联联系系尽尽可可能能小小,块块间间联联系系的的大小可从三个方面衡量:大小可从三个方面衡量:方式 块间联系方式有“直接引用”或“用过程语句调用”。作用 块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型)。数量 块间传
22、送的共用信息的数量。方式数据作用少多数量控制混合直接引用过程调用20模块间耦合的类型:模块间耦合的类型:模模块块独独立立性性弱弱(低耦合低耦合)强强(中耦合中耦合)(较强耦合较强耦合)(强耦合强耦合)外部耦合公共耦合内容耦合无直接耦合数据耦合标记耦合高高低低耦耦合合性性控制耦合21(1)无直接耦合 两个模块没有直接关系两个模块没有直接关系(模块模块1和模块和模块2),模块,模块独立性最强。独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 422(2)数据耦合数据耦合(数据耦合(Data Coupling):一个模块传送给另一个模块一个模块传送给另一个模块的参数是一个单个的数据项
23、。的参数是一个单个的数据项。一一模模块块调调用用另另一一模模块块时时,被被调调用用模模块块的的输输入入、输输出出都都是是简简单单的数据的数据(若干参数若干参数)。属松散耦合。属松散耦合。数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额23(3)标记耦合(复合型耦合)复合耦合(复合耦合(Stamp Coupling)(标记标记,特征耦合特征耦合)一个模块传送给另一个模块的参数是一个复合的一个模块传送给另一个模块的参数是一个复合的数据结构。例如,包含几个数据单项的记录。数据结构。例如,包含几个数据单项的记录。如果两个模块通过传递数据结构如果两个模块通过传递数据结构(不是
24、简单数据不是简单数据,而而是记录、数组等是记录、数组等)加以联系加以联系,或都与一个数据结构或都与一个数据结构有关系有关系,则称这两个模块间存在标记偶合则称这两个模块间存在标记偶合。24标记耦合举例标记耦合举例“住户情况住户情况”是一个数据结构是一个数据结构,图中模块都与此数据结构有关图中模块都与此数据结构有关.“计算水费计算水费”和和“计算电费计算电费”本无关本无关,由于引用了此数据结构产生依赖关系由于引用了此数据结构产生依赖关系,它们之间也是标记偶合它们之间也是标记偶合.25将标记耦合修改为将标记耦合修改为数据耦合举例数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费本月本月
25、用水量用水量本月本月用电量用电量水费水费电费电费26(4)控制耦合(Control Coupling)控制耦合控制耦合 一个模块传递给另一模一个模块传递给另一模块的信息是用于控制该块的信息是用于控制该模块内部逻辑的控制信模块内部逻辑的控制信号。显然,对被控制模号。显然,对被控制模块的任何修改,都会影块的任何修改,都会影响控制模块。响控制模块。ABFlagf1f2fn.一模块向下属模块传递的信息一模块向下属模块传递的信息(开关量、标志等控制被调开关量、标志等控制被调用模块决策的变量用模块决策的变量)控制了被调用模块的内部逻辑。控制了被调用模块的内部逻辑。27控制耦合举例控制耦合举例(控制信号控制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 软件设计工程 软件设计 工程
限制150内