系统架构与设计V1.1



《系统架构与设计V1.1》由会员分享,可在线阅读,更多相关《系统架构与设计V1.1(88页珍藏版)》请在文档大全上搜索。
1、SYSTEM ARCHITECTURE AND DESIGN 2目录常用的软件架构风格及适用情况分析 SOA 及分层架构设计架构设计实践常用的软件架构风格及适用情况分析 4 软件架构 软件框架 常见的架构风格5软件架构概论 系统架构是一个软件系统从整体到部分的最高层次的划分。 一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。 详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)。所谓架构元素,也就是组成系统的核心砖瓦,而联结器则描述这些元件之间通讯的路径
2、、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。6 建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。 在建造一个系统之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改。显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过慎重的研究和考察。7架构的目标 可靠性(Reliable): 软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。 安全性(Secure) : 软件系统所承担的交易的商业价值极高,系统的安全性非常重要。 可伸缩性(Scalable) : 软件
3、必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。8架构的目标 可定制化(Customizable) : 同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。 可扩展性(Extensible): 在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展 可维护性(Maintainable): 软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。9 客户体验(Customer Experience): 软件系统必须易于
4、使用。 市场时机(Time to Market): 软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。10架构的种类 根据我们关注的角度不同,可以将架构分成三种: 逻辑架构 物理架构 系统架构11逻辑架构 软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件等等。12物理架构 软件元件是怎样放到硬件上的 下图描述了一个分布于北京和上海的分布式系统的物理架构,图中所有的元件都是物理设备,包括网络分流器、代理服务器、WEB服务器、应用服务器、报表服务器、整合服务器、存储服务器、主机等等。13系统架构 系统的非功能性特征,如可扩展性、可靠性、
5、强壮性、灵活性、性能等。 系统架构的设计要求具备软件和硬件的功能和性能的过硬知识,这一工作是架构设计工作中最困难的工作。14架构的两要素 元件划分和设计决定。 逻辑元件: 一个软件系统中的元件首先是逻辑元件。这些逻辑元件如何放到硬件上,以及这些元件如何为整个系统的可扩展性、可靠性、强壮性、灵活性、性能等做出贡献,是非常重要的信息。 设计决定: 进行软件设计需要做出的决定中,必然会包括逻辑结构、物理结构,以及它们如何影响到系统的所有非功能性特征。这些决定中会有很多是一旦作出,就很难更改的。 基于数据库的系统架构: 一般有多少个数据表,就会有多少页的架构设计文档。比如一个中等的数据库应用系统通常含
6、有一百个左右的数据表,这样的一个系统设计通常需要有一百页左右的架构设计文档。15软件框架 什么是框架 框架与架构的区别 常见的框架16框架 什么是框架? 框架,即framework。是某种应用的半成品,就是一组组件,供选用完成自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 框架与架构的区别? 并无明确的定义,但一般从层的观点看,认为框架是底层的,接近系统的。软件开发者在其上构建自己的软件架构,开发自己的应用程序。17为什么要用框架 因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用成熟的框架,可以
7、避免重复做已有的基础工作,而只需要集中精力完成系统的业务逻辑设计。 框架一般是成熟,稳健的,可以处理系统很多细节问题,比如,事务,安全性,数据流控制等问题。 框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,使用框架的开发者可以直接享受别人升级代码带来的好处。 框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。 18常见的框架 常见的JAVA框架 常见的.Net框架 其它基于C+的框架19常见的JAVA框架 EJB Struts Spring Hibernate IBatis JSF.20不同层次的模式 架构模式或风格(Architectural P
8、attern) 设计模式(Design Pattern) 代码模式(Coding Pattern)21 区别:在于三种不同的模式存在于它们各自的抽象层次和具体层次。 架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质。架构模式的好坏可以影响到总体布局和框架性结构。 设计模式是中等尺度的结构策略。这些中等尺度的结构实现了一些大尺度组件的行为和它们之间的关系。模式的好坏不会影响到系统的总体布局和总体框架。设计模式定义出子系统或组件的微观结构。 代码模式是特定的范例和与特定语言有关的编程技巧。代码模式的好坏会影响到一个中等尺度组件的内部、外部的结构或行为的底层细节,但不会影响到一个部件或
9、子系统的中等尺度的结构,更不会影响到系统的总体布局和大尺度框架。22几种典型的架构模式 系统软件 分层(Layer) 管道和过滤器(Pipes and Filters) 黑板(Blackboard) 开发分布式软件 经纪人(Broker) 客户/服务器(Client/Server) 点对点(Peer to Peer) 交互软件 模型-视图-控制器(Model-View-Controller) 显示-抽象-控制(Presentation-Abstraction-COntrol)23其它 面向对象风格(ADT) 基于消息广播且面向图形用户界面的Chiron2风格 基于事件的隐式调用风格(Event
10、-based, Implicit Invocation) 24分层(Layer) 从不同的层次来观察系统,处理不同层次问题的对象被封装到不同的层中。 软件为什么要分层?为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源 面向对象的、基于模块化的组件设计需要能够方便地修改应用程序的各个部分。完成这一目标的一种好方法就是在层上工作,将一个应用程序的主要功能分离到不同的层或者级中。25分层模型 从本质上讲,层代表了一个应用程序主要的功能。一般地,我们将应用程序功能分为三个方面,对应3层架构模式。它们是数据层(data layer)、商务层(business laye
11、r)和表示层(presentation layer)。 数据层:包含数据存储和与它交互的组件或服务。这些组件和服务在功能上和中间层相互独立(尽管在物理上不必一定相互独立-它们可以在同一台服务器上)。 中间层:包括一个或者多个组件服务,它们应用商务规则、实现应用程序逻辑并完成应用程序运行所需要的数据处理。作为这个过程的一部分,中间层负责处理来自数据存储或者发送给数据存储的数据。26 表示层:从中间层获得信息并显示给用户。该层同时也负责和用户进行交互,比较返回的信息并将信息回送给中间层进行处理。 数据层从数据库中获得较为原始的数据,商务层把数据转换成符合商务规则的有意义的信息,表示层把信息转换成对