软件架构设计之质量属性浅析

在这里插入图片描述

引言

在数字化浪潮席卷而来的今天,软件已经渗透到我们生活的方方面面,从手机APP到大型企业级系统,无一不彰显着软件技术的魅力。然而,在这背后,软件架构设计作为软件开发的基石,其质量属性的重要性不言而喻。今天,我们就来一起探索软件架构设计中的质量属性,揭开其神秘面纱。

在这里插入图片描述

质量属性定义

ATAM(Architecture Tradeoff Analysis Method)软件系统质量属性主要涉及到系统在不同生命周期阶段所展现出的特性,这些属性通常被分为开发期质量属性和运行期质量属性两大类。

质量属性概念

软件系统质量是软件满足需求和标准的能力。根据GB/T 16260.1定义,软件质量影响因素可划分为六个维度特性:功能性、可靠性、易用性、效率、维护性和可移植性。
简单来说,质量属性是指软件系统在满足功能需求的同时,还需满足一系列非功能性的质量要求。这些要求包括但不限于性能、可靠性、安全性、易用性、可维护性等。这些质量属性不仅关系到软件的使用体验,更直接关系到软件的生命周期和成本效益。

软件质量属性是描述系统满足利益相关者需求的可测量或可测试的属性,分为开发期和运行期质量属性。

开发期质量属性

开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含以下几个方面:

  1. 易理解性(Understandability)

    • 定义:指设计被开发人员理解的难易程度。
    • 重要性:良好的易理解性可以提高开发效率,减少错误和返工。
  2. 可扩展性(Scalability)

    • 定义:软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。
    • 重要性:可扩展性好的系统能够轻松应对业务增长和变化,降低维护成本。
  3. 可重用性(Reusability)

    • 定义:指重用软件系统或某一部分的难易程度。
    • 重要性:可重用性可以减少开发工作量,提高代码质量和系统稳定性。
  4. 可测试性(Testability)

    • 定义:对软件测试以证明其满足需求规范的难易程度。
    • 重要性:良好的可测试性可以确保软件质量,降低发布风险。
  5. 可维护性(Maintainability)

    • 定义:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
    • 重要性:可维护性高的系统可以降低维护成本,提高系统的长期价值。
  6. 可移植性(Portability)

    • 定义:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
    • 重要性:可移植性好的系统能够适应不同的硬件、操作系统和网络环境,提高系统的灵活性和适应性。

运行期质量属性

运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包含以下几个方面:

  1. 性能(Performance)

    • 定义:软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
    • 量化指标:QPS(每秒处理请求数)、TPS(每秒处理事务数)、响应时间等。
  2. 安全性(Security)

    • 定义:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
    • 重要性:安全性是软件系统的基本要求之一,关乎用户数据和系统资产的安全。
  3. 可伸缩性(Elasticity)

    • 定义:指当用户数和数据量增加时,软件系统维持高服务质量的能力。
    • 实现方式:通过增加服务器、负载均衡等方式提高系统处理能力。
  4. 互操作性(Interoperability)

    • 定义:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
    • 重要性:良好的互操作性可以促进系统之间的集成和协作,提高整体效率。
  5. 可靠性(Reliability)

    • 定义:软件系统在一定的时间内持续无故障运行的能力。
    • 量化指标:MTTF(平均失效等待时间)、MTBF(平均失效间隔时间)等。
  6. 可用性(Availability)

    • 定义:指系统在一定时间内正常工作的时间所占的比例。
    • 量化指标:常用X个9指标进行量化,如“5个9”表示全年系统不可用时间只有5分钟。
  7. 鲁棒性(Robustness)

    • 定义:是指软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力,也称健壮性或容错性。
    • 重要性:鲁棒性好的系统能够应对各种异常情况,保证系统的稳定性和可用性。

ATAM软件系统质量属性涵盖了从开发到运行全生命周期的多个方面,这些属性共同构成了软件系统质量的全面评价体系。

在这里插入图片描述

质量属性场景描述的作用

用途主要在于帮助架构师、开发人员和其他利益相关者深入理解系统如何满足特定的质量属性需求。这些场景描述在ATAM评估过程中起到了关键作用。

