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

下载本文档

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

文档简介

西安交通大学 刘海岩,1,第12章 软件设计,软件设计概述 优秀设计的概念 数据设计 体系结构设计 用户界面设计 构件级设计,西安交通大学 刘海岩,2,12.1 软件设计概念,1、软件设计模型的主要组成 软件设计是将软件需求转换为软件表示的过程,是构造和验证软件所需的三项技术活动(设计、编码、测试)之一。软件设计也是一个建模过程,以一系列迭代的步骤建立不同的视图来描述系统。首先给出软件系统的整体表示(体系结构),然后逐步精化,给出系统构造的细节,如数据设计、接口设计、构件级设计。这四方面的设计是传统软件系统设计中的主要活动。而面向对象的设计还包括分布式体系结构的设计、进程管理等。,西安交通大学 刘海岩,3,2、设计目标和原则 设计目标: 设计必须实现所有包含在分析模型中的需求。 设计必须是可读、可理解的,便于实现和维护。 设计应该提供软件的完整面貌,包括从不同角度看到的数据、功能、行为域。 常用的设计原则: 设计应该展示系统的层次结构。 设计应该模块化。 设计应该包括数据、体系结构、接口和模块的清楚表示。,西安交通大学 刘海岩,4, 设计应该遵循分解、求精的原则。 设计过程是一个迭代的过程,对于分析模型应该可跟踪,应该能适应变更。 设计不应该从头做起。 设计应该具有一致性和集成性。,西安交通大学 刘海岩,5,3、软件设计文档 设计阶段的一个重要产品就是描述所构建的系统的文档。 主要内容: 前言:系统目标;主要需求 数据设计 用一系列图形和符 体系结构设计 号描述系统、界面 接口设计(人机交互、外部接口) 和构件的结构,包 每个模块(或构件)的过程性设计 括各级抽象。 集成测试策略 设计约束 需求交叉引用表 参考文献 附录 文档中还可以包含描述系统如何运行的操作手册,以及出错后系统的重新配置或特定的安全措施。,西安交通大学 刘海岩,6,12.2 优秀设计的基本概念,软件设计中最重要的一个问题就是软件质量问题,如何衡量软件设计的技术质量呢?本节介绍提高软件设计技术应掌握的一些基本概念。 1、分解与模块化 Wasserman(1995)提出了5种创建设计的方法: (1)模块化分解:功能分配给模块或构件 (2)面向数据的分解:基于全局数据结构,西安交通大学 刘海岩,7,(3)面向事件的分解:基于系统必须处理的事件及如何改变系统状态的信息,高层描述状态目录,低层描述转换。 (4)由外往内的设计:基于系统的用户输入,高层列出所有输入,低层描述如何处理每个输入。 (5)面向对象的设计:系统分解为子系统,子系统分解成包,包分解为类,低层描述所属类的对象的数据和方法以及对象间相互的交互。,西安交通大学 刘海岩,8,通过系统的数据描述、事件、用户输入、高层功能描述或组合,用逐渐增加的细节创建信息层次来得到设计。,西安交通大学 刘海岩,9,模块化是软件解决复杂问题所具备的手段, E(P1P2) E(P1) E(P2),西安交通大学 刘海岩,10,2、抽象与求精 抽象,即抽出事物本质的共同特性而暂不考虑它的细节。软件过程中的每一阶段都是解决方案抽象级别上的求精。抽象包括 数据抽象:对数据集合命名并描述它的关键属性; 过程抽象:对一系列隐含的过程性步骤命名,关注主要功能而不考虑细节。 抽象帮助定义模块实体,建立不同抽象级别的软件体系结构。 求精,是详细描述的过程,用于揭示具体实现的低层细节。抽象和求精是对立统一的两个方面,缺一不可的帮助构造出完整的设计模型。,西安交通大学 刘海岩,11,3、信息隐蔽 指在设计和确定模块时能够隐藏在模块内部的信息(数据、过程)尽量在模块内部存储和定义,尽可能的局部化。 作用:约束我们实现模块内部的过程细节和数据结构的访问,减少因局部数据结构的变动对其他软件的影响,有利于维护。 4、模块独立性 模块功能的独立性是抽象和信息隐蔽性的直接产物。独立的模块易于复用、易于维护。如何衡量软件的独立性?提出了两个定性的度量标准耦合性和内聚性。,西安交通大学 刘海岩,12,(1)耦合性(Coupling) 软件结构中各构件间相互联系紧密程度的一种度量。 无直接耦合 数据耦合 标记耦合 控制耦合 公共耦合 内容耦合,西安交通大学 刘海岩,13,(2)内聚性(Cohesion) 一个构件内部各个元素彼此结合的紧密程度的度量。 偶然内聚 逻辑内聚:如打印不同报表的程序 时间内聚:初始化 过程内聚:依次调用的过程放在一起 通信内聚:使用同一个数据结构 顺序内聚:处理必须顺序执行,前一个处理的 输出是下一个处理的输入 功能内聚:模块内所有的元素都完成同一个功 能,模块不能再分解。 重要的不是区分耦合或内聚的等级,而是定义和分解模块时需要注意强内聚、弱耦合,以提高模块独立性。,增强,西安交通大学 刘海岩,14,12.3 数据设计,数据的结构总是软件设计的一个重要方面。 在构件级,数据结构和操作他们的相关算法的设计对高质量的应用至关重要; 在应用级,数据模型到数据库的转换是达到系统的业务目标的关键; 在业务级,存储在不同数据库并重新组织为“数据仓库”的信息的集合产生了数据挖掘技术,从而对业务的成功具有重要影响。 在每一种情况,数据设计均扮演了重要角色。,西安交通大学 刘海岩,15,在过去一般情况下,数据的设计仅局限于将分析时创建的信息域模型(ERD、DD)转换成软件构件级的数据结构和应用级的数据库体系结构。 为满足当今企业对大中型规模的业务信息的需求,特别希望信息是跨功能的。数据挖掘技术可以遍历现存的数据库以试图抽取合适的业务级信息。 然而由于多个数据库结构不同、库中信息命名格式及详细程度不同以及许多其他因素使得很难在现存的数据库环境中进行数据挖掘。 一个可选的解决方案是建立不同于一般数据库的大的数据仓库,存放以主要业务主题进行组织的、展示统一定义标准的并在较长时间内保持稳定的数据。,西安交通大学 刘海岩,16,1、数据仓库与数据库的区别: 一个数据仓库是一个分离的数据环境,它不是直接和日常的应用集成,但包含了某业务使用的所有数据,即服务于业务所需的一组应用。但很多特征使得一个数据仓库不同于典型的数据库: 面向决策:数据仓库是根据决策分析的需要按主题来组织,不是根据业务过程和功能来组织。不需要对解决主题无用的数据。如分析产品市场销售状况,需要:用户的意见、库存及产品销售数据、竞争对手的产品的销售数据等,但不需要产品生产过程的数据。,西安交通大学 刘海岩,17, 集成性:不管数据来源与哪个数据库、文件等,数据仓库展现一致的命名约定、计量单位、度量标准、编码结构和物理属性。 时变性:容纳较长时间段(510年)的静态数据。而数据库提供的是动态数据(不断插入、删除、更新),反映当前业务处理状况,保存时间较短。数据迁移到数据仓库或备份后,数据库就会更新。 在线分析:数据库的访问和在线查询往往通过工具来提供,在线分析的功能取决于系统的规划和设计。而数据仓库的数据组织需要数据的抽取、转换、清洗、装载等繁琐工作。一个数据仓库系统往往同时存在多种数据抽取方式以适应原始数据的多样格局。,西安交通大学 刘海岩,18,2、数据仓库系统包括: 数据仓库技术 (Data Warehousing,DW) 在线分析处理技术(On-Line Analytical Processing,OLAP) 数据挖掘技术(Data Mining,DM),西安交通大学 刘海岩,19,12.4 体系结构设计,1、什么是软件体系结构 随着软件系统越来越大、越来越复杂,软件设计的核心已经转移到新的计算模式,非传统的“程序算法数据结构”,新的模式就是系统总体结构的设计和规范。 软件体系结构(Architecture)为软件系统提供了一个结构、行为和属性的高级抽象。由构成系统的元素(构件)的描述、这些元素的相互作用、指导元素集成的模式以及模式的约束组成。 软件体系结构不仅指出了系统的组织结构和拓扑结构,并显示了系统需求和构成系统元素之间的对应关系,提供了一些设计决策的基本原理。,西安交通大学 刘海岩,20,软件体系结构的模型有下列几种: 结构模型:是构件、连接件(定义构件之间交互规则、消息协议的构造模块)有组织的集合。反映系统的重要语义内容,包括系统的配置、约束等。 框架模型:与结构模型类似,不侧重细节,侧重于系 统的整体结构(模式)。 动态模型:补充模型,强调系统的行为性质。 过程模型:注重系统必须适应业务和技术的过程。 功能模型:一组功能构件按层次组成,底层向上层提供服务,是一种特殊的框架模型。 这些模型可用语言(ADL)描述,也可用图形(UML)描述。,西安交通大学 刘海岩,21,2、分布式体系结构 (1)客户机服务器体系结构 客户机服务器(Client-Server ,C/S)系统是至少包含一个服务器和一个客户机的分布式系统。在分布式系统中(distributed system) ,计算由不同的程序执行,这些程序一般运行在不同的硬件上,合作完成系统的任务。 服务器就是为其他程序提供某些服务的程序,其他程序使用通讯通道与服务器相连接。客户机就是访问服务器的程序。它们之间的通信以“请求响应”的方式进行。客户机可以访问许多服务器来执行不同的功能,而服务器可以同时被许多客户机所访问。除了同步请求或接收结果的时候,客户和服务器中的控制流都是相互独立的。,西安交通大学 刘海岩,22,C/S体系结构的优点: 客户端集中处理事务中的有关输入/输出。 服务器端负责与数据处理紧密相关的业务逻辑计算, DBMS和数据操作都在同一机器上运行,效率高。 服务器只是把处理结果返回给客户端,响应速度快 (局域网)。 可在客户端处理复杂的表达。 问题: 客户端和服务器端直接连接,安全性低。 客户端程序庞大,且根据企业规则的变化随时要更新, 维护工作量大。 服务器为每个客人户建立连接,资源消耗大。 客户端和服务器端直接传输的数据量大,易造成网络阻塞。,西安交通大学 刘海岩,23,(2)浏览器/Web服务器体系结构 简称 B/S (Browser-Server)结构,实质上也是一种C/S结构。客户机通过互联网与服务器通信。 优点: 客户端采用统一的标准浏览器界面,使用方便。 简化了客户,软件开发和维护工作转移到了Web服务器, 系统易维护。 采用标准的TCP/IP协议,与其他系统连接方便。 在Web服务器端使用脚本语言编写响应页面,实现较容易。 问题: 由于B/S浏览器和HTML语言的限制,适用于文本查询系 统,不适用于处理、表达复杂系统。 需要在服务器端生成HTML页面然后下载到客户端由浏览 器解释运行,响应速度慢。,西安交通大学 刘海岩,24,(3)多层分布式体系结构 客户机服务器体系结构的一个重要变体就是多层模型。在该模型中,添加了专门完成业务处理的应用服务器,即将业务处理和数据管理彻底分离。应用服务器同客户机(通常经由Internet)和数据库服务器(出于安全原因通常在企业网络内部)通信。当访问数据库服务器时,应用服务器相当于一个客户机。(见图) 下图中互联网银行系统是使用C/S体系结构的例子。Web服务器提供应用服务如用于现金转帐、生成银行结算单和工资单等;银行的账户数据库提供数据管理服务。,西安交通大学 刘海岩,25,西安交通大学 刘海岩,26,多层分布式体系结构的优点: 中间层隔离了客户直接对数据服务器的访问,保护 了数据库的安全。 业务逻辑在应用服务器,客户端维护较少。 通过负载均衡以及中间层缓存数据的能力,可以提高 对客户端的响应速度。 系统扩展灵活。应用的各层可并行开发。业务增大 时,可在中间层部署更多的应用服务器。,西安交通大学 刘海岩,27,(4)中间件 在开发多层体系应用软件时需要中间件。中间件和系统软件是一个系统的基础,因为所有功能都是基于下列各种软件之上的: OS、DBMS、通信软件、对象分布技术、GUI设计工具、事务管理技术等。 选择并集成所获取或构造的软件产品是设计阶段关注的要点。 什么是中间件?中间件是一种独立的系统软件或服务程序,分布式应用软件借助它在不同的技术之间共享资源。中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。,西安交通大学 刘海岩,28,中间件分为以下几类: 消息中间件:控制和管理一个集成的系统,使得组成这个系统的多个应用之间通过传递消息完成整个业务流程。 事务处理中间件:协调事务在多台应用服务器上实时并发地运行。 数据存取和管理中间件:为在网络上虚拟缓冲存取、 格式转换、解压等带来方便。 Web服务中间件:对浏览器图形用户界面的功能进行扩充。 安全中间件:提供解决安全问题的特殊功能。,西安交通大学 刘海岩,29, 跨平台和构架的中间件:分布式系统中,需要集成各结点上的不同系统平台上的构件或新老版本的构件:如CORBA、JavaBeans、DCOM。 专用平台中间件:为特定领域(如电子商务、网站等)建立相应构架、配置相应的构件库和中间件,开发和运行关键任务。 网络中间件:包括网关、接入、网络测试、虚拟缓冲等。 在实际应用中根据具体的应用类型尽量使用已有的中间件产品,不但可以提高系统开发效率,还能保证软件的质量。 下图是Interbank软件公司开发的跨平台互操作的部分Java中间件及相关的层。,西安交通大学 刘海岩,30,用户管理,帐户管理,工作流管理,Java虚拟机,Web浏览器,TCP/IP,专用应用层,通用应用层,中间件层,系统软件层,Java.applet,Java.awt,Java.rmi,抽象视窗调试工具,远程消息请求,西安交通大学 刘海岩,31,客户机服务器体系结构的进一步扩展是对等模式(peer-to-peer ) 。对等系统是一个特殊的客户机服务器系统,每个构件(或子系统)既可以是客户机,又可以是服务器,其中的控制流除了在同步请求的时候,都是互相独立的。 1999年以来,P2P有了很大的改进,用户之间直接传递音乐、电影、游戏和文件等,大大的改变了人们的工作方式和生活方式。,西安交通大学 刘海岩,32,3、调用-返回式的软件体系结构 是一种集中式 控制模型。自上 而下的调用,控 制始于结构层次 的顶层,往往只 有一个控制线程。 优点是容易分析 与理解系统的控 制流,但不适合 并发执行的系统。,西安交通大学 刘海岩,33,该模型是七十年代后期由Constantine和Yourdon提出的结构化设计(Structured Design,SD) 方法产生的控制层次模型,称为软件结构图(Structured Chart) 。该方法最主要的思想是将数据流图的加工(或IDEF0图中的活动)直接转换为软件结构图中的模块,然后反复用设计概念和启发式原则对初始结构进行求精,以便产生优秀的设计结果。同时用文字或图表说明每个模块功能、处理、接口 、全局数据、设计约束等信息。 该设计模型一般反映系统大的架构(如C/S体系结构)下某个构件的软件结构。,西安交通大学 刘海岩,34,SD方法的 设计步骤 (1)精化DFD,要有足够的细节信息,便于设计; (2)确定DFD的特点(变换流、事务流)及边界; (3)将DFD逐级映射为软件结构; (4)依设计质量标准对结构进行优化; (5)描述模块功能、接口及全局数据结构; 该步骤支持迭代。 以下说明如何由DFD映射为软件结构图的步骤以及优化准则。,西安交通大学 刘海岩,35, 变换流设计 (1)一级映射,西安交通大学 刘海岩,36,(2)逐级映射 I:由变换中心边界沿输入 端路径回溯,将每个遇 到的“处理”映射成相应 层次的模块。 P:每个处理直接对应 一个下层模块。 O:由边界沿输出端路径 外推,方法与I类似。 (3)精化: 根据设计概念和原则,西安交通大学 刘海岩,37, 事务流设计,西安交通大学 刘海岩,38, 每个模块的说明 每个模块应有简要说明: 进出该模块的信息(接口描述); 模块内部的信息(功能、数据) ; 过程陈述,包括主要判定点及任务等; 对约束、限制的说明。 优化模块化设计的启发式原则: 评估软件结构的初始模型以降低耦合并提高内聚。 高层高扇出使结构最小化;当深度增加时(特别是底层)争取提高扇入。(图),西安交通大学 刘海岩,39, 将模块的作用范围限制在模块的控制范围内。 作用范围:受模块内一个判定影响的所有模块的集合。 控制范围:模块本身及其所有下属模块的集合。 (下图) 评估模块接口以降低复杂度和冗余并提高一致性。 定义功能可以预测的模块,(如对于相同的输入,输出是恒定的),但要避免过分限制模块(如数据结构的大小、控制流的选择、外部接口的模式等限制)。,西安交通大学 刘海岩,40,TOP,C,D,E,F,A,B,TOP,C,D,E,F,A,B,TOP,C,D,E,F,A,B,模块D的作用域超出控制域,模块TOP的作用域在控制域内但距离太远,使模块B、D的接口有冗余的信息,D的作用域在控制域内,西安交通大学 刘海岩,41,例:SafeHome系统的设计 将SafeHome系统的第一层DFD分解为两个子系统:传感器监测子系统和用户交互子系统。 传感器监测子系统经设计得到初始软件结构和优化后的软件结构图见ppt43、ppt44两页图:,西安交通大学 刘海岩,42,需求分析阶段建立的“传感器监测子系统”的分析图,西安交通大学 刘海岩,43,细化后的数据流图转换成初始软件结构图,西安交通大学 刘海岩,44,用户交互子系统DFD和优化后的软件结构见下两页图:,“传感器监测子系统”优化后的软件结构图,西安交通大学 刘海岩,45,西安交通大学 刘海岩,46,西安交通大学 刘海岩,47,12.5 用户界面设计,好的用户界面(UI)设计对一个系统的成功是至关重要的。 1、界面设计的黄金规则 Mandel提出了在界面设计中的三条黄金规则: 规则1: 置用户于控制之下。 指不强加给用户许多限制与约束: (1)不强迫用户执行不必要的或不希望的动作。 (2)交互的灵活性。,西安交通大学 刘海岩,48,(3)可恢复性:界面应该有一种机制来允许用户从错误中恢复。 (4)用户差异性:界面应该为不同类型用户(生疏型或熟练型)提供合适的交互功能。 (5)意外最小化:不要让用户对系统的行为感到吃惊, 类似的操作应该有类似的效果,操作的结果就是他所要的。不要让用户涉及到开发技术细节。,西安交通大学 刘海岩,49,规则2:减少用户的记忆负担 ( 1) 用户熟悉:界面所使用的术语和概念是来自于用户的经验。 ( 2)可视的提示与导航。 ( 3)在错误发生时界面应该提供有意义的反馈,并具有上下文感知能力的在线帮助功能。 规则3:保持界面的一致 显示风格一致、显示信息的设计标准一致、输入约束一致、帮助的形式一致、导航的模式一致等等。,西安交通大学 刘海岩,50,2、与界面交互的类型 Shneiderman把不同形式的交互分为5种类型: 直接操纵:用户在屏幕上直接与对象进行 交互。 菜单选择:一般情况是另一个屏幕对象同 时被选中,命令作用于这个对象。 表格填写:表格中的空白栏可能有相关菜 单,表格上有按钮,按下将启动相关操作。 命令语言:用户发出特定指令和相关参数, 指示系统做什么。 自然语言:用户用自然语言发出命令。,西安交通大学 刘海岩,51,例如:删除一个文件 直接操纵:直接拖到回收站。 菜单选择:先选定这个文件,然后选定删 除命令。 表格填写:先填入文件名,然后“按”删除 命令。 命令语言:用户发出删除指令,将文件名 作为参数。 自然语言:用户键入“删除名为xxx文件”。,西安交通大学 刘海岩,52,下表给出了这些交互类型的主要优缺点及可能的适用范围。,交互类型,主要优点,主要缺点,应用实例,直接操纵,快速和直观的交互 容易学习,较难实现,视频游戏 CAD系统,菜单选择,避免用户错误 只需要很少的键盘输入,对有经验用户操作较慢 当菜单选择很多时会变 得很复杂,绝大多数 一般用途 的系统,表格填写,简单的数据入口 容易学习,占据很多屏幕空间,库存控制 个人贷款处理,命令语言,强大灵活,较难学习 差的错误管理,自然语言,适合偶然用户 容易扩展,需要键入的太多, 理解可能有二义,系统不可靠,西安交通大学 刘海岩,53,这些交互类型可以混合使用,几种不同的交互类型可以用于相同的应用。如windows支持对图标显示的文件和目录进行直接操作与菜单选择。互联网上的用户界面一般基于HTML和Java等语言能够把程序和页面中的构件联系起来,在Web界面中直接操作可视化的实体是一种非常有效的方法。,西安交通大学 刘海岩,54,3、界面设计过程:,西安交通大学 刘海岩,55,4、提供给用户的信息表示 所有交互系统 都要提供给用户某 种方式的信息表示。 信息表示可以是输 入信息(如文本) 的直接表达, 也 可以以图形形式表 示信息。从系统中 分离出信息表示的软件,使用户屏幕上信息表示的改变不会影响到系统的主要计算。,西安交通大学 刘海岩,56,寻找最佳的信息表示方式需要有关该信息的使用者的背景和他们使用系统的方式的知识。如果需要精确的数字信息并且信息变更相对较慢,信息应该以文本形式表示(文本表示占据的屏幕空间较少)。如果数据变更的快或者数据之间关系很重要,使用图形形式表示。 5、模型-视图-控制器(MVC)模型 把用户界面中的表示、交互和实体相分离是该模型的基础。 MVC是一种用来使用户界面层和系统的其他部分分离的体系结构模式。MVC不仅有助于增强用户界面层的层内聚,而且有助于降低用户界面层与系统其余部分以及UI本身各部分之间的耦合。,西安交通大学 刘海岩,57,MVC模式使系统的功能层(模型)同用户界面的两个方面分离:视图(view)和控制器(controller)。 用户能够用适当的交互方式与每种表示形式进行交互。要显示的数据被封装到一个模型对象中。每个视图都是模型的一种显示表示方式。每个模型对象可能有许多独立的视图对象与之关联,例如表示数字数据的模型可能有一个直方图的 或一个表格的视 图。每个视图都 有一个的处理用 户输入和设备交 互的控制器对象。,西安交通大学 刘海岩,58,使用MVC模式的好处: 三个构件可独立设计。 提高内聚,降低耦合:构件之间通信信道最小且 易查找。 增加重用:视图和控制器通常会使用大量的可重 用构件作为各种UI控件。 灵活设计:很易通过改变视图或控制器来改变 UI。 可测试性设计:可脱离UI层测试应用程序。,西安交通大学 刘海岩,59,6、界

温馨提示

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

评论

0/150

提交评论