一、软件持量的质量属性
1. 开发阶段的质量属性
- 易理解性:设计被开发人员理解的难易程度,反映代码可读性
- 可扩展性:适应新需求增加功能的能力,又称灵活性
- 可重用性:系统或组件被复用的难易程度
- 可测试性:验证系统满足需求规范的难易程度
- 可维护性:修改缺陷/增加功能时的识别和实施难度
- 可移植性:系统在不同运行环境间迁移的难易程度
2.运行阶段的质量属性
1)性能
- 定义:系统响应能力,包括响应时间(如1秒内打开网页)和吞吐量(如5秒处理100个请求)
- 设计策略:优先级队列调度、增加计算资源、减少计算开销、引入并发机制、资源调度
- 考点提示:选择题常通过"用户要求响应时间/处理量"的描述考查性能属性判断
2)可靠性
- 核心指标:MTTF(平均无故障时间)、MTBF(平均故障间隔时间)、MTTR(平均修复时间)
- 设计策略:心跳机制(定期发送同步信号检测存活)、冗余备份、Ping/Echo、选举算法
- 与可用性区别:可靠性强调错误发生后的容错能力,可用性关注正常运行时间比例
3)可用性
- 计算公式:可用性=正常运行时间/(正常运行时间+故障时间),如系统运行100小时有90小时正常则可用性为90%
- 考试技巧:当可靠性与可用性描述相似时优先选择可用性,二者设计策略相同(冗余/心跳等)
4)安全性
- 核心特性:保密性、完整性、不可抵赖性、可控性
- 设计策略:加密技术(对称/非对称)、数字签名、防火墙、入侵检测、用户认证/授权、审计追踪
- 典型场景:系统能阻止非法访问同时服务合法用户
5)可修改性
- 双重维度:既要能修改又要性价比高(修改成本低于重开发)
- 设计原则:接口-实现分离、抽象化、信息隐藏等面向对象设计原则
- 关联知识:与结构化开发中的高内聚低耦合原则密切相关
6)功能性
- 典型描述:如"系统每月15号自动发放工资"
- 特点:无具体子特性和设计策略,主要通过功能需求文档体现
7)可变性
- 本质:体系结构的可扩展能力,能通过修改成为新体系结构
- 应用场景:作为系列产品基础架构时需要重点考虑
8)互操作性
- 实现关键:提供精心设计的外部接口和数据交换机制
- 典型场景:不同编程语言系统间的数据交互和服务调用
3.场景属性场景
1)场景组成要素
- 刺激源:行为主体(用户/开发人员/管理员)
- 刺激:具体操作(如增加/删除功能)
- 环境:操作时机(设计时/编译时/运行时)
- 制品:操作对象(用户界面/平台等)
- 响应:系统实际执行动作
- 响应度量:修改成本、影响范围等量化指标
2)应用方法
- 测试流程:通过构造特定场景(如模拟高并发)检验质量属性达标情况
- 评估关系:是架构评估方法中"基于场景的评估"的基础工具
- 记忆技巧:类比"人(主体)在特定环境对系统(客体)进行操作(刺激)并观察反应(响应)"的生活场景
二、软件架构评估
1、架构评估中的质量属性
1) 性能
- 性能定义:系统响应能力,包括响应时间和事件处理数量。
- 性能指标:响应时间(如1秒内打开网页)、吞吐量(如5秒处理100个事件)。
- 性能设计策略:优先级队列调度、增加计算资源、减少计算开销、引入并发机制、资源调度优化。
- 性能关联:与需求阶段的性能属性完全一致。
2) 可靠性
- 可靠性定义:软件系统在错误或意外情况下维持功能特性的能力
- 可用性优先级:考试中可靠性与可用性描述相似时优先选可用性
- 可靠性指标:平均无故障时间(MTTF)、平均故障间隔时间(MTBF)、平均修复时间(MTTR)
- 可靠性计算:串联系统与并联系统的可靠度计算
- 可靠性策略:心跳机制(定期发送同步信号检测主机状态)、冗余备份、选举机制
- 心跳机制:备份机通过定期接收心跳信号判断主机状态,连续5次未收到则切换
- 可用性策略:与可靠性使用相同设计策略(心跳、冗余、选举等)
- 关键区别:可靠性与可用性在考试中难以区分时优先选择可用性
3) 可用性
- 可用性定义:系统正常运行时间比例,计算公式为
可用性=正常运行时间/总运行时间
- 可靠性区别:关注系统从故障中恢复能力,而可用性关注系统正常运行时间比例。
- 测量指标:均采用平均无故障时间(MTBF)、平均故障间隔时间(MTBI)、平均修复时间(MTTR)。
- 架构设计关系:在架构设计中可用性与可靠性策略和指标紧密关联,难以完全分离。
- 计算示例:系统运行100小时中90小时正常,可用性为 90 / 100=0.9
- 系统可靠性计算:基于部件可用性,通过串联/并联系统模型计算整体可靠性。
- 选择策略:当描述同时涉及可靠性和可用性时,优先选择可用性作为指标。
4) 安全性
- 安全性定义:系统向合法用户提供服务的同时阻止非授权用户使用或拒绝服务的能力
- 安全性核心要素:数据安全、合法用户访问控制、授权管理
- 安全性指标:保密性、完整性、不可抵赖性、可控性
- 安全技术策略:加密技术(对称/非对称)、信息签名、数字摘要、数字签名
- 网络安全措施:入侵检测、防火墙、用户认证、授权管理、追踪审计
5) 可修改性
- 可修改性定义:系统能快速以高性价比进行变更的能力
- 核心要素:修改可行性(能否修改)和修改经济性(修改成本是否合理)
- 关键指标:代码可读性、修改速度、修改后系统稳定性
- 设计策略:采用结构化开发(封装)和面向对象开发原则
- 具体方法:接口实现分类、信息隐藏、抽象化处理
- 修改成本边界:修改代价不应超过重新开发成本
6) 功能性
- 功能定义:系统完成所期望工作的能力
- 功能描述特征:通常用简单语句表述(如"每月15号发放工资")
- 功能实现特点:需要多个系统组件的相互作用
- 功能评估要点:无具体指标和设计策略
- 考试重点提示:主要考察定义理解,较少涉及复杂应用
7) 可变性
- 定义:体系结构通过扩充或变更成为新体系结构的能力
- 同义词:可变性等同于可扩展性
- 操作方式:对原有体系结构进行修改和扩充
- 结果特征:新体系结构需符合预定义规则且在某些方面不同于原结构
- 应用判断:需具备识别描述是否符合可变性特征的能力
8) 互操作性
- 互操作性定义:系统或组件间相互操作的能力
- 互操作实现条件:需提供外部可视功能特性和数据结构接口
- 互操作特征:软件作为系统组成部分而非独立存在
- 互操作交互方式:通过接口或数据传递实现系统间相互作用
- 考试重点提示:互操作性在软件体系结构中考查频率较低
2、质量属性场景
1) 质量属性场景的定义与目的
- 质量属性场景定义:面向特定质量属性的需求描述
- 场景构造目的:用于测试架构是否满足特定质量属性
- 评估方法关联:基于场景的架构评估方法的基础
- 场景特征:具体现实中存在的可描述场景
- 应用方式:通过观察场景反馈验证质量属性满足度
- 评估手段:构造质量属性场景是架构评估的主要方法
2) 质量属性场景的组成部分
- 组成部分数量:质量属性场景包含六个部分
- 教学方式:通过实例讲解帮助理解
- 实例作用:使抽象概念具体化可视化
3) 实例解析:可修改性质量属性场景🌟🌟
- 刺激源定义:生成刺激的实体,即操作主体(如用户、开发人员、管理员)。
- 刺激行为:对系统进行的操作(如增加、删除、修改功能)。
- 操作环境:系统设计、编译、构建或运行时等特定条件。
- 制品概念:被刺激的对象,即系统的一部分(如用户界面、平台)。
- 响应机制:客体对主体操作的反馈(如查找修改点、测试修改影响)。
- 度量标准:评估修改成功与否及所需时间/成本的量化指标。
- 质量属性关联:不同属性对应不同刺激(如可用性测试需模拟宕机)。
- 场景六要素:刺激源→刺激→环境→制品→响应→度量。
2、软件架构评估
1).敏感点、权衡点、风险点
- 敏感点定义:为实现特定质量属性,一个或多个构建具有的特性
- 敏感点确认条件:仅影响单一质量属性(如性能或安全性)
- 权衡点定义:影响多个质量属性的特性
- 权衡点特征:是多个质量属性的敏感点集合
- 风险点概念:可能引起风险的因素或隐患
- 非风险点概念:可行且可接受的解决方案
- 质量属性范围:包含八大核心属性及可测试性等扩展属性
- 敏感点与权衡点区别:影响属性数量不同(单一vs多个)
2).软件架构评估的概念
- 评估时机:架构设计之后,系统设计之前
- 核心目的:验证架构能否解决软件系统需求
- 评估范围:不单纯满足功能需求,还需考虑质量属性
- 质量考量:包括性能、可靠性等质量属性评估
- 其他因素:需兼顾成本等非功能性要求
- 基本要求:架构必须首先满足核心功能需求
3).架构评估方式
1) 基于调查问卷的方式
- 架构评估方式分类:基于调查问卷/检查表、基于度量、基于场景
- 调查问卷方法定义:设计问卷/检查表供评审人员逐项核对架构质量
- 检查表内容组成:包含八大质量属性及其细化指标(如性能包含响应时间、处理速度)
- 评审执行流程:评审人员按检查表逐条验证功能实现情况并标记结果
- 质量验证标准:对照用户需求指标(如1秒响应、100事件/秒处理能力)进行实际测试验证
- 评审记录方式:通过打勾标记已实现的功能要求
2) 基于度量的方式
- 定义:基于度量的方式是通过制定定量指标直接评估架构质量的方法。
- 指标类型:包括代码行数、性能响应时间(如1秒内优秀)、质量属性等可量化参数。
- 评估标准:建立明确的分级标准(如1秒/2秒/3秒对应优秀/良好/及格)。
- 应用场景:适用于需要客观量化评估架构设计优劣的场景。
- 实施步骤:先确定关键指标→设定量化阈值→划分等级→执行评估。
3) 基于场景的方式
- 基于场景方式的定义:用于描述需求和质量属性的方法,确定功能与架构的映射关系。
- 基于场景方式的三个步骤:确定功能与架构映射、设计质量属性场景、分析架构对场景的支持程度。
- 场景设计的三个要素:刺激(事件)、环境(事件发生条件)、响应(架构反应)。
- 场景设计示例:查询功能场景(管理员点击查询按钮为刺激,三秒内返回结果为响应)。
- 三种评估方式对比:调查问卷(通用性高)、检查表(特定领域)、场景(特定领域)、度量(通用或特定)。
- 评估者了解程度要求:调查问卷(粗略)、检查表(无限制)、场景(中等)、度量(精确)。
- 评估实施阶段:调查问卷(早期)、检查表(中期)、场景(中期)、度量(中期)。
- 评估客观性:调查问卷、检查表、场景(主观性强),度量(相对客观)。
4、基于场景的质量估计方法
1)SAAM方法
- SAAM定义:最早形成文档的软件架构评估方法,最初针对可修改性,后扩展至所有质量属性。
- SAAM目标:验证架构假设和原则,确保架构满足质量要求,主要测试可修改性。
- SAAM架构描述:针对架构的最终版本,早于详细设计,包括功能、结构和分配三个方面。
- SAAM输入:问题描述、需求说明和架构描述,分别对应问题空间和解空间。
- SAAM步骤:场景开发、架构描述、单个场景评估、场景交互评估和总体评估。
- SAAM特点:基于场景开发,通过构造具体场景测试质量属性,可迭代修改架构。
- SAAM质量属性:最初专注于可修改性,后扩展至任何形式的质量属性。
- SAAM方法活动:包括输入、输出和五个具体步骤,强调场景与架构的交互评估。
2)ATAM方法
3)CBAM方法
- CBAM定义:成本效益分析法,从成本角度评估架构的方法
- CBAM作用:作为ATM的补充,在满足质量属性后分析效益
- CBAM核心:基于投资收益率选择合适的架构方案
- CBAM步骤:整理场景→确定优先级→细化分析→分配效用→形成策略对应关系→确定质量响应级别
- CBAM应用:论文写作时可作为ATM的替代方法,但需具备相关能力
- CBAM考试地位:几乎不考,了解即可
考试真题分析:
答案:B D C C B A
1) 例题:质量属性判断
- 质量属性判断:根据描述判断系统质量属性,如性能、可用性、安全性等。
- 性能属性:交易请求在三秒内完成,属于性能属性。
- 性能实现策略:通过资源调度等设计策略实现性能属性。
- 可用性属性:主站档机后三秒内切换至备用站点,属于可用性属性。
- 可用性实现策略:通过心跳、冗余等设计策略实现可用性属性。
- 安全性属性:系统具备安全保护措施,抵挡恶意入侵,属于安全性属性。
- 安全性实现策略:通过追踪审计等设计策略实现安全性属性。
- 真题特点:质量属性判断题目在选择题、案例分析和论文中均非常重要,且分值较高。
答案:C A C D A D C
2) 例题:架构权衡分析方法
- ATM定义:系统架构评估方法,开发前针对性能、安全性、可修改性等质量属性进行评价和折中
- 核心质量属性:性能、可用性、安全性、可修改性
- 四个活动阶段:需求收集、架构视图描述、属性模型构造分析、架构决策折中
- 评估核心:以质量属性为核心概念
- 特殊质量属性案例:易用性(操作一致性)、可测试性(API远程调试)
- 描述工具:质量属性项目数
- 关键概念:权衡点(影响多个质量属性)、敏感点(影响单个质量属性)
三、中间件技术
- 本质定位:在分布式系统中处于操作系统和应用程序之间的中介软件,如同房产中介连接买卖双方
- 核心功能:
- 实现异构系统间的资源共享(不同OS/数据库/网络环境)
- 提供统一编程抽象,隐藏底层复杂度(类比中介简化交易流程)
- 三大特征:
- 是一类软件而非单一软件
- 需实现应用互操作而不仅是互联
- 基于分布式处理,突出网络通信能力
1、主要中间件技术
- 数据库访问中间件:
- 典型技术:ODBC(Windows)、JDBC(Java)
- 核心价值:通过抽象层实现代码复用,一套代码访问多种数据库
- 远程过程调用(RPC):
- 工作原理:本地调用远程地址空间过程,效果等同本地执行
- 应用场景:A计算机调用B计算机功能的跨机通信
- 面向消息中间件(MOM):
- 代表产品:IBM MQSeries(必记)
- 特点:支持多种通信协议和异构平台的消息传递
- 分布式对象中间件:
- 技术融合:对象技术+分布式计算
- 典型框架:CORBA、RMI/EJB、DCOM(对应三大构件)
- 事务中间件(TPM):
- 核心职责:事务管理/负载均衡/失效恢复
- 性能优化:通过任务监控提升系统整体性能