本章节主要内容如下( 上午综合题可以考到20~26分,其中案例题和论问题都有涉及 ):

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计



目录:

  • 一.软件架构的概念
  • 1.软件架构概念
  • 2.软件架构发展史
  • 3.软件架构的建模
  • 4.4+1模型
  • 二.软件架构风格
  • 1.软件架构风格
  • 2.数据流风格
  • 3.调用/返回风格
  • 4.独立构件风格
  • 5.虚拟机风格
  • 6.厂库风格
  • 7.闭环控制架构风格
  • 8.C2风格
  • 9.练习
  • 三.层次架构风格
  • 1.二层C/S架构
  • 2.三层C/S架构
  • 3.三层B/S架构
  • 4.混合型架构风格
  • 5.基于富互联网应用(RIA)
  • 6.基于服务的架构(SOA)
  • 7.微服务
  • 8.模型驱动架构(MDA)
  • 四.架构描述语言(ADL)
  • 五特定领域软件架构
  • 六.基于架构的软件开发方法
  • 七.软件架构评估
  • 1.质量属性
  • 2.软件架构评估
  • 八.软件产品线
  • 九.构件与中间件技术
  • 1.构件
  • 2.中间件
  • 十.Web架构设计



一.软件架构的概念

1.软件架构概念

这部分主要记住以下几点概念:
① 软件架构 为软件系统提供了一个结构、行为和属性的高级抽象 ,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
② 软件架构是 项目干系人进行交流的手段 明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
③ 软件架构 使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础
软件架构是可传递和可复用的模型

软考高级架构师资料电子版 高级软件架构师考试_软件架构_02

2.软件架构发展史

软考高级架构师资料电子版 高级软件架构师考试_软件架构_03

3.软件架构的建模

软考高级架构师资料电子版 高级软件架构师考试_软件架构_04

4.4+1模型

4+1”视图模型从 5 个不同的视角(逻辑视图、进程视图、物理视图、开发视图、场景视图)来描述软件架构。每一个视图只关心系统的一个侧面,5个视图结合在一起才能反应系统的软件架构的全部内容。如下图所示:

软考高级架构师资料电子版 高级软件架构师考试_数据_05

5个视图相对应的功能,关注点和关注人员,如下表所示:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_06

注:上面内容来源于这篇博文:?

二.软件架构风格

1.软件架构风格

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

最常考的5种软件架构风格如下:

软考高级架构师资料电子版 高级软件架构师考试_数据_07

2.数据流风格

