【教学课件】第四章软件设计.ppt
《【教学课件】第四章软件设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四章软件设计.ppt(144页珍藏版)》请在三一办公上搜索。
1、第四章 软件设计,主要内容:软件设计的基本概念和原则软件设计模型软件重用技术软件设计模式,4.1软件设计概述,设计指的是应用各种技术和原理对一个设备、一个过程或者一个系统做出足够详细的规定,使之能够在物理上得以实现。软件设计是一个把软件需求转化为软件表示的过程,也就是把它加工为在程序细节上非常接近于源程序的软件表示(描述)。,软件需求:解决“做什么”软件设计:解决“怎么做”问题结构(软件需求)软件结构 从软件需求规格说明书出发,形成软件的具体设计方案。,映射,软件设计目标,设计必须实现分析模型中所有的功能和性能的需求;设计必须具有良好的可读性和可理解性,以便于代码的生成,以及软件测试和维护;设
2、计应该是完整的,包括数据、体系结构、功能、行为、接口等设计。为了更好地评估一个系统的设计质量,应该建立一个良好的设计技术指标。展示一种层次性结构,该结构(1)已经使用可识别的设计模式来建造;(2)由展示良好的设计特征的构件构成;(3)可以用演化的方式实现,从而,便于软件的实现和维护。,模块化,即软件被逻辑地划分为特定功能和子功能的构件。包含数据、体系结构、接口和构件(模块)等的表示。从可识别的数据模式导出数据结构,并且适合于将被实现的对象。具有功能独立的构件。降低模块和外部环境连接复杂性的接口。通过使用软件分析过程中所获得的信息,导出可重用的方法。,软件设计原则,设计过程不应该受到“隧道视野”
3、的限制。软件设计人员应该具有创造能力,根据问题的要求和可用的资源,以及设计的概念进行判断,采用适当的设计手段。设计应该可以跟踪到分析模型。设计模型满足需求跟踪是必要的,设计模型的单独一个元素经常跟踪到多个需求。设计不应该每次从头做起。很多模式在过去也许已经用过,系统应该使用一系列设计模式来构造。软件设计的结构应该尽量模拟问题域结构。也就是“问题解”的结构应该尽量模拟“问题域”的结构。,设计应该具有一致性和集成性。整个系统具有统一的风格和格式;如果构件具有良好的接口,那么,系统就容易集成。设计应该适应变更。设计人员应该运用设计概念和各种技术(例如,模块化、重用性、设计模式等等),使得设计具有适应
4、变更能力。设计应该具有容错性和异常处理的能力。一个良好的系统应该从不“彻底崩溃”,当它遇到异常的条件(例如异常的数据、事件、操作条件等)也能够平滑处理。设计不是编码。即使是在构件设计时,所进行的详细过程性描述,设计模式的抽象级别也比源代码高。在创建设计时就应该能够评估系统的质量。事实上,目前很多设计方法都支持对设计模型的评审。应该评审设计以减少概念性的错误。设计人员应该确保检查设计上的主要概念,避免出现歧义性、不一致性。,软件设计原理,模块化把软件按照规定的原则,划分为一个个较小的相互独立,但又相关的部件,每一个部件称为模块,注意到模块可以独立命名和编址,系统模块化又称模块设计。当把所有的模块
5、组装在一起,就可以获得问题的解。,模块可分解性。如果一种软件设计方法提供了将问题分解成子问题的系统化机制,那么,它就能降低整个系统的复杂性,从而可以实现一种有效的模块化解决方案。模块可组装性。如果一种软件设计方法能把现存的(可重用的)设计构件组装成一个新系统,那么,它就能提供一种不是一切从头开始的模块化解决方案。模块可理解性。如果一个模块不用参考其他模块可以作为一个独立的单位被理解,那么,它就易于构造和修改。模块连续性。如果系统需要微小变更只导致单个模块的修改,那么,变更引起的副作用就会被最小化。模块保护性。如果模块内出现异常情况,并且它的影响限制在该模块内部,那么,由错误引起副作用就会被最小
6、化。,分解与抽象由于大型软件往往非常复杂,控制软件复杂性的基本手段是“分解”。在系统分析中,无论系统有多么大,总可以有计划地把它分解足够小的子问题。也就是说,系统的增大,分析工作的复杂程度不会随之增大,只是工作量的增大罢了,复杂性不会随系统的增大而增大。这种思想方法依然可用于设计阶段,分解是处理复杂问题常用的方法。抽象是人类认识复杂现象问题的思维工具之一,抽象就是提取客观世界中一群事物的某些本质共性(属性、特征),暂时忽略它们非本质的细节。由特殊到一般的思维(由底向上),上层是下层的一个抽象;反之,由顶向下可以解释为由抽象到具体,下层是对上层的精化、细化。,抽象原则应用举例Windows NT
7、一体化的I/O系统设计,文件管理网络管理设备管理高速缓冲存储器,对虚拟文件的字节流,虚拟文件可为任何设备和实体,抽象,逐步求精逐步求精是人类解决复杂问题时采用的基本技术,也是软件工程技术的基础。所谓逐步求精是“为了能集中精力解决主要问题而尽量推迟问题细节的考虑”。可以把逐步求精视为一种技术,即在一个时期内必须解决种种问题按优先级排序的技术。逐步求精是确保每一个问题在适当的时候得到解决。抽象与求精是互补的概念,求精实际上就是细化的过程。,信息隐藏信息隐藏来自于1972 D.L.Parnas的思想:(1)模块内部的数据和过程,对于那些不需要这些信息的模块不可访问(隐藏);(2)每一个模块只完成一个
8、相对独立的特定功能;(3)模块之间仅仅交换那些完成系统功能必须交换的信息(该交换的才交换)。这就是说,模块应该是独立的,各模块的功能单一,与其他模块的数据共享降低到最低限度。模块独立性不仅使模块重用性好,而且易于测试、组装和维护等等。,将分析模型转换为软件设计,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模型,设计模型,软件设计过程和模型,信息描述功能描述 行为描述 其他需求,设计,编码,体系结构设计,数据设计,接口设计,构件设计,模块/构件,数据设计是将系统分析创建的信息域模型变换成软件所需
9、的数据结构。数据设计的基础是,分析模型中数据模型和数据字典。体系结构设计定义了软件的主要结构元素。体系结构设计也就是建立基于计算机的系统的框架,它包括系统主要组件以及通信的识别,可以从系统规格、分析模型以及分析模型中定义的子系统的交互导出。接口设计描述了软件内部、软件与协作系统、软件与使用者之间的通信方式。一个接口意味着信息流和特定的行为类型,数据流和控制流的信息是接口设计的基础。过程设计也可以称为构件设计,它将软件体系结构的结构性元素变换为软件构件的过程性描述。过程设计的基础是处理规格说明、控制规格说明、状态转换图的信息。,软件体系结构,软件体系结构指软件的整体结构和这种结构提供系统在概念上
10、的整体性的方式。体系结构设计表示要建造一个基于计算机系统所需要的数据和程序构件的结构,而重点关注的是软件构件结构,构件的性质以及它们的交互。,系统结构化。将系统分解成一系列基本子系统(每一个子系统都是一个独立的软件单元),并且识别出子系统之间的通信。控制建模。建立系统各个部分之间控制关系的构成模型。构成模型关注的是系统如何分解成子系统,作为一个整体,子系统必须得到有效的控制。模块分解。把子系统进一步分解成模块,这时,软件结构设计是要确定模块的类型以及模块之间的关联。,子系统和模块的区别主要体现在:(1)子系统由模块组成,一个子系统独立构成系统,它不依赖其他子系统提供的服务,但是,要定义与其他子
11、系统之间的接口。(2)一个模块通常是一个能提供一个或者多个服务的系统组件(构件),它能利用其他模块提供的服务。一般不会把模块视为一个独立的系统,它可以由许多其他更简单的构件组成。,体系结构的重要性,软件体系结构的表示(模型)可以方便软件开发者与用户以及对系统感兴趣的所有各方的通信。软件体系结构突出了软件设计的早期抉择,这些抉择将对随后的所有软件工程活动有着重要的影响,也对该系统的开发是否成功有着深远的影响。软件体系结构实际上建立了一个相对小的、易于理解的模型,该模型描述了系统如何构成以及构件如何一起工作。例如,系统的组成有多少个子系统或者模块,以及各个组成成分之间的相互关系。,系统的块状结构与
12、层次结构,块状结构:块状结构把系统垂直地分解成若干个相对独立的低耦合的子系统,一个子系统相当于一块,每块提供一种类型的服务,所以称为块状组织形式。P69 图4-3块状结构把系统垂直地分解成若干个相对独立的低耦合的子系统,一个子系统相当于一块,每块提供一种类型的服务,所以称为块状组织形式。,系统的块状结构与层次结构,层次结构:层次结构把软件系统组织成一个层次结构的形式,上层在下层的基础上建立,下层为上层提供必要的服务。位于同一层的多个软件或者子系统,具有同等的通用度(通用性程度),低层的软件比高层的软件更具有通用性。每一层可以视为同等通用档次的一组子系统。P69 图4-4,系统的块状结构与层次结
13、构,层次结构:第一层,最高层应该是应用系统层,可包括多个应用系统。每一个应用系统向用户提供一组服务,应用系统之间可通过接口实现互操作,也可以通过低层软件提供的服务或者对象间接地进行交互操作。第二层,次高层是构件系统层,同理,也可以包括多个构件系统,应用系统建立在构件系统之上。构件系统向应用工程师提供可重用的构件,用于开发应用系统。第三层,中间层,它为构件系统提供实用软件类,这些实用软件通常不依赖平台。例如,与数据库管理系统(DBMS)的接口,对象连接与嵌入(OLE)构件、对象请求代理(ORB)构件等。其中,对象请求代理是使得一个驻留在客户端的对象,可以发送消息到封装在驻留在服务器上的另一个中的
14、方法,对象请求代理标准(CORBA)得到广泛地应用。这些构件提供给应用工程师和构件工程师使用,以便对系统的构筑。第四层,它是系统软件层,例如,一般操作系统、网络操作系统,硬件接口等。第五层,硬件系统层,也称为硬件平台。,基于构件系统的分层体系及引用关系,分布式系统体系结构,客户机/服务器体系结构。这类系统被看成是提供一组服务供客户机使用,客户机和服务器被区别对待,数据以及加工过程在多个处理机之间分配。P71 图4-7主要组成元素:一组提供服务的单机服务器;一组向服务器请求服务的客户机;一个连接服务器与客户机的网络.,分布式对象体系结构。这类系统不再区别客户机和服务器,系统被看成是交互的一组对象
15、,它们的位置是无关紧要的,服务提供者和服务消费者之间没有界限,提供服务者就是服务器,接受服务者就是客户机。P72 图4-8,模块化分解,在传统软件工程面向数据流的方法中,可以通过对数据流的分析和设计导出系统的结构图(变换分析与变换设计、事务分析与事务设计),也就是从数据流模型到软件体系结构的变换方法。在数据流模型中有两类典型的数据流,即变换型数据流和事务型数据流,相应的有两种结构设计,即变换设计和事务设计。,模块划分的准则,1模块耦合度模块耦合度是对软件结构中各个不同模块之间互相关联程度的度量。耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置、通过界面传送数据的多少等等。,模块耦合度有
16、7个等级:(1)非直接耦合(2)数据偶合(3)特征偶合(4)控制耦合(5)外部耦合(6)公共耦合(7)内容耦合模块设计的基本原则是要尽量使用数据耦合,减少控制耦合,限制外部耦合和公共耦合,不使用内容耦合。,无耦合没有依赖关系,松散耦合有少量依赖关系,紧密耦合有很多依赖关系,耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量模块间接口的复杂程度,模块间耦合的类型,低 无直接耦合耦 数据耦合合 标记耦合性 控制耦合 外部耦合 公共耦合 高 内容耦合,模块独立性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),(1)非直接耦合,两个模块没
17、有直接关系(模块1和模块2),模块独立性最强。,模块1,模块2,模块3,模块4,(2)数据耦合,一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。,数据耦合举例,开发票,计算水费,单价数量,金额,(3)标记耦合(特征耦合),如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。,标记耦合举例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是
18、标记偶合.,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月用水量,本月用电量,水费,电费,(4)控制耦合,一模块向下属模块传递的信息(开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。,控制耦合举例,A,计算平均分或最高分,B,平均/最高(控制信号),成绩,读入分数,输出结果,计算平均分,计算最高分,平均/最高?,B,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调 用模块中进行(2)被调用模块分解成若干单一功 能模块,改控制耦合为数据耦合举例,A,计算平均分,
19、B1,平均成绩,最高成绩,计算最高分,B2,(5)外部耦合,一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。,(6)公共耦合(公共数据区耦合),一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构 共享通讯区 内存公共覆盖区等,公共耦合举例,公共数据区,C,B,模块A、B、C间存在错综复杂的联系,(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,公共耦合存在的问题:,
20、(7)内容耦合,一模块直接访问另一模块的内部信息(程序代码或数据),最不好的耦合形式!,A,B,A,B,模块代码重叠,Entry1 Entry1,多入口模块,模块化设计的原则和目标,耦合是影响软件复杂程度和设计质量的重要因素目标:建立模块间耦合度尽可能松散的系统,如何降低模块间耦合度:,(1)尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合(2)降低接口的复杂性,2.模块独立性的度量之二:聚合度,一个模块内部元素在功能上相互 关联的强度 设计目标:高聚合(模块在软件过程中 完成单一的任务),模块的聚合度类型,低 偶然性聚合 0分 逻辑性聚合 1分 内 时间性聚合 3分 聚 过
21、程性聚合 5分 性 通信性聚合 7分 信息性聚合 9分 高 功能性聚合 10分,模块独立性,弱(功能分散),强(功能单一),低聚合度模块举例,为工程分析包执行错误处理的模块,当计算的数据超出预定义的边界时调用该模块,它完成下列任务:(1)根据初始计算的数据计算补充数据;(2)在用户的工作站上生成错误报告;(3)执行用户要求的跟踪计算;(4)更新数据库;(5)使选择后续处理的菜单有效。虽然上述任务是松散相关的,但每一项都是独立的功能实体,最好作为独立的模块完成。,(1)偶然性聚合(巧合性聚合),模块内各部分间无联系,A,B,C,M,MOVE O TO RREAD FILE FMOVE S TO
22、T,模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差,例:,(2)逻辑性聚合,把几种相关功能(逻辑上相似 的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。,逻辑性聚合模块,A,B,C,E,F,G,A,B,C,EFG,A1,B1,C1,EFG模块内部逻辑,E、F、G逻辑功能相似,组成新模块EFG,缺点:增强了耦合程度(控制耦合)不易修改,效率低,公用代码段,公用代码段,(3)时间性聚合(经典性聚合),模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合 模块.,(4)过程性聚合(顺序性
23、组合),模块内各处理成分相关,且必须以特定次序执行,过程性聚合模块,读入成绩单,审查成绩单,统计成绩,打印成绩,读入并审查成绩单,统计并打印成绩单,(5)通信性聚合,模块内各部分使用相同的输入数据,或产生相同的输出结果,通信性聚合模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,(6)信息性聚合,模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口。,信息性聚合模块,符 号 表,查找,登录,删除,修改,几个加工同时引用一个共同的数据,(7)功能性聚合,模块仅包括为完成某个功能所必须的所有成分。(模块所有成分共同完成一个功
24、 能,缺一不可)聚合性最强,聚合与耦合密切相关,同其它模块强耦合的模块意味着弱聚合,强聚合模块意味着与其它模块间松散耦合.设计目标:力争强聚合、弱耦合,3.耦合、聚合与模块独立性关系,耦合与聚合都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,聚合则辅助耦合共同对模块独立性进行衡量。,由数据流模型导出系统结构,系统结构特征可归纳为两种典型形式:变换型结构事务型结构数据流图可分为两种类型:变换型数据流事务型数据流,变换中心,输入,输出,变换型结构,事务中心,接受路径,动作路径,基本模型 特征,事务型 结构,由输入、变换中心和输出三部分组成,具有在多种事务中选择执行某类
25、事物的能力,变换型数据流 结构,事务型数据流 结构,传入,变换,传出,变换中心,传入部分,传出部分,事务分析,事务中心,动作 1,动作 2,动作 3,接受,接受部分,变换型数据流举例,输入信息,物理输入,格式检查,处理,显示,正确信息,结果,物理输出,数据,变换中心,逻辑输入,逻辑输出,传入部分,传出部分,特点:具有明确的传入、变换(或称主加 工)和传出界面的DFD,变换流示意图,信息,时间,信息流,输入流,输出流,交换流,外部表示,内部表示,事务型数据流图举例,I,M,L,N,O,A,B,C,D,F,E,G,H,大型系统DFD中,变换型和事务型结构往往共存:,T,事务中心,传入,变换,传出,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第四 软件设计
链接地址:https://www.31ppt.com/p-5665313.html