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

软考笔记--软件系统质量属性

一.软件系统质量属性的概念

软件系统的质量就是“软件系统与明确地和隐含的定义的需求相一致的程度”。更具体地说,软件系统质量就是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。从管理的角度对软件系统质量数据进行度量,可以将影响软件质量的主要因素划分为6种纬度特性:功能性。可靠性,易用性,效率,维护性与可移植性。其中,功能包括适合性,准确性,互操作性,依从性,安全性;可靠性包括容错性、易恢复性,成熟性;易用性包括易学性,易理解性、易操作性;

效率包括资源特性和时间特性;维护性包括可测试性、可修改性、稳定性和易分析性;可移植性包括适应性、易安装性、一致性和可替换性。

软件系统质量属性是一个个系统的可测量或者可测试的属性,用来描述系统满足利益相关者需求的程度。基于软件系统的声明周期,可以将软件系统的质量属性分为开发期质量属性和运行期质量属性两个部分。

1.开发期质量属性

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

(1)易理解性:指定设计被开发人员理解的难易程度。

(2)可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。

(3)可重用性:指重用软件系统或某一部分的难易程度。

(4)可测试性:对软件测试以证明其满足需求规范的难易程度。

(5)可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。

(6)可移植性:将软件系统从一个运行环境移到另一个不同的运行环境的难易程度。

2.运行期质量属性

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

(1)性能:性能是指软件系统及时提供相应服务的能力。

(2)安全性:指软件系统时间同时兼顾合法用户提供服务,以及阻止非授权使用的能力。

(3)可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。

(4)互操作性:指本软件系统与其他系统交换数据和相互调用服务的难以程度。

(5)可靠性:指系统在一定的时间内持续无故障运行的能力。

(6)可用性:指系统在一定时间内正常工作的时间所占的比例。

(7)鲁棒性:指软件系统在非正常情况下扔能正常运行的能力,也称为健壮性或容错性。

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

为了评价一个软件系统,特别是软件系统的架构,需要进行架构评估。在架构评估过程中,评估人员所关注的是系统的质量属性。评估方法所普遍关注的质量属于有性能,可靠性,可用性,安全性,可修改性,功能性,可变性,互操作性。

1.性能

性能是值系统的响应能力,即需要经过多长时间才能对某个时间做出响应,或者在某段时间内系统所能处理的个数。

2.可靠性

可靠性 (Reliability) 是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持

软件系统的功能特性的基本能力。可靠性是最重要的软件特性,通常用来衡量在规定的条件和时间内,软件完成规定功能的能力。可靠性通常用平均失效等待时间 ( MTTF) 和平均失效间隔时间 (MTBF) 来衡量。在失效率为常数和修复时间很短的情况下,MTTF 和 MTBF几乎相等。

3.可用性

可用性是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或出现故障是系统能够恢复正常的速度来表示。

4.安全性

安全性 (Security) 是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图

或拒绝服务的能力。

5.可以修改性

可修改性 (Modifability) 是指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考查这些变更的代价来衡量可修改性。可修改性包含可维护性,可扩展性,结构重组,可移植性。

6.功能性

功能性 (Functionality) 是系统能完成所期望的工作的能力。一项任务的完成需要系统中许

多或大多数构件的相互协作。

7.可变性

可变性 (Changeability) 是指架构经扩充或变更而成为新架构的能力。这种新架构应该符合预先定义的规则,在某些具体方面不同于原有的架构。当要将某个架构作为一系列相关产品 (例如,软件产品线)的基础时,可变性是很重要的。

8.互操作性

作为系统组成部分的软件不是独立存在的,通常与其他系统或自身环境相互作用。为了支

持互操作性,软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序 和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件架构。

三.质量属性场景描述

为了精确描述软件系统的质量属性,通常采用质量属性场景作为描述质量属性的手段。质量场景是一种面向特定质量属性的需求,由六部分组成:

刺激源:这个是某个生成该刺激的实体。

刺激:该刺激是当刺激达到系统是需要考虑的条件。

环境:该刺激在某些条件下发生。

制品:某个制品被激励。这可能是整个系统,也可能是系统的一部分。

