一个程序只要main方法的进入,就可以启动了,而一个系统的EJB则需要多层的架构和设计,包括请求协议,请求分发,负载均衡等方面,同时在后台服务器端需要分布式部署,节点响应,MQ等中间件来完成一次完整的请求和响应,最终来获取结果数据或者响应界面,大家都知道纯后端的代码市能够实现很复杂的商务逻辑的,单在视觉上面给人的感觉市美感不够,或者不太友好,那么相应的用户体验师,交互设计师,他们就有的忙了,他们要从交互设计设计,商业流程等方面去着手对一个完整系统的软件进行近乎完美的产品设计了。
首先是交互设计这一块了,交互的背景和特点主要分为下面几点:
1.信息
人们每天面对那么多信息,在杂乱的信息中筛选出对用户有价值的,呈现给用户,帮助用户做选择,指引用户完成任务。信息的筛选直接影响着用户使用,在用户需要的时候无法提供有用的信息,将导致任务无法进行下去。所以信息是交互设计师需要关注的第一要素。
2.互动
有了信息后,就需要设计用户如何与这些信息进行互动了。信息的分类、布局将影响用户与信息的交互。用户获取信息后,做出了反应,采取了行动,应用也需要有来有往地给予足够的反馈,来协助用户完成任务。
以上2要素,都是从用户直观感受上去体现的,也就是说往往是表现在用户界面上。我们可以把它称之为“看得见的交互设计”。
具体的形式包括:
信息架构:把筛选好的信息进行分类,通过页面来承载这些信息,并且把信息(页面)的层次规划好
界面设计:把信息在一个页面上进行布局
流程设计:把一个任务中涉及的页面信息串联起来,使任务形成一个线性流的关系
以上三个关键点,是对交互设计师的基本要求,很多情况下,非专业人员也能做得7788,但还有一部分的交互设计,并不是直观能看到的,也许用户会轻微感受到,但他总在不经意间使用户使用得更加流畅。我们可以把它称之为“看不见的交互设计”。而这些看不见的交互设计,也是初级交互设计师容易忽略的。
如今移动互联网发展迅速,移动产品对这些看不见的交互设计更为注重。因为移动应用的使用场景、网络环境、使用心态都与用户在使用web产品时有着大大的不同。所以在了解这些看不见的交互设计时前,需要对移动应用的情景有一定的了解。
1.使用场景
用户在使用移动产品,有可能会在户外人多的公众场合使用,这时候需要特别注意移动应用设计的隐私安全。
用户有可能在家里、在床上、在厕所,用着各种姿态使用产品,所以对交互的便利性和容错性要特别注意
2.网络环境
网络环境是“看不见的交互设计中”非常关键的一点。用户会在2G、3G、wifi甚至无联网的情况下使用产品,所以对于各种网络环境进行合理的交互设计是移动产品交互设计师需要考虑的重中之重
3.使用心态
产品的存在是为了解决用户的问题,而移动产品是用户的贴身工具,当用户需要时,能立刻开始运作,需要快速、直接、有效,用户不喜欢等待。有研究结果表示
在移动产品这种特殊的环境下,“看不见的交互设计”会相较于web产品更为重要,特别是针对网络环境和用户等待的体验需要特别注意
用户在客户端的界面上进行操作,客户端发送请求到服务器,服务器处理请求,返回数据给客户端,并显示给用户
其中,客户端和服务器的交互过程,用户是感知不到的,而他确实会耗费时间,在不同的网络环境下耗费的时间也会有所差异,如何让用户在这段时间里有友好的体验呢?这时候“加载过程”起了作用
加载过程的关键可以总结为:
1.让用户感知产品正在努力为他运作
2.让用户有基本的心理预期需要等待的时间长短
3.让用户在无聊的等待中获得更多乐趣
进度条是一个针对加载过程很好的设计
动态的加载进度表示产品正在工作,总进度和当前进度能让用户及时了解情况,让用户能根据这些信息预判时间,有了心理预期
有趣的进度条设计or在加载过程中展示一些功能介绍提示(常用于游戏)能有效减少用户等待时的焦躁心理,也能有效地提高用户的容忍度
进度条是web产品时代的产物,还有另外一种加载设计,就是加载图标
由于移动产品请求的数据量并不大,所以进度条往往会在一瞬间就完成了,在这种情境下,简化了加载的设计,很多移动产品转而使用加载图标来表示加载过程
以上为两种比较常用的加载方式,下面将具体介绍他们与移动产品结合的用法
缓存机制
“缓存”这个词在web时代也经常听到,但在移动产品上,他的重要性得到了很好的重视
一张图解释什么是缓存和缓存的作用
“缓存”就是把已经加载过的数据保存起来,并在下次需要重复使用的时候,不需要向服务器加载,直接获取本地数据
我理解的“缓存”可如下分类
临时缓存常用于一个功能页面内,保存各栏目的缓存。同一个功能里会把子功能分为多个栏目进行划分,每个标签栏目下的内容在本次使用中都可保存为临时缓存,在该功能里切换栏目,不需要重新加载数据,使用缓存显示。对于用户来说,使用时达到了无缝切换浏览,对于服务器来说,在短时间内数据很少会有更新,所以在一般情况下能满足用户的正常需求,并达到体验优秀
临时缓存的清理机制是:退出该功能模块就清除之前的缓存。也就是说下次进入该功能模块,需要重新获取一次数据
很多时候我们都会用到临时缓存,因为那些信息真的不是那么重要,而且不需要经常反复查看,那对于那些我们经常使用而且经常需要反复查看的信息,我们就会采取固定缓存保存在本地,方便下次翻阅时不需要再一次向服务器请求数据了
这些“看不见的交互设计”就是纠结在那些细节,但作为交互设计师千万不要以为这些是很细小的点,其实他是有大文章可作的。
刷新、加载、缓存机制的设计,我不清楚是否应该归纳进交互设计师的职业范畴,但是作为一名用户体验设计师,这些点或多或少地影响着用户的使用体验,我们都应该给予足够多的重视。
这些机制,独立来看都有现有模式可参考,但是交互设计师不应该把他们割裂地设计,他们往往是合并在一起时才会有意义。不同机制的结合,往往有妙用,这就需要设计师根据每个产品的不同场景来特殊制定了。
其次是业务逻辑处理了
对于涉及到产品,金额,数量等事物性的操作的时候,最好是能走作流,把一次交易都放在一个QUEUE里面,用户再去进行确认,修改和提交申请,审批等流程,在Queue里面的基础数据是没有对数据库进行实际的操作,只有等确认之后才会进行明确的操作。这样可以预防手误或者临时有变的情况,对于一般的CURD操作,就可以直接提交,给一个confrim确认弹窗就可以了。对于涉及到提交申请之类的系统,则要分配好权限,不同级别的用户对应不同的siteCode,对应不同的页面风格,不同的用户有不同得以页面功能按钮,按钮不是直接hidden的,而是数据从后台也不能传递,这样就很好的处理了权限和角色德瓦问题了。
总之,一个软件编程产品,就需要有良好的业务机制,同时在所有的业务都实现的时候,要站在用户的角度,最大化的提升产品的用户体验度和友好度
当做好了严谨的事物处理机制