主要体现在以下几个方面:

  1. 明确需求:质量属性场景描述有助于明确和细化系统的质量属性需求。通过具体描述刺激源、刺激、环境、制品、响应和响应度量,可以确保所有利益相关者都对系统的期望行为有清晰的认识。

  2. 分析影响:通过质量属性场景,可以分析架构如何响应各种条件和刺激。这有助于识别可能的问题点、瓶颈或弱点,并在架构设计时采取相应的改进措施。

  3. 指导设计:质量属性场景描述可以作为架构设计的指导原则。架构师可以根据这些场景来评估不同设计选项的优缺点,并选择最符合质量属性需求的方案。

  4. 验证架构:在架构开发完成后,可以使用质量属性场景来验证架构是否满足预期的质量属性需求。通过模拟或实际运行这些场景,可以测试架构的响应行为和性能指标,并据此进行必要的调整和优化。

  5. 促进沟通:质量属性场景描述有助于促进不同利益相关者之间的有效沟通。通过共同讨论和分析这些场景,可以确保所有相关方都对系统的期望行为有共同的理解,并减少误解和冲突。

  6. 风险评估:通过对不同质量属性场景的分析,可以评估系统中存在的潜在风险,如性能瓶颈、安全隐患或可扩展性问题等。这有助于在架构设计时采取预防措施,降低系统失败的风险。

  7. 支持决策:在架构评估和决策过程中,质量属性场景描述提供了具体的分析依据。通过比较不同设计选项在不同场景下的表现,可以做出更明智的决策,选择最适合系统需求的架构方案。
    在这里插入图片描述

主要的质量属性

ATAM(Architecture Tradeoff Analysis Method)软件系统架构评估主要关注质量属性,旨在帮助团队在架构设计时理解和评估系统如何满足各种质量属性需求。在ATAM中,质量属性通常被分为几个关键类别,这些类别描述了系统在不同方面的表现。

以下是ATAM中常见的一些质量属性类别:

1. 性能(Performance)

  • 系统响应请求的速度。
  • 吞吐量(系统处理请求的能力)。
  • 资源利用(如CPU、内存和磁盘I/O)。

2. 可用性(Availability)

  • 系统持续提供服务的能力。
  • 故障恢复时间。
  • 系统维护导致的停机时间。

3. 可靠性(Reliability)

  • 系统在特定时间内无故障运行的能力。
  • 平均故障间隔时间(MTBF)。
  • 平均修复时间(MTTR)。

4. 安全性(Security)

  • 系统保护数据和资源免受未经授权访问、使用、修改或破坏的能力。
  • 认证和授权机制。
  • 数据加密和完整性保护。

5. 可维护性(Maintainability)

  • 诊断和修复故障的难易程度。
  • 修改或增强现有功能的难易程度。
  • 文档完备性和准确性。

6. 可扩展性(Scalability)

  • 系统应对增长的能力,如用户数量、数据量或交易量的增长。
  • 垂直扩展(提升硬件性能)和水平扩展(添加更多硬件)。

7. 可移植性(Portability)

  • 系统在不同硬件、操作系统或网络环境中的迁移能力。
  • 跨平台兼容性。

8. 互操作性(Interoperability)

  • 系统与其他系统交换数据和相互调用服务的能力。
  • 标准和协议的支持。

在ATAM评估过程中,团队会首先识别关键的质量属性需求,然后分析架构如何支持这些需求。这通常涉及到识别架构中的关键组件和交互,并评估它们如何影响质量属性。通过模拟和场景分析,团队可以预测系统在不同条件下的行为,并识别可能的问题和改进点。最终,ATAM将帮助团队在架构设计中做出明智的权衡,以确保系统能够满足关键的质量属性需求。
在这里插入图片描述

质量属性场景描述

ATAM(Architecture Tradeoff Analysis Method)质量属性场景描述是为了明确表达软件系统中某个特定质量属性的需求和行为。

