软件体系结构原理、方法与实践

目录

  • 前言
  • 一、软件体系结构概论
    • 1.1从软件危机谈起
    • 1.2构建与软件重用
    • 1.3软件体系结构的兴起与发展
  • 二、软件体系构建模型
    • 2.1.“4+1”视图模型
    • 2.2软件体系结构的核心模型
    • 2.3软件体系结构的生命周期模型
  • 三、软件体系结构风格
    • 3.1经典软件体系结构风格
    • 3.2客户/服务器风格
    • 3.3三层C/S结构风格
    • 3.4浏览/服务器风格
    • 3.8异构结构风格
  • 四、软件体系结构描述
    • 4.1软件体系结构描述方法
    • 4.3体系结构描述语言
  • 六、可扩展标记语言
    • 6.1XML概述
  • 八、基于服务的体系结构
    • 8.1SOA概述
    • 8.2面向服务的分析与设计(SOAD)
    • 8.3SOA的关键技术
    • 8.4SOA的实现方法
    • 8.5服务描述语言(WSDL)
    • 8.6统一描述、发现和集成协议(UDDI)
    • 8.7消息封装协议(SOAP)
  • 九、富互联网应用体系结构
    • 9.1RIA的概念


前言

提示:本文章内容仅是复习总结,不作为详细讲解。


一、软件体系结构概论

软件开发不仅是把程序写好就够了,还需要做前期的需求和体系结构设计,而且,前期的设计比程序编码更重要。

1.1从软件危机谈起

软件危机(Software crisis)是指计算机软件开发和维护过程中所遇到的一系列严重问题

①软件危机的表现:
1.软件成本日益增大
2.开发进度难以控制
3.软件质量差
4.软件维护困难

②软件危机的原因:
1.用户需求不明确
2.缺乏正确的理论指导
3.软件规模越来越大
4.软件复杂度越来越高

③如何克服软件危机:软件工程是用工程、科学和数学的原则和方法研制、维护计算机软件的有关技术及管理方法。软件工程包括三个要素:方法工具过程

1.2构建与软件重用

软件重用是指两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,把这种可重用的元素称作构件

构件模型及实现:构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通信接口和实现代码的复合体。
构件模型(model)是对构件本质特征的抽象描述。
构件实现时指具体实现构件功能的逻辑系统,通常也称为代码构件。

构件获取:
1.从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件
2.通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件
3.从市场上购买现成的商业构件
4.开发新的符合要求的构件

构件管理:目前已有的构建分类方法可以归纳为三大类,分别是关键字分类法刻面分类法超文本组织法

构件库系统包括5类用户:注册用户公共用户构建提交着者一般系统管理员超级系统管理员

构件重用的步骤:
1.检索与提取构件:关键字分类法刻面分类法超文本组织法
2.理解与评价构件
3.修改构件
4.构件组装:基于功能组装基于数据组装面向对象组装

层次式软件体系结构,将产品的系统构件模型定义为4个层次:
1.系统构件层。
2.通用类构件层。
3.业务构件层。
4.表现层。

产品开发过程中建立了重用的组织框构,主要由三组成员组成:构件开发组软件应用组协调组

1.3软件体系结构的兴起与发展

软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构件系统的元素描述、这些元素的相互作用、指导元素集成的模型以及这些模型的约束组成。

软件开发经历了四个阶段:
1.无体系结构设计阶段
2.萌芽阶段
3.初级阶段
4.高级阶段

二、软件体系构建模型

2.1.“4+1”视图模型

“4+1”视图是从5个不同的视角来描述软件体系结构:
1.逻辑视图:主要支持系统的功能需求,即系统提供给最终用户的服务。
2.开发视图:也称模块视图,只要侧重于软件模块的组织和管理。
3.进程视图:也称并发视图,侧重于系统的运行特性,主要关注一些非功能性需求,例如系统的性能和可用性。
4.物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。
5.场景:可以看作是那些重要系统活动的抽象,它使4个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。

