本第12章系统设计_第1页
本第12章系统设计_第2页
本第12章系统设计_第3页
本第12章系统设计_第4页
本第12章系统设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章软件设计软件设计概述优秀设计的概念数据设计体系结构设计用户界面设计构件级设计112.1软件设计概念1、软件设计模型的主要组成软件设计是将软件需求转换为软件表示的过程,是构造和验证软件所需的三项技术活动〔设计、编码、测试〕之一。软件设计也是一个建模过程,以一系列迭代的步骤建立不同的视图来描述系统。首先给出软件系统的整体表示〔体系结构〕,然后逐步精化,给出系统构造的细节,如数据设计、接口设计、构件级设计。这四方面的设计是传统软件系统设计中的主要活动。而面向对象的设计还包括分布式体系结构的设计、进程管理等。22、设计目标和原那么设计目标:•设计必须实现所有包含在分析模型中的需求。•设计必须是可读、可理解的,便于实现和维护。•设计应该提供软件的完整面貌,包括从不同角度看到的数据、功能、行为域。常用的设计原那么:•设计应该展示系统的层次结构。•设计应该模块化。•设计应该包括数据、体系结构、接口和模块的清楚表示。3•设计应该遵循分解、求精的原那么。•设计过程是一个迭代的过程,对于分析模型应该可跟踪,应该能适应变更。•设计不应该从头做起。•设计应该具有一致性和集成性。43、软件设计文档设计阶段的一个重要产品就是描述所构建的系统的文档。主要内容:•前言:系统目标;主要需求•数据设计用一系列图形和符•体系结构设计号描述系统、界面•接口设计〔人机交互、外部接口〕和构件的结构,包•每个模块〔或构件〕的过程性设计括各级抽象。•集成测试策略•设计约束•需求交叉引用表•参考文献•附录文档中还可以包含描述系统如何运行的操作手册,以及出错后系统的重新配置或特定的平安措施。

512.2优秀设计的根本概念软件设计中最重要的一个问题就是软件质量问题,如何衡量软件设计的技术质量呢?本节介绍提高软件设计技术应掌握的一些根本概念。1、分解与模块化Wasserman〔1995〕提出了5种创立设计的方法:〔1〕模块化分解:功能分配给模块或构件〔2〕面向数据的分解:基于全局数据结构

6〔3〕面向事件的分解:基于系统必须处理的事件及如何改变系统状态的信息,高层描述状态目录,低层描述转换。〔4〕由外往内的设计:基于系统的用户输入,高层列出所有输入,低层描述如何处理每个输入。〔5〕面向对象的设计:系统分解为子系统,子系统分解成包,包分解为类,低层描述所属类的对象的数据和方法以及对象间相互的交互。7通过系统的数据描述、事件、用户输入、高层功能描述或组合,用逐渐增加的细节创立信息层次来得到设计。8模块化是软件解决复杂问题所具备的手段,E〔P1+P2〕>E〔P1〕+E〔P2〕

92、抽象与求精抽象,即抽出事物本质的共同特性而暂不考虑它的细节。软件过程中的每一阶段都是解决方案抽象级别上的求精。抽象包括

•数据抽象:对数据集合命名并描述它的关键属性;

•过程抽象:对一系列隐含的过程性步骤命名,关注主要功能而不考虑细节。抽象帮助定义模块实体,建立不同抽象级别的软件体系结构。求精,是详细描述的过程,用于揭示具体实现的低层细节。抽象和求精是对立统一的两个方面,缺一不可的帮助构造出完整的设计模型。103、信息隐蔽指在设计和确定模块时能够隐藏在模块内部的信息〔数据、过程〕尽量在模块内部存储和定义,尽可能的局部化。作用:约束我们实现模块内部的过程细节和数据结构的访问,减少因局部数据结构的变动对其他软件的影响,有利于维护。4、模块独立性模块功能的独立性是抽象和信息隐蔽性的直接产物。独立的模块易于复用、易于维护。如何衡量软件的独立性?提出了两个定性的度量标准——耦合性和内聚性。

11〔1〕耦合性〔Coupling〕软件结构中各构件间相互联系紧密程度的一种度量。•无直接耦合•数据耦合•标记耦合•控制耦合•公共耦合•内容耦合12〔2〕内聚性〔Cohesion〕一个构件内部各个元素彼此结合的紧密程度的度量。•偶然内聚•逻辑内聚:如打印不同报表的程序•时间内聚:初始化•过程内聚:依次调用的过程放在一起•通信内聚:使用同一个数据结构•顺序内聚:处理必须顺序执行,前一个处理的输出是下一个处理的输入•功能内聚:模块内所有的元素都完成同一个功能,模块不能再分解。重要的不是区分耦合或内聚的等级,而是定义和分解模块时需要注意强内聚、弱耦合,以提高模块独立性。

