我们已经探讨了在“连接”一个设备的时候会遇到哪些挑战,以及芯片、硬件与软件的发展趋势会给那些将智能、连接设备推向市场的开发者们带来什么样的挑战。在本文中我们将重点关注设备的用户体验。
用户体验已经随着时间的发展产生了演变,从命令行的输入,到简单的输入/输出设备的2D图形界面,再到支持语音输入、触控和多点触控及手势,还有3D用户界面的设备。用户期待他们设备的用户体验是反应灵敏、栩栩如生、优美流畅、身临其境并且是直截了当的。要注意的是,我们所讨论的是用户的体验,而非用户界面:全部的体验显然不仅包括了用户界面(用户能看到的内容),而且也包括了用户如何与设备交互以及设备的导航方式(使用输入及输出设备),还有用户如何配置设置/***项及与其他设备的连接。
对于一个新设备用户,用户可能首先会查看设备的外壳或者应用程序加载器(请注意,某些设备启动后只能运行一个单一的应用程序,这可以被当作是一种“外壳”)。应用程序或外壳可以被分为两个独立的技术模块,即用户界面(用户能看到的内容)与应用程序逻辑(应用程序的粘合剂或者商业逻辑)。将用户体验从基础逻辑中分离出来并不新鲜;Model View Controller的概念早些时候就已经存在了,并且可以很容易在一些编程模型里见到,比如Microsoft Foundation Classes,它可以将一个应用程序分成一系列独立的类别(应用程序、文件、视图、框架等);还有Silverlight,它清晰地将用户界面设计与基础应用程序开发分离了,因此设计者与开发者的工具链是各自独立的。
将用户界面设计与应用程序编码开发清晰地分离后,我们就可以创建两条平行的开发路线,一条负责用户体验,另一条则负责基础程序/商业逻辑。这样做的好处就是可以让设计者根据既有的用户体验来开发外观、性能、品牌与情感连接;而软件开发者则可以侧重于开发应用程序/外壳的基础功能,包括互联性(包括与网络服务的合作)、部署、安全保护,当然还有与用户界面层的交互。要注意的是,软件开发者不会直接创建或展示用户界面的元素,而是使用设计者开发与公开的用户体验的元素。
要想让设计者能独立于软件开发流程工作,就需要一套工具。这套工具可以让设计者创建便于软件开发者使用的用户界面元素;而设计者会反复改进已有的设计,这样开发者也可以方便地使用这些变化与更新的内容。
让我们以Windows Embedded Compact 7为例来说明设计者与开发者是如何独立工作,但又通过“合作”来设计与完成一次身临其境的用户体验的。设计者先用Expression Blend创建一个Silverlight项目。项目会对用户体验进行定义,但设计者无需担心基础代码——因为设计者关注的是外形、用户体验、时间点、事件、动画以及用户界面资源。开发者主要关心的是用户体验中出现的事件;以及用户界面中出现的回放,开发者以此给终端用户提供信息。例如,设者可以创建一个动画并在运行一项耗时进程的时候播放给用户(比如从网络服务中提取内容或解析数据并展示给用户)。开发者只需知道动画的存在并调用即可。开发者可以使用诸如Visual Studio与Platform Builder这样的工具来将设计者制作的项目融合进他们的设计。
对许多设备来说,用户体验与互联性是紧密相连的。一个依赖互联性从网络服务中提取资料的设备,在没有数据连接的时候就不那么有用了。因此,将数据存储在本地的能力对于那些非实时网络连接的设备就十分重要了。我们已经讲述了将用户体验(设计工作)与基础应用程序代码(开发工作)清楚地分离开对于用户要求的丰富而身临其境的体验是十分重要的。对于开发者来说,如何将他们的代码与用户体验结合起来也非常重要:同步的编码方法会妨碍用户体验并导致设备运行起来看似没有反应,显然,这不是什么美妙的用户体验。开发者应该考虑使用异步的编码方法来保持用户体验的响应与“活力”。 当越来越多的应用程序与服务转向云的时候,这一点就显得尤为重要。
附:
Mike Hall简历
Mike Hall是微软Windows Embedded事业部***软件架构师,负责 Windows Embedded Compact和 Windows Embedded Standard的有关工作。
Mike拥有30多年代的行业工作经验,在微软公司工作了15年以上,最初任职于开发者支持 (Developer Support) 部,主要从事 C/C++、MFC、COM 和设备驱动程序开发,以及 Win32、MASM 和 Windows CE 操作系统的开发。在出任目前的软件架构师一职之前,他还担任过Embedded Devices Group的系统工程师。Mike还开了一个博客,其中涵盖了Windows Embedded开发工作的方方面面,可以在此处找到。
Mike Hall照片
微软Windows Embedded事业部***软件架构师Mike Hall