软件体系结构原理、方法与实践_第1张图片

2.2软件体系结构的核心模型

体系结构的核心模型由5种元素组成:构件连接件配置端口角色。其中,构件连接件配置最基本的元素。

2.3软件体系结构的生命周期模型

各阶段的功能:
1.需求分析阶段:包括获取、生成类图、对类分组、将类打包成构件和需求评审等过程。
2.建立软件体系结构阶段:体系结构设计师主要从结构的角度对整个系统进行分析,选择恰当的构件、构件间的相互作用关系以及对它们的约束,最后形成一个系统框架以满足用户需求,为设计奠定基础。
3.设计阶段:主要是对系统进行模块化并决定描述各个构件间的详细接口、算法和数据类型的选定,对上支持建立体系结构阶段形成的框架,对下提供实现基础。
4.实现阶段:将设计阶段设计的算法及数据类型进行程序语言表示,满足设计体系结构和需求分析的要求,从而得到满足设计需求的目标系统。

软件体系结构的生命周期:
1.软件体系结构的非形式化描述
2.软件体系结构的规范描述和分析
3.软件体系结构的求精及其验证
4.软件体系结构的实施
5.软件体系结构的演化和扩展
6.软件体系结构的提供、评价和度量
7.软件体系结构的终结

三、软件体系结构风格

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。

3.1经典软件体系结构风格

①管道过滤器风格:在管道与过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的构件称为过滤器
优点:
1.使得软件构件具有良好的隐蔽性和高内聚、低耦合的特点;
2.允许设计师将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
3.支持软件重用;
4.系统维护和增强系统性能简单;
5.允许对一些吞吐量、死锁等属性的分析;
6.支持并行执行。
缺点:
1.通常导致进程成为批处理的结构;
2.不适合交互的应用;
3.因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。

②数据抽象和面向对象系统:抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和他们的响应操作封住在一个抽象数据类型或对象中。这种风格的构件是对象。
优点:
1.因为对象对其他对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其他的对象;
2.设计师可以将一些数据存取操作的问题分解成一些交互的代理程序的集合。
缺点:
1.为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。
2.必须修改所有显式调用它的其他对象,并消除由此带来的一些副作用。

③基于事件的系统:基于事件的系统风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。因此,这种风格也称隐式调用。这种风格的构件是一些模块。
优点:
1.为软件重用提供了强大的支持;
2.为改进系统带来了方便;
缺点:
1.构件放弃了对系统的控制;
2.数据交换的问题;
3.关于正确性推理的问题;

④分层系统:层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。这种风格的构件是连接件,连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
优点:
1.支持基于抽象程度递增的系统设计,使设计师可以把一个复杂系统按递增的步骤进行分解;
2.支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;
3.支持重用;
缺点:
1.并不是每个系统都可以很容易地划分为分层的模式;
2.很难找到一个合适的、正确的层次抽象方法;

⑤仓库系统及知识库:在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有很大的变化。
仓库的组成:知识源黑板数据结构控制

⑥C2风格:通过连接件绑定在一起的按照一组规则运作的并行构件网络。
规则:
1.系统中的构件和连接件都有一个顶部和一个底部;
2.构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;
3.一个连接件可以和任意数目的其他构件和连接件连接;
4.当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部;
优点:
1.系统的构件可实现应用需求,并能将任意复杂度的功能封住在一起;
2.所有构件之间的通信是通过以连接件为中介的异步消息交换机制来实现的;
3.构件相对独立,构件之间依赖性较少;

3.2客户/服务器风格

C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。

服务器负责有效地管理系统的资源,其任务集中于:
1.数据库安全性的要求;
2.数据库访问并发性的控制;
3.数据库前端的客户应用程序的全局数据完整性规则;
4.数据库的备份与恢复;

客户应用程序的主要任务是:
1.提供用户与数据库交互的界面;
2.向数据库服务器提交用户请求并接收来自数据库服务器的信息;
3.利用客户应用程序对存在与客户端服务器和客户应用程序之间的数据传输;

