构建之法阅读笔记06
1.开发一个软件时,我们都知道要为用户考虑,但是用户在哪里?通过典型用户和典型场景这一章的几幅漫画,我们光看用户的表面语言或行动还是不够的。我们还要找到用户语言或行动背后的动机!不能光根据用户的语言就匆忙做决定。而我们怎样才能知道用户的想法呢?这就需要我们来做典型用户和典型场景的模拟。
1>怎样才能定义典型用户呢?我们首先要定义用户的角色。正如戏剧中有正面和反面的角色,软件系统中也有受欢迎的和不受欢迎的典型用户。如果用户有不同的安全需求,切记要定义不同的角色来适应这些需求。如下面的例子:
-
受欢迎的典型用户——指那些按设计者的期望使用系统的用户,如“网站的购物者”
-
不受欢迎的典型用户——指那些有不正当目的的用户,如在一个房地产业主论坛中滥发房屋中介广告的用户——这些用户也许在别的系统中(如房屋中介论坛)是受欢迎的
典型用户只是我们的设想,还要和这些典型用户的代表交流,理解用户,理解他们的工作方式和需要。然后再修改,细化典型用户。
2>有了典型用户之后,我们还得决定每一个典型用户的目标——他/她使用系统想要达到什么目的(如:购物、卖产品、滥发广告……)。对于每一个目标,列出达到目标所必须经历的过程,这就是场景,也可以叫故事(Story)。注意,有些场景描述了成功的结果,有些场景描述了失败的结果。用户和系统有成百上千种可能的交互情况,写场景时要有针对性。
2.我们做的软件是给用户使用的,并不是我们自己说软件有多么好久有多么好,软件的评价还是要靠用户来评价。我们常说做产品要从用户的角度考虑问题,这需要有“同理心”。软件团队的设计师和软件工程师有“同理心”(Empathy)么?什么是同理心?就是理解别人的处境、心理、动机的能力。西方谚语Put yourself in other people’sshoes. 正是此意。设计不同于传统的数学题,是没有唯一的标准答案的。有一颗为用户着想的“同理心”,是好的产品设计的出发点。
3.我们把软件做出来了,但是我们并没有测试,或者说不知道怎样测试。软件测试也是软件工程中一个很重要的环节。下面就是列出的要测试的几个方面:
1>功能测试
所列的测试类别中,测试的范围由小到大,测试者也由内到外——从程序开发人员(单元测试)到测试人员,到一般用户(Alpha/Beta测试)。
2>非功能测试
一个软件除了基本功能之外,还有很多功能之外的特性,这些叫非功能需求(Non-functional Re-quirement),或者服务质量需求。然而,若没有软件的基本功能,这些特性都将无从表现出来,因此,我们要在软件开发的适当阶段——基本功能完成后再来做这些非功能测试
个人感想:作为一个软件工程师来说用户评价是非常重要的,这代表着我们的软件是否成功,用户对软件的评价其实就是对我们的评价,这代表着用户对我们的工作是否认同。对我们接下来的软件维护与更新提供了宝贵的资料。而典型用户与典型场景则是在我们设计软件前,使我们对整个软件的用途有一个明显的方向,使我们能够更加容易的掌握软件的脉搏。而软件测试则是我们发布软件前必不可少的一步,他保证了我们对自己软件的把握,使得我们能够在软件发布前对软件进行进一步的优化。