软件体系结构
- 一、软件重用与构件技术
- 软件重用的定义
- 重用驱动的软件的开发过程
- 构件的三种描述模型
- 三种构件分类方法的组织方式,检索方式,刻面分类法
- 二、软件体系结构概述
- 软件体系结构 = 构件 + 连接件 + 约束
- 软件体系结构的四个发展阶段
- 三、软件体系结构风格
- B/S、C/S、MVC风格,层次系统风格
- 正交软件体系结构风格、基于层次消息总线的风格
- 四、软件体系结构描述
- 软件体系结构描述方法有哪几种
- ACME七种体系结构实体
- XML的三个主要应用
- 4+1视图模型
- 五、软件体系结构设计
- 软件体系结构的一般原理有哪些
- 设计模式的基本成分
- 体系结构设计的四种方法
- 质量属性的需求有哪些
- 对质量属性需求的场景进行描述
- 六、基于软件体系结构的软件开发过程
- 开发过程
- 七、软件体系结构评估
- 软件体系结构评估的三种方式
- `SAAM`方法的场景优先级投票和`ATAM`方法的质量属性用树
- 八、基于服务的体系结构
- `Web Service`的四种核心技术
- 单体架构和微服务架构的定义和特点
- 九、特定领域的软件体系结构
- DSSA的含义
- DSSA的基本活动
一、软件重用与构件技术
软件重用的定义
软件重用是按照预先构造好
的,以重用复用为目的
的软件构件进行组装软件系统的过程。
重用驱动的软件的开发过程
一个重用驱动的软件开发过程描述了如何组装可重用构件建立软件系统,以及如何建立和管理可重用构件。
应用者重用
- 寻找候选的可重用构件,有他们产生软件生命周期的每一阶段的交付
- 候选构件进行评价,选择合适本系统的构件
- 更改可重用构件,可以满足本系统的需求
- 为可重用构件进行改进,增强未来的可重用性
生产者重用
- 准备重用的候选构件
- 差异分析,确定构件能够满足需求
- 建立可重用构件
- 封装可重用构件
- 将可重用构件加入到可重用库中
构件的三种描述模型
3C
模型
3C
代表的是概念Concept
,内容Content
,语境Context
构件概念是对构件做什么描述,构件内容是构件如何被实现,构件语境是可重用构件应用的领域,3C
主要用于形式化的描述方法
REBOOT
模型
在描述函数型或者过程型软件构件,采用三元组Function、Object、Medium
描述
在面向对象的软件构件来说,采用四元组Abstraction、Operation、OperatesOn、Dependencies
刻画分类的模型,只允许按照给定的刻面架构描述已有的软件构件,适合非形式化方法
青鸟构件模型
外部接口和内部结构组成对应3C
的概念和语境
外部接口,构件为外部世界提供的一组服务
内部结构,内部成员与内部成员之间的关系
三种构件分类方法的组织方式,检索方式,刻面分类法
构件分类法
- 关键字分类法
将应用领域的概念按照抽象到具体,分解为树型或者有向无环图结构
- 刻面分类法
组成,多面分类机制,同义词库,概念距离图
- 超文本组织法
全文检索技术,所有构件附加以详细的功能说明或者行为说明文档,是一种非线性的网状信息组织方法,以节点为单位,链作为联想式关联
二、软件体系结构概述
软件体系结构 = 构件 + 连接件 + 约束
构件Component
构件是一组类的组合进行封装,代表完成一个或者一组功能,定义多个接口,对外提供服务,构件之间是相互独立的,隐藏具体实现,对外暴露接口提供服务
连接件Connector
用来建立构件间交互的模块,连接件和所连接的构件之间的一组交互点构成角色
约束Constrains
描述体系结构的配置和具体要求,确定体系结构构件与连接件之间的连接关系,是基于规则和参数配置的
软件体系结构的四个发展阶段
三、软件体系结构风格
B/S、C/S、MVC风格,层次系统风格
B/S
体系结构主要是利用不断成熟的WWW
浏览器技术,是一种浏览器,服务器模型,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上来说,B/S
结构是一种全新的软件体系结构。
C/S
是客户端与服务器模型产生的一种体系结构
背景:基于资源不对等,且为实现共享而提出来的
主要组成部分:数据库服务器、客户应用程序和网络。
MVC
风格,模型-视图-控制器,三层架构,各个层次负责不同的部分
视图层View
显示用户模型信息,视图从模型中获取数据,一个模型可以对应多个视图
控制层Controller
给用户提供接口,每一个视图与控制器相关
模型层Model
封装内核数据和状态,对模型的修改扩散到各个视图中
优点,简化系统设计,保证系统的可扩展性,隔离性好,可维护性好,易改变,良好的动态机制
层次系统风格
每一层为它的上一层提供服务,并作为下一层的客户,可以将一个复杂的问题分解成为一个增量序列的实现
正交软件体系结构风格、基于层次消息总线的风格
正交软件体系结构组成,组织层和线索层的构件构成,是一种垂直线索构件族为基础的层次化结构。
如果线索之间是相互独立的,即所有线索中的构件之间没有相互调用那么这个结构就是完全正交的。
特点
- 完成不同功能的
n
个线索或者子系统构成 - 系统具有
m
个不同的抽象级别的层 - 线索之间是相互独立的
- 具有一个公共驱动层
[最高层]
和公共数据层[最底层]
比如线索ABE
优点,结构清晰,方便理解,容易修改,可维护性强,可移植性强,重用粒度大
层次消息总线的风格
JB/HMB
风格的消息总线是系统的连接件,构件向消息总线登记感兴趣的消息,构成构件-消息响应表
分为消息登记,消息分派和传递,消息过滤[转换和阻塞]
四、软件体系结构描述
软件体系结构描述方法有哪几种
-
图形表达工具
-
模块内连接语言
MIL
-
基于软构件的系统描述语言
-
软件体系结构描述语言
ADL
-
软件体系结构描述框架标准
IEEE
ACME七种体系结构实体
构件,连接件,系统,端口,角色,表述,表述映射
XML的三个主要应用
-
设计置标语言
-
数据交换
-
Web
服务
4+1视图模型
组成,逻辑视图,开发视图,过程视图,物理视图+
场景视图
-
逻辑视图,对象模型
-
过程视图,系统并发和同步的设计
-
物理视图,软硬件分布关联关系
-
开发视图,软件在开发环境下的静态组织结构
五、软件体系结构设计
软件体系结构的一般原理有哪些
- 抽象原理
过程抽象
+
数据抽象
-
封装原理
-
信息隐藏原理
-
模块化原理
-
注意点分离原理
-
耦合和内聚原理
-
接口和实现分离原理
-
分而治之原理
-
层次化原理
设计模式的基本成分
组成,模式名称+
问题+
解决方案+
后果
体系结构设计的四种方法
-
制品驱动的方法
-
用例驱动的方法
-
领域驱动的方法
-
模式驱动的方法
质量属性的需求有哪些
可用性、可修改性、性能、安全性、可靠性、可测试性、易用性、可重用性、可集成性
对质量属性需求的场景进行描述
六、基于软件体系结构的软件开发过程
开发过程
开发环境决定适当的软件开发过程
七、软件体系结构评估
软件体系结构评估的三种方式
-
基于调查问卷和检查表方式
-
基于场景的方式
-
基于度量的方式
SAAM
方法的场景优先级投票和ATAM
方法的质量属性用树
SAAM
是精心设计形成文档的分析方法,主要是以评估报告的形式输出
场景分为直接场景 和 间接场景
直接场景是当前的体系结构不经过修改就支持的场景
间接场景是不能直接被当前的体系结构支持的场景
因为资源和时间有限,采取优先级的方法选取最关键的场景。CMU SEI建议在涉众范围内进行投票的方式决定哪些是关键的。
每个人拿到固定的选票,大概是场景的0.30
,投票策略是每个人的投票总数不得超过手中的选票总数,可以为任何场景投任何数目的票。
ATAM方法是SAAM的增强版
ATAM
的基础来自三个领域,体系结构风格,质量属性分析组,SAAM
生成质量属性效用树,QAUT
,以树的形式表现质量属性的细化
- 敏感点、权衡点、直接场景、间接场景
八、基于服务的体系结构
Web Service
的四种核心技术
- XML
XML
可扩展标记语言EXtensible Markup Language
,被设计用来传输和存储数据。
- SOAP
SOAP
简单对象访问协议Simple Object Access Protocol
,提供标准的RPC
远程访问控制的方法调用Web Service
- WSDL
WSDL Web
服务描述语言Web Service Description Language
,基于XML
的,用于描述Web Service
及其操作,参数,返回值的语言
- UDDI
UDDI
统一描述,发现和集成协议Universal Description Discovery and Integration
,用于网上自动查找Web Service
UDDI
包含白页[地址和联系人]
,黄页[行业分类]
,绿页[服务描述]
单体架构和微服务架构的定义和特点
单体架构,所有的业务模块编写在一个项目中,最终打成一个jar包,进行部署
优点,部署简单,技术单一,用人成本低
微服务架构,将单一的应用程序划分为一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值
特点,小的服务,独立进程,轻量级的通信机制,松耦合的交付
微服务架构的本质,以缩短交付周期为核心,基于DevOps
的理念和实践,持续构建演进式构架
九、特定领域的软件体系结构
DSSA的含义
domain-specific software architecture
,特定域软件体系结构,就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构
DSSA的基本活动
- 领域分析,主要目的是获取领域模型,领域模型描述的需求就是领域需求。
- 领域设计,获取
DSSA
,DSSA
是描述领域模型中表示需求的解决方案,不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。 - 领域实现,依据领域模型和
DSSA
来开发和组织可重用信息。