关键要素

  1. 刺激源(Source)

    • 定义:触发场景发生的实体或条件。
    • 示例:用户尝试访问网站、外部系统发送数据请求等。
  2. 刺激(Stimulus)

    • 定义:刺激源产生的具体行为或事件。
    • 示例:用户输入了错误的密码、外部系统发送了大量的并发请求。
  3. 环境(Environment)

    • 定义:刺激发生时的上下文或条件。
    • 示例:网络延迟较高、系统处于高负载状态。
  4. 制品(Artifact)

    • 定义:受刺激影响的系统部分或组件。
    • 示例:登录模块、数据库服务器、负载均衡器等。
  5. 响应(Response)

    • 定义:系统对刺激的响应行为。
    • 示例:系统拒绝用户登录、启动负载均衡策略、返回错误信息等。
  6. 响应度量(Response Measurement)

    • 定义:用于量化评估系统响应效果的指标或参数。
    • 示例:登录失败次数、响应时间、吞吐量、系统资源利用率等。

小结

一个清晰的质量属性场景描述应该包含以下结构:

  • 场景编号或名称:唯一标识该场景。
  • 刺激源:明确触发场景发生的实体或条件。
  • 刺激:详细描述刺激源产生的具体行为或事件。
  • 环境:说明刺激发生时的上下文或条件。
  • 制品:指出受刺激影响的系统部分或组件。
  • 响应:描述系统对刺激的响应行为。
  • 响应度量:提供用于量化评估系统响应效果的指标或参数。

示例场景

例如,一个关于“系统登录功能”的可用性质量属性场景描述可能如下:

  • 场景名称:系统登录功能在高并发环境下的可用性
  • 刺激源:大量用户同时尝试登录系统
  • 刺激:系统接收到大量并发登录请求
  • 环境:网络状况良好,但系统处于高负载状态
  • 制品:登录模块、数据库服务器
  • 响应:系统能够正常处理并发请求,快速验证用户身份并返回结果
  • 响应度量:登录成功率、平均响应时间、系统资源利用率(如CPU、内存)等。

在这里插入图片描述

总结

软件架构设计中的质量属性是软件开发过程中不可或缺的一环。作为架构师,我们需要充分理解并关注这些质量属性,通过合理的设计和技术手段来确保软件系统的质量和稳定性。只有这样,我们才能打造出真正优秀、可靠、安全的软件系统,为用户带来更好的使用体验和价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/18497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Blazor入门-svg绘制-碰撞检测和图形坐标调整

上一篇: Blazor入门-简单svg绘制导出图像_blazor 画图-CSDN博客 https://blog.csdn.net/pxy7896/article/details/139003443 注意:本文只给出思路和框架,对于具体的计算细节,考虑到日后会写入软件著作权和专利文书,因…

STM32-11-电容触摸按键

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32电容触摸按键 电容触摸按键原理: 无手指触摸:上电时&…

【Java EE】网络原理——HTTP响应

目录 1.认识“状态码”(status code) 1.1 200 OK 1.2 404 Not Found 1.3 403 Forbodden 1.4 Method Not Allowed 1.5 Internal Sever Error 1.6 504 Gsteway Timeout 1.7 Move temporarily 1.8 Moved Permanently 1.9状态码小结 2.认识响应“报…

树莓派部署harbor_arm64

文章目录 树莓派4b部署Harbor-arm64版本docker-compose维护命令访问harbor 192.168.1.111认用户名密码admin/Harbor12345 树莓派4b部署Harbor-arm64版本 harbor-arm版本 部署:参考 wget https://github.com/hzliangbin/harbor-arm64/releases/download/v1.9.3/ha…

java项目之高校教师科研管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的高校教师科研管理系统源码。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 高校教师科研管…

评测 香橙派OrangePi在智能交通上的应用

1、OrangePi应用场景 关于 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,内存提供了 8GB 和 16GB两种版本。可以实现图像、视频等多种数据分析与推理计算&#…

OpenMV的VisionBoard视觉识别开发板学习记录

此篇博客仅用于对VisionBoard的开发板的学习研究记录,没有教学内容。 一、资料来源 开发板资料链接 开发板环境搭建手册 开发板视频教程 板子的资料网站 openmv官方的网站 目录 一、资料来源二、针对 VisionBoard的目标识别和定位总结1. 目标识别功能1.1 物体检测…

芯片原厂驱动开发工程师:初学到精通,如何快速成长?

01 前言 大家好,我是XX,来自湖南XX学院,电子信息18级,也曾在创新基地控制组学习过两三年,毕业后就职于一家芯片原厂的解决方案部,担任驱动工程师的职位,算上实习期,我的工作时长已有…

htb-Mailing

