构件
指具有一定功能,能独立提供服务或与其他构件配合提供服务。构件可大大小,大的可以是独立的服务、子系统、系统,小的可以是方法、对象或模块。
架构风格
描述某一特定应用领域中系统组织方式的惯用模式,它定义一个系统家族,即一个体系结构定义一个词汇表(构件与连接件类型)和一组约束(指出系统是如何将这些构建和连接件组合起来的)。
反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
架构风格总结
1、数据流风格:批处理序列;管道/过滤器。
2、调用/返回风格:主程序/子程序;面向对象风格;层次结构。
3、独立构件风格:进程通信;事件系统。
4、虚拟机风格:解释器;基于规则的系统。
5、仓库风格:数据库系统;超文本系统;黑板系统。
数据流风格
调用/返回风格
独立构件
虚拟机
仓库风格
面向服务架构 (Service Orientated Architecture)
每一个功能都是通过一个独立的服务来提供,服务定义了明确的可调用接口,服务之间的编排调用完成一个完整的业务
微服务
二层C/S架构
包括数据库服务器、客户应用程序、网络,是一种胖客户机、瘦服务器的软件架构
优点:
1、客户端与服务器运行在不同的计算机,灵活,易于扩充和缩小
2、数据库服务器专注于数据管理,应用处理任务分布在低成本的计算机上,成本小
缺点:
1、开发成本高
2、客户端复杂
3、信息内容和形式单一
4、界面风格不一
5、移植困难
6、维护升级困难
7、新技术难应用
三层C/S架构
增加应用服务器,处理业务逻辑
分为表示层、功能层、数据层
相比两层,优点:
1、合理划分三层结构,逻辑上保持相对独立,系统的逻辑结构更清晰,提供可维护性和可扩展性
2、更灵活的选用相应平台和硬件
3、各层并行开发
4、能利用功能层有效隔离表示层和数据层
缺点:
1、通信效率不高,设计复杂,各层独立性设计困难
B/S架构
浏览器、服务器、数据库服务器
缺点:
1、缺乏对动态页面的支持能力
2、扩展能力差,安全性难保证
3、查询效率低
4、数据动态交互性不强
正交软件架构
由组织层和线索构成
优点:
1、结构清晰,易于理解,线索功能相互独立,不进行互相调用
2、易修改、可维护性强,对一个线索的修改不会影响到其他线索
3、可移植性强,重用粒度大,可以为一个领域内的所有应用程序所共享
基于层次消息总线的架构
基于层次消息总线、支持构件的分布和并发,构件之间通过消息总线进行通讯
消息总线,负责消息的分发、传递、过滤和返回结果
DSSA-特定领域软件架构
Domain Specific Software Architecture
在一个特定应用领域为一组应用提供组织结构参考的标准软件架构,是特定问题域中支持一组应用的领域模型、参考需求、参考架构等组成的开发基础,目标是在一个特定领域中生成多个应用
基本活动:
1、领域分析:获得领域模型,描述系统之间的共同需求
2、领域设计:获得DSSA,描述需求的解决方案
3、领域实现:依据领域模型与DSSA开发和组织可重用信息。可从现有系统中提取,也可能需要重新开发得到
建立过程:
1、定于领域范围
2、定义领域特定元素:编译领域字典和术语
3、定义领域特定的设计和实现需求约束
4、定义领域模型和架构
5、产生、搜集可重用的产品单元
DSSA与架构风格比较
DSSA只对某一领域进行设计专家知识的提取、存储和组织,可同时使用多种架构风格;而某个架构风格进行架构设计时,可将提取的公共结构和设计方法扩展到多个领域
DSSA选取一个或多个适合的架构风格,并设计专用的架构分析设计工具,但只能用于较小的范围;而架构风格提取的设计知识应用范围要广泛
架构演化
基于架构的软件开发分两个阶段:实现原型阶段与演化开发阶段
原型开发周期:
1、标识构件
2、提出软件架构模型
3、把已标识的架构映射到软件架构中
4、分析构件之间的相互作用
5、产生软件架构
演化开发阶段
1、需求变动归类
2、制定架构演化计划
3、修改、增加或删除构件
4、更新构件的相互作用
5、产生演化后的架构
6、迭代 3-5
7、技术评审
8、对所做的标记进行处理
基于架构的软件开发
1、架构需求:需求获取、标识构件、需求评审
2、架构设计:原型开发中的 2-5,加上技术评审
3、架构文档化:架构需求规格说明和测试架构需求的质量设计说明书
4、架构复审:外部人员参加
5、架构实现
6、架构演化
软件架构评估
1、基于调查问卷或检查表
2、基于场景的评估方式:场景是一系列有序的使用或修改系统的步骤,有 ATAM与SAAM
3、基于度量的评估方式:度量是指为软件产品的某一属性所赋予的数值,如代码行数、构件个数
ATAM - 架构权衡分析方法 - 9步
Architecture Tradeoff Analysis Method
1、描述ATAM方法:负责人介绍评估方法
2、描述业务动机:从业务角度介绍系统概况
3、描述架构:架构师介绍架构
4、确定架构方法:与会人员理解架构
5、生成质量属性效用树,确定系统目标,并对质量目标设置优先级和细化
6、分析架构方法,确定风险点、敏感点、权衡点
7、讨论和对场景分级
8、分析架构方法,架构师把最高级别的场景映射到所描述的架构中,重复6
9、描述评估结果:信息归纳,提交报告,介绍ATAM评估结果
两阶段:
1、以架构为中心,获取架构信息并分析
2、获取项目干系人观点,验证第一个阶段的结果
SAAM - 软件架构分析方法 - 6步
Software Analysis Architecture Method
1、形成场景
2、描述架构
3、对场景进行分类和确定优先级:直接场景就是按照现有架构能直接实现的场景
4、对间接场景的单个评估:对直接场景,讲清所评估的架构将如何执行,对间接场景,说明需要对架构做哪些修改才能适应间接场景的要求
5、评估场景的相互作用:多个间接场景要求更改家架构的同一个构件
6、形成总体评估
软件产品线
产品集合,他们共享公共的、可管理的特征集,此特征集能满足选定的市场或任务领域的特定需求
由核心资源和产品集合组成
核心资源是领域工程的所有结果的集合,是产品线中产品构造的基础。包括共享的产品线架构、新设计开发的、通过再工程得到的。包括测试计划、测试实例、设计文档、需求说明书、领域模型、领域范围的定义、构件等
产品线开发,4个基本特点,过程驱动、特定领域、技术支持和架构为中心
过程模型
双周期模型:领域工程+应用工程,都分成分析、设计、实现
SEI模型:核心资源开发、产品开发、管理,三个活动交错进行,高度重叠
三生命周期模型:增加企业工程流程
组织结构
由负责核心资源的小组和负责产品的小组组成,这是产品线开发与独立系统开发的主要区别
四种组织模型
1、开发部门:软件开发集中在一个部门
2、商务部门:每个部门负责产品线中一个和多个相似的系统,共性资源由需要的部门协同开发,团队共享
3、领域工程部门:专门单位,负责核心资源库的开发和维护
4、层次领域工程部门:超大型产品线,设计多层领域工程部门
建立方式
(演化+革命)* (现有产品+全新)
1、现有产品演化:实施风险最小,总周期和总投资比革命要大
2、现有产品革命:停止现有产品开发,全力投入核心资源开发;周期和投资较演化少,但变化导致的投资报废风险大,首个产品面世时间长。适合软硬件结合且硬件需求差异大的情况
3、全新产品演化:进入新领域,前期投资少,风险小,面世早
4、全新产品革命:一旦完成,后续开发速度快,总成本少,缺点是需求难以做到全面
Web Service架构
服务模型
1、服务提供者,WSDL对web服务进行准备、规范的描述,并发布服务到服务注册中心
2、服务请求者,查找、绑定并调用服务的应用程序
3、服务注册中心,纽带,可选角色,负责发布、查找、绑定服务
SOAP-Simple Object Access Protocol
消息的传送标准,通过它应用程序在网络中进行数据交换和远程调用
WSDL-Web Service Description Language
Web 服务的接口定义,描述为能够进行消息交换的服务访问点的集合
UUID-Universal Description Discovery and Integration
优势
1、通用性和易用性,利用Internet协议,提供系统开放性、通用性和可扩展性
2、完全的平台、语言独立性,只要遵循服务接口即可通信,以XML作为信息交换格式
3、高度的集成性,通过服务的组合来完成业务逻辑
4、容易部署和发布
SOA-面向服务架构
Service-Orientad Architecture
所有功能都定义为服务,服务都带有明确的可调用接口,以定义好的顺序调用来形成业务流程
与构件模型相比,它的表示层从逻辑层分离出来,中间增加了接口层,通过接口的标准化描述使得该服务可提供给任何异构平台和任何用户接口使用
特征
1、松散耦合
2、粗粒度服务,能提供高层业务逻辑的可用性服务
3、标准化接口
分析与设计
三个层次
1、底层设计层,采用OOA和OOD思想,能够进行快速而有效的设计、开发以及执行灵活且扩展的底层服务
2、架构层,使用EA(企业架构)理论,以表示业务服务的逻辑构件为中心,集中于定义服务之间的接口和服务协定
3、业务组织层,采用BPM(业务流程建模)
Web服务实现SOA
1、底层传输层,负责消息的传输机制,HTTP
2、服务通信协议层,描述并定义服务之间传输消息所需的技术标准,SOAP,REST
3、服务描述层,统一的方式描述服务的接口与消息交换格式,WSDL
4、服务层,将遗留系统包装,通过WSDL接口描述被定义和调用
5、业务流程层,支付服务发现和服务调用
7、服务注册层,通过WSDL发布服务,支持查找,UUID
ESB-企业服务总线
由中间件实现并支持SOA的一组基础架构,支持异构环境中服务、消息以及基于事件的交互
几乎不需改代码,无侵入方式使企业已有系统具有全新的服务接口,并能在部署环境中支持任何标准