软件质量属性
软件体系结构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)可用性:与使用的难易程度及规定或隐含用户对使用方式所做的评价有关的软件属性。
包括可理解性、易学性、可操作性.可理解性:用户理解该软件系统的难易程度。
易学性:用户学习使用该软件系统的难易程度。
可操作性:用户操作该软件系统的难易程度。
(4)效率:与在规定条件下软件的性能水平与所用资源量之间的关系有关的一组属性.包括时间特性、资源特性。
时间特性:响应和处理时间及软件执行其功能是的吞吐量。
资源特性:软件执行其功能时,所使用的资源量及使用资源的持续时间。
(5)可维护性:与软件维护的难易程度有关的一组软件属性。
包括可分析性、可修改性、稳定性、可测试性。
可分析性:诊断缺陷或失效原因、判定待修改程序的难易程度。
可修改性:修改、排错或适应环境变化的难易程度.稳定性:修改造成难以预料的后果的风险程度.可测试性:测试已修改软件的难易程度。
(6)可移植性:与软件可从某一环境转移到另一环境的能力有关的一组软件属性。
包括适应性、易安装性、一致性、可替换性。
适应性:软件无需采用特殊处理就能适应不同的规定环境的程度。
软件质量属性
作业
从表12.1中确定若干可能对大作业案例项目的用户至关重要 的质量属性。为每个属性构想几个问题,这将有助于用户清 楚地表达他们的期望。根据用户的回答,为每一个重要属性 写出一两个具体的目标。
用Planguage自己编写一条质量属性需求。
15
12.6 实现非功能性需求
质量属性类型
完整性、互操作性、健壮性、易用 性、安全防护性
可能的 技术信 息类别
功能性 需求
可用性、有效性、灵活性、性、易用性
设计限 制
灵活性、可维护性、可移植性、可 靠性、可重用性、可测试性、易用 性
可移植性
设计原 则
实现限 制
虽然质量属性是非功能性 需求,但它们能够导致衍 生的功能性需求、设计原 则或其他类型的技术信息, 这些信息将产生期望的质 量特性。
为了达到产品特性的最佳平衡,我们必须在需求获取阶段识 别、指定相关的质量属性,并且为之确定优先级。如: 如果软件必须在多个平台上运行(可移植性),那么就不要 期望系统最大程度地满足易用性。 对于高度安全的系统,很难完全测试其完整性需求。可重 用的类组件或与其他应用程序的互操作可能会破坏其安全 机制。 高度健壮的代码将缺乏有效性,因为它要进行数据确认和 错误检查。 13
性能需求的Planguage版本:
AMBITION(目标) SCALE(度量单位) METER(计量) MUST(最低标准) PLAN(一般标准) base user platform DEFINED(定义的基础用户平台)
11
12.5 属性的折中方案
不可避免地要对某些属性 组合进行折中考虑。
3
12.2 定义质量属性
分析人员要求用户代表为每一个属性设一个等级 其范围是从1级(表示不必多加考虑的属性)到5级(表示极 其重要的属性)。
软件质量六大属性—
软件质量六⼤属性—1 性能(Performance)指系统的响应能⼒,既要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理事件的个数。
(经常⽤单位时间内所能处理的事务的数量或系统完成某个事务处理所需要的时间来定量表⽰。
性能测试经常要使⽤基准测试程序。
)2 可靠性(Reliability)指软件系统在应⽤或错误⾯前,在意外或错误⾯前使⽤的情况下维持软件系统功能特性的基本能⼒。
(是重要的软件特性之⼀,通常⽤它衡量在规定的条件和时间内,软件完成规定功能的能⼒。
通常是MTBF-平均失效间隔时间和MTTF-、平均失效等待时间来衡量。
)3 可⽤性(Availability)指系统能够正常运⾏的时间⽐例。
(经常⽤两次故障之间时间的长度或者出现故障时系统能够恢复正常的速度来表⽰。
)4 健壮性(Robustness)是指在处理或环境中,能够承受的压⼒或变更的能⼒。
(健壮性并不是说再系统发⽣错误时能继续运⾏,⽽是指系统按照事先定义好的⽅式运⾏-事务处理速度)5 安全性指系统向合法⽤户提供服务的同时阻⽌⾮法⽤户的使⽤的企图或拒绝对其服务。
(根据系统可能受到的安全威胁可分为机密性、完整性、不可否认性和可控性等特性。
)6 可修改性只能够快速地以较⾼的性能价格⽐对系统进⾏变更的能⼒。
(通常以某些具体的变更为基准,通过考察这些变更的代价来衡量。
可修改性包含可维护性、可扩展性、结构重组和可移植性等⽅⾯。
)7 可变性指体系结构经扩充或变更为新体系结构的能⼒。
(这种新体系结构应该符合预先定义的规则,在某些具体⽅⾯不同于原有的体系结构。
当要将某个体系结构作为⼀系列相关产品的基础时,可变性尤为重要。
)8 易⽤性衡量⽤户使⽤⼀个软件完成指定任务的难易程度。
(⽤户对软件的易使⽤性、质量、效率以及效果的感觉,是交互的适应性、功能性和有效性的集中体现。
)9 可测试性指软件发⽣故障并隔离、定位其故障的能⼒特性,以及在⼀定的时间和成本前提下,进⾏测试设计和测试执⾏能⼒。
细说软件质量属性
正确性正确性是指软件按照需求正确执行任务的能力。
这里“正确性”的语义涵盖了“精确性”。
正确性无疑是第一重要的软件质量属性。
如果软件运行不正确,将会给用户造成不便甚至损失。
技术评审和测试的第一关都是检查工作成果的正确性。
正确性说起来容易做起来难。
因为从“需求开发”到“系统设计”再到“实现”,任何一个环节出现差错都会降低正确性。
机器不会主动欺骗人,软件运行出错通常都是人造成的,所以不要找借口埋怨机器有毛病。
开发任何软件,开发者都要为“正确”两字竭尽全力。
健壮性健壮性是指在异常情况下,软件能够正常运行的能力。
正确性与健壮性的区别是:前者描述软件在需求范围之内的行为,而后者描述软件在需求范围之外的行为。
可是正常情况与异常情况并不容易区分,开发者往往要么没想到异常情况,要么把异常情况错当成正常情况而不做处理,结果降低了健壮性。
用户才不管正确性与健壮性的区别,反正软件出了差错都是开发方的错。
所以提高软件的健壮性也是开发者的义务。
健壮性有两层含义:一是容错能力,二是恢复能力。
容错是指发生异常情况时系统不出错误的能力,对于应用于航空航天、武器、金融等领域的这类高风险系统,容错设计非常重要。
容错是非常健壮的意思,比如UNIX的容错能力很强,很难使系统出问题。
而恢复则是指软件发生错误后(不论死活)重新运行时,能否恢复到没有发生错误前的状态的能力。
从语义上理解,恢复不及容错那么健壮。
例如,某人挨了坏蛋一顿拳脚,特别健壮的人一点事都没有,表示有容错能力;比较健壮的人,虽然被打倒在地,过了一会还能爬起来,除了皮肉之痛外倒也不用去医院,表示恢复能力比较强;而虚弱的人可能短期恢复不过来,得在病床上躺很久。
恢复能力是很有价值的。
Microsoft公司早期的窗口系统,如Windows 3.x和Windows 9x,动不动就死机,其容错性的确比较差。
但它们的恢复能力还不错,机器重新启动后一般都能正常运行,看在这个份上,人们也愿意将就着用。
软件质量属性分析
软件质量属性分析1.可用性分析:所关注的方面包括系统故障发生的频率、出现故障时会发生什么情况、允许系统有多长是将非正常运行、什么时候可以安全地出现故障、如何防止故障的发生以及发生故障时要求进行哪种通知。
场景设想:淘宝双十一活动时很多用户同时访问,系统出现崩溃刺激源:太多的用户同时进行购买登录的操作刺激:操作用户过多,服务器崩溃。
制品:系统的服务器环境:正常的操作响应:系统响应人数过多,无法正常进行登录,系统检测到事件:记录故障,通知系统响应度量: 排除故障,系统可以继续正常使用2.可修改性分析:场景设想:由于进行活动促销,卖家修改商店界面刺激源:卖家刺激:希望修改商店界面。
制品:商店界面环境:正常运行时响应: 查找架构中需要修改的位置,进行修改且不会影响其他功能,对所做的修改进行测试,部署所做的修改响应度量: 修改该界面对其他99.9%的功能不造成影响3.性能分析:场景设想:双十一活动时,大量用户希望登陆上淘宝网来选购想要的商品刺激源:大量淘宝网用户刺激:试图同时登陆淘宝网站进行选购商品制品:淘宝网站环境:超载模式响应:处理下单请求响应度量:下单时间不超过2秒,不产生错误4.安全性分析:场景设想:某用户经过特殊手段窃取用户信息刺激源:黑客刺激:访问其他用户信息制品:淘宝网用户信息环境:正常操作响应: 进行安全检测,保护资金支付环境安全响应度量: 进行两次或以上的确认验证,商品属性验证,收货地址验证,付款密码验证等。
5.可测试性分析:场景设想:单元测试人员想要测试搜索功能的性能。
刺激源:单元测试人员。
刺激:对淘宝网的搜索引擎代码加上模糊查询功能。
制品:具有模糊查询功能的查询模块。
环境:开发时、编译时。
响应:提供对搜索内容的访问,提供所查的值。
响应度量:在1~2秒内查找出与搜索内容相关的100条商品。
6.易用性分析:场景设想:一个未曾使用过网上购物的人,第一次使用淘宝进行购物刺激源:淘宝网用户。
刺激:淘宝网用户希望了解如何有效的使用系统,使错误降低,希望能了解系统特性以便可以快速上手购买商品。
软件质量特性
软件质量特性:功能性、可靠性、可用性、效率、可维护性、可移植性(1)功能性:与功能及其指定的性质有关的一组软件属性。
包括适宜性、准确性、互用性、依从性、安全性。
适宜性:规定任务提供一组功能的能力及这组功能的适宜程度。
准确性:系统满足规格说明和用户目标的程度,即在预定环境下能正确地完成预定功能的程度。
互用性:同其它指定系统协同工作能力。
依从性:软件服从有关标准、约定、法规及类似规定的程度。
安全性:避免对程序或数据的非授权故意或意外访问的能力。
(2)可靠性:与软件在规定的一段时间内和规定的条件下维持其性能水平有关的一组软件属性。
包括成熟性、容错性、可恢复性。
成熟性:由软件故障引起失效的频度。
容错性:在软件错误或违反指定接口情况下维持指定性能水平的能力。
可恢复性:在故障发生后重新建立其性能水平、恢复直接受影响数据的能力,以及为达到目的所需的时间与工作量。
(3)可用性:与使用的难易程度及规定或隐含用户对使用方式所做的评价有关的软件属性。
包括可理解性、易学性、可操作性。
可理解性:用户理解该软件系统的难易程度。
易学性:用户学习使用该软件系统的难易程度。
可操作性:用户操作该软件系统的难易程度。
(4)效率:与在规定条件下软件的性能水平与所用资源量之间的关系有关的一组属性。
包括时间特性、资源特性。
时间特性:响应和处理时间及软件执行其功能是的吞吐量。
资源特性:软件执行其功能时,所使用的资源量及使用资源的持续时间。
(5)可维护性:与软件维护的难易程度有关的一组软件属性。
包括可分析性、可修改性、稳定性、可测试性。
可分析性:诊断缺陷或失效原因、判定待修改程序的难易程度。
可修改性:修改、排错或适应环境变化的难易程度。
稳定性:修改造成难以预料的后果的风险程度。
可测试性:测试已修改软件的难易程度。
(6)可移植性:与软件可从某一环境转移到另一环境的能力有关的一组软件属性。
包括适应性、易安装性、一致性、可替换性。
适应性:软件无需采用特殊处理就能适应不同的规定环境的程度。
软件架构的10个质量属性
软件架构的10个质量属性一般地,对于软件系统的需求而言,分为两类:功能性需求和非功能性需求。
软件系统的架构设计既要满足软件的功能性需求,还要满足软件的非功能性需求。
特别地,系统架构对软件非功能性需求的支撑成为架构的质量属性。
本文描述了软件的10个质量属性,但不意味着每个质量属性都会在架构设计中呈现,可以挑选对产品最重要的质量属性,然后进行实现。
1 可伸缩性随着用户或请求数量的增加,系统运行和操作的能力也随之增加。
在云平台上,可伸缩性可以通过机器的水平或垂直缩放或者简单地附加 AutoScalingGroup 来实现。
流量模式:了解系统的交通模式。
尽可能多地产生机器是不划算的,即使它的利用率不高。
•日行模式: 特定地区的交通在早上增加,晚上减少。
•全局/区域模式: 区域大量使用应用程序。
•突发流量: 许多用户都在请求资源,但是只有少数几台机器可以为突发的流量提供服务。
这些可能发生在高峰期或人口密集地区。
自动缩放: 能够迅速产生一些机器,以处理流量的爆发,当需求正在减少时,优雅地收缩。
延迟: 能够尽快为请求提供服务。
这还包括优化算法和在用户位置附近复制系统,以减少请求的往返。
2 可用性它以正常运行时间的百分比来衡量,并定义了系统正常运行和正常工作的时间比例。
可用性受到系统错误、基础设施问题、恶意攻击和系统负载的影响。
部署标记: 部署应用程序组件的多个独立副本,包括数据存储区区域部署: 将后端服务部署到一组地理节点中,每个节点都可以服务任何区域中的任何客户端请求。
3 可扩展性可扩展性度量扩展了系统的能力和实现扩展所需的工作。
扩展可以通过添加新功能或修改现有功能来实现,该原则规定在不损害当前系统功能的情况下进行增强。
模块化/可重用性: 可重用性和可扩展性使得技术可以以更少的开发和维护时间转移到另一个项目,同时增强了可靠性和一致性。
可插拔性: 能够轻松地插入其他组件,比如微内核架构。
4 一致性一致性保证每个读操作返回最近的写操作。
软件质量属性
Retry
Escalating restart
逐步重启
Non-stop forwarding (NSF)
直通
23
Prevent Faults
Removal from service Transactions事务
Atomic, Consistent, Isolated, and Durable
构架不能独自实现质量属性
构架为质量属性的实现打下了基础,但不关注实现细节的话, 这个基础就失去了意义。
复杂系统中,不能孤立地实现质量属性
例如,为了可靠性,增加冗余处理器和进程,保证不会因单 点故障使系统崩溃。但这样对安全性不利,系统会有更多的 地方可能会遭到入侵
6
质量属性的来源:3类需求
1. Functional requirements
系统的功能不能决定系统的架构 质量是系统的属性,而功能是系统的目标
软件架构与质量属性研究
软件架构与质量属性研究随着软件开发技术的不断发展和进步,软件架构成为了软件开发中不可或缺的一部分。
软件架构作为软件系统设计的指南,对软件系统的结构和性能具有非常重要的影响。
在软件开发过程中,软件架构的选择和设计对软件质量属性的影响也是相当大的。
因此,软件架构和质量属性的研究已经受到了广泛的关注和研究。
一、软件架构与质量属性的关系软件架构是软件系统的基础,它在软件系统中起到了控制和指导的作用。
软件架构的设计和选择对软件系统的各种质量属性有着不同的影响。
软件质量属性是指软件产品必须满足的非功能性需求,它包括性能、可靠性、可维护性、安全性、可移植性等多个方面。
因此,软件架构的设计和选择应该充分考虑到软件质量属性的需求。
1. 性能软件的性能是指它对于用户请求的响应速度和吞吐量的处理能力。
软件架构对软件性能有着直接的影响。
在软件架构设计中,需要考虑到系统的并发性、分布式处理、数据访问的效率和网络通信等因素。
通过合理选择和使用软件架构,可以有效提高软件系统的性能。
2. 可靠性软件的可靠性是指软件在特定环境下的稳定性和可预测性。
软件架构在保证软件可靠性方面扮演着非常重要的角色。
软件架构的合理设计可以有效减少软件系统的错误和故障,从而提高软件系统的可靠性。
3. 可维护性软件的可维护性是指在软件系统上进行修改或增加功能的能力。
软件架构的设计对软件的可维护性也有着很大的影响。
在软件架构的设计中,需要考虑到软件的模块化程度、分层结构、清晰的接口定义和文档等因素。
通过合理地设计软件架构,可以提高软件系统的可维护性,使得软件更加容易进行修改和扩展。
4. 安全性软件的安全性是指保护软件系统免受未经授权访问、利用或破坏等安全威胁的能力。
软件架构在保证软件安全性方面也起着很重要的作用。
在软件架构的设计中,需要考虑到安全策略的定义、输入输出控制、访问控制、数据加密和身份验证等方面。
通过合理地设计软件架构,可以有效提高软件系统的安全性。
- 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程序虽然不能“一次编译,到
处运行”,仍然能够“一次编程,到处编译”。
➢软件设计时应该将“设备相关程序”与“设备无关程序”分开,将“功能模块”与“用户界面”分开。