高级系统架构师笔记——系统质量属性与架构评估(1)软件系统质量属性

(1)软件系统质量属性

软件系统质量属性

质量属性的概念

软件系统的质量就是"软件系统与明确地和隐含地定义的需求相一致的程度"。根据GB/T16260.1定义,从管理角

度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性:
GB/T16260.1 功能性 可靠性 易用性 效率 维护性 可移植性 适合性 准确性 互操作性 依从性 安全性 容错性 易恢复性 成熟性 易学性 易理解性 易操作性 资源特性 时间特性 可测试性 可修改性 稳定性 易分析性 适应性 易安装性 一致性 可替换性

开发期质量属性

开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含6个方面。
开发期质量属性 易理解性 可扩展性 可重用性 可测试性 可维护性 可移植性

运行期质量属性

运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包含7个方面。
运行期质量属性 性能 安全性 可伸缩性 互操作性 可靠性 可用性 鲁棒性

面向架构评估的质量属性

为了评价一个软件系统,特别是软件系统的架构,需要进行架构评估。在架构评估过程中,评估人员所关注的是系统的质量属性。评估方法所普遍关注的质量属性有以下几种。
面向架构评估的质量属性 性能 可靠性 可用性 安全性 可修改性 功能性 可变性 互操作性 容错 健壮性 机密性 完整性 不可否认性 可控性 可维护性 可扩展性 结构重组 可移植性

性能

定义:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。

常用指标:响应时间、吞吐量

设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度

可靠性

定义:软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。

常用指标:平均失效等待时间(Mean Time To Failure,MTTF)、平均失效间隔时间(Mean Time Between Failure,MTBF)。在失效率为常数和修复时间很短的情况下,MTTF和MTBF几乎相等。

设计策略:心跳、Ping/Echo、冗余、选举、异常处理、监听机制。

可用性

定义:系统能够正常运行的时间比例。

常用指标:故障间隔时间

设计策略:心跳、Ping/Echo、冗余、选举、异常处理、监听机制。

安全性

定义:系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。

常用指标:机密性、完整性、不可否认性、可控性

设计策略:入侵检测、用户认证、用户授权、追踪审计

可修改性

定义:指能够快速地以较高的性价比对系统进行变更的能力。

常用指标:可移植性、可扩展性、结构重组、可移植性

设计策略:接口-实现分类、抽象、信息隐蔽

功能性

定义:系统能完成所期望的工作的能力

可变性

定义:指架构经扩充或变更而成为新架构的能力

互操作性

定义:作为系统组成部分的软件不是独立存在的,通常与其他系统或自身环境相互作用。为了支持互操作性,软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件架构。

相关推荐
米汤爱学习2 分钟前
stable-diffusion-webui【笔记】
笔记·stable diffusion
喜欢吃豆22 分钟前
深度解析:FFmpeg 远程流式解复用原理与工程实践
人工智能·架构·ffmpeg·大模型·音视频·多模态
创作者mateo25 分钟前
PyTorch 入门学习笔记(基础篇)一
pytorch·笔记·学习
oMcLin26 分钟前
如何在 Manjaro Linux 上通过配置systemd服务管理,提升微服务架构的启动速度与资源效率
linux·微服务·架构
Chan1631 分钟前
微服务 - Higress网关
java·spring boot·微服务·云原生·面试·架构·intellij-idea
hkNaruto1 小时前
【AI】AI学习笔记:关于嵌入模型的切片大小,实际的业务系统中如何选择
人工智能·笔记·学习
tle_sammy1 小时前
【架构的本质 07】数据架构:在 AI 时代,数据是流动的资产,不是静态的表格
人工智能·架构
没有bug.的程序员1 小时前
Serverless 架构深度解析:FaaS/BaaS、冷启动困境与场景适配指南
云原生·架构·serverless·架构设计·冷启动·baas·faas
超级种码1 小时前
Kafka四部曲之二:核心架构与设计深度解析
分布式·架构·kafka
小酒星小杜1 小时前
在AI时代,技术人应该每天都要花两小时来构建一个自身的构建系统
前端·vue.js·架构