软件体系架构的质量属性
温学智
(石家庄铁道大学,河北省石家庄市,050000)
摘要:软件架构(及软件架构设计师)重点关注的是质量属性。只用遵循质量属性的原则,才能有好的设计思想,才能开发出好的软件产品。文章从常见的六个质量属性,即可用性、可修改性、性能、安全性、可测试性、易用性写起,使读者对其有初步的认识和了解。解决了在具体的软件开发环境中的质量属性是什么,怎么用,如何用好的问题。
关键词:质量属性;体系架构;软件
Quality attributes of software architecture
Wenxuezhi
(Shijiazhuang Tiedao University,Shijiazhuang City, Hebei Province,050000)
Absrtact: software architecture focuses on quality attributes. Only by following the principle of quality attribute reasonably, can we develop a good product suitable for the masses quickly, efficiently and cheaply.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.
Keywords: quality attributes; architecture; software
引言
对于这次的软件体系架构这门课,我们对软件质量的相关六大属性有了一定的了解。每一个属性都有自己重要的地位和不可替代的作用。为了了解软件的质量是否满足要求,我们必须定义软件的质量属性(Quality Attributes)。同时质量属性也是影响软件架构的重要因素。对于软件要进一步进行更精细的分析,可以使用基于场景的分析方法,考虑和质量属性相关的问题。软件架构主要由需求决定,需求有功能性的和非功能性的,其中非功能性的需求主要就是指质量属性。下面我们讨论一下其中最常见的属性。
1、 可用性
可用性分析所关注的方面包括:如何检测系统故障,系统故障发生的频度,出现故障时会发生什么情况,允许系统有多长时间非正常运行,什么时候可以安全地出现故障,如何防止故障的发生以及发生故障时要求进行哪种通知。可用性与系统故障及其相关后果有关。当系统不再提供其规范中所说明的服务时,就出现了系统故障。
一般将系统可用性定义为:a = 平均正常工作时间 / (平均正常工作时间+平均修复时间)从这个公式中我们得到了像99.9%的可用性、0.1%的故障率这样的概念。
场景分析:。
场景设想:双十一狂欢节时很多用户同时访问淘宝网,导致系统崩溃。
刺激源:用户。
刺激:很多用户同时进行登录、查询、购买操作。
环境:用户正常操作。
制品:系统服务器。
响应:系统响应人数过多,系统检测到事件,记录故障,通知系统。
响应度量:一定时间后,排除故障、系统恢复正常使用。
2、 可修改性
可修改性是有关变更的成本问题。可以修改什么(制品)和何时进行变更以及由谁进行变更(环境)。
对于可修改什么指的是可以修改系统的任何方面 ,最常见的就是系统计算的功能、系统存在平台、系统运行的环境、系统所展示的质量属性以及其容量。
对于何时进行变更以及由谁进行变更?最常见的就是修改源代码。也就是说,开发人员必须修改代码,对修改后的代码进行测试,然后将其部署在新版中。然而,现在不仅仅是何时变更的问题,而且还有由谁进行变更的问题。
场景分析:。
场景设想:由于恰逢双十一狂欢节,淘宝网想改变用户界面来吸引更多用户。
刺激源:开发人员。
刺激:改变用户界面。
环境:设计时。
制品:系统的用户界面。
响应:查找构架中需要修改的位置,进行修改且不会影响其他功能,对所做的修改进行测试,部署所做的修改。
响应度量:修改在两个小时内完成,且对其他功能不会产生影响。
3、 性能
性能是指软件及时提供相应服务的能力。具体而言,性能包括速度、吞吐量和持续高速性三方面的要求:速度往往通过平均响应时间来度量;吞吐量通过单位时间处理的交易数来度量;持续高速性是指保持高度处理速度的能力。一般而言,计算机提供了许多的资源,包括CPU,内存,硬盘等等,提高性能的核心就是充分利用这些资源。要保证对资源的使用是正确和有效的。随着软件的发展,现在的程序员可以更高效的实现功能需求。
性能与时间有关。事件(中断、消息、用户请求或时间已到)发生时,系统必须做出响应。事件到达和相应有很多特性,但性能基本上与事件发生时,将要耗费系统多长时间做出响应有关。
场景分析:
场景设想:双十一活动时,甚至几亿用户希望登录淘宝网购买商品。
刺激源:用户。
刺激:大量用户同时登录系统进行购买操作。
环境:正常运行时。
制品:淘宝网站。
响应:处理下单请求。
响应度量:下单时间不超过三秒,不会产生数据缺失。
4、 安全性
安全性指软件同时兼顾向合法用户提供服务,以及阻止非授权使用软件及资源的能力。试图突破安全防线的行为被称为攻击,它可以是未经授权试图访问数据或服务,或试图修改数据,也可能是试图使系统拒绝向合法用户提供服务。一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等多种因素)高于得到的好处,那么这样的系统就可以认为是安全的。
当今社会网络安全问题尤为突出,客户隐私泄露问题,账户资金被盗刷,软件存储的客户数据被黑客恶意攻击,各种安全问题层出不穷。安全问题是所有互联网企业都绕不开的问题,只有保证自己的产品足够“安全”,才能赢得客户的信赖。
场景分析:
场景设想:一些非法授权的用户经过某种特殊手段窃取、修改用户信息。
刺激源:非法授权用户。
刺激:试图访问、修改其他用户信息。
环境:正常运行时。
制品:淘宝网后台用户信息。
响应:对用户验证,阻止访问数据,保护用户信息安全。
响应度量:响应被拒绝,恢复数据。
5、 可测试性
可测试性顾名思义就是指软件是否容易测试。指通过测试揭示软件缺陷的容易程度。在开发设计系统阶段,40%花费在测试上面。可测试性战术的目标是允许在完成软件开发的一个增量后,较轻松的对软件进行测试。一般我们进行提供输入并捕获输出、内部监视。
场景分析:
场景设想:单元测试人员想要测试分类查询的功能。
刺激源:单元测试人员。
刺激:对淘宝网的分类查询进行测试。
环境:开发时。
制品:具有分类查询的功能模块。
响应:提供分类的类别,点击进行访问,显示查询结果。
响应度量:在4秒内查询与所查询类别有关的所有商品。
6、 易用性
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。易用性也是用户最在乎的部分之一。
场景分析:
场景设想:初次在网上进行购物的人,第一次使用淘宝网。
刺激源:新用户。
刺激:想要了解如何有效的使用淘宝网进行购物,快速上手操作淘宝网,使操作错误降到最低。
环境:系统正常运行时。
制品:淘宝网站。
响应:根据操作提示点击对应按钮,引导用户完成网上购物操作。
响应度量:按照操作提示,成功完成购物,无任何错误。
7、 总结
软件质量属性的每一个方面都有很多的内容,我在这里只是简单介绍一下但是仍然有许多重要的质量属性我们还没有涉及到。总的来说用户对你的软件的评价就是好不好用,而软件的好与坏全是各个属性综合起来产生的效果,绝对不是单一属性的原因。要将这些因素充分运用到软件的开发过程中去。
[1] naughty,软件中的质量属性(一)https://my.oschina.net/taogang/blog/224658
[2] naughty,软件中的质量属性(二)https://my.oschina.net/taogang/blog/225513
[4] 程序猿胖子,质量属性-可修改性 https://www.jianshu.com/p/5f02292a90e5