软件质量属性
软件体系结构5_软件体系结构的质量属性

软件体系结构5_软件体系结构的质量属性
1. 性能(Performance):性能是衡量软件体系结构完成特定任务所需的时间和资源的能力。
在性能方面,主要关注的指标包括响应时间、吞吐量和资源利用率。
一个好的体系结构应能够支持大规模并发用户使用,而不会因为系统负载增加而导致性能下降。
2. 可用性(Availability):可用性是指软件体系结构在特定时间内处于可操作状态的能力。
可用性主要与系统的可靠性、容错性和可恢复性相关。
一个可靠的软件体系结构应能够及时响应用户需求,并尽量减少停机时间和故障恢复时间,提供稳定、可靠的服务。
3. 可靠性(Reliability):可靠性是指软件体系结构在给定的时间内正确执行其功能的能力。
可靠性与系统的错误率和故障率相关。
一个可靠的软件体系结构应能够预防和容忍异常情况,以确保正确的运行,保证数据的完整性和准确性。
4. 安全性(Security):安全性是指软件体系结构在防止未经授权的访问和保护用户数据等方面的能力。
软件体系结构应能够识别和阻止潜在的安全威胁,如恶意攻击、非法访问和数据泄露等。
安全性要求通常包括认证、授权、加密和审计等功能。
5. 可扩展性(Scalability):可扩展性是指软件体系结构能够在不同规模和负载下进行水平或垂直扩展的能力。
一个可扩展的软件体系结构应能够动态调整资源,并能够在需要时自动增加或减少处理能力,以适应不断变化的用户需求。
总之,软件体系结构的质量属性是衡量软件体系结构能力和性能的关键指标。
在设计软件体系结构时,需要充分考虑这些质量属性,以确保软件能够满足用户的需求,并具有高性能、可靠性、安全性和可扩展性。
软件体系结构5 第5章 软件质量属性

外部质量
易用性
易用性是指用户使用软件的容易程度。 现代人的生活节奏快,做什么事都想图个方便。所以把易用性作为 重要的质量属性对待无可非议。导致软件易用性差的根本原因 : 理工科大学教育存在缺陷:没有开设人机工程学、美学、心理学这 些必修课,大部分开发人员不知道如何设计易用的软件产品。开发 人员犯了“错位”的毛病:他以为只要自己用起来方便,用户也就 会满意。软件的易用性要让用户来评价。当用户真的感到软件很好 用时,一股温暖的感觉油然而生,于是就用“界面友好”、“方便 易用”等词来评价软件产品。
外部质量
兼容性
兼容性是指不同产品(或者新老产品)相互交换信息的能力。例如 两个字处理软件的文件格式兼容,那么它们都可以操作对方的文件, 这种能力对用户很有好处。兼容性又称为互操作性。 兼容性的商业规则:弱者设法与强者兼容,否则无容身之地;强者 应当避免被兼容,否则市场将被瓜分。金山软件公司的WPS与微 软的Word之争。WPS一定要与Word兼容,否则活不下去。但是 Word绝对不会与WPS兼容,除非WPS又在中国占有绝对优势。 中国联通和中国移动的手机互联互通问题。(互联网的价值与用户 数量的平方成正比)
质量目标与商业目标
质量定义
古时候人们ห้องสมุดไป่ตู้为长得结实、饭量大就是健康,这显然是不科 学的。现代人总是通过考察多方面的生理因素来判断是否健 康,如测量身高、体重、心跳、血压、血液、体温等。如果 上述因素都合格,那么表明这人是健康的。如果某个因素不 合格,则表明此人在某个方面不健康,医生会对症下药。 软件质量是许多质量属性的综合体现,各种质量属性反映了 软件质量的方方面面。人们通过改善软件的各种质量属性, 从而提高软件的整体质量。
响应度量(Response Measure):以某种方式对其进行度量,对 需求进行测试。
12软件的质量属性

