怎样才能满足对可用性日益增长的需求?软件可用性可以通过许多途径加以改进,但人们普遍使用的是其中几种比较成熟的方法。最受人们欢迎和广泛使用的方法有可用性测试、风格指南及标准、专家咨询和反复原型设计。尽管这些方法往往是有效的,但它们都有很大的不足。
改进软件可用性方面最常用的方法是可用性测试。可用性测试是以人们熟悉和广泛传授的标准技术为基础的。测试可以在可用性测试实验室中在受控条件下进行,或者是在日常工作条件下通过现场测试来进行。可用性测试的实验室方法和现场方法各有长处和不足,在时间和预算允许的情况下,最好结合在一起使用。如果运用得当,实验室和现场可用性测试方法都会成为改进软件可用性的有效手段,但它们都有各自的严重局限。可用性测试是一种改进软件可用性的有效手段,但高质量不是靠测试得到的。所有测试技术的最大问题是它们往往是在产品开发过程后期才进行。要进行测试,必须要有一个东西可以测试,通常这要求已经有一个正在开发的可以使用的系统、一个相对完整的模拟系统或者能够充分运转的原型。发现和改正任何软件缺陷的成本是随时间增加的。一旦系统交付使用,发现和改正缺陷的成本将会大幅度增加。为了改进质量,通过更有效地运用更好的方法去防止缺陷远比缺陷检测和清除更加高效和划算。
可用性测试经常避免不了这样一种情况 ,即无论测试如何细致入微和富有成果,其结果往往不尽如人意。对于开发过程来说,可用性和用户界面设计的建议被认为已经太晚了的话,也往往是同样的下场。不论是哪种情况,所发现的问题经常得不到解决,原因是人们认为需要进行的修改涉及面太大,需要的投入太多。那些最后被改正的问题通常是比较浅显的,因为在已完成的代码中它们最容易修改。最终,对那些实际上涉及根本体系结构的深层问题往往只是做了些表面文章。有些人可能会认为,可以通过对草图形式的设计方案进行“测试"的办法在开发过程的早期阶段开展可用性测试。这种研究方法可能是很有价值的,但最好把它们当做一种检查和评审方法,而不是真正的实验室或现场测试方法,因为这种方法并不能称为测试。在所有工程领域,测试都毫无疑问地是指对某种程度上可运行的系统、原型和模拟装置所进行的试验和试用。
可用性测试的另一个局限性是所有测试方式都存在的所谓覆盖问题。没有一种测试计划能够覆盖某个特定软件系统上交互操作的所有可能组合。测试是以概率为基础的,它只能发现所存在问题中的一部分。尽管可以发现那些别的方法难以发现的问题,但如果要发现大多数可用性问题的话,实验室可用性测试方法可能在成本上会特别不经济。有的人也可能会认为,对于排除问题来说,所有测试方法在本质上都是不经济的。测试隐含着这样一个开发模型,即首先对系统进行了错误的设计和编码,然后查找问题及其原因,最后再来纠正错误并对修改进行测试。这一模型渗透于软件开发过程中, 在某种意义上是为一件事情付出了三倍的代价。
正确做法是应当在刚开始的时候就对系统进行正确的设计和建造。实际上,有选择地在那些经过深思熟虑、已基本合理的系统设计上运用可用性测试方法会更加高效,并会有更好的成本效益比。