现代软件工程讲义 7 设计阶段 典型用户 – 故事 – 任务 – 具体工作

当我们写一个软件的时候, 都知道要为用户考虑, 但是用户在哪里nbsp; 有同学写 “图书馆管理系统” – 说来图书馆的同学都是我的用户, 但是他们有没有区别呢nbsp; 有同学写“自动柜员机系统”, 那到底有多少类型的用户来到柜员机前呢nbsp;  这些都是团队成员在需求分析和设计阶段要反复琢磨的问题。

 

有同学说, 我把用户的愿望百分之百地实现了, 这不就行了么nbsp; 不要搞那么多分析啊, 故事啊, 心理啊, 讨论啊, 文档啊…  请看这个笑话:

image

image

 

在长时间一丝不苟的实现之后…

image

 

得到了和用户要求一模一样的产品!

image

但是用户满意吗/strong>

 

 

光看用户的表面语言或行动还是不够的。我们还要找到用户语言行动背后的动机

user_study_hotel_room (图像来源: http://www.weibo.com/funnyshoelace)

 

有同学会说, 我只要把产品做得可扩展性特别好, 一般用户到超级用户都能搞定就行了! 且不论这是否能覆盖所有用户, 一味追求“最大的扩展性”也有很多副作用。

几年前有一款www 浏览器有不少安全性的问题,  安全专家在忙于补救各种安全漏洞之时, 发现它的 “网站地址栏”允许的最长输入是 4兆个字符! 4百万个字符啊, 多适合做缓冲区溢出的攻击啊!  但是有哪个正常的网站或用户要输入这么长的网址呢nbsp;

 

 

 

[讨论]

Visual Studio 是一个非常成功的软件开发集成环境 (IDE), 它支持VB/C/C++/C#/ASP.net/WPF/… 等等不同的开发语言和套件, 用户可以写几行的 hello world 程序, 也可以写几万行的多线程软件,  它还支持项目管理, 测试工具, 以及第三方的插件… 它的众多用户分布在全世界大大小小的国家,  各行各业的公司, 大大小小的团队,  有些是业余爱好编程, 有些是老师和学生, 有些是专业开发人员…  很多用户对它也有很多改进意见,  那我们到底为哪些用户服务呢nbsp; 同时, VS 的微软团队也有很多开发人员, 他们也是用户, 只听取他们的意见是不是就够了呢nbsp; 在开发一个新版本的Visual Studio 时候,如果你来主持需求分析工作, 你的工作结果会指导上千名工程师, UI 设计师, PM, 市场推广人员未来两年的工作。  你怎么办

 

[给大家10分钟讨论]

 

下面是微软在Visual Studio 2005 设计阶段使用的几个 典型用户 (persona):

典型用户 造型 Persona details 特点
Mort image Mort, the opportunistic developer, likes to create quick-working solutions for immediate problems and focuses on productivity and learn as needed.

 Mort is someone who doesn’t consider programming their main job. Maybe they are a statistician, biologist, or construction estimator, who also knows quite a bit about programming. They are opportunistic, using whatever tool comes to hand that will get the job done.


不一定是专业出身的程序员,  他们有自己的主业,  编程只是一个工具, 他们的主要目的就是用工具把事情搞定就行了。他们很喜欢代码示例, 也不特别关心程序效能。   (例如许多 VB 用户, 偶尔用VS 写程序处理数据的研究人员等)
Elvis image Elvis the pragmatic programmer, likes to create long-lasting solutions addressing the problem domain, and learning while working on the solution.
Elvis:  journeyman developer.
You can scope out a job and give it to them, and the job will get done. In general, Morts don’t become Elvises. Morts want to do their main job; they don’t WANT to become a professional developer.  Elvises go to school and get CS degrees.
 
以编程为生的程序员,  他们大多是CS 专业出身。 各种IT 公司的开发人员应该是在这一类中。 
Einstein image Einstein, the paranoid programmer, likes to create the most efficient solution to a given problem, and typically learn in advance before working on the solution.
Einstein is a smart Elvis who has lots of experience.
Einstein can see the big picture. An Einstein often is in a position of responsibility, choosing technologies and designing large software systems.
在行业里战斗了很多年的程序员, 架构师, 项目经理。 他们能决定项目用什么样的技术以及发展路线。 

这里有一些网上关于VS 各种典型用户的评论。

 

我在移山之道里也举了一些和中国程序员较接近的例子 [移山之道 第14章]

14.1  典型用户

大牛和小飞在讨论网站界面的时候吵了起来。

大牛:这个界面对于一般用户来说太复杂了。一般人根本搞不懂。

小飞:我们这个界面是针对有很多经验的用户,就像卖石头的吴石头,他搞石头生意有那么些年了,他应该对我们用的术语比较熟悉,而且会用电脑,我们并不针对初次使用我们系统的用户,或者对奇石生意有了解,但是对电脑一窍不通的人,就像石头他爹。

大牛:不对,我们要针对那些对奇石生意有了解,但是对电脑一窍不通的人,我们有一些功能是为这些用户设计的。

小飞:不对,我们主要的用户是对石头生意很了解,并且对电脑的使用很熟悉的人。而且这也符合所谓“Persona”的要求。

大牛:我不管你的“Person-a”,我们要分析用户的需求,在把需求搞清楚之前,管他“Person-a”还是“Person-b”,都没有用。我们还是不要用这些名词忽悠我们自己。

他们俩一起来到阿超面前,把事情原委说了一遍。

 

阿超:所谓“Persona”,就是典型用户,吴石头/石头他爹就是我们系统的两个典型用户。我们的确要了解我们软件系统的用户(不是公司的商业客户),那么,什么是典型用户/span>

 

在产品开发的过程中,我们经常需要描述一组典型的用户。以前大家通常是以一些抽象的名词来表示,如“家用电脑初学者”,“经验丰富的系统管理员”,现在我们建议用一个“典型用户”来代表。典型用户不再是一个抽象的概念,而应该是一个活生生的人物。

典型用户有哪些特性/span>

一个典型用户描述了一组用户的典型技巧、能力、需要、想法、工作习惯和工作环境。

 

大牛:以前我们管台风叫1号、2号,现在都起了名字,叫云娜、海棠、卡特丽娜、桑迪,等等,是不是跟MSF-Agile学的/span>

阿超:这你得问气象部门,至少台风“海棠”比单纯的数字好记。但是我们的Persona还包括了更多的特性,不光光只是一个代号,一个典型用户描述了一组用户的典型技巧、能力、需要、想法、工作习惯和工作环境。

在别的行业中可以用到Persona的设计方法。我今天去银行开账户。开完账户后,服务生在窗口后低着头,过一会看我还坐着,就说,没事了,你可以走了。我还想了解一些其他的服务,比如信用卡/理财账户,等等,她好像对此没有兴趣。看起来银行把我的“开户”处理成一个单独的事件,开了账户就完了。如果银行分析开户人的Persona,它可能了解一些典型用户的典型心理,比如小企业主崔大智来开户,他就是来开个户就完了然不是!他有不少钱,可能申请信用卡、建立理财计划、贷款、联系代发工资,等等。如果银行仅仅帮他开个户就把他打发走了,那样失去了多少商机

 

在设计软件的过程中,我们(设计/开发者)往往会以我们使用产品的习惯和我们对产品的熟悉程度出发设计,忘了我们的软件是给千千万万个不那么会用电脑的人使用的。在这种情况下,搞一个“典型用户”会强迫我们在考虑问题时从用户的角度出发。

来源:SoftwareTeacher

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年4月11日
下一篇 2014年4月11日

相关推荐