前言:内容钢要:
软件架构的概念(★★★)
基于架构的软件开发(★★★★)
软件架构风格(★★★★★)
特定领域软件架构(★★★)
软件质量属性(★★★★★)
软件架构评估(★★★★)
软件产品线(★★★)
构件与中间件技术(★★★)
层次型软件架构风格(★★★★)
面向服务的软件架构风格(★★★★)
云原生架构风格(★★★★)
Web架构综合考查(★★★★★)
一、软件架构的概念
架构的本质
1、软件架构为软件系统提供了一个结构、行为和属性的高级抽象架构定义一个词汇表和一组约束。
2、软件架构风格是特定应用领域的惯用模式
架构的作用
1、软件架构是项目干系人进行交流的手段。
2、软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
3、软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
软件架构设计是【降低成本】、【改进质量】、【按时和按需交付产品】的关键因素。
软件架构=软件体系结构
需求分析 -》架构(填平鸿沟)-》软件设计
架构设计就是需求分配,即将满足需求的职责分配到组件上。
二、软件架构设计与生命周期
需求分析阶段 :模型转换关注两个问题:如何根据需求模型构建SA模型+模型转换可追溯。
设计阶段 :SA研究关注得最早和最多的阶段。ADL、4+1视图。
实现阶段
构件组装阶段 :在较高层次上实现系统,高效。
部署阶段 :SA为部署提供高层视图指导。
后开发阶段:动态软件体系结构(内部执行和外部请求导致变化)、体系结构恢复与重建。
例子:
以下叙述,()不是软件架构的主要作用。
A 在设计变更相对容易的阶段,考虑系统结构的可选方案
B 便于技术人员与非技术人员就软件设计进行交互
C展现软件的结构、属性与内部交互关系
D 表达系统是否满足用户的功能性需求
参考答案:D
三、架构描述语言ADL
ADL是这样一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。
C2SADL【基于组件和消息的软件架构描述语言】
Wright【分布、并发类型的架构描述语言】ACME【架构互换语言】
UniCon【基于组件和连接的架构描述语言】
Rapide【基于事件的架构描述语言】其他【Darwin、MetaH、Aesop、Weaves、SADL、xADL】
ADL的三个基本元素
构件 :计算或数据存储单元。
连接件 :用于构件之间交互建模的体系结构构造块及其支配这些交互的规则。
架构配置:描述体系结构的构件与连接件的连接。
架构描述语言(Architecture Description Language,ADL)是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言。ADL主要包括以下组成部分:组件组件接口、() 和架构配置。
A 架构风格
B 架构实现
C 连接件
D 组件约束
参考答案:C
四、"4+1"视图
视角与视图
从不同的视角来检查,所以会有不同的视图。
最终用户:功能需求
逻辑视图(Logical View)
类与对象
系统集成人员
进程视图(Process View)
性能、可伸缩、吞吐率、并发
程序员
实现/开发视图(lmplementatton View)
配置、装配
系统工程人员
部署/物理视图(Deployment View)
发布、安装、拓扑结构
用例视图/场景(use case view)
分析人员/测试人员
五、基于架构的软件开发方法-概念
考试比较多,但是实际上用得不多。
ABSD方法是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计。
ABSD方法有三个基础。
第一个基础是功能的分解 。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
第二个基础是通过选择架构风格来实现质量和业务需求 ;
第三个基础是软件模板的使用 。
视角与视图:从不同的视角来检查 ,所以会有不同的视图 。
用例用来捕获功能需求 、特定场景**【刺激、环境、响应】用来捕获质量需求**。

ABSD能很好的【支持软件重用】
ABSD方法是一个自顶向下,递归细化的方法。
软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。
六、基于架构的软件开发方法-开发过程
架构需求过程:
需求获取
生成类图(标识架构)
对类进行分组(标识架构)
把类打包成构件 (标识架构)
需求评审
架构设计过程:
提出架构模型
映射构件
分析构件相互作用
产生架构
设计评审
架构需求
架构设计
架构文档化
架构复审
架构实现
架构演化
集构是怎样的
架构文档化过程的主要输出结果是架构规格说明和测试架构需求的质量设计说明书 这两个文档。
文档的完整性和质量 是软件架构成功的关键因素。
关于文档的三大注意事项:
文档要从使用者的角度进行编写
必须分发给所有与系统有关的开发人员
且必须保证开发者手上的文档是最新的
架构复审【架构评估】的目的是标识潜在的风险,及早发现架构设计中的缺陷和错误。
例子:
在基于体系结构的软件设计方法中,采用()来描述软件架构,采用()来描述功能需求,采用( )来描述质量需求。
A 类图和序列图
B 视角与视图
C 构件和类图
D 构件与功能
A 类图
B 视角
C用例
D 质量场景
A 连接件
B 用例
C质量场景
D 质量属性
参考答案:B、C、C
ABSDM(Architecture-Based Software DesignModel)把整个基于体系结构的软件过程划分为体系结构需求、体系结构设计、体系结构文档化、()、()和体系结构演化等 6个子过程。其中,()过程的主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书。
A 体系结构复审
B 体系结构测试
C体系结构变更
D体系结构管理
A 体系结构实现
B 体系结构测试
C体系结构建模
D 体系结构管理
A 体系结构设计
B 体系结构需求
C 体系结构文档化
D 体系结构测试
参考答案:A、A、C
七、软件架构风格
架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。
五大架构风格:
数据流风格【Data Flow】:批处理【Batch Sequential】、管道-过滤器【Pipes and Filters】
调用/返回风格【Call/Return】:主程序/子程序【Main Program and Subroutine】面向对象[Object-oriented】、分层架构【Layered System】
独立构件风格【Independent Components】:进程通信【CommunicatingProcesses】
事件驱动系统(隐式调用)【Event system】
虚拟机风格[Virtual Machine】:解释器 【interpreter】、规则系统【Rule-based System】
以数据为中心[Data-centered】
子风格:数据库系统【Database System】、黑板系统【Blackboard System】超文本系统【Hypertext System】