网络通信软件的主要作用是:完成数据库服务器和客户应用程序之间的数据传输。

C/S体系结构将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。

C/S体系结构的优点:
1.将客户应用与服务器构件分别运作在不同的计算机上;
2.易于对系统进行扩充和缩小;
3.将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
缺点:
1.开发成本高;
2.客户端程序设计复杂;
3.信息内容形式单一;
4.用户界面风格不一;
5.软件移植困难;
6.软件维护和升级困难;
7.新技术不能轻易应用;

3.3三层C/S结构风格

三层C/S体系结构是将应用功能分成表示层、功能层和数据层三个部分。与两层C/S结构相比,增加了应用服务器,可以将应用逻辑驻留在应用服务器上,而只有表示层存在与客户机上。这种结构被称为瘦客户机。

表示层:表示层是应用的用户接口部分,它负担着用户与应用间的对话功能。

功能层:功能层相当于应用的主题,它是将具体的业务处理逻辑编入程序中。

数据层:数据层就是数据库管理系统,负责管理对数据库数据的读写。

在三层C/S体系构件中,中间件是最重要的构件。

三层C/S结构的优点:
1.允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性;
2.允许更灵活有效地选用相应的平台和各个组成部分可以具有良好的可升级性和开发性。
3.三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。
4.允许充分利用功能层有效地隔开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,这就为严格的安全管理奠定了坚实的基础;整个系统的管理层次也更加合理和可控制。

3.4浏览/服务器风格

基于B/S体系结构的软件,系统安装、修改和维护全部在服务器端解决。用户在使用系统时,仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。

与C/S体系结构相比,B/S体系结构也有许多不足之处:
1.B/S体系结构缺乏相对动态页面的支持能力,没有集成有效的数据库处理功能;
2.B/S体系结构的系统扩展能力差,安全性难以控制;
3.采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远低于C/S体系结构。
4.B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用。

3.8异构结构风格

异构结构是C/S和B/S体系结构混合而成。

内外有别模型:企业内部用户通过局域网直接访问数据库采用C/S体系结构,外部用户访问数据库采用B/S体系结构。

查改有别模型:需要执行维护和修改数据操作的,使用C/S体系结构;执行一般查询和浏览操作的采用B/S体系结构。

四、软件体系结构描述

4.1软件体系结构描述方法

从本质上来说,软件体系结构的描述方法可以分为文字表达工具、数学表达工具和图形表达工具。其中,在产业界用得最多的是图形表达方式,学术界更偏向使用数学表达工具。

1.图形表达工具:对于软件体系结构的描述和表达,一种简洁易懂且使用广泛的方法是采用由矩形框和有向线段组合而成的图形表达工具。

2.模块内连接语言(MIL):采用一种或几种传统程序设计语言的模块连接起来。

3.基于软构件的系统描述语言:将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。

4.软件体系结构描述语言(ADL):参照传统程序程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言。

4.3体系结构描述语言

软件体系结构描述语言(ADL)是这样一种语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。

软件体系结构描述语言(ADL)的三个基本元素:构件连接件体系结构配置

主要的体系结构描述语言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wright等,尽管它们都描述软件体系结构,却有不同的特点。

ADL与其他语言相比:典型的ADL在充分继承和吸收传统程序设计语言的精确性和严格性特点的同时,还应该具有构造、抽象、重用、组合、异构和分析推理等各种能力和特性。
1.构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统。
2.抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节。
3.重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为系统开发和设计的可重用部件。
4.组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合。
5.异构能力:ADL允许多个不同的体系结构描述关联存在。
6.分析和推理能力:ADL允许对其描述语言的体系结构进行多种不同的性能和功能上的多种推理分析。