响应:该响应是在激励到达后所采取的行动。

响应度量:当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。

质量属性场景主要关注可用性、可修改性、性能、可测试性、易用性和安全性等6类质量属性。

1.可用性质量属性

可用性质量属性场景所关注的方面包括系统故障发生的频率、出现故障时会发生什么情况、 允许系统有多长是非正常运行、什么时候可以安全地出现故障、如何防止故障的发生以及发生故障时要求进行哪种通知。

2.可修改性质量属性场景

可修改性质量属性场景主要关注系统在改变功能、质量属性时需要付出的成本和难度。

3.性能质量场景

性能质量属性场景主要关注系统的响应速度,可以通过效率、响应时间、吞吐量、负载来客观评价性能的好坏。

4.可测试性质量属性场景

可测试性质量属性场景主要关注系统测试过程中的效率,发现系统缺陷或故障的难易程度等。

5.易用性质量属性场景

易用性质量属性场景主要关注用户在使用系统时的容易程度,包括系统的学习曲线、完成操作的效率、对系统使用过程的满意程度等。

6.安全性质量属性场景

安全性质量属性场景主要关注系统在安全性方面的要素,衡量系统在向合法用户提供服务的同时,阻止非授权用户使用的能力。

相关文章:

软考笔记--软件系统质量属性

一.软件系统质量属性的概念 软件系统的质量就是“软件系统与明确地和隐含的定义的需求相一致的程度”。更具体地说,软件系统质量就是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。从管理…...

新型设备巡检方案-手机云巡检

随着科技的不断发展,设备巡检工作也在逐步向智能化、高效化方向转变。传统的巡检方式往往需要人工逐个设备检查,耗时耗力,效率低下,同时还容易漏检和误检。而新型设备巡检应用—手机蓝牙云巡检的出现,则为设备巡检工作…...

node.js 下 mysql2 的 CURD 功能极简封装

此封装适合于使用 SQL 直接操作数据库的小型后端项目,更多功能请查阅MySQL2官网 // 代码保存到单独的 js 文件const mysql require(mysql2/promise)const debug true let conn/*** 执行 SQL 语句* param {String} sql* param {*} params* returns {Array}*/ const…...

Cloud-Eureka服务治理-Ribbon负载均衡

构建Cloud父工程 父工程只做依赖版本管理 不引入依赖 pom.xml <packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.9.RELEA…...

Northwestern University-844计算机科学与技术/软件工程-机试指南【考研复习】

本文提到的西北大学是位于密歇根湖泊畔的西北大学。西北大学&#xff08;英语&#xff1a;Northwestern University&#xff0c;简称&#xff1a;NU&#xff09;是美国的一所著名私立研究型大学。它由九人于1851年创立&#xff0c;目标是建立一所为西北领地地区的人服务的大学。…...

【Linux的网络编程】

1、OSI的七层网络模型有哪些&#xff0c;每一层有什么作用&#xff1f; 答&#xff1a;&#xff08;1&#xff09;应用层&#xff1a;负责处理不同应用程序之间的通信&#xff0c;需要满足提供的协议&#xff0c;确保数据发送方和接收方的正确。 &#xff08;2&#xff09;表…...

vue-seamless-scroll 点击事件不生效

问题&#xff1a;在使用此插件时发现&#xff0c;列表内容前几行还是能正常点击的&#xff0c;但是从第二次出现的列表开始就没有点击事件了 原因&#xff1a;因为html元素是复制出来的&#xff08;滚动组件是将后面的复制出来一份&#xff0c;进行填铺页面&#xff0c;方便滚动…...

前端工程部署步骤小记

安装mqtt: “mqtt”: “^4.3.7”, npm install git panjiacheng 后台demo下载zip 1、npm install --registryhttps://registry.npmmirror.com 2、npm run dev 前端demo创建 1、安装npm 2、npm install vuenext 3、npm install -g vue/cli 查看版本 vue --version 4、更新插件…...

TS常见问题