这种方法最适用于要求安全性能很高的应用 程序。
SQE-GYG
12/18
第 12 章 软件的质量属性
12.3 属性的取舍
P159
对一些特定的属性对进行取舍是 不可避免地也是必要的。 用户和开发者必须确定哪些属性 比其它属性更为重要,并定出优先 级。
SQE-GYG
5/18
在不成功的项目中,80%是由于质量问题。
第 12 章 软件的质量属性
12.0 质量的定义与意义
P149
软件质量的意义
除功能需求外,软件质量属性的特性,称为系统的 非功能需求。 这些特性包括:系统的易用性、执行速度、可靠性, 处理异常情况的能力与方式等。 在决定系统的成功或失败的因素中,满足非功能需求 往往比满足功能需求更为重要。 如果你在需求的获取阶段不去探索客户对质量的期 望,结果可能是客户失望和开发者沮丧。
对一些特定的属性对进行取舍是不可避免地也是必 要的。
SQE-GYG
17/18
第 12 章 软件的质量属性
体会
必须让参加项目的每个人从进入需求这一刻 就牢牢记住:
软件质量从需求开始。 质量是软件企业的生命线! 21世纪再不重视软件质量的企业恐 怕连生存的机会都没有。
谢谢大家
SQE-GYG
18/18
在软件中,其自身不能实现质量特性的合理平衡。 在需求获取的过程中,加入对质量属性期望的讨论, 并把你所了解的写入软件需求规格说明中。这样, 才有可能提供满意的产品。
SQE-GYG
16/18
第 12 章 软件的质量属性
质量属性分析

质量属性分析软件架构(及软件架构设计师)重点关注的是质量属性。
软件质量特性包括功能性、可靠性、易⽤性、效率、可维护性、可移植性等 6个⽅⾯,每个⽅⾯都包含若⼲个⼦特性。
功能性:适合性、准确性、互操作性、依从性、安全性;可靠性:成熟性、容错性、易恢复性;易⽤性:易理解性、易学性、易操作性;效率:时间特性、资源特性;可维护性:易分析性、易改变性、稳定性、易测试性;可移植性:适应性、易安装性、遵循性、易替换性;质量属性之间的相互制约关系(正相关或负相关),其中“+”代表“⾏属性”能促进“列属性”;⽽“-”则相反。
1.运⾏期质量属性性能:性能是指软件系统及时提供相应服务的能⼒。
包括速度、吞吐量和持续⾼速性三⽅⾯的要求。
安全性:指软件系统同时兼顾向合法⽤户提供服务,以及阻⽌⾮授权使⽤的能⼒。
易⽤性:指软件系统易于被使⽤的程度。
可伸缩性:指当⽤户数和数据量增加时,软件系统维持⾼服务质量的能⼒。
例如,通过增加服务器来提⾼能⼒。
互操作性:指本软件系统与其他系统交换数据和相互调⽤服务的难易程度。
可靠性:软件系统在⼀定的时间内⽆故障运⾏的能⼒。
持续可⽤性:指系统长时间⽆故障运⾏的能⼒。
与可靠性相关联,常将其纳⼊可靠性中。
鲁棒性:是指软件系统在⼀些⾮正常情况(如⽤户进⾏了⾮法操作、相关的软硬件系统发⽣了故障等)下仍能够正常运⾏的能⼒。
也称健壮性或容错性。
2.开发期质量属性易理解性:指设计被开发⼈员理解的难易程度。
可扩展性:软件因适应新需求或需求变化⽽增加新功能的能⼒。
也称为灵活性。
可重⽤性:指重⽤软件系统或某⼀部分的难易程度。
可测试性:对软件测试以证明其满⾜需求规范的难易程度。
可维护性:当需要修改缺陷、增加功能、提⾼质量属性时,定位修改点并实施修改的难易程度;可移植性:将软件系统从⼀个运⾏环境转移到另⼀个不同的运⾏环境的难易程度。
实现这些质量属性的基本设计决策,称为“战术”,⽽把战术的集合称为“架构策略”。
战术分为:错误检测、错误恢复、错误预防。
软件架构质量属性之性能

