首页 > 其他分享 >软件系统质量属性_2.面向架构评估的质量属性

软件系统质量属性_2.面向架构评估的质量属性

时间:2024-04-06 16:33:22浏览次数:21  
标签:架构 软件系统 错误 系统 可修改性 质量 构件 属性

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

1.性能

         性能(Performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。经常用单位时间内所处理事务的数量或系统完成某个事务处理所需的时间来对性能进行定量表示。性能测试经常要使用基准测试程序。

2.可靠性

         可靠性(Reliability)是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。可靠性是最重要的软件特性,通常用来衡量在规定的条件和时间内,软件完成规定功能的能力。可靠性通常用平均失效等待时间(Mean Time To Failure,MTTF)和平均失效间隔时间(Mean Time Between Failure,MTBF)来衡量。在失效率为常数和修复时间很短的情况下,MTTF和MTBF几乎相等。可靠性可以分为两个方面。

        (1)容错。容错的目的是在错误发生时确保系统正确的行为,并进行内部“修复”。例如在一个分布式软件系统中失去了一个与远程构件的连接,接下来恢复了连接。在修复这样的错误之后,软件系统可以重新或重复执行进程间的操作,直到错误再次发生。

        (2)健壮性。这里说的是保护应用程序不受错误使用和错误输入的影响,在发生意外错误事件时确保应用系统处于预先定义好的状态。值得注意的是,和容错相比,健壮性并不是说在错误发生时软件可以继续运行,它只能保证软件按照某种已经定义好的方式终止执行。软件架构对软件系统的可靠性有巨大的影响。例如,软件架构设计上通过在应用程序内部采用冗余机制,或集成监控构件和异常处理,以提升系统可靠性。

3.可用性

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

4.安全性

         安全性(Security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性可根据系统可能受到的安全威胁类型来分类。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。其中,机密性保证信息不泄露给未授权的用户、实体或过程;完整性保证信息的完整和准确,防止信息被非法修改;不可否认性是指信息交换的双方不能否认其在交互过程中发送信息或接收信息的行为;可控性保证对信息的传播及内容具有控制的能力,防止为非法者所用。

5.可修改性

         可修改性(Modifiability)是指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考查这些变更的代价来衡量可修改性。可修改性包含以下4个方面。

        (1)可维护性(Maintainability)。这主要体现在问题的修复上,在错误发生后“修复”软件系统。可维护性好的软件架构往往能做局部性的修改并能使对其他构件的负面影响最小化。

        (2)可扩展性(Extendibility)。这一点关注的是使用新特性来扩展软件系统,以及使用改进版本方式替换构件并删除不需要或不必要的特性或构件。为了实现可扩展性,软件系统需要松散耦合的构件。其目标是实现一种架构,能使开发人员在不影响构件客户的情况下替换构件。支持把新构件集成到现有的架构中也是必要的。

        (3)结构重组(Reassemble)。这一点处理的是重新组织软件系统的构件及构件间的关系,例如通过将构件移动到一个不同的子系统而改变它的位置。

        (4)可移植性(Portability)。可移植性使软件系统适用于多种硬件平台、用户界面、操作系统、编程语言或编译器。

6.功能性

         功能性(Functionality)是系统能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。

7.可变性

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

8.互操作性

        作为系统组成部分的软件不是独立存在的,通常与其他系统或自身环境相互作用。为了支持互操作性,软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。

标签:架构,软件系统,错误,系统,可修改性,质量,构件,属性
From: https://blog.csdn.net/huaqianzkh/article/details/137418958

相关文章

  • 强制设置和恢复依赖属性值(类似WPF内置的Style.Trigger和Template.Trigger)
    WPF元素的依赖属性的值由众多规则决定,最高优先级的规则决定依赖属性的最终当前值。如本地值>继承值>默认值。可以临时忽略一切规则,强制为依赖属性指定一个值,相当于强行插入一个最高优先级规则,后续可以删除此强制值(最高优先级规则),将依赖属性的值恢复成原来的计算规则。这个......
  • C# 属性与结构
    C#属性C#属性,属性是一种特殊的类成员。我们使用预定义的set和get方法来访问和修改它们。属性读取和写入会转换为获取和设置方法调用。与使用自定义方法调用(例如object.GetName())相比,使用字段符号(例如object.Name)访问变量更容易。但是,就属性而言,我们仍然具有封装和信息......
  • Property属性使用
    ★基本定义一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法★property属性的两种方式装饰器=>在方法上应用装饰器类属性=>在类中定义值为property对象的类属性★装饰器方式代码示例classGoods(object):def__init__(self):......
  • 第三个OpenGL程序,shaders _ 后续 之 moreAttribute (设置顶点位置属性 颜色位置属性),从
    效果: 代码main.cpp#include<iostream>#include<glad/glad.h>#include<glfw3.h>#include<math.h>usingnamespacestd;//回调函数,每当窗口改变大小,视口大小也跟随改变voidframebuffer_size_callback(GLFWwindow*window,intwidth,intheight){glV......
  • day18java学习打卡:类中属性的使用
    /* *类中属性的使用: *  *属性(成员变量) vs 局部变量 *1.相同点: * 1.1定义变量的格式:数据类型变量名=变量值; * 1.2先声明,后使用 * 1.3变量都有其对应的作用域 *  *  *2.不同点: * 2.1在类中声明的位置不同 *   属性:直接......
  • 网页前端之html表单相关属性
                      表单input标签和表单相关属性        学习过HTML的朋友都会了解到,想要制作一个表单,我们首先要有一个最外层的容器来容纳我们用HTML所写的编程语句,所以今天我们所学的第一个HTML标签就是<form>标签。  ......
  • 软件测试和质量管理——实验3:单元测试
    《软件测试和质量管理》实验报告三一、目的和要求        1、掌握单元测试技术,并要求按照单元测试的要求设计测试用例;        2、掌握在Eclipse里进行Junit4测试的技术;        3、根据题目要求编写测试用例;        4、实验结果要求给出测......
  • HTML标签属性
    ​ HTML(超文本标记语言)标签的属性为网页元素定义了额外的信息,用于调整元素的行为或外观。每个HTML标签都可以有多个属性,但某些属性只适用于特定的标签。属性提供了丰富的方式来控制HTML元素的行为和表示,是Web开发中不可或缺的部分。通过合理使用这些属性,可以提升网页的功能性、......
  • nextjs 的函数,参数,属性装饰器的使用
    //属性装饰器constdoc1:PropertyDecorator=(target:any,val:string|symbol)=>{console.log(target);console.log(val);val="覆盖";}//方法装饰器constdoc2:MethodDecorator=(target:any,val:string|symbol,desc:any)=>{cons......
  • Java登陆第三十七天——VUE3插值表达式、文本渲染、属性渲染、事件绑定
    插值表达式VUE中最基本的数据绑定形式。语法格式如下:{{数据来源}}插值表达式的特点:不依靠标签。可以调用函数。支持运算符。栗子App.vue<scriptsetup>letmsg="字符串";letnum=10;functionf1(){return"有返回值的方法"}letf2=()=>{......