因为做windows服务器渗透较少,不妥的地方还请师傅们指出 可先看思路,实在不行再看writeup 任意文件下载拿pop3登录邮箱——》利用邮件服务器漏洞拿下NTLM——》利用组件版本漏洞拿下 拿shell 端口扫描开放服务 Host is up (0.91s latency). Not shown:…

CSS学习笔记:rem实现移动端适配的原理——媒体查询

移动端适配 移动端即手机端,也称M端 移动端适配:同一套移动端页面在不同屏幕尺寸的手机上可以实现宽度和高度的自适应,也就是页面中元素的宽度和高度可以根据屏幕尺寸的变化等比缩放 rem配合媒体查询可实现移动端适配 rem单位 媒体查询 …

SpringAdminClient如何将Httpbasic账号密码告知SpringAdminServer

场景,因为Config Service开了权限校验,注册到eureka之后,SpringAdmin查看信息会报错401,如果想在SpringAdmin中正确的看到Config Service的actuator信息则需要将账号密码告知给SpringAdmin,磁力用的是Eureka作为发现服…

javaIO流知识点概况

一、前言: 1.1.流的概念: java将输入与输出比喻为"流",英文:Stream. 就像生活中的"电流","水流"一样,它是以同一个方向顺序移动的过程.只不过这里流动的是字节(2进制数据).所以在IO中有输入流和输出流之分,我们理解他们…

单点11.2.0.3备份恢复到单点11.2.0.4

保命法则:先备份再操作,磁盘空间紧张无法备份就让满足,给自己留退路。 场景说明: 1.本文档的环境为同平台、不同版本(操作系统版本可以不同,数据库小版本不同),源机器和目标机器部…

swiftui基础组件Image加载图片,以及记载gif动图示例

想要在swiftui中展示图片,可以使用Image这个组件,这个组件可以加载本地图片和网络图片,也可以调整图片大小等设置。先大概看一下Image的方法有哪些可以用。 常用的Image属性 1.调整图像尺寸: 使用 resizable() 方法使图像可调整…

量子密钥分发系统基础器件(一):光纤干涉仪

干涉仪的基本原理是利用波的叠加来获得波的相位信息,从而获取实验中所关心的物理量。光纤干涉仪是由光学干涉仪发展而来的,利用光纤实现光的干涉,由于光纤取代透镜系统构成的光路具有柔软、形状可随意变化、传输距离远等特点,当前…

【Linux】23. 线程封装

如何理解C11中的多线程(了解) #include <iostream> #include <unistd.h> #include <thread>void thread_run() {while (true){std::cout << "我是新线程..." << std::endl;sleep(1);} } int main() {// 任何语言需要在Linux上实现多线…

解决IDEA菜单栏找不到VCS的问题,且使用IDEA推送新项目到托管仓库

问题描述&#xff1a; 在idea软件中使用git推送项目&#xff0c;idea页面顶部菜单栏无VCS 解决方案&#xff1a; 一&#xff1a;File->Settings->Version Control-> 点击 ->选择项目->VCS:->点击ok&#xff1a; 二&#xff1a;托管平台创建一个Git仓库来保…

Mysql 8.0 主从复制及读写分离搭建记录

前言 搭建参考&#xff1a;搭建Mysql主从复制 为什么要做主从复制&#xff1f; 做数据的热备&#xff0c;作为后备数据库&#xff0c;主数据库服务器故障后&#xff0c;可切换到从数据库继续工作&#xff0c;避免数据丢失。架构的扩展。业务量越来越大&#xff0c;I/O访问频…

6月来得及!考研数学120分复习规划:660/880/1000/1800怎么刷?

首先&#xff0c;120分是个什么概念&#xff1f; 如果目标120&#xff0c;历年真题就要135以上。这是因为&#xff1a; 1. 习题册里都是历年真题改编&#xff0c;很多题型见过了&#xff1b; 2. 考场发挥有不确定因素&#xff0c;所以需要安全边界。 总体规划 那么&#xff…

[java基础揉碎]文件IO流

目录 文件 什么是文件 文件流​编辑 常用的文件操作 创建文件方式一 创建文件方式二 创建文件方式三 tip:为什么new file 了还有执行createNewFile?new File的时候其实是在内存中创建了文件对象, 还没有在磁盘中, 当执行createNewFile的时候才是往磁盘中写入​编辑 …