[转载]软件设计是怎样炼成的(8)——用户感觉好才是真的好(用户体验设计) – 张传波(Fireball) – 博客园.
摘要:
软件的UI是客户直接体验软件的地方,好的用户体验可能比追求新技术和追求漂亮设计更加重要,优秀的软件应该是既有外在美也有内在美的。但大部分用户是“外貌协会”的,你和用户说你的软件如何OO,用了多少种设计模式,客户是不鸟你的,客户关注的是用户体验!
大纲:
1.什么是优秀的设计?
2.优秀的设计能节省项目工作量
3.优秀设计从分析需求开始
4.软件系统不是木桶型的
5.软件设计的“大道理”
6.规划系统骨架——架构设计
7.打造系统的底蕴——数据库设计
8.细节决定成败——详细设计
9.用户感觉好才是真的好——用户体验设计
10.持续提升设计水平
本文章是系列文章之一,如果你还没有看过之前的文章,建议先看完前面的文章再看本篇,这样效果更好。
9.用户感觉好才是真的好——用户体验设计
9.1 从“余额宝是吸血鬼”说起——用户体验设计的重要性
某人写了一篇文章,说余额宝是吸血鬼,要取缔余额宝!
我大吃一惊,决定认真研究一下这篇文章,但愣是没有看懂!里面无非是说余额宝是银行的吸血鬼,会害死银行,害死金融市场之类的云云,反正没有看懂。 我就纳闷了,我们把钱放到余额宝,每天赚取几块钱,跟你文章说的内容有毛关系?!你银行收费多,利息低,存取钱麻烦,我干嘛要将钱放到银行发霉呢?
这个事件跟用户体验设计有关系吗?我相信你已经有感觉了,请继续听我道来。
公司 A 开发的一个软件一直很好卖,但它的竞争对手公司 B 开发了另外一个更好用的软件,用户很喜欢。很快公司 A 的软件销量直线下降,为了挽回颓势,公司 A 请了某人写一篇文章“恐吓”用户,说一大堆用户看不懂的话,比方说:公司 B 的软件不面向对象,安全漏洞多,会吃掉内存,会损耗CPU等等。你估计用户看了这篇文章后会怎样?我估计用户会多买两套公司 B 的软件压压惊!
无论是银行还是余额宝,都为顾客提供一种资金投资的服务,但余额宝的用户体验比银行好多了,所以顾客会做出自己的选择;同理,软件给用户的感觉好,能带来实际价值,用户自然就会选择这个软件,用户是不会计较你用什么开发语言、数据库,还有用了多少种设计模式的。
我们来一个角色扮演,假设你是用户,你将会花钱买一套软件,你的购买标准是?
调查,你会选择怎样的软件?
A)你是软件开发狂热者,他比较偏好架构设计良好的软件,他甚至想得到设计文档和代码。对于软件,功能基本能用就可以了,有点错误也可以忍受。
B)你是唯美主义者,他要求界面要爽心悦目,功能能用就可以了,操作麻烦一点也没有关系。
C)你是实用主义者,界面不需要很花俏,关键是软件要容易上手,操作要方便,能高效地帮助他完成日常工作。
我想你应该不会这样变态选 A 吧?选 A 的话,恭喜你,你确实是软件开发的狂热者!
选 B 的朋友有木有呢?你是外貌协会的吧?
选 C 的朋友比较务实了,你会很珍惜你的每一分的血汗钱,软件需要物有所值,你才愿意投资!
9.2 什么是用户体验设计?
先说说什么是“用户体验”?
用户体验就是用户使用软件时给他的整体感受,而用户体验设计就是针对“用户体验”的设计。
其实要让用户有好的感觉,主要取决于以下三点:
1)软件能满足需求;
2)在1)的基础上,软件用起来很舒服;
3)软件的价钱是合理的,当然价钱 越便宜越好,最好是免费的。
我们这里谈的用户体验设计,主要是针对第1)、2)点来谈的。
如果客户和我们抱怨软件不好用,我们首先要检查的是需求是否满足了?如果满足了,那么至少可能打60分了。在需求满足的前提下,再进一步提升用户体验,就会让你的分数上升到80分以上。那有没有机会满分呢?通常很难的,除非你的软件是满足需求、很好用,并且是免费的!
是否满足需求,解决软件能不能用的问题;用户体验设计是否能更上一层楼,能解决软件好不好用的问题。
用户体验设计,体现了前文提到的“由顶而下”设计思路的体现,见下图:
图9.1 由顶而下的设计思路
说明一下:此图中“规划界面”这个活动的输入是”用例/用户故事“和”业务流程图“,但其实”业务概念图“也是需要考虑的,此图画出的是主要的先后关系。
对于用户体验设计,可能会有人第一反应是美工负责的事情,实际上美工仅仅是其中一部分而已,用户体验设计需要考虑以下三方面:
1)整体界面规划
2)统一界面标准
3)易用性设计
下面分别说明。
9.3 整体界面规划
有没有曾经试过客户向我们抱怨软件不好用,我们询问客户哪里不好用,客户一时半刻说不出来;在我们的耐心追问下,客户终于憋出一两点不好用的地方 来,于是我们马上进行改进,但客户仍然说不好用;于是我们再次耐心的追问,客户又憋出一两点不好用的地方来…… 周而复始,客户还是觉得不好用!
你觉得问题在哪?你可能要重新检讨界面的整体规划!
整体界面规划做的事情就是:规划软件需要什么界面,每个界面能做什么事情,每个界面之间是怎样关系等。这是用户体验设计的最关键、最核心、最重要的一环,这个做好了,基本上用户体验设计不会差到哪去,反之无论你在哪些细节上修修补补,很难在根本上改善用户体验。
我们仍然用前文的”考勤系统“作为例子,需求请参考前文,链接:http://blog.csdn.net/fireball1975/article/details/18967945
下图是前面出现过的考勤系统的部署图:
图9.2 考勤系统的部署图
红色箭头指向的客户端是“PC”客户端,我们要思考这个客户端的用户体验设计,我们要回答两个问题:
1)什么角色将会使用这个客户端;
2)这些角色通过这个客户端能做什么事情。
于是我们我们发现,”员工“和”领导“这两种角色都会使用这个客户端,他们分别通过这个客户端能做的事情有:
员工:
1)查看全部人的请假外出情况
2)提出申请
3)查看申请进展情况
4)修改申请
5)删除申请
领导:
1)查看待审批的申请
2)审批员工的申请
根据上述信息,我们可以规划出PC客户端的界面流:
图9.3 考勤系统PC客户端的界面流
小结一下整体界面规划的做法:
1)要熟悉需求。
2)在架构设计的基础上找出系统的客户端有哪些,这些客户端是指最终用户会接触到的机器,一般不需要考虑服务器端。
3)思考每个客户端上的用户有哪些,这些用户分别在这些客户端上需要用到什么功能。
4)画出每个客户端软件的界面流。如果觉得难度有点大,可先针对不同用户分别画他们的界面流,然后合并不同用户的界面流,思考界面的判断逻辑,使不同用户进去都能获得良好的用户体验,同时让程序工作量更小和弹性更好。
通常我们的项目当中是没有人专门做整体界面规划的,大部分的情况是程序员做出来怎样就是怎样的,但程序员做出来的界面用户体验设计,你懂的……
如果你是程序员,请按照上述思路改善的工作!
如果你是项目的管理者,请思考这些工作谁来做更合适?有些公司可能有专职的用户体验设计工程师,有些公司木有,那么你可以考虑让需求分析师、测试工 程师来负责,或者是作为项目经理的你来亲自负责。负责这个岗位的同事至少需要具备这样的一个素养:就是能从用户的角度来思考问题!如果能同时具备技术功 底,能设计出用户体验极佳而且开发工作量少的界面整体规划,这样就最完美了!
9.3 统一界面标准
统一的界面标准主要包括三方面:形象、文字和行为。
美工负责的事情主要就是形象方面的,包括有:(可能列不全)
1)整体风格:系统需采用一致协调的美术风格,使用户感觉是在使用同一个系统。如一致的色调、背景、图片等。
2)图片、图标、页面布局等方面的设计。
3)文字的样式、大小、字体等等。
4)界面上控件等各种元素的大小、颜色、风格等等。
文字方面主要是指文字的内容,与上述第3)有点不同。
软件中出现的文字大概分两类:
1)操作性、提示性文字,如:增加、删除、确认、取消等操作性文字,还有一些相关的操作提示。
2)专业性、业务性文字,如医院系统,系统中出现的药名、病名等专业性文字。
这两类文字都需要统一并且易于理解,例如我们经常犯的毛病:一个地方叫”新增“,一个地方叫”添加“,一个地方叫”增加“,这样就很不专业了。
现在说说行为方面要注意的事情:,举两个例子你就懂了。
例1:某些软件增加确认的提示很不明显,你点了一下”增加“,界面没啥反应,搞到你多点几下,后面发现增加了好几条记录了。
例2:某些软件删除之前没有提示,结果你一不小心就干掉数据了。
用户会在软件上做很多动作,常见的动作有:查看某条记录,查看某些记录,增加一条记录,修改一条记录,删除一条记录,删除一批记录等等。类似的动作,软件应该有合适的、易于用户理解的并且是一致的响应,这些都是对软件行为的设计。
9.4 易用性设计
我们分析一下互联网网站注册页面的易用性,以此为例子体验一下易用性设计。
注册网站是黏住客户的第一步,你打算如何设计才能让更多网友愿意注册呢?下面看看几个阶段的演化:
1)“皇帝女不愁嫁”的阶段
很久很久以前(其实也不是很久,10多年前吧),互联网刚流行的时候,注册网站是比较麻烦的,要看用户条款,要填一大堆信息,还要分几页来填,最后一页还因为网速问题出错,折腾死你!但当时互联网网站太少了,你不介意多尝试几次的。
2)“忽悠你进来再说”的阶段
你只需要填个账号,输两次密码,用户条款不需要看,你去打个勾就行了。
3)“简化到不能再简化”的阶段
现在有些网站,注册时输入用户名,但密码不需要输两次,一次就搞定了!希望你没有输错密码吧,呵呵。
4)“用户名都不需要输入”的阶段
本来以为3)的做法已经是无法再简化的了,但居然这么神奇,用户名都不需要输入,点个按钮就可以了!没错,这就是关联其他账号,比方说用QQ账户登录、用微信账号登录等等,如果你现在已经登录QQ,那么就可以一键关联账号并登录了!
大家为了争夺用户,注册这事情简化到令人发指的程度!
这仅仅是一个例子,系统中需要着重考虑易用性设计的地方还是很多的,例如:
1)首页。
2)经常被使用的界面,如登录、查询界面。
3)用来拓展业务的界面,如注册界面。
4)复杂的编辑界面。
5)带有运算功能的界面。
6)重要人物会使用的界面,如报表。
……
这是本系列文章的最后一篇了,软件设计有无尽的可能性,绝对不是几篇文章或者是一本书就能帮助你升仙的,多实践多尝试才能帮助你更上一层楼。工作中的设计挑战可能不丰富,难度不够,你自己需要为自己多找一些案例来挑战,多写代码,多做总结,建立你自己的代码重用库。
如果你是公司的管理层,你可能不仅仅考虑的是个人能力提升的问题,而是更多地考虑让整个公司设计能力提升的问题,可能想到设计流程制度化、设计文档 模板化等工作思路。公司领导要更多考虑需求积累、技术积累,打造公司的核心产品线,核心技术等,打造代码重用库、组件库等等,要达到一定的高度都不是靠爆 发的,而是靠长期的积累。积累达到一定的层次,“后人”就可以利用“先人”的智慧达到更高的高度。我们这些现代人可能并不比古代人聪明,我们能干很多古代 人不能干的事情,是因为我们利用了先祖为我们积累的大量文明成果。
11.后话
我正式出版的一本书《火球——UML大战需求分析》中提到,我打算将来写一本《活用UML——软件设计高手》,一些朋友问到这本书什么时候出版?
我很不好意思,这本书出版没有排到日程上,但“软件设计是怎样炼成的”这个系列文章其实是此书的浓缩版,我打算将这个系列文章连同其他文章,编进一 本软件研发及管理最佳实践的书中,此书还没有最终定名。此书将会覆盖软件研发的方方面面 ,目标就是培养厉害的软件项目经理,让你装备周身刀,把把锋利!
我还会在博客中为大家陆续分享文章,谢谢你的支持,请继续捧场!