增强1312.3数据设计数据的结构总是软件设计的一个重要方面。在构件级,数据结构和操作他们的相关算法的设计对高质量的应用至关重要;在应用级,数据模型到数据库的转换是到达系统的业务目标的关键;在业务级,存储在不同数据库并重新组织为“数据仓库〞的信息的集合产生了数据挖掘技术,从而对业务的成功具有重要影响。在每一种情况,数据设计均扮演了重要角色。

14在过去一般情况下,数据的设计仅局限于将分析时创立的信息域模型〔ERD、DD)转换成软件构件级的数据结构和应用级的数据库体系结构。为满足当今企业对大中型规模的业务信息的需求,特别希望信息是跨功能的。数据挖掘技术可以遍历现存的数据库以试图抽取适宜的业务级信息。然而由于多个数据库结构不同、库中信息命名格式及详细程度不同以及许多其他因素使得很难在现存的数据库环境中进行数据挖掘。一个可选的解决方案是建立不同于一般数据库的大的数据仓库,存放以主要业务主题进行组织的、展示统一定义标准的并在较长时间内保持稳定的数据。151、数据仓库与数据库的区别:一个数据仓库是一个别离的数据环境,它不是直接和日常的应用集成,但包含了某业务使用的所有数据,即效劳于业务所需的一组应用。但很多特征使得一个数据仓库不同于典型的数据库:•面向决策:数据仓库是根据决策分析的需要按主题来组织,不是根据业务过程和功能来组织。不需要对解决主题无用的数据。如分析产品市场销售状况,需要:用户的意见、库存及产品销售数据、竞争对手的产品的销售数据等,但不需要产品生产过程的数据。16•集成性:不管数据来源与哪个数据库、文件等,数据仓库展现一致的命名约定、计量单位、度量标准、编码结构和物理属性。•时变性:容纳较长时间段〔5~10年〕的静态数据。而数据库提供的是动态数据〔不断插入、删除、更新〕,反映当前业务处理状况,保存时间较短。数据迁移到数据仓库或备份后,数据库就会更新。•在线分析:数据库的访问和在线查询往往通过工具来提供,在线分析的功能取决于系统的规划和设计。而数据仓库的数据组织需要数据的抽取、转换、清洗、装载等繁琐工作。一个数据仓库系统往往同时存在多种数据抽取方式以适应原始数据的多样格局。172、数据仓库系统包括:•数据仓库技术〔DataWarehousing,DW〕•在线分析处理技术〔On-LineAnalyticalProcessing,OLAP〕•数据挖掘技术〔DataMining,DM〕1812.4体系结构设计1、什么是软件体系结构随着软件系统越来越大、越来越复杂,软件设计的核心已经转移到新的计算模式,非传统的“程序=算法+数据结构〞,新的模式就是系统总体结构的设计和标准。软件体系结构(Architecture)为软件系统提供了一个结构、行为和属性的高级抽象。由构成系统的元素〔构件〕的描述、这些元素的相互作用、指导元素集成的模式以及模式的约束组成。软件体系结构不仅指出了系统的组织结构和拓扑结构,并显示了系统需求和构成系统元素之间的对应关系,提供了一些设计决策的根本原理。19软件体系结构的模型有以下几种:•结构模型:是构件、连接件〔定义构件之间交互规那么、消息协议的构造模块〕有组织的集合。反映系统的重要语义内容,包括系统的配置、约束等。•框架模型:与结构模型类似,不侧重细节,侧重于系统的整体结构〔模式〕。•动态模型:补充模型,强调系统的行为性质。•过程模型:注重系统必须适应业务和技术的过程。•功能模型:一组功能构件按层次组成,底层向上层提供效劳,是一种特殊的框架模型。这些模型可用语言〔ADL)描述,也可用图形〔UML)描述。202、分布式体系结构〔1〕客户机-效劳器体系结构客户机-效劳器〔Client-Server,C/S〕系统是至少包含一个效劳器和一个客户机的分布式系统。在分布式系统中〔distributedsystem〕,计算由不同的程序执行,这些程序一般运行在不同的硬件上,合作完成系统的任务。效劳器就是为其他程序提供某些效劳的程序,其他程序使用通讯通道与效劳器相连接。客户机就是访问效劳器的程序。它们之间的通信以“请求——响应〞的方式进行。客户机可以访问许多效劳器来执行不同的功能,而效劳器可以同时被许多客户机所访问。除了同步请求或接收结果的时候,客户和效劳器中的控制流都是相互独立的。21C/S体系结构的优点:•客户端集中处理事务中的有关输入/输出。•效劳器端负责与数据处理紧密相关的业务逻辑计算,DBMS和数据操作都在同一机器上运行,效率高。•效劳器只是把处理结果返回给客户端,响应速度快〔局域网〕。•可在客户端处理复杂的表达。问题:•客户端和效劳器端直接连接,平安性低。•客户端程序庞大,且根据企业规那么的变化随时要更新,维护工作量大。•效劳器为每个客人户建立连接,资源消耗大。•客户端和效劳器端直接传输的数据量大,易造成网络阻塞。22〔2〕浏览器/Web效劳器体系结构简称B/S〔Browser-Server〕结构,实质上也是一种C/S结构。客户机通过互联网与效劳器通信。优点:•客户端采用统一的标准浏览器界面,使用方便。•简化了客户,软件开发和维护工作转移到了Web效劳器,系统易维护。•采用标准的TCP/IP协议,与其他系统连接方便。•在Web效劳器端使用脚本语言编写响应页面,实现较容易。问题:•由于B/S浏览器和HTML语言的限制,适用于文本查询系统,不适用于处理、表达复杂系统。•需要在效劳器端生成HTML页面然后下载到客户端由浏览器解释运行,响应速度慢。23〔3〕多层分布式体系结构客户机-效劳器体系结构的一个重要变体就是多层模型。在该模型中,添加了专门完成业务处理的应用效劳器,即将业务处理和数据管理彻底别离。应用效劳器同客户机〔通常经由Internet〕和数据库效劳器〔出于平安原因通常在企业网络内部〕通信。当访问数据库效劳器时,应用效劳器相当于一个客户机。〔见图〕以下图中互联网银行系统是使用C/S体系结构的例子。Web效劳器提供给用效劳如用于现金转帐、生成银行结算单和工资单等;银行的账户数据库提供数据管理效劳。

