软件开发通常旨在使规范与实现保持一致。
因此,我们设计软件以满足规范,然后基于该设计进行实现。接着,我们使用测试来确认实现是否符合规范,如果存在差异则修正实现,如果规范模糊则予以澄清。
这可以称之为基于规范与实现的工程。
与此相反,当今讨论软件时,用户体验变得越来越重要。
此外,实际塑造用户体验的,是软件的行为,而非其实现。
因此,在规范与实现框架之外,存在着体验与行为。
因此,我认为值得探索基于体验与行为的“体验与行为工程”概念。
流体软件
体验与行为工程在传统的软件开发方法下是一种不切实际的方法。
这是因为它要求在规范中没有严格边界或功能划分的情况下改进用户体验。用户随意提出的体验改进请求,甚至可能需要废弃所有之前开发的软件。
另一方面,如果有一天基于生成式AI的代理式软件开发自动化变得司空见惯,那么重建整个软件系统也将变得可以接受。
此外,在这样的时代,通过为发布的软件配备AI工程师聊天机器人,我们可以设想将进入一个“流体软件”(liquidware)时代,届时用户界面可以根据每个用户的偏好进行修改。
流体软件意味着比传统软件更具柔性,能完美地适应每个独立用户。
当自动化开发和流体软件的时代到来时,基于规范和实现的工程范式将变得过时。
取而代之,我们将转向体验与行为工程的范式。
何谓行为?
简而言之,行为是随时间变化的状态。
而测试行为,无异于测试这种随时间变化的状态。
此外,测试行为并非旨在确认其与定义状态如何转换的规范保持一致。相反,行为的测试是基于用户体验的质量。
当然,如果存在导致系统执行用户或开发者意想不到操作的错误(bug),这些也会显著损害用户体验。因此,行为测试包括验证功能符合性和功能有效性。
在满足这些基本功能要求之后,重点将转向从用户体验的角度测试高质量的行为。
终极体验
对人类而言,终极的用户体验莫过于身体健康时对自身躯体的掌控。
试想一下:我们每天都在控制着一个重达数十公斤、复杂却又高度受限的身体,并用它来进行有目的的活动。
如果一个人试图控制这样一个沉重、复杂且高度受限的系统来执行期望的活动,那么体验通常会相当糟糕。
然而,只要我们身体状况良好,我们就能轻而易举地移动这个沉重、复杂且高度受限的身体,仿佛它没有重量一般;我们能像操作一个简单机械一样毫不费力地操控它;我们也能对其限制和约束视而不见,仿佛它们根本不存在。
这就是终极体验。
通过追求高质量的行为,我们有可能提供一种与控制自身身体相媲美的体验。
换句话说,即使一个系统处理速度慢、功能复杂、且有诸多限制和约束,也能实现一种完全无压力的流体软件体验。
总结
终极流体软件将提供类似于我们自身身体的体验。
这种流体软件对我们而言将如同身体一般。
每当终极流体软件普及或其功能增强时,我们都会感觉仿佛自己的身体正在得到延伸。