文章目录 1. 什么是 TypeScript&#xff1f;它与 JavaScript 有什么区别&#xff1f;2. TS 泛型、接口、泛型工具record、Pick、Omit3. TS unknow和any的区别&#xff0c;如何告诉编译器unknow一定是某个类型&#xff1f;4. 元组与常规数组的区别5. 什么是泛型,有什么作用&…...

linux系统nginx常用命令

查nginx位置 find / -name nginx nginx目录&#xff1a;/usr/local/ 查看nginx进程号 ps -ef |grep nginx 停止进程 kill 2072 启动 ./sbin/nginx /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf 启动并校验校验配置文件 ./sbin/nginx -t 看到如下显…...

MySQl基础入门③

上一遍内容 接下来我们都使用navicat软件来操作数据了。 1.新建数据库 先创建我门自己的一个数据库 鼠标右键点击bendi那个绿色海豚的图标&#xff0c;然后选择新建数据库。 数据库名按自己喜好的填&#xff0c;不要写中文&#xff0c; 在 MySQL 8.0 中&#xff0c;最优的字…...

idea Gradle 控制台中文乱码

如下图所示&#xff0c;idea 中的 Gradle 控制台中文乱码&#xff1a; 解决方法&#xff0c;如下图所示&#xff1a; 注意&#xff1a;如果你的 idea 使用 crack 等方式破解了&#xff0c;那么你可能需要在文件 crack-2023\jetbra\vmoptions\idea.vmoptions 中进行配置&#xf…...

嵌入式学习day31 网络

网络: 数据传输,数据共享 1.网络协议模型: OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式&#xff08;数据报…...

Docker网络+原理+link+自定义网络

目录 一、理解Docker网络 1.1 运行tomcat容器 1.2 查看容器内部网络地址 1.3 测试连通性 二、原理 2.1 查看网卡信息 2.2 再启动一个容器测试网卡 2.3 测试tomcat01 和tomcat02是否可以ping通 2.4 只要删除容器,对应网桥一对就没了 2.5 结论 三、--link 3.…...

Effective C++ 学习笔记 条款16 成对使用new和delete时要采取相同形式

以下动作有什么错&#xff1f; std::string *stringArray new std::string[100]; // ... delete stringArray;每件事看起来都井然有序&#xff0c;使用了new&#xff0c;也搭配了对应的delete。但还是有某样东西完全错误&#xff1a;你的程序行为未定义。至少&#xff0c;str…...

PokéLLMon 源码解析(四)

.\PokeLLMon\poke_env\exceptions.py """ This module contains exceptions. """# 定义一个自定义异常类 ShowdownException&#xff0c;继承自内置异常类 Exception class ShowdownException(Exception):"""This exception is …...

区块链基础知识01

区块链&#xff1a;区块链技术是一种高级数据库机制&#xff0c;允许在企业网络中透明地共享信息。区块链数据库将数据存储在区块中&#xff0c;而数据库则一起链接到一个链条中。数据在时间上是一致的&#xff0c;在没有网络共识的情况下&#xff0c;不能删除或修改链条。 即&…...

YOLOv9(2):YOLOv9网络结构

1. 前言 本文仅以官方提供的yolov9.yaml来进行简要讲解。 讲解之前&#xff0c;还是要做一些简单的铺垫。 Slice层不做任何的操作&#xff0c;纯粹是做一个占位层。这样一来&#xff0c;在parse_model时&#xff0c;ch[n]可表示第n层的输出通道。 Detect和DDetect主要区别还…...

提取b站字幕(视频字幕、AI字幕)

提取b站字幕&#xff08;视频字幕、AI字幕&#xff09; 1. 打开视频 2. 按 F12 进行开发者界面 视频自己的紫米输入的是 json&#xff0c;如果是AI字幕则需要输入 ai_subtitle 3. 进入这个网址&#xff1a;https://www.dreamlyn.cn/bsrt...

JAVA程序员如何快速熟悉新项目?

文章目录 Java程序员快速熟悉一个新项目的步骤通常包括以下几个方面&#xff1a;实例展示&#xff1a;Java程序员加入新项目时可能遇到的技术难题及其解决方案包括&#xff1a; Java程序员快速熟悉一个新项目的步骤通常包括以下几个方面&#xff1a; 理解项目背景和目标&#x…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...