2425多层分布式体系结构的优点:•中间层隔离了客户直接对数据效劳器的访问,保护了数据库的平安。•业务逻辑在应用效劳器,客户端维护较少。•通过负载均衡以及中间层缓存数据的能力,可以提高对客户端的响应速度。•系统扩展灵活。应用的各层可并行开发。业务增大时,可在中间层部署更多的应用效劳器。26〔4〕中间件在开发多层体系应用软件时需要中间件。中间件和系统软件是一个系统的根底,因为所有功能都是基于以下各种软件之上的:OS、DBMS、通信软件、对象分布技术、GUI设计工具、事务管理技术等。选择并集成所获取或构造的软件产品是设计阶段关注的要点。什么是中间件?中间件是一种独立的系统软件或效劳程序,分布式应用软件借助它在不同的技术之间共享资源。中间件位于客户机效劳器的操作系统之上,管理计算资源和网络通信。27中间件分为以下几类:•消息中间件:控制和管理一个集成的系统,使得组成这个系统的多个应用之间通过传递消息完成整个业务流程。•事务处理中间件:协调事务在多台应用效劳器上实时并发地运行。•数据存取和管理中间件:为在网络上虚拟缓冲存取、格式转换、解压等带来方便。•Web效劳中间件:对浏览器图形用户界面的功能进行扩充。•平安中间件:提供解决平安问题的特殊功能。28•跨平台和构架的中间件:分布式系统中,需要集成各结点上的不同系统平台上的构件或新老版本的构件:如CORBA、JavaBeans、DCOM。•专用平台中间件:为特定领域〔如电子商务、网站等〕建立相应构架、配置相应的构件库和中间件,开发和运行关键任务。•网络中间件:包括网关、接入、网络测试、虚拟缓冲等。在实际应用中根据具体的应用类型尽量使用已有的中间件产品,不但可以提高系统开发效率,还能保证软件的质量。以下图是Interbank软件公司开发的跨平台互操作的局部Java中间件及相关的层。29用户管理帐户管理工作流管理Java虚拟机Web浏览器TCP/IP专用应用层通用应用层中间件层系统软件层Java.appletJava.awtJava.rmi抽象视窗调试工具远程消息请求30客户机-效劳器体系结构的进一步扩展是对等模式〔peer-to-peer〕。对等系统是一个特殊的客户机-效劳器系统,每个构件〔或子系统〕既可以是客户机,又可以是效劳器,其中的控制流除了在同步请求的时候,都是互相独立的。1999年以来,P2P有了很大的改进,用户之间直接传递音乐、电影、游戏和文件等,大大的改变了人们的工作方式和生活方式。313、调用-返回式的软件体系结构是一种集中式控制模型。自上而下的调用,控制始于结构层次的顶层,往往只有一个控制线程。优点是容易分析与理解系统的控制流,但不适合并发执行的系统。32该模型是七十年代后期由Constantine和Yourdon提出的结构化设计(StructuredDesign,SD)方法产生的控制层次模型,称为软件结构图〔StructuredChart)。该方法最主要的思想是将数据流图的加工〔或IDEF0图中的活动〕直接转换为软件结构图中的模块,然后反复用设计概念和启发式原那么对初始结构进行求精,以便产生优秀的设计结果。同时用文字或图表说明每个模块功能、处理、接口、全局数据、设计约束等信息。该设计模型一般反映系统大的架构〔如C/S体系结构〕下某个构件的软件结构。33SD方法的设计步骤〔1〕精化DFD,要有足够的细节信息,便于设计;〔2〕确定DFD的特点〔变换流、事务流〕及边界;〔3〕将DFD逐级映射为软件结构;〔4〕依设计质量标准对结构进行优化;〔5〕描述模块功能、接口及全局数据结构;该步骤支持迭代。以下说明如何由DFD映射为软件结构图的步骤以及优化准那么。34•变换流设计〔1〕一级映射

