zoukankan      html  css  js  c++  java
  • 软件设计是怎样炼成的(8)——用户感觉好才是真的好(用户体验设计)

    摘要:

    软件的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)重要人物会使用的界面,如报表。
    ……


    9.5 技术人员应该怎样对待用户体验设计
     
    N年前,我作为面试官面试一位程序员,该程序员是来自竞争对手的公司的。我问他为什么离开原来的公司,他说:原来那个公司代码很不规范,很多 If Else,很多 Select Case,每一次遇到需求变化都需要去折腾,这些代码已经无法改下去了,我想到更规范的公司工作!
    程序员追求进步是好事,但如果我告诉你另外一个让我们惭愧的事实,你可能不一定愿意加入我们公司了。这个让我们惭愧的事实就是:竞争对手的软件销量比我们的软件高多了,这是因为他们的软件好用,用户体验好!我们的软件更多是面向软件工程师,而不是面向最终用户。
    如果这个事实还不足够让你震撼,那么和你的薪金挂钩,相信就会震撼到你的小心脏了!你的软件卖的好,你的薪金高,你能获得高额的提成,你会介意去处理那些If Else吗?还是喜欢去干程序结构良好,但用户体验很差,软件卖不出去,工资高不到哪的工作?
    回到本文开始的那个例子,决定客户是否买软件的决定因素就是用户体验,而不是你的程序如何OO,如何用了多少种设计模式?
     
    上述文字可能有些极端,并不是鼓励你只追求用户体验设计,而不需要关注软件的内部结构,而是希望作为技术人员的你,能更多关注一下用户体验设计。
     
     
     
    9.6 用户体验设计小结
     
    架构设计、数据库设计打造的是软件“内在美”,详细设计主要打造“内在美”同时也需要考虑“外在美”,而用户体验设计主要就是针对“外在美”的!
    软件的UI是客户直接体验软件的地方,好的用户体验比追求新技术和追求漂亮设计更加重要,优秀的软件应该是既有外在美也有内在美的。当然我还要啰嗦一句,大部分用户是外貌协会的,不要企图用“某软件是吸血鬼”的说法来恐吓客户,让客户不买竞争对手的软件,只买你的软件噢!
     
     

    10.持续提升设计水平

    这是本系列文章的最后一篇了,软件设计有无尽的可能性,绝对不是几篇文章或者是一本书就能帮助你升仙的,多实践多尝试才能帮助你更上一层楼。工作中的设计挑战可能不丰富,难度不够,你自己需要为自己多找一些案例来挑战,多写代码,多做总结,建立你自己的代码重用库。

    如果你是公司的管理层,你可能不仅仅考虑的是个人能力提升的问题,而是更多地考虑让整个公司设计能力提升的问题,可能想到设计流程制度化、设计文档模板化等工作思路。公司领导要更多考虑需求积累、技术积累,打造公司的核心产品线,核心技术等,打造代码重用库、组件库等等,要达到一定的高度都不是靠爆发的,而是靠长期的积累。积累达到一定的层次,“后人”就可以利用“先人”的智慧达到更高的高度。我们这些现代人可能并不比古代人聪明,我们能干很多古代人不能干的事情,是因为我们利用了先祖为我们积累的大量文明成果。

    11.后话

    我正式出版的一本书《火球——UML大战需求分析》中提到,我打算将来写一本《活用UML——软件设计高手》,一些朋友问到这本书什么时候出版?

    我很不好意思,这本书出版没有排到日程上,但“软件设计是怎样炼成的”这个系列文章其实是此书的浓缩版,我打算将这个系列文章连同其他文章,编进一本软件研发及管理最佳实践的书中,此书还没有最终定名。此书将会覆盖软件研发的方方面面 ,目标就是培养厉害的软件项目经理,让你装备周身刀,把把锋利!

    我还会在博客中为大家陆续分享文章,谢谢你的支持,请继续捧场!

    本文是系列文章的最后一篇,谢谢你的支持!

    如果本文对你有帮助,麻烦点一下“推荐”啦,谢谢!

    作者:张传波

    创新工场创业课堂(敏捷课程)讲师

    软件研发管理资深顾问

    CMMI首席专家

    《火球——UML大战需求分析》作者

    软件知识原创基地创办人

  • 相关阅读:
    ASP.NET编程的十大技巧
    C#学习心得(转)
    POJ 1177 Picture (线段树)
    POJ 3067 Japan (树状数组)
    POJ 2828 Buy Tickets (线段树)
    POJ 1195 Mobile phones (二维树状数组)
    HDU 4235 Flowers (线段树)
    POJ 2886 Who Gets the Most Candies? (线段树)
    POJ 2418 Cows (树状数组)
    HDU 4339 Query (线段树)
  • 原文地址:https://www.cnblogs.com/umlonline/p/3585562.html
Copyright © 2011-2022 走看看