软件架构质量属性之性能软件架构的质量属性分为6 种:可用性、可修改性、性能、安全性、可测试性、易用性。
其他的质量属性一般可纳入这几个属性中。
采用质量属性场景作为一种描述质量属性需求的规范,它由6个部分组成(刺激源、刺激、环境、制品、响应、响应度量)。
刺激源:生成该刺激的实体(人、计算机系统或其他激励器);刺激:刺激到达系统时可能产生的影响(即需要考虑和关注的情况);环境:该刺激在某条件内发生。
如系统可能正处于过载情况;制品:系统中受刺激的部分(某个制品被刺激);响应:刺激到达后所采取的行动;响应度量:当响应发生时,应能够以某种方式对应其度量,用于对是否满足需求的测试。
性能及其实现战术(1)性能的描述。
对于性能一般场景的图示及性能具体场景,读者可仿照前面可用性的描述方式,自行练习。
(2)性能战术。
性能与时间相关,影响事件的响应时间有两个基本因素。
资源消耗:事件到达后进入一系列的处理程序,每一步处理都要占用资源,而且在处理过程中消息在各构件之间转换,这些转换也需要占用资源。
闭锁时间:指对事件处理时碰到了资源争用、资源不可用或对其他计算的依赖等情况,就产生了等待时间。
性能的战术有如下几种。
① 资源需求减少处理事件流所需的资源:提高计算效率(如改进算法)、减少计算开销(如在可修改性与性能之间权衡,减少不必要的代理构件)。
减少所处理事件的数量:管理事件率、控制采样频率。
控制资源的使用:限制执行时间(如减少迭代次数)、限制队列大小。
② 资源管理引入并发:引入并发对负载平衡很重要。
维持数据或计算的多个副本:C/S 结构中客户机C 就是计算的副本,它能减少服务器计算的压力;高速缓存可以存放数据副本(在不同速度的存储库之间的缓冲)。
增加可用资源:在成本允许时,尽量使用速度更快的处理器、内存和网络。
③ 资源仲裁资源仲裁战术是通过如下调度策略来实现的。
先进/先出(FIFO);固定优先级调度:先给事件分配特定的优先级,再按优先级高低顺序分配资源;动态优先级调度:轮转调度、时限时间最早优先;静态调度:可以离线确定调度。
软件质量属性

软件质量属性划分为运行期质量属性和开发期质量属性两大类。
开发期质量属性其实包含了和软件开发,维护和移植这三类活动相关的所有质量属性,这些是开发人员,开发管理人员和维护人员都非常关心的,对最终用户而言,这些质量属性只是间接地促进用户需求的满足;而运行期质量属性是软件系统在运行期间,最终用户可以直接感受到的一类属性,这些质量属性直接影响着用户对软件产品的满意度。
运行期质量属性:性能(Performance):性能是指软件及时提供相应服务的能力。
具体而言,性能包括速度、吞吐量和持续高速性三方面的要求:∙速度往往通过平均响应时间来度量;∙吞吐量通过单位时间处理的交易数来度量;∙持续高速性是指保持高度处理速度的能力。
安全性(Security):指软件同时兼顾向合法用户提供服务,以及阻止非授权使用软件及资源的能力。
安全性既属于技术问题又属于管理问题。
一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等多种因素)高于得到的好处,那么这样的系统就可以认为是安全的。
易用性(Usability):易用性是指用户使用软件的容易程度。
软件的易用性要让用户来评价。
持续可用性(Availability):指系统长时间无故障运行的能力可伸缩性(Scalability):指的是软件在运行期间水平(增加机器或集群)和垂直(升级硬件)方向的伸缩能力,比如:能否把数据库服务器独立出来,做水平集群等,不需要度软件系统本身进行编程级的修改互操作性(Interoperability):指本软件与其他系统交换数据和相互调用服务用以协同运作的难易程度可靠性(Reliability):软件系统在一定的时间内无故障运行的能力。
可靠性是一个与时间相关的属性,指的是在一定环境下,在一定的时间段内,程序不出现故障的概率,因此是一个统计量,通常用平均无故障时间(MTTF, mean-time to fault)来衡量。
软件可靠性问题通常是由于设计中没有料到的异常和测试中没有暴露的代码缺陷引起的。
软件质量属性

