软件体系结构复习大纲

第1章 软件体系结构概论

第2章 软件体系结构建模

第3章 软件体系结构风格

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式
体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统

数据流风格:批处理序列;管道/过滤器
调用/返回风格:主程序/子程序;面向对象风格;层次结构
独立构件风格:进程通讯;事件系统
虚拟机风格:解释器;基于规则的系统
仓库风格:数据库系统;超文本系统;黑板系统

经典软件体系结构风格 – 管道与过滤器 – 优点
使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;
允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;
系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;
允许对一些如吞吐量、死锁等属性的分析;
支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。
经典软件体系结构风格 – 管道与过滤器 – 缺点
通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换;
不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重;
因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。

第4章 软件体系结构描述

图形表达工具、模块内连接语言、基于软构件的系统描述语言、软件体系结构描述语言
IEEE P1471标准——软件体系结构描述框架标准

ADL(architecture description language)在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。
包括三个基本元素:
构件:计算或数据存储单元
连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则
体系结构配置:描述体系结构的构件与连接件的连接图

构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统;
抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节;
重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;
组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合;
异构能力:ADL允许多个不同的体系结构描述关联存在;
分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。

Unicon、Wright、C2、SADL

C2和其提供的设计环境(Argo)支持采用基于时间的风格来描述用户界面系统,并支持使用可替换、可重用的构件开发GUI的体系结构。
在C2中,连接件负责构件之间消息的传递,而构件维持状态、执行操作并通过两个名字分别为“top”和“bottom”的端口和其它的构件交换信息。
每个接口包含一种可发送的消息和一组可接收的消息。构件之间的消息要么是请求其它构件执行某个操作的请求消息,要么是通知其他构件自身执行了某个操作或状态发生改变的通知消息。
构件之间的消息交换不能直接进行,而只能通过连接件来完成。每个构件接口最多只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连。
请求消息只能向上层传送而通知消息只能向下层传送。
通知消息的传递只对应于构件内部的操作,而和接收消息的构件的需求无关。
C2对构件和连接件的实现语言、实现构件的线程控制、构件的部署以及连接件使用的通讯协议等都不加限制。
C2对构件接口的描述

C2对构件的描述

第5章 统一建模语言

UML(Unified modeling language)
结构组成有构造快、公共机制和规则
包含逻辑视图、进程视图、实现视图、部署视图、用例视图

事物(建模元素):结构事物(静态)、行为事物(动态)、分组事物、注释事物
关系:依赖、关联、泛化、实现

用例之间的关系:包含关系、扩展关系
类之间的关系:关联关系、依赖关系、泛化关系、聚合关系、组合关系、实现关系将说明和实现联系起来、流关系将一个对象的两个版本以连续的方式连接起来

类图、对象图、构件图、组合结构图、用例图、顺序图、通信图、定时图、状态图、活动图、部署图、制品图、包图、交互概览图
类图:

用例图:

顺序图:

通信图:

定时图:

状态图:

基本活动图:

带泳道的活动图:

交互概览图:

构件图:

部署图:

第6章 可扩展标记语言

第7章 动态软件体系结构

Dynamic Software architecture
体系结构的动态性分为:交互式动态性、结构化动态性、体系结构动态性
当前的主流体系结构模型CORBA、EJB、DCOM等都不支持体系结构的动态更新
基于构件的动态系统结构模型支持运行系统的动态更新,分为应用层、中间层、体系结构层
与静态体系结构相比,动态体系结构具有可构造性、适应性、智能性等动态特征
第8章 基于服务的体系结构
SOA的定义:
W3C:SOA是一种应用程序体系结构,在这种体系结构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。
Service-architecture.com:服务是精确定义、封装完整、独立于其它服务所处环境和状态的函数。SOA本质上是服务的集合,服务之间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务之间需要某些方法进行连接。
Gartner:SOA是一种C/S体系结构的软件设计方法,应用由服务和服务使用者组成,SOA与大多数通用的C/S体系结构模型不同之处,在于它着重强调构件的松散耦合,并使用独立的标准接口。
SOA(Service-Oriented Architecture)是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法

SOA模型示例

单个服务的内部结构

SOA的特征:松散耦合;粗粒度服务;标准化接口

服务构件与传统构件:
服务构件体系结构(SCA)是基于SOA的思想描述服务之间组合和协作的规范,它描述用于使用SOA构建应用程序和系统的模型。它可简化使用 SOA 进行的应用程序开发和实现工作。SCA 提供了构建粗粒度构件的机制,这些粗粒度构件由细粒度构件组装而成。SCA将传统中间件编程从业务逻辑分离出来,从而使程序员免受其复杂性的困扰。它允许开发人员集中精力编写业务逻辑,而不必将大量的时间花费在更为底层的技术实现上
SCA服务构件与传统构件的主要区别在于,服务构件往往是粗粒度的,而传统构件以细粒度居多;服务构件的接口是标准的,主要是服务描述语言接口,而传统构件常以具体API形式出现;服务构件的实现与语言是无关的,而传统构件常绑定某种特定的语言;服务构件可以通过构件容器提供QoS的服务,而传统构件完全由程序代码直接控制

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

