构建之法8,9,10章
8.创新分析
创新可以使改良型的,在现有的软件中增加几个新的功能,把某个程序变得更快一点,把程序移植到新的平台。颠覆性的创新,一个新的产品导致就得产品或产业发生巨大的变化或消失。但是如何按部就班地分析需求,有条理地说服别人你的创新呢?有NABCD模型。
Need,你的创意解决了用户的什么需求。
Approach,找到了需求,就需要使用独特的作法来领先于其他软件了。独特的作法有技术上的,比如有人脸识别技术,有超大规模的数据处理能力。还有商业模式上的,第一个团购,地域上的,第一个苏州公交系统,行业上的,嘀嘀打车。
Benifit,这些实现可以给用户带来什么好处呢,为什么为了达到这个好处用户会花费时间金钱成本去迁移呢?
Competiors,看出处知己知彼的优势,博百家之长,扬长避短。
Dlivery,如何分发。
需求定义之后需要靠功能来实现。要把用户从竞争对手那里吸引过来,团队自己的产品要有一个差异化的焦点,在这个焦点上,我们的团队能做得比别人好10倍,高一个数量级,这样的功能叫做杀手级功能,其他功能则相对来叫做外围功能。
除此之外,我们的竞争对手和用户已经决定了一些此类产品必须要满足的需求,不能满足这些需求,产品就不会被用户青睐,所以把功能又划分为必需需求和辅助需求。
举例分析一个电子词典软件。杀手功能:屏幕取词技术。外围功能:良好的界面。必需需求:翻译的准确性。辅助需求:可以选择皮肤。
对于必须且杀手功能,应该全力以赴,以此为工作的重心。对于必需且外围功能,快速达到其他产品的水平就好了。对于辅助杀手功能,应该不做等待更好的时机或者空闲。对于辅助外围功能,建议采取维持的方法,以最低代价维持此功能。
9.典型用户
在软件设计的过程中,我们往往会以自己使用产品的习惯和对软件行业的熟悉程度出发设计,忘记了我们的软件是给千千万万个不那么会用电脑的人使用的,在这种情况下,就需要搞一个典型用户。
不要指望把产品的拓展性做得很好,从一般用户到超级用户都能搞定,且不论这样是否会覆盖所有的用户,这种方法肯定有其副作用。我们要从小部分人出发,明确定义谁是我们的用户。典型用户描述了谁(名字,年龄,收入,教育水平,代表比例)在什么地方(使用场景,使用环境)用了什么功能(动机,目的)。当创建完了一些典型用户之后,我们就要模拟典型用户的使用场景了,把自己(开发者)代入其中,在模拟的生活中一步一步走,就能深入理解用户的需求,及时地发现问题。
10.软件测试
测试设计有两种分类方法:黑箱和白箱。这是软件测试设计的方法,不是软件测试的方法。
黑箱:在设计测试的过程中,把软件系统当作一个无法了解或使用其内部结构,从软件的行为,而不是软件的内部结构出发。例如,程序行为的易用性测试。
白箱:在软件测试设计的过程中,设计者可以看到软件系统的内部结构,并使用软件系统的内部结构来选择测试数据和方法例如软件内部结构的流程模块化单元测试。
测试方法有很多,例如单元测试,代码覆盖率测试,构建验证测试,验收测试,探索式测试,回归测试,系统测试,伙伴测试,效能测试。