1.阐述软件系统功能性和质量属性之间的关系
2.我们在软件开发实践中通常关心系统的哪几种质量属性
3.请写出性能质量属性的一般质量属性场景
题目解答:
1.软件系统功能性是指系统能够完成所期望的工作的能力,而质量属性则是高
于系统功能基本要求的,它是对多种更高层次需求的抽象描述,如安全、可靠、易用及易于修改等,显然它适用于多个特定系统而非一个。
由此我们可以看出,功能性和质量属性是正交的关系,即对应于相同的功能可以具有不同的质量属性。
2. 我们在软件开发实践中通常所关心的系统的质量属性有以下几种:
1)易用性(Usability):涉及到构架和非构架两个方面
2)可修改性(Modifiability):由划分功能的方式(构架)和模块中的编码技巧及注释(非构架)两方面决定
3)系统的性能(Performance):既受到构架的影响又受到具体算法的影响
4)安全性(Security)
5)可用性(Availability)
3. 性能与事件发生时,将要耗费系统多长时间做出响应有关.对性能进行分析,影响性能的因素包括:事件源的数量和到达模式,而到达系统的事件包括:周期性事件、随机事件或偶然事件。
根据我们所了解的,质量属性场景包括刺激源、刺激、环境、制品、响应和响应度量。
根据各个部分的具体要求结合系统性能,我们可以将性能的一般质量属性场景描述为:。
软件质量属性