SOA的三个抽象级别:操作、服务、业务流程

面向服务的分析与设计

SOA的关键技术
发现服务层 UDDI、DISCO
描述服务层 WSDL、XML Schema
消息格式层 SOAP、REST
编码格式层 XML
传输协议层 HTTP、TCP/IP、SMTP等

SOA的实现方法 – Web服务

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

SOA的实现方法 – 企业服务总线 – 模型

SOA的实现方法 – 企业服务总线 – 功能
提供位置透明性的消息路由和寻址服务
提供服务注册和命名的管理功能
支持多种的消息传递范型
支持多种可以广泛使用的传输协议
支持多种数据格式及其相互转换
提供日志和监控功能

SOA的实现方法 – 企业服务总线 – 优势
扩展的、基于标准的连接。
灵活的、服务导向的应用组合
提高复用率,降低成本
减少市场反应时间,提高生产率

第9章 富互联网应用体系结构

传统web应用程序存在以下缺点:
操作复杂性;数据复杂性;交互复杂性

RIA(rich internet application)是web开发和部署模式的一种演变
丰富的数据模型和丰富的用户界面
丰富的数据意味着客户端的用户界面能表现和应对更多更复杂的数据模式,这样才能处理客户端的运算以及异步发送、接受数据。为了达到高度复杂的数据模式,客户端允许用户构建一个高响应、交互式的应用程序。
丰富也指RIA能提供更多的改良界面。HTML只能为用户的界面控制提供有限的功能,反之,RIA允许一些富有创造性的界面控制,巧妙的与数据模式相合。
丰富的结果是用户可以创建一个客户端界面,这样更容易反映丰富性与复杂性共存的数据和逻辑。

RIA的优点
RIA结合了C/S架构反应速度快、交互性强的优点,以及B/S架构传播范围广及容易传播的特性
RIA简化并改进了B/S架构的用户交互
数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面
RIA可以继续使用现有的应用程序模型(包括J2EE和.NET),因而无需大规模替换现有的Web应用程序。通过RIA技术,可以轻松构建更为直观、易于使用、反应更迅速并且可以脱机使用的应用程序
RIA可以帮助企业提供多元化的重要业务效益,包括提高产品销量、提高品牌忠诚度、延长网站逗留时间、较频繁的重复访问、减少带宽成本、减少支持求助以及增强客户关系等
典型的web部署系统(传统)
典型的富客户端模型(RIA)

RIA客户端开发技术:Flex、AJAX、Laszlo、Avalon、Java SWT、XUL、Bindows、Oracle Forms

AJAX技术:基于XHTML和CSS标准的表示;使用DOM进行动态显示和交互;使用XMLHttpRequest与服务器进行异步通信;使用JavaScript绑定一切
优点:能在不更新整个页面的前提下维护数据,这使得Web系统更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息
缺点:破坏浏览器“后退”按钮的正常行为;用户难以将某个特定的状态保存到收藏夹中

第十二章 基于体系结构的软件开发

模式是给定上下文中普遍问题的普遍解决方案,在软件开发方面,分为高层的模式与低层的模式,由高层到低层具体包括体系结构模式、设计模式和惯用法等。

设计模式(design pattern):设计模式主要关注软件系统的设计,与具体的实现语言无关。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式的目的是为了提高代码的重用性,让代码更容易被他人理解,并保证代码可靠性。

MVC模式把交互系统的组成分解成模型、视图、控制三种构件。模型构件独立于外在显示内容和形式,是软件所处理的问题逻辑的内在抽象,它封装了问题的核心数据、逻辑和功能的计算关系;视图构件把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户;控制构件处理用户于软件的交互操作,其职责是决定软件的控制流程,确保用户界面与模型间的对应联系。

一个好的设计模式要做到:1.解决一个问题2.是一个被证明了的概念 3.解并不是显然的 4.描述了一种关系 5.模式有重要的人为因素

设计模式有模式名称、问题、解决方案和效果4个基本成分
模式名称通常用来描述一个设计问题、它的解法和效果
问题告诉人们什么时候要使用设计模式、解释问题及其背景
解决方案描述设计的基本要素:它们的关系、各自的任务以及相互之间的合作
效果描述应用设计模式后的结果和权衡

设计模式的描述格式:1.模式名称和分类2.目的3.别名4.动机5.应用6.结构7.成分8.合作9.效果10.实现11.例程代码12.已知的应用13.相关模式

设计模式的层次:从总体上看,设计模式也只是一个概念,在不同层次上有不同的表现和特征。典型的有面向对象设计模式、代码模式、框架应用模式和形式合约等

设计模式的分类:创建型模式、结构型模式、行为型模式
创建型模式主要用于创建对象:工厂方法模式、抽象工厂模式、原型模式、单例模式、建造者模式
结构型模式主要用于处理类或对象的组合:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式
行为型模式主要用于描述类或对象的交互以及职责的分配:职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风落_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值