【教学课件】第四章软件设计.ppt

上传人:牧羊曲112 文档编号:5665313 上传时间:2023-08-07 格式:PPT 页数:144 大小:547KB
返回 下载 相关 举报
【教学课件】第四章软件设计.ppt_第1页
第1页 / 共144页
【教学课件】第四章软件设计.ppt_第2页
第2页 / 共144页
【教学课件】第四章软件设计.ppt_第3页
第3页 / 共144页
【教学课件】第四章软件设计.ppt_第4页
第4页 / 共144页
【教学课件】第四章软件设计.ppt_第5页
第5页 / 共144页
点击查看更多>>
资源描述

《【教学课件】第四章软件设计.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,事务中心,传入,变换,传出,

26、2.面向数据流设计方法的设计步骤,(1)精化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构设计 出模块结构的上层(4)基于DFD逐步分解高层模块设计 出下层模块(5)根据模块独立性原理,精化模 块结构(6)模块接口描述,面向数据流方法的设计过程,精化数据流图,区分事务中心和数据接收路径,映射成变换结构,流类型,区分输入和输出分支,映射成事务结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,复查,详细设计,“事务”,“变换”,事务分析,变换分析,SD方法的两种映射过渡方法,变换型DFD,事务型DFD,初始SC,初始SC,变换分析,事务分析,初始的SC,主模块,输入模块,

27、主加工模块,输入模块,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,(1)变换分析设计方法,步骤:(1)区分传入、变换中心、传出部分,在 DFD 上 标明分界线,B,C,A,D,E,Q,P,R,W,U,V,a,b,c,e,d,r,p,u,w,v,变换中心,传入部分,传出部分,变换分析设计方法步骤,(2)第一级分解(建立初始SC框架)设计顶层和第一层模块,第一级分解的方法,MC,MT,MA,ME,第一级分解后的SC,MC,MT,MA,ME,第一层,顶层,c,e,c,e,u,w,u,w,传入模块,传出模块,中心变换模块,第一级分解后的SC

