未来GUI及其应用的研究(1) -- 基本的策略
来源:互联网 发布:大乐透公式算法技巧 编辑:程序博客网 时间:2024/05/16 14:26
GUI的开发,从来都不是一件简单的事情。它涉及很多很复杂的关系,尤其是和用户交互的时候,涉及很多状态。
一个产品,往往花费大量的时间用在GUI的开发上。对于一些企业级的应用--如OA等--来说,有大量的GUI设计工具,这些工具提供了足够多的
标准控件、数据绑定、数据源等等功能。在界面要求不必绚丽,用户体验要求不高的应用场合,GUI已经非常方便了。
而且,随着硬件的加强和分布式开发的需求,这些应该都首选B/S架构,甚至,C/S架构已经寥寥无几了。
但是,在嵌入式和其他应用场合,考虑到性能、速度等要求,仍然是以C/C++语言开发为主,虽然也有使用WebOS的设备,但是大多属于高端。
尽管在未来,WebOS及其变种,可能会大行其道。但是,毕竟WebOS不是为本地应用定制的,而且,js和本地接口的绑定,设计和开发起来,仍旧很困难。
而且,WebOS不能解决所有GUI产品开发的整个流程。
从我做GUI的一些定制类项目的经验看,开发一个完整的产品,不仅仅是GUI一方面的问题,而且还涉及到很多方面。
通常来讲,开发一个GUI的产品,我们是这样做的:
- 进行需求分析,做产品设计
- 架构师开始做整个产品的设计,同时,UI工程师,对界面进行设计
- 开发者根据UI工程师的设计,做界面的实现
- 合并UI、数据管理等各个方面,成为一个统一的产品
首先,用户的需求往往是不明确的。尤其是在定制项目中,很多客户可能在其他领域很在行,但是在UI和产品开发上,却不行。一开始,他们自己可能都不知道应该作成什么;
其次,及时客户清楚做成什么样子,在开发过程中,根据开发的结果和进度,也会产生很多别的想法;
第三,很多时候,为了拿下单子,UI工程师常常会脱离实际,设计一些很难实现或者很不常见的界面,导致开发者在实现时,费尽心力的去想方设法的实现
第四,由于设计和实现的脱节,当实现效果和设计效果有差距时,客户往往会按照实际显示效果重新做出调整
第五,UI工程师的设计,往往只针对一个页面一种场景,没有一定的经验,往往不能预见到运行期间各种变化,常常设计出的效果,当运行状态变化后,就需要做出调整;
第六, 好的UI,自然需要风格统一一致,而UI工程师在设计时,往往局限在局部的UI,整体的调整只有在产品成型后,才开始涉及。
.....
还有很多。尤其是在一些行业领域,一些控件不能满足要求,还需现场开发。
这些都给GUI产品的开发带来的很多的问题。使得开发周期长,项目成功率低。
对于一个产品来说,UI只是其中的一部分,不是全部,尤其一些外包和定制的项目,UI不是客户的核心技术。而客户的很多核心到技术,往往都是以SDK或者库或者服务的方式存在,要形成一个产品,和UI结合起来,必须从 UI层次,定义好框架结构,然后把客户的核心内容包裹起来。
而这种框架,如果不是对客户产品很了解,而且对类似的应用很了解,而且经验丰富,具有很强的架构能力,是很难做出好的产品的。
如果一个UI库,仅仅提供一些绘制或者常用的控件的话,开发这样一个产品,其周期和风险可想而知。
从这几年,IPhone和Android的流行,可以看到,大量平滑和丰富的特效,已经成为UI的必备功能。而且,时不时还要冒出一些很炫的效果来。
这对UI的要求就更高了。
纵观目前的UI库,在嵌入式领域,在PC领域,目前已经很少有能够和IPhone和 android匹敌的库了。
而市场的需求,已经被引发,在众多的领域,大家都希望能够有很好的界面。在消费类电子设备中,这些几乎是标准配置了。
如果分析Android和IPhone在界面上的成功,我们不难发现,
首先,Android和IPhone的界面库,有很强的针对性,他们都提供了一组框架,就是针对智能手机的。这种框架非常重要,它解决了产品的可行性,解决了产品的基本外观和用户体验,也解决了开发一个应用的基本范式。开发者,只要比葫芦花瓢,就可以实现;
其次,他们提供了很多基础的功能,比如布局、特效等等,这使得开发变得很容易
第三,他们提供了很好的开发工具,使得开发变得容易。
要想在其他领域内,也实现类似的成功,也提供易于开发、易于维护的产品,我想,需要考虑新的开发模式。
新的开发模式,应该遵循实际的开发规律。
通常,开发一个新产品,如果能够首先见到一个原型,那么,就可以明确很多内容。
1. 首先,快速开发一个原型,这些有:
1) 搭建一个产品的基本框架,使用标准的UI元素和标准的主题
2) 用原型和客户探讨,以明确界面的流程、产品的需求等更方面问题
这个原型,需要解决的问题是:
1) 定调子,确定好产品的基本外观和操作流程
2) 解决产品的架构问题,确定它的基本骨架,以方便后期的添加
3)作为UI、客户、开发三者之间,交流的平台,以平衡需求、外观、体验和可行性及性能之间的关系,防止出现脱节的现象。
这些原型,是要求可以在开发板上运行,那么,我们可以在开始的时候,就能够大致估计出产品在实际使用中的效果。
能够快速的在实际设备上运行,无论对于客户还是开发者,都是很大的信心鼓励。
2. 其次,在原型的基础上,讨论很确定外观,这些有:
1) 可以确立整体风格,保持风格的一致性
2)发现可以改进的地方,如果有需要,可以定制新的控件和界面元素
3. 第三,开发者可以明确和产品其余部分的结合,从而确定产品的总体框架
可以看的出,这里面有几个关键点:
1. 快速做出原型,最好的方法,就是从已经实现的产品中拿到一个,稍加修改,作为新的产品原型提供。
比如,很多产品都会类似的结构和页面:如启动画面、主菜单、系统设置等。还会有一些很常用的应用,如日历、记事本、计算器、相册等。
这些结构和应用是如此的相似,以至于,主要是不同设备的分辨率、图标等存在一些不一样。
如果能够把这些抽出来,作为已经实现的通用原型,无疑给后续的开发带来很大的便利
2. 总有一些应用,是针对客户自己特有的。
如果能够在一个通用的原型基础上,能够快速的制作页面、添加简单的事件和模拟数据,形成一个简单应用,并能够很方便的添加到通用原型中,
那么,这样的原型能够很快的实现
3. 界面总是要修改的,如果能够实现界面、资源和应用逻辑的分离,那么,界面的修改不会对逻辑代码产生太多的干扰,就可以很快的实现外观的修改。
这种事情可以和客户一起做,即时修改,即时征求客户意见,当客户满意时,UI部分就基本完成。
4. 在修改和定义界面的同时,架构师可以在原有基础上,定义出产品的总体架构,然后就可以实现和界面逻辑关系不大的部分,当这两部分都完成后,剩下的工作,主要就是系统集成了。
如果我们有这样一套东西,可以假设一下,做一个单子,会是什么过程:
假设我们做一个MP4吧(虽然现在MP4前途很渺茫,不过,大家都比较熟悉,拿来举例容易理解)。一个芯片厂商提供了MP4的芯片,希望做一个MP4,能够播放音乐、视频,可以看电子书、浏览图片和一些其他的小功能。
当接到单子后,我们首先把通用原型拿出来,这些包括启动画面、主菜单页面、一些小程序等。然后,我们把音频和视频播放器(假设也是做好的原型,但是没有放到通用框架中),放到通用原型中。由于通用原型的接口是统一的,所以,这些程序,几乎不需要什么改动,就可以在运行。
然后,可以在客户提供的设备上,去运行和移植这样的原型,把移植的结果,给客户看,和客户一起评估
第三,当大方向确定后,就可以和客户评估每个应用的需求及细节,把他们依次记录下拉,作为开发的需求
第四,同时,可以让客户提出自己对UI和操作的意见,从而确定好整体的风格,并及时安排开发人员和 UI工程师,实现这些风格(由于界面都是确定的,所以这些工作,主要是更换图片和资源)
第五,与此同时,我们的工程师和客户的工程师一起沟通,确定好音视频播放及其他底层访问的接口和方法,做一些和底层适配的工作
第六,集成工作在这两方面的工作有进行到一定程度后,就可以进行了。以迭代的方式,不断的集成,不断的把产品呈现给客户,每次迭代,都更进一步的接近客户的需求。
这种方法,和敏捷开发是想一致的。
这种原型的方法,可以有效的解决产品边界的问题。在产品开发中,总是会出现一些过渡的设计,包括UI工程师和开发工程师,都一些这方面的倾向。或者是对自己过于自信;或者是对需求判断不足;或者是为了拿到单子,迫于压力,做一些不切实际的承诺;或者是内部缺乏有效的沟通,大家都希望做出好产品,而忘记了现实的约束,只有在具体实现时,才发现,所有的一切都晚了。
=======================================================================
结合上面的分析,要想做好一个产品,要想在竞争中取胜,对我们的UI有这样的要求:
1. 应该有灵活的可定制性。这些包括:
1) 界面的外观应该以资源的方式提供,更换资源,即可实现对界面的改变
2) 应该有自动布局这样的功能,以便适应不同的分辨率和大小
3) 应该能够很方便的控件定制功能,在用到没有的控件时,可以很方便的实现
4) 友好的数据接口,有类似数据源、数据绑定等的接口,这样,开发起来会方便很多。
5) 应该有统一的接口,这样可以用xml等方法,作为资源把界面及其相关数据作成资源的方式
2. 框架非常重要,需要逐步提供框架:
1) 应用管理的框架,可以方便的添加、移除应用
2) 统一的资源管理框架,允许不同的应用共享资源,并保持一致的外观
3) 灵活的通讯机制,在不同模块直接进行通讯,并建立一些事件驱动的机制,也解决界面、应用和模块之间的耦合
3. 积累必要的应用还是非常重要的。应用的开发也是很不容易的,一个好的应用,堪比一个小型的系统。随着开发的产品越来越多,应该把它们积累和统一起来,作为将来新产品的原型的来源。要做到这一点,很重要的是,保持框架和接口的稳定性。
后面的章节,我们将逐步的分阶段的研究。
- 未来GUI及其应用的研究(1) -- 基本的策略
- 未来GUI及其应用的研究(1) -- 原型和框架(1)--我们需要什么样的原型
- 渲染顺序的应用及其策略
- 移动Web应用的性能及其未来趋势
- 移动Web应用的性能及其未来趋势
- 顺序表的基本操作实现及其应用(实验1)
- Msp430定时器的介绍及其基本应用
- 线性表的基本操作及其应用
- Msp430定时器的介绍及其基本应用
- 二叉树的基本应用及其他
- 线性表的基本操作及其应用
- 队列的基本操作实现及其应用
- java的GUI基本组件的简单应用
- PDM中BOM管理技术的研究及其应用
- SQL Server的系统表及其应用研究
- PDM中BOM管理技术的研究及其应用
- 生物传感器的研究重点、原理、种类及其应用
- 《高维数据的聚类分析研究及其应用》读书笔记
- 系统地学习Linux (zz)
- 牛仔们的伦理:华尔街可以借鉴的西部行为守则
- c语言中结构体的大小和内存对齐问题
- 关于findViewById
- javascript图片360°旋转
- 未来GUI及其应用的研究(1) -- 基本的策略
- Silverlight4入门之rectangle控件(四)
- printk 工作原理
- MySQL数据库的引擎快速指导
- 今天学习了关于C++ 中可变参数个数函数的使用!
- 1
- Android传感器的环境监控
- 工具软件
- 统计 DOM 节点下子节点的数量