摘要:
软件的UI是客户直接体验软件的地方,好的用户体验可能比追求新技术和追求漂亮设计更加重要,优秀的软件应该是既有外在美也有内在美的。但大部分用户是“外貌协会”的,你和用户说你的软件如何OO,用了多少种设计模式,客户是不鸟你的,客户关注的是用户体验!
大纲:
1.什么是优秀的设计?
2.优秀的设计能节省项目工作量
3.优秀设计从分析需求开始
4.软件系统不是木桶型的
5.软件设计的“大道理”
6.规划系统骨架——架构设计
7.打造系统的底蕴——数据库设计
8.细节决定成败——详细设计
9.用户感觉好才是真的好——用户体验设计
10.持续提升设计水平
本文是系列文章之一,如果你还没有看过之前的文章,建议先看完前面的文章再看本篇,这样效果更好。
9.用户感觉好才是真的好——用户体验设计
9.1 从“余额宝是吸血鬼”说起——用户体验设计的重要性
某人写了一篇文章,说余额宝是吸血鬼,要取缔余额宝!我大吃一惊,决定认真研究一下这篇文章,但愣是没有看懂!里面无非是说余额宝是银行的吸血鬼,会害死银行,害死金融市场之类的云云,反正没有看懂。我就纳闷了,我们把钱放到余额宝,每天赚取几块钱,跟你文章说的内容有毛关系?!你银行收费多,利息低,存取钱麻烦,我干嘛要将钱放到银行发霉呢?这个事件跟用户体验设计有关系吗?我相信你已经有感觉了,请继续听我道来。
公司A开发的一个软件一直很好卖,但它的竞争对手公司B开发了另外一个更好用的软件,用户很喜欢。很快公司A的软件销量直线下降,为了挽回颓势,公司A请了某人写一篇文章“恐吓”用户,说一大堆用户看不懂的话,比方说:公司B的软件不面向对象,安全漏洞多,会吃掉内存,会损耗CPU等等。你估计用户看了这篇文章后会怎样?我估计用户会多买两套公司B的软件压压惊!
无论是银行还是余额宝,都为顾客提供一种资金投资的服务,但余额宝的用户体验比银行好多了,所以顾客会做出自己的选择;同理,软件给用户的感觉好,能带来实际价值,用户自然就会选择这个软件,用户是不会计较你用什么开发语言、数据库,还有用了多少种设计模式的。我们来一个角色扮演,假设你是用户,你将会花钱买一套软件,你的购买标准是?调查,你会选择怎样的软件?
)你是软件开发狂热者,他比较偏好架构设计良好的软件,他甚至想得到设计文档和代码。对于软件,功能基本能用就可以了,有点错误也可以忍受。
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) 这些角色通过这个客户端能完成哪些操作?
经过分析,我们发现“员工”和“领导”这两种角色都会使用这个客户端,他们分别能通过这个客户端完成以下操作:
- 员工:查看全部人的请假外出情况、提出申请、查看申请进展情况、修改申请和删除申请。
- 领导:查看待审批的申请和审批员工的申请。
根据上述信息,我们可以规划出PC客户端的界面流程:
```
图9.3 考勤系统PC客户端的界面流程
```
总结一下整体界面规划的方法:
1) 熟悉需求。
2) 在架构设计的基础上找出系统的客户端有哪些(通常是指最终用户会接触到的机器),这些客户端不需要考虑服务器端。
3) 思考每个客户端上的用户有哪些,这些用户在各自客户端上需要使用哪些功能。
4) 为每个客户端软件绘制界面流程图。如果觉得难度较大,可以先针对不同用户分别绘制他们的界面流程图,然后合并不同用户的界面流程图,思考界面的判断逻辑,使不同用户进入时都能获得良好的用户体验,同时减少程序的工作量和提高弹性。
通常情况下,我们的项目中并没有专门负责整体界面规划的人员。大部分情况下,程序员会根据自己的理解来设计界面。但实际上,程序员设计的界面往往难以达到理想的用户体验。如果你是程序员,请按照上述思路来改善你的工作!
如果你是项目的管理者,你需要考虑哪些工作更适合由谁来完成。一些公司可能拥有专职的用户体验设计工程师,而另一些公司则没有。在这种情况下,你可以考虑让需求分析师或测试工程师来负责这个岗位,或者作为项目经理的你来亲自负责。负责这个岗位的同事至少需要具备一个关键素养:能从用户的角度出发思考问题!如果他们还能具备一定的技术功底,能够设计出用户体验极佳且开发工作量较小的界面整体规划,那么就完美了!
9.3 统一界面标准
统一的界面标准主要包括三个方面:形象、文字和行为。美工主要负责形象方面的设计,包括以下内容:(可能不全)
1)整体风格:系统需采用一致协调的美术风格,使用户感觉是在使用同一个系统。如一致的色调、背景、图片等。
2)图片、图标、页面布局等方面的设计。
3)文字的样式、大小、字体等。
4)界面上控件等各种元素的大小、颜色、风格等。
文字方面主要是指文字的内容,与上述第3)点有所不同。软件中出现的文字大致分为两类:
1)操作性、提示性文字,如:增加、删除、确认、取消等操作性文字,还有一些相关的操作提示。
2)专业性、业务性文字,如医院系统,系统中出现的药名、病名等专业性文字。这两类文字都需要统一并且易于理解。例如,我们经常犯的一个错误是:一个地方叫“新增”,一个地方叫“添加”,一个地方叫“增加”,这样的命名非常不专业。
现在说说行为方面要注意的事情。举两个例子你就明白了。例1:某些软件增加确认的提示很不明显,你点了一下“增加”,界面没有反应,让你多点几下才发现增加了好几条记录。例2:某些软件删除之前没有提示,结果你一不小心就误删了数据。
用户会在软件上做很多动作,常见的动作有:查看某条记录、查看某些记录、增加一条记录、修改一条记录、删除一条记录、删除一批记录等。对于类似的动作,软件应该有合适的、易于用户理解的并且是一致的响应。这些都是对软件行为的设计。
这是本系列文章的最后一篇。软件设计有无尽的可能性,绝对不是几篇文章或者是一本书就能帮助你升仙的。多实践多尝试才能帮助你更上一层楼。在工作中,设计挑战可能并不丰富,难度不够大。你需要为自己寻找更多案例来挑战自己,多编写代码,多做总结,建立你自己的代码重用库。
很抱歉,我没有找到《活用UML——软件设计高手》这本书的出版时间。不过,你可以在作者的博客中找到一些关于软件设计的文章。此外,他还有一些其他的书籍,例如《火球——UML大战需求分析》 ,《软件设计师教程(第4版)》 等等。