程序员常常将用户控制软件的方式堪称是软件控制其他软件的方式相同。一些应用程序对于人员操作和程序操作不加以区分。
将人的输入等同于机器输入会导致错误的设计准则。一个不成熟的规则是像对待机器输入一样,必须按照接收的顺序来处理用户输入。另一个不成熟的规则是所有用户输入都是重要的,不应丢失或忽略任何输入。实际上,有时是应该忽略一些用户输入的。
程序员经常将与人的交互行为等同于与另一个软件交互的一个原因是程序员以及他们的经理更倾向于使用简单的、易于变慢的实现。另一个原因是,程序员更熟悉计算机和软件的行为特性,而不是了解人的感觉、运动和认知方面的特性,因此他们将更多的注意力放在程序控制的要求上。
原因五:开发人员使用简单的实现。
开发人员经常使用简单的算法、数据结构、体系结构和协议以加快进度和节省成本。他们更喜欢易于编程的实现,例如单线程、同步的方法。而且他们的经理也支持这种做法。这回妨碍实现高响应性软件的目标。
原因六:GUI软件工具、组件和平台不完整。
响应性是决定用户满意度的非常重要的因素,但是软件开发人员还是经常选择过于简单、妨碍响应性的实现方法,这的确令人不解。难道他们不知道这样做会限制他们产品的供求吗?
一般来说,他们清楚这一点,但是他们的工具没有提供创建高响应性软件的必要支持,现代GUI工具包无法使软件达到实时要求或在运行时区分任务的优先次序。
响应性的提高看似很容易实现,真正做起来就很难。在Java或Windows中显示忙光标需要多线程编码,而在应用程序的其他部分都不需要多线程。这大大增加了编程的复杂度。所以有些开发人员选择不去费力显示忙光标也就不足为奇了。
原因七:管理者雇用缺少必要技能的GUI程序员。
造成GUI软件响应性不好的一个原因是,GUI程序员缺少技能和经验。这几乎可以肯定GUI设计实现中的某些薄弱环节难以得到改善,例如响应性的提高。
由于编写高响应软件需要实时和多线程编程技巧,所以这个问题变得更加难以解决。如上面的原因六所述,GUI软件工具、组件和平台没有为实时多线程设计提供良好的支持,这就加大了程序员的负担。一个软件开发经理兼职程序员曾经这样说:多线程应用程序实现起来很难。它们需要雇用高薪的高级程序员,而且通常要花费很长时间来调试和维护。
当然,还是有一些软件开发人员在设法编写实时软件。战斗机、巡航导弹、工业机器人、核电站和空间探测器中的软件,都要严格遵守满足实时性的要求。问题并不在于没有人知道该如何编写实时软件。其症结是:由于桌面软件和Web软件行业的经济性以及软件开发人员普遍缺少对软件响应重要性的理解,使得开发管理者不去雇用具有编写高响应应用程序能力的程序员。