软件体系架构的质量属性
陈阳阳
(石家庄铁道大学,河北省石家庄市,050000)
摘要:软件架构重点关注的是质量属性。文章从常见的六个质量属性,即可用性、可修改性、性能、安全性、可测试性、易用性写起,使读者对其有初步的认识和了解。解决了在具体的软件开发环境中的质量属性是什么,怎么用,如何用好的问题。在软件开发过程中软件的质量属性扮演者至关重要的角色,只有合理地遵循质量属性原则,才能快速、高效、低成本的开发出适合广大群众的好产品。
关键词:质量属性;体系架构;软件
Quality attributes of software architecture
Chenyangyang
(Shijiazhuang Tiedao University,Shijiazhuang City, Hebei Province,050000)
Absrtact: software architecture focuses on quality attributes. This article starts from six common quality attributes, namely, usability, modifiability, performance, safety, testability and ease of use, so that readers can have a preliminary understanding of them. It solves the problem of what is the quality attribute in the specific software development environment, how to use it, and how to use it well. In the process of software development, the quality attribute of software plays an important role. Only by following the principle of quality attribute reasonably, can we develop a good product suitable for the masses quickly, efficiently and cheaply.
Keywords: quality attributes; architecture; software
引言
由于本学期开展了软件体系架构这门课,学习了软件质量的六大属性,对性能属性这方面想进行深入的了解,从而为以后步入工作后的开发过程更加便捷。当前软件对于用户最直观的体验就是性能的指标,包括程序响应的时间,程序运行的流畅性,这些都是影响用户体验最直接的因素,本文将着重针对影响性能最直观的因素和性能和其他质量属性的关系进行阐述。当前硬件普遍性能过剩,那么如何提高软件的性能就成为了一个热点,也变成了优化对比的一个重要方面。
- 可用性
可用性与系统故障及其相关后果有关。当系统不再提供其规范中所说明的服务时,就出现了系统故障。
所关注的方面有:
- 如何检测系统故障
- 系统故障发生的频度
- 出现故障时会发生什么情况
- 允许系统有多长时间非正常运行
- 什么时候可以安全地出现故障
- 如何防止故障的发生以及故障时要求进行哪种通知
一般将系统可用性定义为:
a = 平均正常工作时间 / (平均正常工作时间+平均修复时间)
从这个公式中我们得到了像99.9%的可用性、0.1%的故障率这样的概念。
在计算可用性时,通常不考虑预定的停机时间(即停止服务),因为根据定义是”不需要“系统的。这就导致会出现这种情况:系统停止运行,用户等待系统提供服务,但因为停机时间是预定的,因此不计入故障时间,也就不会影响可用性的数值。
2.可用性场景分析
场景:双十一淘宝用户激增
刺激源:淘宝用户
刺激:登录人数太多导致淘宝无法响应,淘宝瘫痪
环境:用户正常浏览,选择购物产品
响应:淘宝页面呈现“网络出现故障,再次刷新”等提示信息,提示用户下一步操作
响应度量:系统降级模式下继续运行,用户刷新页面或者重新登录之后可以继续正常使用。
3.可修改性
可修改性是有关变更的成本问题。它提出了两个关注点:
(1)可以修改什么(制品)?
可以修改系统的任何方面 ,最常见的就是系统计算的功能、系统存在平台(硬件、操作系统和中间件等 )、系统运行的环境(它必须与之互操作的系统,它用于与其他部分进行通信的协议,等等)、系统所展示的质量属性(其性能、可靠性、甚至包括将来的可修改性)以及其容量(所支持的用户数量、同时发生的操作的数量,等等)。
(2)何时进行变更以及由谁进行变量(环境)?
最常见的就是修改源代码。也就是说,开发人员必须修改代码,对修改后的代码进行测试,然后将其部署在新版中。然而,现在不仅仅是何时变更的问题,而且还有由谁进行变量的问题。
4.性能
性能是指软件及时提供相应服务的能力。具体而言,性能包括速度、吞吐量和持续高速性三方面的要求:
(1)速度往往通过平均响应时间来度量;
(2)吞吐量通过单位时间处理的交易数来度量;
(3)持续高速性是指保持高度处理速度的能力。
5.安全性
安全性指软件同时兼顾向合法用户提供服务,以及阻止非授权使用软件及资源的能力。
安全性既属于技术问题又属于管理问题。一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等多种因素)高于得到的好处,那么这样的系统就可以认为是安全的。
6.可测试性
软件可测试性是指通过测试(通常是基于运行测试)揭示软件缺陷的容易程度。在开发设计系统阶段,40%花费在测试上面。
可测试性战术的目标是允许在完成软件开发的一个增量后,较轻松的对软件进行测试。一般我们进行提供输入并捕获输出、内部监视。
7.易用性
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的的用户支持种类。下面以淘宝分析说明:
场景:用户取消自己即将生成的交易
刺激源:淘宝用户
刺激:用户不满意商品,选择取消交易
制品:淘宝系统
环境:系统正常运行,用户正常购买商品
响应:取消交易成功,淘宝系统删除交易,恢复正常页面
响应度量:取消在一秒内发生,不影响后面操作
8.总结
本学期我们开设的软件体系架构这门课程对于质量属性有着很高的要求,我只是在这里浅尝遏止,还需要进一步更加深入的去总计和练习软件开发、架构过程中对于质量属性的运用和要求,更加熟练的运用到软件开发过程中来。
参考文献:
[1] naughty,软件中的质量属性(一),https://my.oschina.net/taogang/blog/224658
[2] naughty,软件中的质量属性(二),https://my.oschina.net/taogang/blog/225513
[3] iteye_2272,软件的质量属性及其说明,https://blog.csdn.net/iteye_2272/article/details/82099106
[4] 程序猿胖子,质量属性-可修改性,https://www.jianshu.com/p/5f02292a90e5
[5] 顾北清歌寒,软件质量属性——易用性课堂讨论问题总结,