软件架构设计
大家好呀!我是小笙,本章我主要分享系统架构设计师 - 软件架构设计(2)知识,希望内容对你有所帮助!!
软件架构设计(20多分)最重要
基于架构的软件开发 ★ ★ ★
概念
- ABSD 方法是架构驱动,即强调由业务、质量和功能需求的组合驱动架构设计
- ABSD 方法有三个基础:第一个基础是功能的分解 ,在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;第二个基础是通过选择架构风格来实现质量和业务需求 ;第三个基础是软件模板的使用
- 视角与视图:从不同的视角来检查,所以会有不同的视图
- 用例用来捕获功能需求、特定场景用来捕获质量需求
开发过程
架构需求、设计过程
架构文档化
架构文档化过程的主要输出结果是架构规格说明和测试架构需求的质量设计说明书这两个文档
文档的完整性和质量是软件架构成功的关键因素
关于文档的三大注意事项:
- 文档要从使用者的角度进行编写
- 必须分发给所有与系统有关的开发人员
- 且必须保证开发者手上的文档是最新的
架构复审
架构复审的目的是标识潜在的风险,及早发现架构设计中的缺陷和错误
架构实现、演化过程
例题
1、在基于体系结构的软件设计方法中,采用 视角与视图 来描述软件架构,采用 用例 来描述功能需求,采用 质量场景 来描述质量需求
- 类图和序列图 视角与视图 构件和类图 构件与功能
- 类图 视角 用例 质量场景
- 连接件 用例 质量场景 质量属性
2、ABSDM 把整个基于体系结构的软件过程划分为体系结构需求、体系结构设计、体系结构文档化、体系结构复审 、体系结构实现 和体系结构演化等6个子过程其中,体系结构文档化 过程的主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书
- 体系结构复审 体系结构测试 体系结构变更 体系结构管理
- 体系结构实现 体系结构测试 体系结构建模 体系结构管理
- 体系结构设计 体系结构需求 体系结构文档化 体系结构测试
软件质量属性 ★ ★ ★ ★ ★
-
性能(指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数)
性能战术(如何提高性能)
- 资源需求(提高计算效率、减少计算开销、管理事件率以及控制采样频率)
- 资源管理(引入并发、维持多个副本以及增加可用资源)
- 资源仲裁(资源调度策略方面:先进/先出、固定优先级、动态优先级以及静态调试)
-
可靠性(容错、健壮性)
-
可用性(指系统能够正常运行的时间比例)
可用性战术
- 错误检测(命令/响应、心跳、异常)
- 错误恢复(表决、冗余、备件)
- 错误预防(进程监视器、事务)
-
安全性(指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力
安全性又可划分为机密性、完整性、不可否认性及可控性等特性)
安全性战术
- 抵抗攻击(身份验证、用户授权、数据加密、数据完整性、限制暴露、限制访问)
- 检测攻击(入侵检测)
- 从攻击中恢复(识别:审计追踪、恢复:冗余)
-
可修改性(指能够快速地以较高的性能价格比对系统进行变更的能力)
可维护性、可扩展性、结构重组、可移植性
可修改性战术
- 局部化修改(维持语义一致性、预期期望的变更、泛化模块、限制可能的选择、抽象通用服务)
- 防止连锁反应(隐藏信息、维持现有的接口、限制通信路径、使用仲裁者)
- 推迟绑定时间(运行时注册、配置文件、多态、组件更换、遵守已定义的协议)
-
功能性
-
可变性
-
互操作性
-
易用性(指对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类)
- 界面友好
- 新用户学习使用系统时间不超过2小时
-
可测试性(指通过测试揭示软件缺陷的容易程度)
- 提供远程调试接口,支持远程调试
例题
1、某服务器软件系统对可用性、性能和可修改性的要求较高,Ping/Echo 设计策略能提高该系统的可用性,队列调度 设计策略能够提高该系统的性能,信息隐藏 设计策略能够提高该系统的可修改性
- Ping/Echo 限制访问 运行时注册 接口-实现分离
- 分层结构 事务机制 主动冗余 队列调度
- 信息隐藏 记录/回放 任务模型 回滚
2、某公司欲开发一个电子交易清算系统,在架构设计阶段,公司的架构师识别出3个核心质量属性场景。其中"数据传递时延不大于1s,并提供相应的优先级管理"主要与 性能 质量属性相关,通常可采用 资源仲裁 架构策略实现该属性;"系统采用双机热备,主备机必须实时监测对方状态,以便完成系统的实时切换"主要与 可用性 质量属性相关,通常可采用 心跳 架构策略实现该属性;"系统应能够防止99%的黑客攻击"主要与 安全性 质量属性相关,通常可采用 检测攻击 架构策略实现该属性
- 可用性 性能 安全性 可修改性
- 限制资源 引入并发 资源仲裁 限制访问
- 可用性 性能 安全性 可修改性
- 记录/回放 操作串行化 心跳 资源调度
- 可用性 性能 安全性 可修改性
- 检测攻击 Ping /Echo 选举 权限控制
软件架构评估 ★ ★ ★ ★ ★
概念
-
敏感点是一个或多个构件的特性
-
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点(权衡多方面的质量属性)
-
风险点是指架构设计中潜在的、存在问题的架构决策所带来的隐患
-
非风险点是指不会带来隐患,一般以"某要求是可以实现(或接受)的"方式表达
架构评估方法
评估方式
- 基于调查问卷的方式
- 基于度量的方式
- 基于场景的方式
基于场景的评估方法
-
软件架构分析法(SAAM)
最初用于分析架构可修改性,后扩展到其他质量属性
-
架构权衡分析法(ATAM)
在SAAM的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中
-
成本效益分析法(CBAM)
成本效益分析法是在构架权衡分析方法上构建的,用来对架构设计决策的成本和收益进行建模,是优化此类决策的一种手段
例题
1、识别风险、非风险、敏感点和权衡点是进行软件架构评估的重要过程。"改变业务数据编码方式会对系统的性能和安全性产生影响"是对 权衡点 的描述,"假设用户请求的频率为每秒1个,业务处理时间小于30毫秒,则将请求响应时间设定为1秒钟是可以接受的"是对 非风险 的描述
- 风险点 非风险 敏感点 权衡点
- 风险点 非风险 敏感点 权衡点
2、ATAM 是一种软件架构的评估方法,以下关于该方法的叙述中,正确的是 ATAM不是一种精确的评估工具
- ATAM是一种代码评估方法
- ATAM需要评估软件的需求是否准确
- ATAM需要对软件系统进行测试
- ATAM不是一种精确的评估工具
3、体系结构权衡分析方法(ATAM)包含4个主要的活动领域,分别是场景和需求收集、体系结构视图和场景实现、属性模型构造和分析 、折中。基于场景的架构分析方法(SAAM)的主要输入是问题描述、需求声明和 体系结构描述
- 架构设计 问题分析与建模 属性模型构造和分析 质量建模
- 问题说明 问题建模 体系结构描述 需求建模
软件产品线 ★ ★ ★
软件产品线就是项目开发过程中共性的部分迭代开发出来的产品
双生命周期模型
建立方式
演化方式 | 革命方式 | |
---|---|---|
基于现有产品 | 基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构件 | 核心资源的开发基于现有产品集的需求和可预测的、将来需求的超集 |
全新产品线 | 产品线核心资源随产品新成员的需求而演化 | 开发满足所有预期产品线成员的需求的核心资源 |
组织结构
组织结构类型
- 设立独立的核心资源小组
- 不设立独立的核心资源小组
- 动态的组织结构
要成功实施产品线,主要取决于以下因素
- 对该领域具备长期和深厚的经验
- 一个用于构建产品的好的核心资源库
- 好的产品线架构
- 好的管理(软件资源、人员组织、过程)支持
构件与中间件技术 ★ ★ ★ ★
构件的定义
- 软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装
- 构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能
- 构件是一个独立发布的功能部分,可以通过其接口访问它的服务
中间件
中间件是一类构件、系统软件
优点:简化结构、屏蔽不同应用程序之间的差异、利于复用
构建的复用
复用的历史发展线路
函数库(结构化时代) => 类库(面向对象时代) => 构件库 => 服务库
复用的维度
- 水平复用:不分行业领域,通用
- 垂直复用:分行业领域,专用
构建复用的过程
-
检索与提取构建(基于关键字检索、刻面检索、超文本检索)
-
理解与评价构建(必须要求构件的开发过程遵循公共标准)
-
修改构建(理想状态是直接复用构件库中现成的构件,但大多数情况下,必须对构件进行或多或少的修改,以应对新需求)
-
组装构建
构建的实现方式(基于功能、数据、对象的构件组装技术)
例题
1、软件重用可以分为垂直式重用和水平式重用,标准函数库 是一种典型的水平式重用
- 医学词汇表
- 标准函数库
- 电子商务标准
- 网银支付接口
2、构件组装是指将库中的构件经适当修改后相互连接构成新的目标软件。基于实现的构件组装技术 不属于构件组装技术
- 基于功能的构件组装技术
- 基于数据的构件组装技术
- 基于实现的构件组装技术
- 面向对象的构件组装技术
构建标准
-
COBRA
- 伺服对象:CORBA对象的真正实现,负责完成客户端请求
- 对象适配器:用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能
- 对象请求代理:解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制
-
COM
-
EJB
- 会话Bean:实现业务逻辑,负责完成服务端与客户端的交互
- 实体Bean:实现O/R映射,简化数据库开发工作
- 消息驱动Bean:处理并发与异常访问
例题
1、CORBA服务端构件模型中,伺服对象 是CORBA对象的真正实现,负责完成客户端请求
- 伺服对象
- 对象适配器
- 对象请求代理
- 适配器激活器