软件质量属性和质量要素

软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的方方面面。项目团队通过改善软件的各种质量属性,从而提高软件的整体质量。那么怎么评价软件的质量好不好呢?


我们先从怎么看一个人是否健康开始。

以常人来看,这个人长得结实、饭量大,我们可能就认为他/她很健康。

以医生的专业角度看,需要测量身高、体重、心跳、血压、血液、体温等,才能判断他/她是否健康。


在这里,我们将以专业的角度,来评价一个软件是否健康,也即是软件的质量好不好?


十大软件质量因素进行软件的评价:

功能性质量因素:正确性,健壮性,可靠性

非功能性质量因素:性能,易用性,清晰性,安全性,可扩展性,兼容性,可移植性

什么是软件质量要素?

(1)技术角度:对软件整体质量影响最大的那些质量属性才是质量要素;

(2)商业角度,客户最关心的、能成为卖点的质量属性才是质量要素。

只有质量要素才值得开发人员下功夫去改善。

正确性是指软件按照需求正确执行任务的能力。 “正确性”的语义涵盖了“精确性”。是
第一重要的软件质量属性。
机器不会主动欺骗人,软件运行出错通常都是人造成的。


健壮性是指在异常情况下,软件能够正常运行的能力。
正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为。

健壮性有两层含义:一是容错能力,二是恢复能力。
从语义上理解,恢复不及容错那么健壮。
>Unix容错能力很强,可惜不好用。
>Windows容错能力较差,但是恢复能力很好,而且很好用。占了90%的操作系统市场(算上移动端的OS,windows现在不足50%了)。 

可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的概率。

软件在运行时不会发生物理性质的变化,“内存泄露”、“误差累积”问题。
时隐时现的错误一般都属于可靠性问题,纠错的代价很高。

软件可靠性分析通常采用统计方法.

性能通常是指软件的“时间-空间”效率,而不仅是指软件的运行速度。希望运行速度高些,并且占用资源少些。

关键是找出限制性能的“瓶颈”,不要在无关痛痒的地方瞎忙乎。
>优化数据结构、算法和代码
>算法复杂度分析

件能力上升,仍需性能优化。


易用性是指用户使用软件的容易程度。
软件的易用性要让用户来评价。

清晰性,清晰意味者所有的工作成果易读、易理解,可以提高团队开发效率,降低维护代价。
>开发人员只有在自己思路清晰的时候才可能写出让别人易读、易理解的程序和文档。
>可理解的东西通常是简洁的。一个原始问题可能很复杂,但高水平的人就能够把软件系统设计得很简洁。

安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。
开发商和客户愿意为提高安全性而投入的资金是有限的,他们要考虑值不值得。
究竟什么样的安全性是令人满意的呢?
一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那么这样的系统可以认为是安全的。
对于普通软件,并不一定要追求很高的安全性,也不能完全忽视安全性,要先分析黑客行为。

可扩展性反映软件适应“变化”的能力。
在软件开发过程中,“变化”是司空见惯的事情,如需求、设计的变化,算法的改进,程序的变化等等。由于软件是“软”的,是否它天生就容易修改以适应“变化”?关键要看软件的规模和复杂性。

要从设计之初分析系统未来是否有扩展的需求?

兼容性是指不同产品(或者新老产品)相互交换信息的能力。
商业规则:弱者设法与强者兼容,否则无容身之地
>WPS一定要与Word兼容,但是Word绝对不会与WPS兼容,除非WPS又在中国称老大。
>中国联通和中国移动的手机互联互通问题。(互联网的价值与用户数量的平方成正比)

软件的 可移植性指的是软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、OS和编译器)的能力,主要体现为代码的可移植性。
>编程语言越低级,用它编写的程序越难移植,高级语言的可移植性更好。
>最新的Java标准允许使用一些与平台相关的优化技术,这样优化后的Java程序虽然不能“一次编译,到处运行”,仍然能够 “一次编程,到处编译”。 
软件设计时应该将“设备相关程序”与“设备无关程序”分开,将“功能模块”与“用户界面”分开。


现在你是否也知道了常人是怎么评价软件的?没错,作为软件的用户我们只关心“好不好用”,它包含在这些专业指标之中,是其综合作用的结果。








  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值