35〔2〕逐级映射I:由变换中心边界沿输入端路径回溯,将每个遇到的“处理〞映射成相应层次的模块。P:每个处理直接对应一个下层模块。O:由边界沿输出端路径外推,方法与I类似。〔3〕精化:根据设计概念和原那么

36

事务流设计37•每个模块的说明每个模块应有简要说明:①进出该模块的信息〔接口描述〕;②模块内部的信息〔功能、数据〕;③过程陈述,包括主要判定点及任务等;④对约束、限制的说明。•优化模块化设计的启发式原那么:①评估软件结构的初始模型以降低耦合并提高内聚。②高层高扇出使结构最小化;当深度增加时〔特别是底层〕争取提高扇入。〔图〕

38③将模块的作用范围限制在模块的控制范围内。作用范围:受模块内一个判定影响的所有模块的集合。控制范围:模块本身及其所有下属模块的集合。〔以下图〕④评估模块接口以降低复杂度和冗余并提高一致性。⑤定义功能可以预测的模块,〔如对于相同的输入,输出是恒定的〕,但要防止过分限制模块〔如数据结构的大小、控制流的选择、外部接口的模式等限制〕。39TOP

CD

E

FABTOP

CDE

FABTOPCD

E

FAB模块D的作用域超出控制域模块TOP的作用域在控制域内但距离太远,使模块B、D的接口有冗余的信息D的作用域在控制域内40例:SafeHome系统的设计将SafeHome系统的第一层DFD分解为两个子系统:传感器监测子系统和用户交互子系统。传感器监测子系统经设计得到初始软件结构和优化后的软件结构图见ppt43、ppt44两页图:41需求分析阶段建立的“传感器监测子系统〞的分析图42细化后的数据流图转换成初始软件结构图43用户交互子系统DFD和优化后的软件结构见下两页图:“传感器监测子系统〞优化后的软件结构图44454612.5用户界面设计好的用户界面〔UI)设计对一个系统的成功是至关重要的。1、界面设计的黄金规那么Mandel提出了在界面设计中的三条黄金规那么:规那么1:置用户于控制之下。指不强加给用户许多限制与约束:〔1〕不强迫用户执行不必要的或不希望的动作。〔2〕交互的灵活性。47〔3〕可恢复性:界面应该有一种机制来允许用户从错误中恢复。〔4〕用户差异性:界面应该为不同类型用户〔生疏型或熟练型〕提供适宜的交互功能。〔5〕意外最小化:不要让用户对系统的行为感到吃惊,类似的操作应该有类似的效果,操作的结果就是他所要的。不要让用户涉及到开发技术细节。48规那么2:减少用户的记忆负担〔1〕用户熟悉:界面所使用的术语和概念是来自于用户的经验。〔2〕可视的提示与导航。〔3〕在错误发生时界面应该提供有意义的反响,并具有上下文感知能力的在线帮助功能。规那么3:保持界面的一致显示风格一致、显示信息的设计标准一致、输入约束一致、帮助的形式一致、导航的模式一致等等。492、与界面交互的类型Shneiderman把不同形式的交互分为5种类型:①直接操纵:用户在屏幕上直接与对象进行交互。②菜单项选择择:一般情况是另一个屏幕对象同时被选中,命令作用于这个对象。③表格填写:表格中的空白栏可能有相关菜单,表格上有按钮,按下将启动相关操作。④命令语言:用户发出特定指令和相关参数,指示系统做什么。⑤自然语言:用户用自然语言发出命令。