28、(另一种画法),MC,MA1,c,e,u,w,c,p,Q,P,R,e,p,r,r,w,u,w,传入分支模块,中心加工分支模块,传出分支模块,MA2,ME1,ME2,变换分析设计方法步骤,(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块,传入分支的分解(1),MA,C,B,A,b,a,c,E,D,d,e,c,e,传入分支的分解(2),MA,Get C,b,a,c,Read D,d,e,c,e,B to C,b,c,d,e,a,b,Get E,Get B,D to E,A to B,Read D,传出分支的分解,ME,W,Write V,u,u,w,u,v,v,v,Pu

29、t U,U to V,ME,U,Write W,w,w,u,w,u,V,(1),(2),中心加工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。,(2)事务分析设计方法,事务分析设计方法步骤:,(1)在DFD上确定事务中心、接收部 分和发送部分。(2)画出SC框架,把DFD上的三部分 分别映射为事务控制模块、接收 模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。,用户命令交互子系统,密码命令,密码,显示信息,系统参数数据,用户命令,读系统

30、数据,配置信息,显示信息和状态,命令分析处理,命令类型,开/关命令,建立配置文件,原配置数据,格式化配置数据,配置命令,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置数据,格式化配置数据,事务分析的映射方法,总控,调度,B路径,C路径,接收路径,用户命令交互子系统初始的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户命令,读系统数据,配置信息,显示信息和状态,命令分析处理,命令类型,建立配置文件,原配置数据,格式化配置数据,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置数据,格式化配置数据,密码命令,开/关命令,配

31、置命令,用户命令交互子系统的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户命令,读系统数据,配置信息,显示信息和状态,命令分析处理,读密码,命令类型,建立配置文件,原配置数据,与文件中密码比较,格式化配置数据,检验信息过程,重试信息,四位数字,检验信息,检验信息,A/D信息,配置数据,格式化配置数据,密码命令,开/关命令,配置命令,用户命令交互子系统的SC,用户执行模块,读用户命令,命令处理,事务流设计举例,I,M,L,N,A,B,C,D,F,E,G,事务中心,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,(主模块),事

32、务加工模块,动作分支的典型结构,P,T 2,T 1,T i,A 2,D 2,A 1,D 1,A 3,A j,D k,事务层,操作层,细节层,处理层,主模块,事务加工模块,操作模块,细节模块,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,动作1,动作n,.,细节模块1,细节模块2,.,(操作模块),(细节模块),事务流设计举例(另一种画法),输入 A,XX系统,变换控制,A,L,M,A,G,D,B,C,F,E,输出 E、F、G,E、F、G,E、F、G,输出H,O,E、F、G,H,H,N,要求类型处理,有效图书管理要求,当前日期,2.1,新书入库,2.2,借,入库单,罚款单

33、,一层数据流图(a),借书,2.3,注销图书,2.5,借书,2.4,目录文件,借书单,书,单,注销单,3,4,1,2,6,7,5,8,10,9,11,变换中心,传入,传出,事务型,(3)混合流设计举例,混合流设计举例,T,事务中心,传入,变换,传出,接收部分,发送部分,AB,T1,变换中心,传入,传出,T2,T3,a,b,b1,b2,b3,c1,c2,c3,d,e,g,f,j,m,事务流子系统,BC,CD,DE,EH,HK,FJ,KL,LM,h,混合流设计举例,k,混合流设计举例,输入D,XX系统,变换控制,输出K,输入C,d,c,输出L,CD,DE,FJ,EH,HK,KL,c,d,d,k,k

34、,k,L,L,输出M,LM,m,m,L,事务子系统,数据设计,数据设计是把分析模型中的信息描述转换实体软件所需要的数据结构。数据结构是单个数据元素之间逻辑关系的表示。信息结构必将影响到过程设计,从某种意义上说,数据结构与程序结构具有同等的重要性。,数据设计有以下3个层次值得我们思考:在程序构件级,设计数据结构和操作它们所需要的相关算法,对创建高质量的应用至关重要;在应用级,在需求工程导出的数据模型到数据库的转换,是达到系统业务目标的关键;在业务级,存储在不同数据库并且重新组织为“数据仓库”的信息的集合,它启动了数据挖掘或知识发现,对业务本身的成功有重要影响。,数据设计的原则,(1)用于软件的系

35、统化方法也适用于数据。在导出、评审、定义软件的需求和软件系统结构时,必须定义和评审其中所用到的数据流、数据对象及数据结构的表示。(2)要确定所有的数据结构以及在每种数据结构上施加的操作。设计有效的数据结构,必须考虑到要对该数据结构进行的各种操作。如果定义了一个由多个不同类型的数据元素组成的复杂数据结构,它会涉及到软件中若干个功能的实现处理。在考虑对这种数据结构进行的操作时,可以为它定义一个抽象数据类型,以便在今后的软件设计中使用它。(3)应当建立一个数据词典并用它来定义数据和软件的设计。数据词典清楚地说明了各个数据之间的关系,以及对数据结构内各个数据元素的约束。,(4)低层数据设计的决策应推迟

36、到设计过程的后期进行。可以将逐步细化的方法用于数据设计。首先分析和设计主要的结构特性,然后逐步细化。(5)数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道。此原则就是信息隐蔽和与此相关的耦合性原则,并把数据对象的逻辑表示与物理表示分开。(6)应当建立一个用于存放有效数据结构及相关操作的数据库。数据结构和它的相关操作可以看作是软件设计的资源。应该设计具有重用性的数据结构,建立一个可重用的数据结构模型部件库,可以大大减少数据的规格说明和设计两方面的工作量。(7)软件设计和程序设计语言应当支持抽象数据类型的定义和实现。如果没有直接定义某种复杂数据结构的手段,这种结构的设计和实现往往

37、是很困难的。,文件设计与数据库设计,文件设计是指数据存储文件设计,根据使用要求、处理的方式、存储的信息量、设备条件等确定文件类别、文件的存储媒体、文件组织方式等等。并且设计文件的记录格式和估算文件的容量。(1)在概要设计时进行文件的逻辑设计。(2)在详细设计是进行文件的物理设计。,数据库设计是指数据存储文件的设计,它包括有3个方面:(1)概念设计。在系统的数据分析基础上建立概念模型,通常,用ER图表示;(2)逻辑设计。由概念模型结合具体的DBMS特征建立数据库的逻辑结构;(3)物理设计。根据不同的DBMS设计数据模式的物理细节。例如,数据响的存储方式和分类索引的建立等等。,用户界面设计,用户界

38、面设计的目标是定义一组界面对象和行为,这里界面对象的行为是一种动作,也就是是它们的屏幕表示。用户界面设计主要包括有:系统响应时间、用户帮助、出错处理、命令交互等四个问题。,系统响应时间一般说来,系统响应时间指从用户完成某个控制动作,到软件给出预期的响应之间的这段时间。系统响应时间有两个重要属性,分别是响应时间的长度和易变性(系统响应时间相对于平均响应时间的偏差。例:稳定在1s的响应时间比从s变化的响应时间要好.用户总是担心响应时间变化暗示系统工作出现异常。)。,用户帮助设施目前,大部分现代软件都提供联机帮助设施,这使得用户可以不离开用户界面就可以解决自己的疑难问题。常见的帮助设施有集成式和附加

39、式两类。集成式:一般在软件设计同时完成,它通常对用户工作内容是敏感的,即用户选择的帮助与操作密切相关。用户需要获得的帮助快捷,界面友好。附加式:在系统建成后再附加到软件中,它实际上是一种查询能力较弱的联机用户手册。设计时要考虑的问题:帮助的范围;帮助的途径;帮助信息的显示;返回到正常的交互方式;帮助信息的构造方式。,出错信息处理出错信息和警告信息,是指系统出现问题时提交的“坏消息”。出错信息设计不恰当,将向用户提供无用的或误导的信息。通常,系统给出的错误信息或警告信息,应该具有几个特征:以用户可以理解的术语描述问题;提供有助于从错误中恢复的建设性意见;指出错误可能导致哪些负面后果,便于用户检查

40、是否出现问题以及如何改正;在显示信息时应该同时发出警告声,或者用闪烁方式显示信息,或者用表示出错的明显的颜色显示信息;不可以责怪用户。,命令交互目前,面向窗口的点击和拾取技术广泛应用于用户界面,用户对键盘操作命令的依赖已经逐步减少,但是,仍然有不少的高级用户喜爱面向键盘命令的交互方式。在一般情况下,系统都提供菜单和键盘命令来调用软件功能。设计命令交互方式时,要考虑:每个菜单选项是否都提供相对应的命令;提供复合控制键操作、功能键和键盘输入命令的方式;如何学习和记忆命令;用户是否可以定制或缩写命令。,用户界面设计过程,用户界面设计的过程主要有以下几项活动:用户界面分析与建模;用户界面设计;用户界面

41、实现;用户界面评估。充分考虑用户界面的风格:可交互性、信息显示、数据输入输出、帮助设施、出错处理等的合理布局。用户关注:正确地实现每一个用户任务、适应所有任务变更、达到所有一般用户的需求能力;界面容易使用和学习的程度;用户接受界面作为他们工作中有用工具的程度。,界面设计的基本原则,一般可交互性(1)保持界面一致性。(2)提供有意义的反馈。(3)执行有较大破坏性的动作之前要求用户确认。(4)允许取消绝大多数操作。(5)减少在两次操作之间必须记忆的信息量。(6)提高对话、移动和思考的效率。(7)允许用户的误操作,但系统不受影响。(8)按功能对动作分类,并以此设计屏幕布局。应该尽力提高命令和动作组织

42、的内聚性。(9)提供对工作内容敏感的帮助设施。(10)用简单动词或动词短语作为命令名。,信息显示(1)只显示与当前工作内容有关的信息。(2)避免数据过多或费解让用户烦恼。(3)使用统一的标记、标准的缩写和可以预见的颜色。显示信息的含义应该非常明确、易理解。(4)允许用户保持可视化的语境。(5)产生有意义的出错信息。(6)使用大小写、缩进和文本分组以帮助理解(7)使用窗口分隔不同类型的信息。(8)使用“模拟”显示方式表示信息,使得信息更容易被用户吸取。(9)合理划分和高效率地使用显示屏幕。,数据输入(1)尽量减少用户的输入动作。(2)保持信息显示方式和数据输入方式的一致性。(3)允许用户自定义输

43、入。(4)应该具有灵活多样的交互方式,并且可以让用户选择自己喜欢的输入方式。(5)隐藏与当前语境中不可选用的命令。(6)允许用户控制交互过程。在应用系统允许的情况下,应该让用户能够跳过不必要的动作,改变所需做的动作的顺序,可以在不退出程序的情况下,从错误状态中恢复到正常状态。(7)对所有输入动作都提供帮助。(8)消除冗余的输入。删除全部没有实际意义的输入。,过程设计,过程设计也称为构件设计,它的主要任务是把结构体系的结构元素转换成对软件构件的过程性描述。有人又把过程设计称为详细设计或者算法设计。过程设计确定每一个构件的内部特征,即模块内部的数据结构和算法细节。程序员将根据过程描述编写程序代码。

44、,过程设计的主要的活动,(1)确定每一个模块使用的数据结构;(2)为每一个模块确定采用的算法;(3)确定模块的接口的细节,包括系统的外部接口、模块间的接口、数据输入和输出等(4)确定用户界面(现有很多的生成工具);(5)其他补充。设计完成后应该编写设计文档,还应该为每一个模块设计一组测试用例,以便对模块进行测试。,过程设计常用的描述工具,过程设计描述工具或者说描述方式,应该具有描述过程细节的能力,而且能被程序员翻译成用程序设计语言书写的源程序。常用的过程设计工具有:图形描述(图形工具):把过程细节用图形来表示,例如,流程图、盒图、问题分析图等。表格描述(表格工具):把过程细节用表格形式表示,例

45、如,判定表等。语言描述(语言工具):把过程细节用语言形式表示,例如,伪代码等。,判定表,判定表的设计步骤:(1)列出与构件过程相关的所有动作;(2)列出执行该过程时的所有条件;(3)确立特定条件组合与特定动作的关联,找出所有可能的条件组合,清除不可能的条件组合。(4)定义一组规则,指出某一组条件成立时对应要执行的动作。采用表格方式来表示具有条件分支情形的处理逻辑的一种工具;表格分为四大部分:左上角-条件说明;左下角-动作说明;右上角-条件组合;右下角-各种条件下组合下的行动;有些条件组合在实际中可能是矛盾或无意义,需将它们删除。有些组合条件下的行动相同,可合并;,判定树,表示经过不同条件的判断

46、和决策,作出相应处理的过程;用于有条件分支情形;方法:确定有哪些条件;确定每个条件有几种可能的状态;确定有哪些动作;确定每一项动作要依赖哪些条件及取值;,软件重用技术,重用的软件单元规模:应用系统重用。整个系统的重用,不作任何修改就可以融合到另一个系统中。构件重用。应用系统的构件规模从子系统到单个对象都可以重用。功能重用。实现单一功能的软件构件可以重用。例如,标准函数库提供的各种数学函数。,软件重用可分为:(1)知识重用;(2)方法和标准重用;(3)软件成分重用。软件成分重用又可划分为3类:(1)代码重用(2)设计结果重用(3)分析结果重用,重用技术涉及:(1)项目计划:软件项目计划中的基本结

47、构和内容。(2)成本估计:(3)体系结构:在同一个领域中不同应用系统,其体系结构几乎是相同的。即使是不同领域,也很少有截然不同的体系结构。(4)需求模型和规格说明:(5)设计:我们可以把已有的设计方案,进行归纳、抽象,再对它们作描述、分类,可获得一些可重用的设计模式。(6)源代码:源代码的重用可能是谈论最多和应用最早的地方。(7)用户文档和技术文档:(8)用户界面:图形用户界面是经常被重用的。(9)数据:(10)测试用例:,领域工程与应用系统工程,由软件重用理论和方法的发展带来的另一个问题:人们往往需要界定已有的可重用资产,在这一活动中需要建立一套界定方法,以确保被界定的可重用资产能正确地真正

48、重用到一个体系结构,这个活动可认为是领域工程。应用系统开发过程和重用过程,则称为应用系统工程。系统的软件重用实质是,创建者先投资,有创建者界定并创建出可重用的构件系统,使用者在构件系统的基础上,很快地开发出应用系统。,基于重用构件的过程模型,可重用构件技术,构件开发在接收到一个请求,如果通过规格说明匹配找到符合当前应用系统所需要的构件,设计者就可把该构件从构件库中提取出来,并用到系统的设计中,如果没有找到所需要的构件,则要进行构件的创建。,构件设计时具体考虑:(1)标准数据:根据研究的应用领域,标识出标准的数据结构。例如文件结构、数据库结构等。(2)标准接口协议:包括3个层次的接口协议,即模块

49、内部的接口、外部接口和人机界面接口。(3)程序模板:结构模型可以作为新程序体系结构设计的模板。构件描述、分类和检索构件的创建者给出构件的描述,以便管理和使用。Tracz提出的3C模型是一种理想的描述方式,即概念(concept)、内容(content)、语境(context)。,(1)概念:是构件做什么的描述,应该完整地描述构件的接口,概念应该表达出构件的意图。(2)内容:描述实现概念的方法,通常,内容对一般用户是隐藏的信息,只有那些打算修改该构件的人才需要这些信息。(3)语境:把可重用的软件构件置于其应用领域中(指定概念、操作、实现的特征),语境使得软件工程师能够找到适当的构件以满足应用需求

50、(应用系统所要的构件)。为了能够在实际环境中找到构件,必须把构件的描述转换成具体的规格说明模式。软件构件的分类模式。目前,比较多地使用图书馆和信息科学分类方法(图书索引的分类法)。构件的检索和分类模式,可以遵照上述的3C模式。,软件重用的效益,质量生产率成本,软件设计模式,所谓设计模式是描述问题以及经过多次提炼的解决方案,我们可以在不同的设置环境下,一次又一次地使用该方案而不必做重复劳动。,设计模式的成分,模式名称:一个标识符(助记名),它用一个到两个词来描述该模式的设计的问题、解决方案和效果。问题:描述了应该在何时使用该模式,它解释了设计问题和问题存在的背景。解决方案:描述了设计的组成成分,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号