这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格(水平)考试,11月4号就要考试,因此8天长假绝不能荒废,必须要好好利用起来。现在将各个核心知识点一一进行提炼并做记录。
所属章节:
第8章. 系统质量属性与架构评估
第1节. 软件系统质量属性
0. 概述
软件系统属性包括功能属性和质量属性,软件架构重点关注的是质量属性。架构的基本需求是在满足功能属性的前提下,关注软件系统质量属性。为了精确、定量地表达系统的质量属性,通常会采用质量属性场景的方式进行描述。
在确定软件系统架构、精确描述质量属性场景后,就需要对系统架构进行评估。软件系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它也可以灵活地运用与软件架构评审等工作。
1. 质量属性概念
软件系统的质量就是“软件系统与明确地和隐含地定义的需求相一致的程度”。更具体地说,软件系统质量是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及专业开发的软件产品都应该具有的隐含特征相一致的程度。根据GB/T 16260.1定义,从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性:功能性、可靠性、易用性、效率、维护性与可移植性。
- 功能性包括:适合性、准确性、互操作性、依从性、安全性;
- 可靠性包括:容错性、易恢复性、成熟性;
- 易用性包括:易学性、易理解性、易操作性;
- 效率包括:资源特性、时间特性;
- 维护性包括:可测试性、可修改性、稳定性和易分析性;
- 可移植性包括:适应性、易安装性、一致性、可替换性。
软件系统质量属性是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者需求的程度。基于软件系统的生命周期,可以将软件系统的质量属性分为开发期质量属性和运行期质量属性两个部分。
(1)开发期质量属性
开发期质量属性主要指在软件开发阶段所关注的质量属性。主要包括6个方面。
1)易理解性
指设计被开发人员理解的难易程度。
2)可扩展性
软件因适应新需求或需求变化而增加新功能的能力,也成为灵活性。
3)可重用性
指重用软件系统或某一部分的难易程度。
4)可测试性
对软件测试以证明其满足需求规范的难易程度。
5)可维护性
当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
6)可移植性
将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
(2)运行期质量属性
运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包括7个方面。
1)性能
指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
2)安全性
指软件系统同时兼顾向合法用户提供服务、以及阻止非授权使用的能力。
3)可伸缩性
指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加服务器来提高能力。
4)互操作性
指本软件系统与其它系统交换数据和相互调用服务的难易程度。
5)可靠性
指软件系统在一定的时间内持续无故障运行的能力。
6)可用性
指系统在一定时间内,正常工作的时间所占的比例。可用性会受到系统错误、恶意攻击、高负载等问题的影响。
7)鲁棒性
指软件在非正常情况下(如用户进行了非法操作、相关的软硬件系统发生了故障等)仍能够正常运行的能力,也称健壮性或容错性。