50例如:删除一个文件•直接操纵:直接拖到回收站。•菜单项选择择:先选定这个文件,然后选定删除命令。•表格填写:先填入文件名,然后“按〞删除命令。•命令语言:用户发出删除指令,将文件名作为参数。•自然语言:用户键入“删除名为xxx文件〞。51下表给出了这些交互类型的主要优缺点及可能的适用范围。交互类型主要优点主要缺点应用实例直接操纵快速和直观的交互容易学习较难实现视频游戏CAD系统菜单项选择择防止用户错误只需要很少的键盘输入对有经验用户操作较慢当菜单项选择择很多时会变得很复杂绝大多数一般用途的系统表格填写简单的数据入口容易学习占据很多屏幕空间库存控制个人贷款处理命令语言强大灵活较难学习差的错误管理自然语言适合偶然用户容易扩展需要键入的太多,理解可能有二义,系统不可靠52这些交互类型可以混合使用,几种不同的交互类型可以用于相同的应用。如windows支持对图标显示的文件和目录进行直接操作与菜单项选择择。互联网上的用户界面一般基于HTML和Java等语言能够把程序和页面中的构件联系起来,在Web界面中直接操作可视化的实体是一种非常有效的方法。

533、界面设计过程:

544、提供给用户的信息表示所有交互系统都要提供给用户某种方式的信息表示。信息表示可以是输入信息〔如文本〕的直接表达,也可以以图形形式表示信息。从系统中别离出信息表示的软件,使用户屏幕上信息表示的改变不会影响到系统的主要计算。

55寻找最正确的信息表示方式需要有关该信息的使用者的背景和他们使用系统的方式的知识。如果需要精确的数字信息并且信息变更相对较慢,信息应该以文本形式表示〔文本表示占据的屏幕空间较少〕。如果数据变更的快或者数据之间关系很重要,使用图形形式表示。5、模型-视图-控制器〔MVC〕模型把用户界面中的表示、交互和实体相别离是该模型的根底。MVC是一种用来使用户界面层和系统的其他局部别离的体系结构模式。MVC不仅有助于增强用户界面层的层内聚,而且有助于降低用户界面层与系统其余局部以及UI本身各局部之间的耦合。56MVC模式使系统的功能层〔模型〕同用户界面的两个方面别离:视图〔view〕和控制器〔controller〕。用户能够用适当的交互方式与每种表示形式进行交互。要显示的数据被封装到一个模型对象中。每个视图都是模型的一种显示表示方式。每个模型对象可能有许多独立的视图对象与之关联,例如表示数字数据的模型可能有一个直方图的或一个表格的视图。每个视图都有一个的处理用户输入和设备交互的控制器对象。

57使用MVC模式的好处:

•三个构件可独立设计。

•提高内聚,降低耦合:构件之间通信信道最小且易查找。

•增加重用:视图和控制器通常会使用大量的可重用构件作为各种UI控件。

•灵活设计:很易通过改变视图或控制器来改变UI。

•可测试性设计:可脱离UI层测试应用程序。

586、界面评价评价一个界面的可使用性并检查是否符合用户需求,是软件系统正规检验过程的一局部。可使用性属性:•可学习性•操作速度•容错性•可恢复性•适应性5912.6构件级的设计构件级设计也称为详细设计,在体系结构设计完成之后,对构件进行接近代码的抽象级别上的设计。在构件级,开发人员以足够的细节来表示数据结构、接口和算法,以指导程序设计语言源代码的生成。设计符号体系:图形、表格、伪码图形:结构化流程图,问题分析图〔ProblemAnalysisDiagram,PAD),盒图,表示对象类中方法的的活动图〔UML〕,……表格:IPO表,决策表〔判定表〕等,伪码:过程描述语言〔ProcessDesignLanguage,PDL)60优点:直观清晰、易于使用。缺陷:1、易造成非结构化,2、不易表达数据结构。

流程图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论