首页 > 其他分享 >软件架构的10个质量属性

软件架构的10个质量属性

时间:2024-10-20 20:31:52浏览次数:10  
标签:10 系统 用户 应用程序 故障 软件架构 软件 属性

原文链接:软件架构的10个质量属性 – 每天进步一点点

一般地,对于软件系统的需求而言,分为两类:功能性需求和非功能性需求。软件系统的架构设计既要满足软件的功能性需求,还要满足软件的非功能性需求。特别地, 系统架构对软件非功能性需求的支撑成为架构的质量属性。本文描述了软件的10个质量属性, 但不意味着每个质量属性都会在架构设计中呈现,可以挑选对产品最重要的质量属性,然后进行实现。

1 可伸缩性

随着用户或请求数量的增加,系统运行和操作的能力也随之增加。在云平台上,可伸缩性可以通过机器的水平或垂直缩放或者简单地附加 AutoScalingGroup 来实现。

流量模式: 了解系统的交通模式。尽可能多地产生机器是不划算的,即使它的利用率不高。

  • 日行模式: 特定地区的交通在早上增加,晚上减少。
  • 全局/区域模式: 区域大量使用应用程序。
  • 突发流量: 许多用户都在请求资源,但是只有少数几台机器可以为突发的流量提供服务。这些可能发生在高峰期或人口密集地区。

自动缩放: 能够迅速产生一些机器,以处理流量的爆发,当需求正在减少时,优雅地收缩。

延迟: 能够尽快为请求提供服务。这还包括优化算法和在用户位置附近复制系统,以减少请求的往返。

2 可用性

它以正常运行时间的百分比来衡量,并定义了系统正常运行和正常工作的时间比例。可用性受到系统错误、基础设施问题、恶意攻击和系统负载的影响。

部署标记: 部署应用程序组件的多个独立副本,包括数据存储区

区域部署: 将后端服务部署到一组地理节点中,每个节点都可以服务任何区域中的任何客户端请求。

3 可扩展性

可扩展性度量扩展了系统的能力和实现扩展所需的工作。扩展可以通过添加新功能或修改现有功能来实现,该原则规定在不损害当前系统功能的情况下进行增强。

模块化/可重用性: 可重用性和可扩展性使得技术可以以更少的开发和维护时间转移到另一个项目,同时增强了可靠性和一致性。

可插拔性: 能够轻松地插入其他组件,比如微内核架构。

4 一致性

一致性保证每个读操作返回最近的写操作。这意味着在执行每个操作之后,所有节点的数据都是一致的,因此,,无论它们连接到哪个节点,所有客户端都可以同时看到相同的数据。一致性提高了数据的新鲜程度。

5 弹性

系统可以从容地处理意外故障和恶意故障并进行恢复,检测故障并快速有效地恢复对于保持弹性是必要的。

可恢复性: 准备的过程和功能能够在发生意外更改后将服务返回到初始运行状态。意外的更改包括应用程序的软删除或硬删除或错误配置。灾难恢复包括了旨在防止或尽量减少灾难性事件造成的数据丢失和业务中断的最佳实践,涵盖了从设备故障和局部停电到网络攻击、民事紧急情况、犯罪或军事攻击以及自然灾害。

设计模式:

  • 隔离: 将应用程序的元素隔离到池中,以便在一个池失败时,其他元素继续运行。
  • 断路器: 当连接到远程服务或资源时,处理可能需要花费不同时间来修复的故障。
  • 选举: 通过选举一个实例作为负责管理其他实例的领导者,协调分布式应用程序中协作任务实例集合执行的操作。
6 易用性

可用性可以描述为一个系统的能力,为其用户提供一个条件,以执行任务的安全有效,同时拥有良好的用户体验。它是指特定的消费者能够使用软件在量化的环境中以有效、高效和满意的方式实现量化目标的程度。

易访问性: 让具有最广泛特征和功能的人可以使用该软件。这包括失聪、失明、色盲等用户。

易学性: 用户学习如何使用软件有多容易?

API 契约: 对于内部团队,理解 API 契约有助于轻松接入任何系统。

7 可观测性

可观测性是收集关于程序执行、模块内部状态及组件间通信的数据的能力。为了提高可观测性,可以使用各种测试跟踪技术和工具。

日志记录: 在每个请求中生成不同类型的日志: 事件日志、事务日志、消息日志和服务器日志。

警报和监控: 准备监控仪表板,创建 SLI (服务水平指示器)并设置关键警报。

L1/L2/L3: 为 L1/L2设置随叫随到的支持流程。L1支持包括与客户交互,L2支持 L1路由到它们的工单,并帮助进行故障排除。L3是支持的最后一环,通常包括一个解决技术问题的开发团队。

8 安全性

软件保护信息和数据,使人或其他产品或系统有相应的数据访问类型和授权水平。这一系列特征包括机密性(数据只能被授权访问) ,完整性(软件防止未经授权访问或修改软件或信息) ,不可否认性(能否证明已经发生的行为或事件) ,问责性(能否追踪用户的行为)和真实性(验证用户的身份)。

