1、第4章 系统体系结构设计,4.1 系统设计的核心内容 4.2 软件体系结构的概念 4.3 软件体系结构的风格4.4 软件体系结构设计 4.5 模块设计 4.6 小结,4.1 系统设计的核心内容,软件系统设计的5个核心内容: 体系结构设计 模块设计(对象或类设计) 用户界面设计 数据库设计 数据结构和算法设计(也称详细设计),依据“分而治之”的思想,把系统设计过程划分为三个阶段:高层设计阶段、概要设计阶段和详细设计阶段。高层设计阶段的重点是体系结构设计。概要设计阶段的重点是模块设计(对象和类设计)、用户界面设计、数据库设计。详细设计阶段主要进行数据结构和算法设计。设计工作流程如图4.1所示。,图
2、4.1 系统设计过程示意图,4.2 软件体系结构的概念,4.2.1 软件体系结构的兴起软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。,4.3 软件体系结构的风格,4.3.1 软件体系结构的风格概述体系结构设计表示计算机系统的基础架构,主要从高层描述各组成部分的关系以及它们的接口。 核心问题是能否使用重复的体系结构模式,常见的软件体系结构风格有: (1) 经典软件体系结构
3、风格 (2) 客户机/服务器风格,也称两层客户机/服务器结构。 (3) 三层客户机/服务器结构风格。 (4) 浏览器/服务器风格。 (5) 公共对象请求代理体系结构。,(6) 正交软件体系结构。 (7) 基于层次消息总线的体系结构风格。 (8) 异构结构风格。 (9) 互连系统构成的系统及其体系结构。 (10) 特定领域软件体系结构。,4.3.2 两层客户机/服务器结构 客户机/服务器(Client/Server 简称C/S)结构,是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,客户机/服务器结构将应用一分为二,由服务器提供应用(数据)服务,多台客户机进行连接。,两
4、部分各自完成不同的功能并充当不同的角色。客户为完成特定的工作向服务器发出请求,而服务器接受客户的请求,并将处理结果返送给客户。两个部分协作完成一个共同的任务。,客户机/服务器体系结构存在以下几个局限:(1) 两层客户机/服务器结构是单一服务器且以局域网为中心的,所以难以扩展至大型企业广域网或Internet; (2) 软、硬件的组合及集成能力有限;,(3) 客户机的负荷太重,难以管理大量的客户机,系统的性能容易变坏;(4) 数据安全性不好。,(5) 系统客户方软件安装维护困难、数据库系统的无法满足对于成百上千的终端同时联机的需求、由于客户机/服务器间的大量数据通信不适合远程连接,使其只能适合于
5、局域网应用。,采用客户机/服务器结构,服务器的操作系统不但可以为WINDOWS系统服务器,也可以是UNIX、LINUX服务器,除了服务器端安装及维护方式不同外,客户端安装及连接服务器方式同连WINDOWS服务器方式没有区别。,一般用于客户机在50台以下的管理信息系统,客户机采用Visual Basic或Delphi编写,服务器采用SQL Server、DB2、ORACLE等大型数据库管理系统。,在两层客户机/服务器结构中,每一个客户端都存在数据引擎,并且每个客户端与数据库服务器建立独立的数据库连接。,4.3.3 三层客户机/服务器结构 客户机上只需安装具有用户界面和简单的数据处理功能的应用程序
6、,负责处理与用户的交互和与应用服务器的交互。应用服务器负责处理商业和应用逻辑,具体地说就是接受客户端应用程序的请求,然后根据商业和应用逻辑将这个请求转化为数据库请求后与数据库服务器交互,并将与数据库服务器交互的结果传送给客户端应用程序。,数据库服务器软件根据应用服务器发送的请求进行数据库操作,并将操作的结果传送给应用服务器。应用服务器成为客户机与数据库服务器的中间桥梁。三层客户机/服务器应用软件的模型如图4.5所示。,图4.5 三层结构的客户机/服务器系统,三层客户机/服务器结构的优点是: (1) 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提
7、高系统和软件的可维护性和可扩展性。,(2) 整个系统被分成不同的逻辑块,层次清晰,一层的改动不会影响其他层次;,(3) 允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。被分成三层的应用基本上不需要修正。,(4) 能够使“肥胖”的客户机变得较“瘦”一些;(5) 开发和管理工作向服务器端转移,使得分布的数据处理成为可能;,(6) 管理和维护变得相对简单。(7) 三层客户机/服务器结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。,(8) 允许充分利用功能层有效地隔离开表示
8、层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,这就为严格的安全管理奠定了坚实的基础,整个系统的管理层次也更加合理。,在三层客户机/服务器结构中,由于数据访问是通过功能层进行的,因此客户端不再与数据库直接建立数据连接。也就是说,建立在数据库服务器上的连接数量将大大减少。,4.4 软件体系结构设计,4.4.1 软件体系结构设计原则一个软件系统的体系结构设计的好不好,可以用合适性、结构稳定性、可扩展性、可复用性等特征来评估。 (1) 合适性 (2) 结构稳定性 (3) 可扩展性 (4) 可复用性,4.4.2 体系结构的选择 体系的选取有如下几点关键问题: (1)
9、 是单机还是客户机/服务器系统? (2) 是常规应用开发还是底层开发(是否有单片机系统)? (3) 客户机最大终端数是多少?,(4) 是否提供给第三方应用编程接口? (5) 网络(或数据通信)是什么连接方式? (6) 数据文件的保存方式(文本、本地数据库、大型数据库)?,4.4.3 技术选型 (1) 主要硬件环境 (2) 操作系统 (3) 应用系统内的各种服务器软件 (4) 开发语言及开发工具 (5) 计算机辅助设计软件,体系结构设计的主要步骤如图4.7所示。,4.4.4 体系结构设计步骤,(1) 设计准备 (2) 确定影响系统设计的约束因素 (3) 确定设计策略 (4) 系统分解与设计 (5
10、) 撰写体系结构设计文档 (6) 设计评审,图4.9 三层客户机/服务器的基本结构,4.4.5 三层客户机/服务器结构的应用,4.5 模块设计,4.5.1 模块与模块化“模块化”是指:将系统分解为一系列功能模块,然后逐一实现这些模块,最后把所有的模块集成为原来的系统。这样做的好处是能够大大降低系统的开发难度。,4.5.2 模块设计原则(1) 信息隐蔽 (2) 高内聚 (3) 低耦合,4.5.3 模块设计步骤,(1) 设计准备 (2) 模块设计 接口设计 数据结构与算法设计,4.6 小结,软件系统设计的核心内容包括软件体系结构设计、对象或类设计、用户界面设计、数据库设计、详细设计。软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。,常见的软件体系结构风格有经典软件体系结构风格,如管道和过滤器;两层客户机/服务器结构风格;三层客户机/服务器结构风格;浏览器/服务器风格等等。,软件系统的体系结构设计的原则是满足合适性、结构稳定性、可扩展性、可复用性。模块设计的基本原则是信息隐蔽、高内聚、低耦合。,