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