四、后RAD时代:界面可视,到界面可描述
RAD过程与快速原型构建的理论直接相关,这种过程方法要求用户及早看到一个产品并试用之。通过用户对产品原型的体验与确认来固化用户需求,这个是应对用户需求变化的有效手段。
RAD过程方法在过去二十多年的时间里取得了不俗的成绩,这是显得易见的。VCL的成功,其一方面的原因也在于它迎合了这一潮流:我们可以通过快速地界面开发,来得到用户可确认的原型。
我认为这一过程中,“组件化界面-产品”之间可以快速演进是一个关键因素。
也就是说,开发人员可以基于一个“组件化界面”来持续开发,例如企业业务需求。然而,当界面成为主要变化的需求之一时,我们对“组件化界面”的依赖就成了灾难。这包括两个部分,即界面的表现形式和技术的变化。例如初始设计是类似组件化的、Windows桌面标准的,而后来又很快变成了简洁的、类Mac界面的;又例如最初采用GDI Api,后来又采用DirectUI等等。
传统的做法,是根据开发的需要来确定界面表现的范围——这样UI工程师痛苦,或根据设计来确定开发实现的技术——这样对开发技能要求更高。而最新近的一些思路,也是我前面提及到的UI的变革,是放弃界面可视,而采用界面可描述的方法。更进一步的,是界面可编程模型。
界面可描述与可编程的特性,在WEB上体现得尤为明显。我们其实是通过HTML+CSS来描述一个WEB的页面,另一方面,则基于DHTML或标准DOM这样的模型来做界面编程——这也产生了一个新的领域,即UED(用户体验设计)。
我在D2(Designer & Developer Frontend Technology Forum)大会上提到过,当界面分离出来的时候,自然产生了E2+C2的问题。E2是指效果(Effect)和体验(Experience),其中效果是美术设计来保证的,而体验则由前端开发来保证。因此体验又可以被分为C2,即控制(Control)与内容(Context)。这个C2在WEB中的具体表现就是JS和DOM,或在Flash中的AS与objects。而C2作为程序设计系统的理论依据在于:“控制+内容”正好对应了“算法+数据结构”。
我们说“组件化界面”演进到现在,变成了“界面可描述”,又说它产生了一个新的领域,有什么意义呢?真实的问题在于,当应用复杂到这种规模时,前端与应用开发已经不是一个领域、一个团队或一个个人的工作了。更进一步地说,目前的RAD工具无法保证多个领域在同一个工具集之下系统地工作。要知道,现在去实现一个阶段目标的“快速原型”,也已经比20年前的一个应用开发的规模要更大了。
我们无法在RAD工具中,快速地完成一个——需要由多个领域合作来完成的——原型产品。这个,就是RAD的现实困境。我们在前面的小节中提到UI人员用Photoshop,UED人员用JS,而开发人员却在用Delphi或.NET,这就是现状。这个现状的直接问题就是:没有一个RAD工具集能保证大家都很Happy。
所以现在我们即使是开发一个让需求方满意的原型都不是件容易的事了。不过,一旦我们承认RAD工具不是灵丹妙药,允许团队中分出一些人力来直面UI,或以专门的UED团队应对客户需求,那么我们又可以迎来清新美好的每一天。我们可以通过一个可描述的UI技术,直接将PS做的原始效果图转换成界面,然后通过独立的脚本语言来驱动之,使之快速应对用户的需求变更。这整个独立的部分,留给其它分层(例如B/S的S端,或U/C/S的C端)的就可以仅仅是一个接口,甚至可以是纯抽象的、未经实现的。
那么回顾这整个过程,我们强调了UI独立的重要性,强调了HTML+CSS带来的界面可描述,与VCL的界面可视的不同,这能表明RAD已死么?不完全是,最多能说明“基于界面可视的RAD产品化技术已死”。
我必须在这个小节里强调这一点,以说明VCL已死与RAD已死之间,不存在必然的、直接的、强关联的关系。我对RAD之死的观点,VCL只是引子,而非凭据。
但是,从UI分离开启出来一个新领域,如同在RAD工具时代切开了一条口子,它表明一种新的模式出现了,一种新的系统的、体系的、框架的切分模式出现了,在这个新的时代中,领域逐渐清晰化,成熟化,我们必须面临这样的一个时代:后RAD时代。其主要特征是:在RAD工具、方法与过程环节中,相关领域责能逐渐清晰明确,领域工具间的依赖逐渐变小,边界更趋清晰。直至“领域间的合作”替代“RAD工具来统一开发过程”这一现状。
如同砖工用刀,木工用刨,他们可以在同一体系下工作,关键不在工具的同质,而在于领域的成熟。