11软件系统结构及其演变北京大学信息科学技术学院张宁20102主要内容软件体系结构软件体系结构发展史软件体系结构的定义关于架构的几个基本概念应用开发模型应用程序的功能模块划分典型的应用程序开发模型两层模型和三层模型的比较电子商务系统架构设计商务模型规划商务系统规划软件系统架构设计设计目标架构的种类结构设计架构师网站应用开发实践网站架构设计实践B2B平台会员系统的设计与实践客户与服务器端的应用开发实践23软件体系结构:发展历史20世纪69年代结构化的软件开发方法1969年,Brooks提出“概念结构”,将体系结构和实现区分开来体系结构——“一组系统的公共描述”20世纪90年代专业化的软件体系结构——基于构件的软件开发4软件体系结构:发展历史四个阶段“无体系结构”特征:以汇编语言进行小规模应用程序开发萌芽阶段特征:出现程序结构设计主题,以控制流程图和数据流图构成软件结构初期阶段特征:出现从不同侧面描述系统的结构模型,以UML为典型代表高级阶段特征:以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分出体系结构模型与传统的软件结构的界限,以Kruchten提出的“4+1”模型为标志35软件体系结构:定义迄今没有一个为大家公认的定义Perry&Wolf,1992SA={元素,形式,准则}软件体系结构是具有一定形式的体系结构元素(element),包括处理元素、数据元素和廉洁元素软件体系结构形式(Form)由专有特性(Property,用于限制软件体系结构元素的选择)和关系(Relationship,用于限制软件体系结构元素组合的拓扑结构)组成,而在多个体系结构方案中选择合适的体系结构方案则是基于一组准则(Rationale)6软件体系结构:定义Garlan&Shaw,1994SA={构件,连接件,约束}构件(Component):是一组代码或一个独立的程序,是相关对象的集合,运行后实现某种计算逻辑,构件相对独立,仅仅通过接口与外部相互作用,其定制和规范化对实现构件的复用具有重要的意义连接件(Connector):表示构件之间的相互作用,可以是过程调用、管道、远程过程调用等,它将不同的构件连接起来以构成体系结构的一部分约束(Constrain):一般为对象连接时的规则,或指明构件连接的势态和条件47软件体系结构:定义Bass,1998是一个或一组结构(Structure),包括软件构件、构件的外部的可见特性(指软件构件提供的服务、性能、特性、错误处理、共享资源使用等)及其相互关系IEEE610.12,1990软件工程标准词汇中的定义,1998SA={构件,连接件,环境,原理}是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容涉及与演化的原理8软件体系结构:定义Booch,Rumbaugh和Jacobson,1999SA={组织,元素,子系统,风格}是一组关于如下问题的重要决策软件系统的组织构成系统的结构元素及其接口的选择元素在相互协作中明确表现的行为这些结构和行为元素的组装以形成更大的子系统引导这种组织(静态和动态元素,以及它们的接口、协作和组装)的体系结构风格不仅关注结构和行为,也关注使用、功能、性能、弹性、复用、可理解性、经济和技术约束以及折中的考虑前述各定义的共性:构件、构件之间的关系、限制、构件和连接件构成的拓扑结构、设计原则与指导方针59软件体系结构:基本定义模块(Module)指一组完成制定功能的语句,包括输入、输出、逻辑处理功能、内部信息、运行环境组件(Component)指系统中相当重要的、几乎是独立的可替换部分,它在明确定义的架构环境中实现确切的功能模式(Pattern)指经过验证,至少适用于一种环境(更多是几种环境)的解决方案模版(用于结构和行为),是针对特定问题的解。例如:UML中,模式由参数化的协作表示(但UNL不直接对模式的其他方面,如使用结果列表、使用图标等)进行建模存在不同范围和抽象程度的模式:架构模式、分析模式、设计模式、代码模式、实施模式等、系统结构设计中的层模式、分布式系统中的代理模式、交互系统中的MVC模式10软件体系结构:基本定义架构模式(ArchitecturePattern)表示软件系统的基本结构和组织方案,提供一组预定义的子系统,并制定它们的职责,包括用于组织其间关系的规则和指导层(Layer)是对模型中同一抽象层次上的包进行分组的一种特定方式,是在逻辑上讲子系统划分成许多集合,而层间关系的形成要遵循一定的规则通过分层,限制子系统间的依赖关系,使系统以更松散的方式耦合,以便于维护611软件体系结构:基本定义系统分层的常用方法常用3层服务:用户层、业务逻辑层、技术层多层结构的技术组成模型:表现层、中间层、数据层网络系统常用的3层结构:核心层、汇聚层、接入层RUP典型分层方法:应用层、专业业务层、中间件层、系统软件层基于Java的B/S模式系统结构:浏览器端、服务器端、请求接收层、请求处理层某种6层结构:功能层(用户界面)、模块层、组装层(软件总线)、服务层(数据处理)、数据层、核心层12软件体系结构:基本定义架构(Architecture)原意为建筑学设计和建筑物建造的艺术与科学是系统在其所处环境中的昀高层次的概念软件系统的架构是通过接口交互的重要构件的组织或结构,这些构件又由一些更小的构件和接口组成软件系统的架构(在RUP中定义)是指系统重要构件的组织或结构,这些构件通过接口和不断减小的构件与接口所组成的构件进行交互;架构(在《软件构架实践》中)定义为某个软件或者计算机系统的软件架构即组成该系统的一个或多个结构,它们组成软件的各个部分,形成这些组件的外部可见属性及相互间的联系架构(在IEEE1471-2000中)定义为:thefundamentalorganizationofasystemembodiedinitscomponents,theirrelationshipstoeachother,andtotheenvironmentandtheprinciplesguidingitsdesignandevolution713软件体系结构:基本定义架构的描述方式“4+1”视图(即用例视图、设计视图、实现视图、过程视图、配置视图)是一个被广为使用的架构描述的模型RUP过程的架构描述模版在“4+1”视图的基础上增加了可选的数据视图结构软件结构是多种结构的体现,结构是系统架构从不同角度观察所产生的视图软件架构也表现为多种结构常见的软件结构有模块结构、逻辑或概念结构、进程或协调结构、物理结构、使用结构、调用结构、数据流、控制流、类结构等14应用开发模型应用程序的功能模块划分用户界面(Interface)业务逻辑(BusinessLogic)数据存储(DataStorage)用户界面业务逻辑数据存储815应用开发模型典型的应用程序开发模型单层应用模型(Monolithic)两层主从式客户/服务器模型(Two-tierClient/Server)多层应用模型(Multi-tierClient/Server)分布式系统应用模型和基于Web的多层应用模型(Web-basedMulti-tierClient/Server)单层应用模型数据表示业务逻辑数据存储。。。。。大型机是业务应用的核心,用户使用哑终端几乎所有数据都由大型中央计算机处理(如大型计算中心/计算站等)编写的应用软件没有将数据表示、业务逻辑、数据存储分开,几乎所有功能集中在大型机上运行是IBM大型机统治的的时代大型主机哑终端917应用开发模型个人计算机的出现20世纪80年代初非集中化计算的趋势(Decentralization)各厂家品牌PC机的多样性(Vendorsproliferate)PC厂商自己的标准(Proprietarystandards)18应用开发模型两层主从式客户/服务器模型(Two-tierClient/Server)。。。数据表示业务逻辑数据存储业务逻辑基于资源不对等,且为实现共享而提出充分利用PC具备的一定的运算处理能力将传统大型机上的用户界面和部分业务逻辑模块转移到PC端20世纪80年代初期伴随着局域网的出现和大规模应用降低系统的通信开销,减轻大机的运算处理负载1019应用开发模型两层主从式客户/服务器模型(Two-tierClient/Server)的优势:复杂度降低:以组件为基础,将前端的客户机界面和后端的服务器明确区分开来,从而降低整个系统设计和实现的复杂性,提高了应用程序的灵活性(注意:不便维护)请求/回应的运作方式:前端客户机与后端服务器系统直接通信,客户端向服务器端发出数据请求,服务器端运用自身的数据处理机制处理请求,并将数据返回客户端应用程序,客户端接收后在经由逻辑运算或业务规则加以处理后显示给终端用户20应用开发模型两层主从式客户/服务器模型(Two-tierClient/Server)的缺点逻辑运算和业务规则缺乏灵活性与扩充性:面对变化客户端必须重新开发和部署(如SQL语句随着业务逻辑和数据库的变化而不得不重新编写客户端程序并发布)服务器数据处理过分依赖数据库系统系统无法有效的扩展:二层C/S结构是单一服务器且以局域网为中心的,所以难以扩展至大型企业广域网或Internet数据安全性不好:因为客户端程序可以直接访问数据库服务器,那么,在客户端计算机上的其他程序也可想办法访问数据库服务器,从而使数据库的安全性受到威胁软、硬件的组合及集成能力有限,难以提供良好的分布处理效率数据处理/数据事务的容量与缓冲能力有限:服务器的负荷太重,难以管理大量的客户机(一般少于100个客户端),系统的性能容易变坏02550751001251501752002252503000100200300400500801001201401601802002202-Tiered3-Tiered2层次3层次开发和维护的费用用户数应用复杂度应用生命期资料来源:GartnerGroup1121应用开发模型两层主从式客户/服务器模型(Two-tierClient/Server)在面对Internet普及时遇到的问题为了维持竞争性,IT系统必须对业务和用户需求的变化做出及时的响应应用程序可能通过广域网(WAN)或Internet分布在全球范围内数以万计的潜在用户,并且大多数时这些潜在的用户是未知的,超出了部门的IT机构的可控范围用户和应用程序间的连接可能是非持久性的和低速的应用程序所需要的数据可能存储在(分布在广阔地理区域的)多台机器上,并且可能不是全天可用软硬件投资的考虑,客户端机器类别的差异,数据源的异构,新的应用程序需要与运行在不同平台上的现有应用程序进行交互……22从两层C/S结构到三层客户/服务结构数据库式思路---企业整体应用架构思维管理数据---管理企业应用客户请求数据---客户请求应用服务Tier1Tier2RDBMSPresentation&BusinessClientDataRequestSQL服务请求客户机应用服务器RDBMSQueuesMainframe层次一层次二层次三数据访问客户界面商业逻辑数据/资源3层次的结构着重在客户端的请求服务而不是数据122302550751001251501752002252503000100200300400500801001201401601802002202-Tiered3-Tiered2层次3层次开发和维护的费用用户数应用复杂度应用生命期资料来源:GartnerGroup。。。数据表示数据存储业务逻辑优势瘦客户端,很容易在运行时自动升级事务层可以在跨平台的客户端上共享不同逻辑组件的分离意味着各层可以独立设计和开发统一的、抽象的用