系统对数据进行处理,有着严格的流程( 步骤

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_08

数据流风格的工序流程如下图所示:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_09

3.调用/返回风格

这种风格使用的非常的多如结构化程序中的函数,面向对象中的方法调用,和层次结构中底层给高层提供的服务就是通过方法进行 调用返回相应结果

软考高级架构师资料电子版 高级软件架构师考试_软件架构_10

层次结构进行分层后的优缺点:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_11

4.独立构件风格

构件与构件之间不直接联系,通过事件进行触发,降低耦合性,加强独立性,重点在于 触发事件

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_12

5.虚拟机风格

比如Java的虚拟机,通过将代码放在虚拟机环境上进行运行,这个 环境(自定义组合)

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_13

6.厂库风格

公共数据 进行共享和处理,数据库系统就是对存储在磁盘上的数据库文件作为公共数据,可以对这个数据进行相应的处理,也可以理解为将数据存放在工厂中可以进行共享,可以进行相应的加工( 处理

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_14

黑板系统以数据库为基础,黑板作为公共的数据区域,不但对黑板作为数据存取还作为数据传递,共享和控制的机制,黑板系统流程如下图所示:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_15

7.闭环控制架构风格

比如空调制冷在室温较高的时候空调就会持续制冷将室温控制到一个指定范围,当处于这个范围的时候,空调就不再去制冷了而是去保持室温的状态,当室温再一次高于这个范围的时候,空调将再一次持续制冷控制室内温度这一系列 连续的动作和状态

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_16

8.C2风格

软考高级架构师资料电子版 高级软件架构师考试_数据_17

9.练习

例1:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_18

答案:虚拟机风格,数据流风格, 隐式调用, 解释器

例2:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_19

答案:黑板,解释器,隐式调用(图形里面是通过相应事件进行触发)

例3:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_20


答案:B(程序源代码作为一个整体,依次在…),D,A(会同时触发…),B,D(运行环境…)

三.层次架构风格

层次结构的演进过程如下图所示:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_21

1.二层C/S架构

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_22

2.三层C/S架构

软考高级架构师资料电子版 高级软件架构师考试_软件架构_23

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_24

3.三层B/S架构

下表中的界面层也叫做表示层,业务逻辑层也可叫做功能层,数据访问层也可叫做数据层。

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_25

B/S架构和C/S架构最大的区别就是B/S架构无需下载客户端软件。

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_26

表示层(界面层)相关技术的发展:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_27

MVC架构风格:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_28

MVC的执行:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_29

MVP架构风格:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_30

MVVM:

软考高级架构师资料电子版 高级软件架构师考试_数据_31

4.混合型架构风格

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_32

5.基于富互联网应用(RIA)

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_33

6.基于服务的架构(SOA)

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_34


特点:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_35

关键技术:

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_36


SOAP协议:

软考高级架构师资料电子版 高级软件架构师考试_数据_37

REST技术:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_38

SOA的实现方式-WebService:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_39


SOA的实现方式-ESB:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_40


SOA的实现方式-服务注册表:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_41

7.微服务

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_42


软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_43

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_44


微服务的优势:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_45

微服务面临的挑战:

软考高级架构师资料电子版 高级软件架构师考试_数据_46


微服务与SOA的对比:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_47


软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_48

8.模型驱动架构(MDA)

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_49

软考高级架构师资料电子版 高级软件架构师考试_软件架构_50

四.架构描述语言(ADL)

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_51


软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_52

五特定领域软件架构

软考高级架构师资料电子版 高级软件架构师考试_数据_53


特定领域软件架构(DSSA)-领域分析机制:

软考高级架构师资料电子版 高级软件架构师考试_数据_54


特定领域软件架构(DSSA)-建立过程:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_55


特定领域软件架构(DSSA)-三层次模型:

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_56

六.基于架构的软件开发方法

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_57


软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_58


软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_59

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_60

七.软件架构评估

1.质量属性

软考高级架构师资料电子版 高级软件架构师考试_软件架构_61


软考高级架构师资料电子版 高级软件架构师考试_数据_62

质量属性和设计策略对应表如下( 质量属性题型可能会和设计策略结合起来考

质量属性

设计策略

性能

优先级队列,队列调度,资源调度

可用性

冗余,心跳线,Ping/Echo

安全性

追踪审计,限制访问

可修改性

信息隐藏,运行时注册,接口-实现分离

可靠性

冗余,心跳线

可测试性

记录/回放

练习:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_63


答案:性能,安全性(数据库授权要达到99.9%这是安全性问题,而不是可用性),可修改性,可用性(案例分析题中采用可用性,或者题中提到容错和健壮性时才考虑使用可靠性),可修改性(功能性前面常常不加数字前缀,这里 3人周内

2.软件架构评估

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_64


基于场景的评估:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_65

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_66


软考高级架构师资料电子版 高级软件架构师考试_数据_67

质量效用树:

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_68

八.软件产品线

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_69

软考高级架构师资料电子版 高级软件架构师考试_软件架构_70

其他模型:

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_71


软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_72


软件产品线的建立:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_73

组织结构:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_74

九.构件与中间件技术

1.构件

软考高级架构师资料电子版 高级软件架构师考试_软件架构_75


软考高级架构师资料电子版 高级软件架构师考试_软件架构_76


软考高级架构师资料电子版 高级软件架构师考试_数据_77


软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_78


软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_79

2.中间件

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_80

中间件的优点:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_81


主要的中间件:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_82

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_83

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_84


软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_85

软考高级架构师资料电子版 高级软件架构师考试_软件架构_86

十.Web架构设计

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_87


单台机器到数据库与Web服务器分离:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_88

应用服务器集群:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_89

负载均衡:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_90

负载均衡技术:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_91


软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_92

负载均衡的引入:

软考高级架构师资料电子版 高级软件架构师考试_数据_93

有状态与无状态:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_94

用缓存缓解读库的压力:

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_95

缓存技术:

软考高级架构师资料电子版 高级软件架构师考试_数据_96

Redis与Memcache的差异:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_97

Redis的常见难题:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_98

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_99

CDN(内容分发网络)

软考高级架构师资料电子版 高级软件架构师考试_软件架构_100

XML与JSON:

软考高级架构师资料电子版 高级软件架构师考试_软件架构_101


软考高级架构师资料电子版 高级软件架构师考试_软件架构_102

WEB应用服务器:

软考高级架构师资料电子版 高级软件架构师考试_数据_103

REST(表述性状态传递):

软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_104

响应式Web设计:

软考高级架构师资料电子版 高级软件架构师考试_软考高级架构师资料电子版_105

中台:

软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_106


软考高级架构师资料电子版 高级软件架构师考试_软考高级系统架构师_107


软考高级架构师资料电子版 高级软件架构师考试_软件架构设计_108

辨别业务中台和数据中台:

软考高级架构师资料电子版 高级软件架构师考试_数据_109

答案:业务中台,数据中台,业务中台和数据中台