软件体系结构描述语言(ADL)的三个基本元素:构件连接件体系结构配置
构件:构件是一个计算单元或数据存储。
连接件:连接件是用来建立构件间的交互以及支配这些交互规则的体系结构构造模块。
体系结构配置:体系结构配置或拓扑是描述体系结构的构件与连接件的连接图。

六、可扩展标记语言

6.1XML概述

XML的特点:
1.简洁有效;
2.易学易用;
3.开放的国际化标准;
4.高效且扩充;

XML的作用:
1.使得搜索更加有意义;
2.开发灵活的Web应用软件;
3.实现不同数据的集成;
4.使用于多种应用环境;
5.客户端数据处理与计算;
6.数据显示多样化;
7.局部数据更新;
8.与现有Web发布机制相兼容;
9.可升级性;
10.压缩性高;

XML与HTML的区别:
1.HTML是一种格式化的语言,一个HTML文本可以看做是一个格式化的程序;XML是一种元标记语言。
2.HTML描述的语言或文本具有“内容+格式”的双重属性;而一段符合XML语法规范的文本则是一段“纯”数据。

八、基于服务的体系结构

8.1SOA概述

SOA是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。SOA并不是一个新鲜事物,而只是面向对象模型的一种替代。

SOA的特征:
1.松散耦合
2.粗粒度服务
3.标准化接口

SOA设计原则:
1.明确定义的接口
2.自包含和模块化
3.粗粒度
4.松耦合
5.互操作性、兼容和策略声明

8.2面向服务的分析与设计(SOAD)

从概念上讲,SOA有三个主要的抽象级别,分别是操作、服务和业务流程。

SOAD的第一层是基础设计层,第二层是体系结构层,第三层是业务层。

8.3SOA的关键技术

1.发现服务层(UDDI):发现服务层主要用来帮助客户端应用程序解析远程服务服务的位置。

2.描述服务层(WSDL):描述服务层为客户端应用程序提供正确地与远程服务交互的描述信息。

3.消息格式层(SOAP):消息格式层主要用来保证客户端应用程序和服务器端在格式设置上保持一致,一般通过SOAP来实现。

4.编码格式层(XML):编码格式层主要为客户端和服务器之间提供一个标准的、独立于平台的数据交换编码格式。

5.传输协议层(HHTP/SMTP):传输格式层主要为客户端和服务器之间提供两者交互的网络通信协议。

8.4SOA的实现方法

实现SOA的方法也比较多,其中主流方式有Web Service、企业服务总线和服务注册表。

  1. Web Service

Web Service一共有三种工作角色,其中服务提供者和服务请求者是必需的,服务注册中心是可选角色:

1.服务提供者:服务提供者是服务的所有者,该角色负责定义并实现服务,使用WSDL对服务进行详细、准确、规范的描述,并将该描述发布到服务注册中心,供服务请求者查找并绑定使用。
2.服务请求者:服务请求者是服务的使用者,虽然服务面向的是程序,但程序的最终使用仍然是用户。从体系结构的角度看,服务请求者是查找、绑定并调用服务,或与服务进行交互的应用程序。服务请求角色可以由浏览器来担当,由人或程序来控制。
3.服务注册中心:服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,而服务请求者在服务注册中心查找他们需要的服务。不过,在某些情况下,服务注册中心是整个模型中可选角色。

Web Service模型中的操作包括发布、查找和绑定,这些操作可以单次或反复出现:

1.发布:为了使用户能够访问服务,服务提供者需要发布服务描述,以便服务请求者可以查找它。
2.查找:在查找操作中,服务请求者直接检索服务描述或在注册中心查询所要求的服务类型。
3.绑定:在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系并调用服务,从而在运行时与服务进行交互。

Web Service作为SOA的实现技术时,应用系统大致可以分为6个层次,分别是底层传输层、服务通信协议层、服务描述层、服务层、业务流程层和服务注册层。