可审核性: 审核并跟踪系统活动,以便在发生安全性缺陷时,可以确定缺陷的机制和程度。远程存储审计跟踪(可以防止入侵者掩盖其踪迹。

合法性:

  • 遵守: 遵守 GDPR、 《个保法》等关于数据保护的法律法规。
  • 隐私: 对公司内部员工隐藏事务的能力(加密的事务,甚至 DBA 和网络架构师也看不到它们)。

身份验证: 确保用户身份的安全性要求。

授权: 确保用户只能访问应用程序中的某些功能(通过用例、子系统、网页、业务规则、字段级别等)。

9 持久性

持久性是软件可服务性的解决能力,能够较长时间地满足用户的需求。

复制: 涉及共享信息,以确保冗余资源之间的一致性,从而提高可靠性、容错性或可访问性。

容错性: 容错性是一种特性,它使系统能够在某些组件出现一个或多个故障时继续正常运行。

可归档性: 数据是否需要在一段时间后归档或删除?(例如,客户数据将在三个月后被删除,或被标记为过时,并存档在备用数据库中,以便将来访问。)

10 敏捷性

敏捷已经成为当今描述当代软件方法的流行语,相关的敏捷团队可能是一个能够适应变化的团队。

可维护性: 应用更改和增强系统有多容易?表示开发人员可以修改软件以改进、纠正或使其适应环境和需求变化的有效性和效率程度。

  • 可测试性: 开发人员和其他人员测试软件的容易程度
  • 易于开发: 开发人员在不引入缺陷或降低现有产品质量的情况下修改软件的程度

可部署性: 在提交部署之后到代码投入生产的时间。

可安装性: 易于在所有必要的平台上安装系统。

可升级性: 在服务器和客户端上从此应用程序/解决方案的以前版本轻松/快速升级到较新版本的能力。

可移植性: 系统是否需要在多个平台上运行?(例如,前端是否需要针对 Oracle 和 SAP 运行?)

可配置性: 最终用户可以轻松地更改软件配置的各个方面(通过可用的接口)。

兼容性: 产品、系统或组件在共享相同的硬件或软件环境时,与其他产品、设计或成员交换信息并执行所需功能的程度。

标签:10,系统,用户,应用程序,故障,软件架构,软件,属性
From: https://www.cnblogs.com/longkui-site/p/18487835

相关文章

  • 10月阅读笔记1
    在这个月,我有幸阅读一本名为代码大全2的书籍,这是我为它写的第一篇阅读笔记。《代码大全2》是SteveMcConnell的杰作,它被誉为软件开发领域的里程碑式著作。我认为这本书的文字详实、实用,深度剖析了软件设计、编码实践、代码质量和团队协作的各个方面,更是每个程序员不可多得的学习......
  • P10233 [yLCPC2024] A. dx 分计算 题解
    题目大意:题目传送门共\(T\)组测试数据,每组数据给定一个字符串\(s\)和\(Q\)次询问,按照特定的赋值方式,每次询问\(l\)到\(r\)间按这样的赋值方式的总和是多少。赋值方式如下:P可得3分p可得2分G可得1分其余字符不得分题目分析:前置知识:前缀和。(没有学过的可以先......
  • ISAD1000/5004 Software Engineering
    IntroductiontoSoftwareEngineering(ISAD1000/5004)Semester2,2024Due:Friday18October,23:59GMT+8Weight:50%oftheunitmarkNoteThisdocumentissubjecttoclarificationsandminorchangesthatremoveambiguityoraddressfrequentlyaskedquestions.......
  • 2024.10.20 1859版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 视野修炼第106期 | Node23新特性
    欢迎来到第106期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • 牛客小白月赛102
    A题题目描述给定一组数,找出这组数的子序列中有一个包含从1~n的所有数字(此处子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列)用map记录每个数出现与否,再判断是否满足题意代码#include<bits/stdc++.h>usingnamespacestd;intT,n,k,......
  • 【学校训练记录】10月个人训练赛4个人题解
    A:要使s,t相等只要互相删除对方没有的字母即可,即找到a-z字母拥有最少的#include<bits/stdc++.h>#defineendl"\n"#defineintlonglongusingnamespacestd;strings1,s2;inta1[30],a2[30];voidsolve(){ cin>>s1>>s2; for(inti=0;i<s1.size(......
  • 私钥碰撞器,单窗口月搜易可达1000+可无限放大
    功能介绍:协议私钥碰撞,24小时全自动挂机碰到自动建立文档储存运气好每天几十几百个U甚至更多运气不好也有好几个U有保底双协议bnb和eth,btc待发布设备需求:电脑......
  • 1077. 项目员工 III
    力扣题目跳转(1077.项目员工III-力扣(LeetCode))项目表 Project:+-------------+---------+|ColumnName|Type|+-------------+---------+|project_id|int||employee_id|int|+-------------+---------+(project_id,employee_id)是这个表的......
  • 20241020比赛总结
    T1Reversehttps://www.gxyzoj.com/d/hzoj/p/P980假设1在点i时,这个1可以通过一次翻转到达那些点,将这些点和i连边,此时答案就是s到x的最短路但是,此时边数也会到达\(n^2\)级别考虑优化,因为边权均为1,所以可以直接bfs,可以发现每个点能转移的点的奇偶性是有限制的,而且每个点至多被更......