当前位置: 首页 > backend >正文

系统质量属性

        软件架构的基本需求是在满足功能属性的前提下,关注软件系统的质量属性。在精准描述软件质量场景后,可通过对架构的评估决定架构策略以及架构评审。

一、软件系统质量属性

基于软件系统生命周期,将软件系统质量属性分为开发期质量属性和运行期质量属性。

1、开发期质量属性

易理解性:指设计被开发人员理解的难易程度
可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称灵活性
可重用性:指重用软件系统或某一部分的难易程度
可测试性:对软件测试以证明其满足需求规范的难易程度
可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度
可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度

2、运行期质量属性

性能:软件系统及时提供相应服务的能力,如速度、吞吐量和容量等
安全性:软件系统同时兼顾向合法用户提供服务,以及组织非授权使用的能力
可伸缩性:当用户数和数据量增加时,软件系统维持高服务质量的能力
互操作性:软件系统与其他系统交换数据和相互调用服务的难易程度
可靠性:软件系统在一定的时间内持续无故障运行的能力
可用性:系统在一定时间内正常工作的时间所占比例
鲁棒性:软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力,也称健壮性或容错性

二、面向架构评估的质量属性

1、相关属性介绍

性能:处理任务所需时间或单位时间内的处理量

可靠性:分为容错与健壮性。容错即出现错误后仍能保证系统争取运行,且自行修正错误;健壮性即错误不对系统产生影响,按既定程序忽略错误

可用性:正常运行的时间比例
安全性:系统向合法用户提供服务并阻止非法用户的能力
可修改性:分为可维护性、可扩展性、结构重组、可移植性。
功能性:需求的满足程度
可变性:总体架构可变
互操作性:通过可视化或接口方式提供更好的交互操作体验

2、提升或保证质量属性的应对措施

①提升可用性:

错误检测:心跳、Ping/Echo、异常。
错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚。
错误避免:服务下线、事务、进程监控器。
②提升性能:
资源的需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。
资源管理:并发机制、增加资源。
资源仲裁:先来先服务、固定优先级、动态优先级、静态调度。
③提升可修改性:
局部化修改:高内聚低耦合、预测变更、使模块通用。
防止连锁反应:信息隐藏、维持现有接口、限制通信路径、使用中介。
推迟绑定时间:运行时注册、多态、配置文件。
④提升安全性:
抵抗攻击:用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问。
检测攻击:入侵检测系统。
从攻击中恢复:恢复状态、识别攻击者

3、质量属性场景描述

        质量属性场景是一种面向特定质量属性的需求,由刺激源、刺激、环境、制品、响应、响应度量组成。
1)刺激源(Source):某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
2)刺激(Stimulus):指当刺激到达系统时需要考虑的条件。
3)环境(Environment):指该刺激在某些条件内发生。当激励发生时,系统可能处于过载、
运行或者其他情况。
4)制品(Artifact):某个制品被激励,可能是整个系统,也可能是系统的一部分。
5)响应(Response):指在激励到达后所采取的行动。
6)响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需
求进行测试。
http://www.xdnf.cn/news/19175.html

相关文章:

  • Git 安装与国内加速(配置 SSH Key + 镜像克隆)
  • 设置word引用zotero中的参考文献的格式为中文引用格式或中英文格式
  • 电子战:Maritime SIGINT Architecture Technical Standards Handbook
  • Linux之Shell编程(三)流程控制
  • 深度学习重塑医疗:四大创新应用开启健康新纪元
  • 深度学习系列 | Seq2Seq端到端翻译模型
  • Ansible Playbook 调试与预演指南:从语法检查到连通性排查
  • Qt QML注册全局对象并调用其函数和属性
  • 针对 “TCP 连接中断 / 终止阶段” 的攻击
  • PostgreSQL 灾备核心详解:基于日志文件传输的物理复制(流复制)
  • LINUX-网络编程-TCP-UDP
  • 【光照】[光照模型]发展里程碑时间线
  • 拆解《AUTOSAR Adaptive Platform Core》(Core.pdf)—— 汽车电子的 “基础技术说明书”
  • 无网络安装来自 GitHub 的 Python 包
  • More Effective C++ 条款18:分期摊还预期的计算成本(Amortize the Cost of Expected Computations)
  • 构建坚不可摧的数据堡垒:深入解析 Oracle 高可用与容灾技术体系
  • 开发中使用——鸿蒙CoreSpeechKit让文字发声
  • 基于SpringBoot的电脑商城系统【2026最新】
  • 【C++】第二十七节—C++11(下) | 可变参数模版+新的类功能+STL中一些变化+包装器
  • Gray Code (格雷码)
  • 【机器学习入门】4.1 聚类简介——从“物以类聚”看懂无监督分组的核心逻辑
  • 【蓝桥杯 2024 省 Python B】缴纳过路费
  • 网格纹理采样算法
  • SEO关键词布局总踩坑?用腾讯云AI工具从核心词到长尾词一键生成(附青少年英语培训实操案例)
  • 文件,目录,字符串使用
  • 金仓数据库迁移评估系统(KDMS)V4正式上线,助力企业高效完成数据库国产化替代
  • Ubuntu 中通过 SSH 克隆 Windows 上的 Git 仓库
  • STFT和梅尔频谱图
  • Notepad++常用设置
  • Session