1.底层传输层:底层传输层主要负责消息的传输几只,HTTP、JMS和SMTP都可以作为服务的消息传输协议。
2.服务通信协议层:服务通信协议层的主要功能是描述并定义服务之间进行消息传递所需的技术标准,常用的标准是SOAP和REST协议。
3.服务描述层:服务描述层主要以一种统一的方式描述服务的接口与消息交换方式,相关标准是WSDL。
4.服务层:服务层的主要功能是将遗留系统进行包装,并通过发布的WSDL接口描述被定位和调用。
5.业务流程层:业务流程层的主要功能是支持服务发现,服务调用和点到点的服务调用,并将业务流程从服务的底层调用抽象出来。
6.服务注册层:服务注册层的主要功能是使服务提供者能够通过WSDL发布服务定义,并支持服务请求者查找所需的服务信息。相关标准是UDDI。

  1. 服务注册表

服务注册表支持服务注册、服务位置和服务绑定功能:

1.服务注册:服务注册是指服务提供者向服务注册表发布服务的功能,包括服务身份、位置、方法、绑定、配置、方案和策略等描述性属性。
2.服务位置:服务位置是指服务使用者,帮助他们查询已注册的服务,寻找符合自身要求的服务。
3.服务绑定:服务使用者利用查找到的服务合约来开发代码,开发的代码将与注册的服务进行绑定,调用注册的服务,以及与它们实现互动。

  1. 企业服务总线(ESB)

ESB的概念是从SOA发展而来的,它是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。

ESB具有以下功能:

1.支持异构环境中的服务、消息和基于事件的交互,并且具有适当的服务级别和可管理性。
2.通过使用ESB,可以在几乎不更改代码的情况下,以一种无缝的非侵入方式使现有系统具有全新的服务接口,并能够在部署环境中支持任何标准。
3.充当缓冲器的ESB与服务逻辑相分离,从而使不同的系统可以同时使用同一个服务,无须在系统或数据发送变化时,改动服务代码。
4.在更高的层次,ESB还提供诸如服务代理和协议转换等功能。
5.提供可配置的消息准换翻译机制和基于消息内容的消息路由服务,传输消息到不同目的地。
6.提供安全和拥有者机制,以保证消息和服务使用的认证、授权和完整性。

ESB具有以下优势:

1.扩展的、基于标准的连接;
2.灵活的、服务导向的应用集合;
3.提高服用率,降低成本;
4.减少市场反应时间,提高生产率;

8.5服务描述语言(WSDL)

WSDL是服务进行描述的语言,它有一套基于XML的语法定义。服务接口定义和服务实现定义结合在一起,组成了完整的WSDL定义。

8.6统一描述、发现和集成协议(UDDI)

UDDI是一种用于描述、发现、集成Web服务的技术,它是Web服务协议栈的一个重要部分。

在UDDI技术规范中,主要包括以下三个部分:
1.UDDI数据模型:是一个用于描述业务组织和Web服务的XML Schema。
2.UDDI API:是一组用于查找或发布UDDI数据的方法,UDDI API基于SOAP。
3.UDDI注册服务:是Web服务中一种基础设施,UDDI注册服务对应着服务注册中心的角色。

建立UDDI条目时,需要确定以下事项:
1.确定Web服务的tModel(WSDL文档);
2.确定组织名称、简介以及所提供的Web服务的主要联系方法;
3.确定组织正确的表示和分类;
4.确定组织通过UDDI提供的Web服务;
5.确定所提供的Web服务的正确分类;

8.7消息封装协议(SOAP)

SOAP是以XML形式提供一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。

SOAP包括以下四个部分:
1.SOAP封装结构;
2.SOAP编码规则;
3.SOAP RPC表示;
4.SOAP绑定;

九、富互联网应用体系结构

9.1RIA的概念

传统Web应用程序存在以下几个缺点:
1.操作复杂性;
2.数据复杂性;
3.交互复杂性;

富互联网应用(RIP)是Web开发和部署模式的一种演变。“富”的含义有两种,分别是丰富的数据模型和丰富的用户界面。

你可能感兴趣的:(软件体系结构原理方法实践,其他)