软考笔记--软件系统质量属性
一.软件系统质量属性的概念
软件系统的质量就是“软件系统与明确地和隐含的定义的需求相一致的程度”。更具体地说,软件系统质量就是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。从管理的角度对软件系统质量数据进行度量,可以将影响软件质量的主要因素划分为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计算机科学与技术/软件工程-机试指南【考研复习】
本文提到的西北大学是位于密歇根湖泊畔的西北大学。西北大学(英语:Northwestern University,简称:NU)是美国的一所著名私立研究型大学。它由九人于1851年创立,目标是建立一所为西北领地地区的人服务的大学。…...

【Linux的网络编程】
1、OSI的七层网络模型有哪些,每一层有什么作用? 答:(1)应用层:负责处理不同应用程序之间的通信,需要满足提供的协议,确保数据发送方和接收方的正确。 (2)表…...

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

前端工程部署步骤小记
安装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?它与 JavaScript 有什么区别?2. TS 泛型、接口、泛型工具record、Pick、Omit3. TS unknow和any的区别,如何告诉编译器unknow一定是某个类型?4. 元组与常规数组的区别5. 什么是泛型,有什么作用&…...

linux系统nginx常用命令
查nginx位置 find / -name nginx nginx目录:/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那个绿色海豚的图标,然后选择新建数据库。 数据库名按自己喜好的填,不要写中文, 在 MySQL 8.0 中,最优的字…...

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

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

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时要采取相同形式
以下动作有什么错? std::string *stringArray new std::string[100]; // ... delete stringArray;每件事看起来都井然有序,使用了new,也搭配了对应的delete。但还是有某样东西完全错误:你的程序行为未定义。至少,str…...

PokéLLMon 源码解析(四)
.\PokeLLMon\poke_env\exceptions.py """ This module contains exceptions. """# 定义一个自定义异常类 ShowdownException,继承自内置异常类 Exception class ShowdownException(Exception):"""This exception is …...

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

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

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

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

慢sql优化记录1
慢sql为: select count(*) from t_wf_process p left join t_wf_core_dofile dofile on p.wf_instance_uid dofile.instanceid join zwkj_department d on p.userdeptid d.department_guid ,t_wf_core_item i,wf_node n where (p.IS_DUPLICATE ! true or p.IS_DU…...

堆和堆排序
堆排序是一种与插入排序和并归排序十分不同的算法。 优先级队列 Priority Queue 优先级队列是类似于常规队列或堆栈数据结构的抽象数据类型(ADT)。优先级队列中的每个元素都有一个相关联的优先级key。在优先级队列中,高优先级的元素优先于…...

STM32 | 零基础 STM32 第一天
零基础 STM32 第一天 一、认知STM32 1、STM32概念 STM32:意法半导体基于ARM公司的Cortex-M内核开发的32位的高性能、低功耗单片机。 ST:意法半导体 M:基于ARM公司的Cortex-M内核的高性能、低功耗单片机 32:32位单片机 2、STM32开发的产品 STM32开发的产品&a…...

day16_购物车(添加购物车,购物车列表查询,删除购物车商品,更新选中商品状态,完成购物车商品的全选,清空购物车)
文章目录 购物车模块1 需求说明2 环境搭建3 添加购物车3.1 需求说明3.2 远程调用接口开发3.2.1 ProductController3.2.2 ProductService 3.3 openFeign接口定义3.3.1 环境搭建3.3.2 接口定义3.3.3 降级类定义 3.4 业务后端接口开发3.4.1 添加依赖3.4.2 修改启动类3.4.3 CartInf…...

基于Spring Boot的图书个性化推荐系统 ,计算机毕业设计(带源码+论文)
源码获取地址: 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1765769136268455938...

libevent源码解析:定时器事件(三)
文章目录 前言一、用例小根堆管理定时器事件小根堆和链表管理定时器事件区别 二、基本数据结构介绍结构体成员分析小根堆和链表common_timeout图示 三、源码分析小根堆管理定时器事件event_newevent_addevent_dispatch 链表common_timeout管理定时器事件event_base_init_common…...

3D资产管理
3D 资产管理是指组织、跟踪、优化和分发 3D 模型和资产以用于游戏、电影、AR/VR 体验等各种应用的过程。 3D资产管理也称为3D内容管理。 随着游戏、电影、建筑、工程等行业中 3D 内容的增长,实施有效的资产管理工作流程对于提高生产力、减少错误、简化工作流程以及使…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Blank)
空白填充组件,在容器主轴方向上,空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column/Flex时生效。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件…...

【手游联运平台搭建】游戏平台的作用
随着科技的不断发展,游戏行业也在不断壮大,而游戏平台作为连接玩家与游戏的桥梁,发挥着越来越重要的作用。游戏平台不仅为玩家提供了便捷的游戏体验,还为游戏开发者提供了广阔的市场和推广渠道。本文将从多个方面探讨游戏平台的作…...

手把手教会你 - StreamAPI基本用法
1. 简介 目前响应式编程的学习中很多时候都用到了Lambda表达式和StreamAPI,那么今天就在这里记录一下一些最基本的使用方法。 StreamAPI中引入了流的概念,其将集合看作一种流,流在管道中传输(动态的),可以…...