架构是什么
架构=构建+连接件+约束规则
构件=原子构件+资源 原子构件=多个类
构件
特性
- 构件是独立部署单元
- 构件可作为第三方的组装单元
- 构件没有外部的可见状态
- 构件作为部署单元,是不可拆分的.(构件本身可拆分)
- 在一个特定进程中可能会存在多个特定构件的拷贝
五大中间件类型
1、消息中间件
又称通信处理中间件
- 消息中间件是消息传输过程中保存消息的一种容器
- 消息中间件具有两个基本特点:来用异步处理模式、应用程序和应用程序调用养系为松耦合关系
- 消息中间件的消息传递服务模型有点对点模型和发布-订阅模型之分
2、事务处理中间件 TPS
主要是用户处理事务
3、数据中间件
跟数据库相关的,主要用户数据访问,如:jdbc,odbc
4、分布式对象中间件
- 消息中间件主要由一组对象来提供系统服务,对象间能够跨平台通信
5、其他中间件:web 服务器中间件,网络中间件
架构 4+1 视图
多视图是一种描述软件体系架构的重要途径,其体现了关注点分离的思想。
(1)逻辑试图
逻辑视图的利益相关人是最终用户,关注点是系统的功能,系统应该向用户提供什么服务。(使用:可使用类图来描述)
(2)开发视图(实现视图)
开发视图(实现视图)的利益相关人是开发人员和项目经理,关注点是组织,可复用性,可移植性,产品线。对于非常小的系统,逻辑视图和开发视图可能几乎是一样的,那就没必要分开来描述。(使用:可使用组件图来描述)
(3)过程视图(流程视图)
过程视图(流程视图)的利益相关人是系统设计人员和集成人员,关注点是一些非功能需求,例如:性能,可用性,软件容错,完整性。从逻辑视图可以分析出有哪些进程,可以用文字进行描述,可不用画出图形。如果只有一个处理器而且只有一个进程或者程序时,可以省略过程视图(使用:文字描述、序列图、活动图、状态图等方式来进行展示)。
(4)物理视图(部署视图)
物理视图(部署视图)的利益相关人是系统设计人员,关注点是可扩展性、性能,可用性。它是建立软件和硬件的映射关系,考虑系统的非功能需求。(使用:可使用部署图进行展示)
(5)场景视图
架构的 1 叫场景,uml 的 1 是用例视图
场景视图的利益相关人是最终用户、开发人员,关注点是可理解性。场景是最重要的需求的抽象。(使用:可使用用例图描述)
基于体系结构的软件设计 (ABSD)
体系结构 == 架构
特点
自顶向下
六个步骤
(1)架构需求
重在掌握标识构件的三步,如下图
(2)架构设计
将需求阶段的标识构件映射成构件,进行分析,如下图。
(3)架构(体系结构)文档化
(4)架构复审
由外部人员(独立于开发组织之外的人,如用户代表和领域专家等)参加的复审,复审架构是否满足需求,质量问题,构件划分合理性等。若复审不过,则返回架构设计阶段进行重新设计、文档化,再复审。
(5)架构实现
用实体来显示出架构。实现架构,构件组装成系统,如下图
- (6)架构演化
对架构进行改变,按需求增删构件,使架构可复用,如下图
UML
软件体系结构风格
DSSA
4 个角色 3 个阶段
难点题目
基于规则的系统包括规则集、规则解释器、规则/数据选择器及(工作内存)
在软件架构复用中,(机会复用)是指开爱过程中,只要发现有可复用的资产,就对其进行复用。 (系统复用)是指在开发之前,就要进行规划,以决定哪些需要复用。
软件质量属性
提示
质量属性效用树(重点)案例必考题,补充后删除
开发期质量属性
主要指在软件开发阶段所关注的质量属性,主要包含 6 个方面。
- (1)易理解性:指设计被开发人员理解的难易程度。
- (2)可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。
- (3)可重用性:指重用软件系统或某一部分的难易程度。
- (4)可测试性:对软件测试以证明其满足需求规范的难易程度。
- (5)可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程 度。
- (6)可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
运行期质量属性
主要指在软件运行阶段所关注的质量属性,主要包含 7 个方面。
- (1)性能:性能是指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
- (2)安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
- (3)可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加 服务器来提高能力。
- (4)互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
- (5)可靠性:软件系统在一定的时间内持续无故障运行的能力。
- (6)可用性:指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误,恶意攻 击,高负载等问题的影响。
- (7)鲁棒性:是指软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故 障等)下仍能够正常运行的能力,也称健壮性或容错性。
对象重用
- 包含
在包含重用形式下,一个外部对象拥有指向一个内部对象的唯一引用,外部对象只是把请求转发给内部对象
- 聚合
在聚合重用形式下,直接把内部对象的接口引用传给外部对象的客户,而不再转发请求。
软件架构风格汇总
上午选择题
| 软件架构风格名 | 常用关键字及实例 | 简介 |
|---|---|---|
| 数据流-批处理 | ,每个阶段产生的结果作为下一个阶段的输入,区别在于整体。 | 一个接一个, |
| 数据流-管道-过滤器。 | 一个接一个,前一个输出是后一个输入。 | |
| 调用/返回-主程序/子程序 | - | ,主程序直接调用子程序。 |
| 调用/返回-面向对象 | - | 对象是构件,通过对象调用封装的方法和属性。 |
| 调用/返回-层次结构 | - | 分层,每层最多影响其上下两层,有调用关系。. |
| 独立构件-进程通信 | - | 进程间独立的消息传递,同步异步 |
| 独立构件-事件驱动(隐式调用) | 事件触发推动动作, | 不直接调用,通过。 |
| 虚拟机-解释器 | 自定义流程,按流程执行,规则随时改变,,业务灵活组合。。 | 解释自定义的规则,解释引擎、存储区、数据结构。 |
| 虚拟机-规则系统 | 规则集、规则解释器、选择器和工作内存,用。 | |
| 仓库-数据库 | 现代编译器的,以数据为中心。又称为。 | 中央共享数据源,独立处理单元。 |
| 仓库-超文本 | 网状链接,多用于互联网。 | |
| 仓库-黑板 | 等问题复杂、解空间很大、求解过程不确定的这一类软件系统,黑板、知识源、控制。 | |
| 闭环-过程控制 | ,设定参数,井不断调整。 | 发出控制命令并接受反馈,循环往复达到平衡。 |
| C2风格 | 通过连接件绑定在一起按照一组规则运作的井行构件网络。 |
案例分析对比
| 架构风格 | 主要特点 | 主要优点 | 主要缺点 | 适用领域 |
|---|---|---|---|---|
| 管道-过滤器 | 过滤器相对独立 | 功能模块复用:可维护性和可扩展性较强:具有并发性:模块独立性高 | 不适于交互性强的应用,对于存在关系的数据流必须进行协调 | 系统可划分清晰的模块:模块相对独立:有清晰的模块接口。 |
| 面向对象 | 力争实现问题空间和软件系统空间结构的一致性 | 高度模块性;实现封装;代码共享灵活;易维护;可扩充性好 | 增加了对象之间的依赖关系 | 多种领域 |
| 事件驱动 | 系统由若干子系统构成且称为一个整体:系统有统一的目标:子系统有主从之分:每一个子系统有自己的事件收集和处理机制 | 适合描写系统组:容易实现并发处理和多任务:可扩展性好:具有类层次结构:简化代码: | 因为树型结构所以削弱了对系统计算的控制能力:各个对象的選辑关系复杂 | 一个系统对外部的表现可以从它对事件的处理表征出来。 |
| 分层风格 | 各个层次的组件形成不同功能级别的虚拟机:多层相互协同工作,而目实现透明, | 支持系统设计过程中的逐级抽象:可扩展性好:支持软件复用 | 不同层次之间稠合度高的系统很难实现 | 适合功能层次的抽象和相互之间低耦合的系统 |
| 数据共享风格 | 采用两个常用构件中央数据单元和一些相对独立的组件集合。 | 中央数据单元实现了数据的集中,以数据为中心p | 适用于特定领域 | 适合于专家系统等人工智能领域问题等求解 |
| 解释器风格 | 系统核心是虚拟机 | 可以用多种操作来解释一个句子,灵活应对自定义场景 | 适用于特定领域 | 适合于模式匹配系统与语言编译器 |
| 闭环控制风格 | 通过不断的测量被控对象,认识和掌握被控对象;将控制理论引入体系结构构建 | 将控制理论引入到计算机软件体系结构中 | 适合于特定领域 | 该系统中一定存在有目标的作用、信息处理闭环控制过程 |
软件架构评估
软件架构评估在,因此与设计、实现、测试都没有关系。评估的 目的是为了评估所采用的架构是否能解决软件系统需求,但不是单纯的确定是否满足需求。
质量属性
1、性能:
,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。如。
设计策略:等。
2、可靠性:
是软件系统在应用或系统错误面前,的基本能力。如 。
设计策略:。
3、可用性:
是指,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。
设计策略:。
4、安全性:
是指。如。
设计策略:。
5、可修改性:
指能够快速的的能力。通常以某些具体的变更为 基准,通过考察这些变更的代价衡量。
设计策略:。
6、功能性:
是。一项任务的完成需要系统中许多或大多数构件的 相互协作。
7、可变性:
指。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构。当要将某个体系结构作为一系列相关产品的基础时,可变性是很重要的。
8、互操作性:
作为系统。为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,也影响应用的软件体系结构。 其他:等。
敏感点:
是指,一个或多个构件所具有的特性。
权衡点:
是,是多个质量属性的敏感点。
风险点与非风险点
不是以标准专业术语形式出现的,只是一个常规概念,即,可称为风险点。某个做法如果有隐患,有可能导致一些问题,则为风险点;而如果。