软件质量属性软件质量属性司宇明摘要:⼀个软件最为重要的阶段不是开发阶段,⽽是开发前各个阶段的准备。
⽐如需求分析以及软件架构,这些往往能够决定⼀个软件的优劣程度。
对于软件体系架构中⼜有很多重要的地⽅,其中质量属性是可以评价⼀个软件的好坏。
以此对软件架构的质量属性进⾏简单分析,望对软件体系架构有所帮助。
关键字:软件架构;软件质量属性软件质量是指在软件开发过程中形成的软件满⾜明确规定的需求的程度,也是衡量软件好坏的⼀个重要指标。
随着软件规模和复杂性的不断增⼤,如何控制和保证软件的质量已成为⼀个亟需解决的问题。
为了提⾼软件的质量,需要在整个软件开发周期中进⾏有计划的活动,包括对软件的评价。
随着软件体系结构的发展,对软件体系结构系统进⾏深⼊研究将会成为提⾼软件⽣产率和解决软件维护问题的新的最有效的途径。
⼀、什么是软件体系架构1.什么是架构对于架构,并不是软件第⼀个引⽤的,是从其他⾏业的引过来的。
不同的⾏业有不同的架构。
但是其实简单来说架构就是通过分配合作,⼈类⽤少的时间完成更多活动,让⼈类的⼯作更加有效率。
2.什么是软件什么是软件,不同的⼈有不同定义,参考资深架构师王概凯⽼师的架构漫谈随笔⼩⽣有些许的启发,软件只不过是将⼈类的期望或者⾏为加⼊到机器中,以此满⾜⼈类的⼯作期望或者⾏为期望这样都可以称为软件。
3.软件体系架构有了软件,有了架构,总之都是为了⽤更⾼的效率满⾜⼈类的⾏为期望。
因此在这样的基础上需要软件体系架构让这中转换更加有效率,变得更加规律化。
提⾼⼈类的利益。
软件体系结构是国际上软件⼯程研究的⼀个新兴领域,它的研究⽬前还处于初始阶段,对什么是软件体系结构还没有⼀个标准的、为⼤家所普遍接受的定义。
⼀般认为,⼀个软件系统的体系结构定义了组成系统的计算构件和构件之间的相互作⽤关系,在体系结构层次的构件如:客户、服务器、数据库、过滤器等;构件之间的交互可以是⾮常简单的。
⼆、软件架构质量属性分析1.常见质量属性分类常见的软件质量属性有6个,分别为可⽤性、可修改性、性能、安全性、可测试性、易⽤性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)正确性
➢正确性是指软件按照需求正确执行任务的能力。
“正确性”的语义涵盖了“精确性”。
➢正确性无疑是第一重要的软件质量属性。
➢技术评审和测试的第一关都是检查工作成果的正确性。
(2)健壮性
➢健壮性是指在异常情况下,软件能够正常运行的能力。
➢正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为。
➢开发者往往把异常情况错当成正常情况而不作处理,结果降低了健壮性。
➢健壮性有两层含义:一是容错能力,二是恢复能力。
从语义上理解,恢复不及容错那么健壮。
Unix容错能力很强,可惜不好用。
Windows容错能力较差,但是恢复能力很好,而且很好用。
占了90%
的操作系统市场。
(3)可靠性
➢可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的概率。
➢平时软件运行得好好的,说不准哪一天就不正常了,如(千年等一回的“千年虫”问题)等。
➢软件可靠性分析通常采用统计方法
➢时隐时现的错误一般都属于可靠性问题,纠错的代价很高。
例如当维护人员十万火急地赶到现场时,错误消失了;等维护人员回家后,错误又出现了。
…
➢软件可靠性问题主要是在编程时候埋下的祸害(很难测试出来),应当提倡规范化程序设计,预防可靠性祸害。
(4)性能
➢性能通常是指软件的“时间-空间”效率,而不仅是指软件的运行速度。
既要马儿跑得快,又要马儿吃的少。
➢性能优化的关键工作是找出限制性能的“瓶颈”,不要在无关痛痒的地方瞎忙乎。
➢性能优化就好像从海绵里挤水一样,你不挤,水就不出来,你越挤海绵越干。
(5)易用性
➢易用性是指用户使用软件的容易程度
➢导致软件易用性差的根本原因:
理工科大学教育存在缺陷
开发人员犯了“错位”的毛病
软件的易用性要让用户来评价。
(6)清晰性
➢清晰意味者所有的工作成果易读、易理解,可以提高团队开发效率,降低维护代价。
➢开发人员只有在自己思路清晰的时候才可能写出让别人易读、易理解的程序和文档。
➢可理解的东西通常是简洁的。
(7)安全性
➢这里安全性是指信息安全,英文是Security而不是Safety。
➢安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。
➢黑客:真是“道高一尺,魔高一丈”!
➢开发商和客户愿意为提高安全性而投入的资金是有限的,他们要考虑值不值得。
➢究竟什么样的安全性是令人满意的呢?
一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险
等因素)高于得到的好处,那么这样的系统可以认为是安全的。
对于普通软件,并不一点要追求很高的安全性,也不能完全忽视安
全性,要先分析黑客行为。
(8)可扩展性
➢可扩展性反映软件适应“变化”的能力。
➢在软件开发过程中,“变化”是司空见惯的事情,如需求、设计的变化,算法的改进,程序的变化等等。
由于软件是“软”的,是否它天生就容易修改以适
应“变化”?关键要看软件的规模和复杂性。
➢现代软件产品通常采用“增量开发模式”,不断推出新版本,获取增值利润。
可扩展性越来越重要。
可扩展性是系统设计阶段重点考虑的质量属性。
(9)兼容性
➢兼容性是指不同产品(或者新老产品)相互交换信息的能力。
金山软件公司的WPS与微软的Word之争。
(10)可移植性
➢软件的可移植性指的是软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、OS和编译器)的能力,主要体现为代码的可移植性。
编程语言越低级,用它编写的程序越难移植,反之则越容易。
这是
因为,不同的硬件体系结构(例如Intel CPU和SPARC CPU)使用
不同的指令集和字长,而OS和编译器可以屏蔽这种差异,所以高
级语言的可移植性更好。
Java程序号称“一次编译,到处运行”,具有100%的可移植性。
为
了提高Java程序的性能,最新的Java标准允许人们使用一些与平台
相关的优化技术,这样优化后的Java程序虽然不能“一次编译,到
处运行”,仍然能够“一次编程,到处编译”。
➢软件设计时应该将“设备相关程序”与“设备无关程序”分开,将“功能模块”与“用户界面”分开。