《构建之法》学习总结2——软件工程需求分析

需求分析   

理论与知识点

软件需求的类型、利益相关者;获取用户需求的常用方法和步骤;竞争性需求分析的框架NABCD,四象限方法;项目计划于估计的技术。


 

一,软件需求

  人们为了解决现实社会生活中的各种问题,要求助于软件,这就是软件需求。这几年随着社会经济的发展人们对软件的需求越来越多,形式内容也越来越丰富,因此准确的评估和掌握用户的需求对于软件开发工作来说变得越发的重要。这个需求的分析也变得越来越复杂。

  当然,要正确的掌握用户的需求,就必须准确的清楚这些需求的来源,什么样的人会有怎样的需求。实际上人们往往认为需求来源就是用户,用户确实是需求最大的来源体,但对于一个面向广大用户的软件工程来说,他的需求来源是多方面的。

从上图可以看出,一个完整的需求分析包含了多方面的内容

用户:需求最大的相关者,任和软件的开发都应以用户的需求为基础。

各种管理机构:例如一些互联网服务对不同年龄用户的内容管理。

软件企业本身:当软件的使用达到一定规模后,就会考虑到软件企业本身的盈利问题。

技术团队本身:包括代码的迁移,架构的演化,平台的变化,或者引入新的技术等技术性的要求。

其他:其他方面的需求。

当然我们也可以从不同的角度对需求进行划分:(1)对产品功能的需求:(2)对产品开发过程的需求:(3)非公能性需求:(4)综合需求等。

二,产品利益的相关者


和需求的对象类似,软件产品也有很多的利益相关者,软件团队在分析软件需求时要考虑如下的利益相关者:

当然利益相关性和需求不一样,很多时候不一定一用户作为主体,这要根据实际情况而定。

三,取用户需求的方法

焦点小组 又称小组座谈法,就是采用小型座谈会的形式,由一个经过训练的主持人以一种无结构、自然的形式与一个小组的具有代表性的消费者或客户交谈。从而获得对有关问题的深入了解。
深入面谈 通过详细的面谈,广泛而深入的了解用户的背景,心理,需求。
卡片分类 卡片分类法(Card sorting)是一种规划和设计互联网产品或者软件产品的信息构架的方法。这种方法也常常被应用到用户研究的过程中,用来比对网站设计者与使用者在对网站资讯分类上的认知差异,作为调整架构的信息依据。
用户调查问卷 问卷调查法也称"书面调查法",或称"填表法"。用书面形式间接搜集研究材料的一种调查手段。通过向调查者发出简明扼要的征询单(表),请示填写对有关问题的意见和建议来间接获得材料和信息的一种方法。
用户日志研究 这一方法要求用户记录自己的日常工作或生活中所用软件的相关行为,供软件团队分析
人类学调查 这种方法可以解释为何目标同吃同住,同劳动等,这样能获得更加真实有用的结果
眼洞跟踪研究 通过观察用户的眼镜在屏幕上的移动规律来改善界面内容的方法
快速原型研究 在软件完成之前先用一种简单的快速原型给用户体验从而达到研究的目的
A/B测试 A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标。AB测试本质上是个分离式组间实验,以前进行AB测试的技术成本和资源成本相对较高,但现在一系列专业的可视化实验工具的出现,AB测试已越来越成为网站优化常用的方法。

四,竞争性需求分析的框架

这是一个充满机遇的时代,机遇必然伴随着竞争,在互联网时代,一个团队有很多机会做出影响世界的产品,但是人们往往发现,似乎所以得想法都被别人想到过了,做出来了,上市了,成功了,认为自己生不逢时,但当我们哀叹的时候,又有一批新颖的系想法出现了,成功了。我们要在竞争性的环境中实践软件工程,那就要做实用并且创新的项目,那我们怎么才能做到有条理的创新呢?大家可以参考NABCD模型。

 

1) N (Need 需求)

你的创意解决了用户的什么需求? 这个需求可以是明确的, 公开的 (例如: 希望能上网玩三国杀). 也可能是说不清道不明的, 例如 - 以前没人说: 嗯, 如果我能找到这样一个网站, 我可以去偷菜, 就好了… 

2) A (Approach 做法)

好, 你找到了用户的痛苦 (N), 下一步, 得看看你有什么招数, 特别是独特的招数, 来解决用户的痛苦。 你不能说我会C++, Java,所以我一定可以写好这个软件. 你得有独特的办法, 例如, 有人脸识别技术, 会做超大规模的数据处理。 那你 (你的团队) 会什么呢? 只会冒泡排序?

这些招数不光是技术上的, 也可以是商业模式上的, 地域的, 人脉的, 行业的.

 

3) B (Benefit 好处)

这时候你已经有了独特的做法 (Unique Approach), 那你这个产品/服务会给客户/用户带来什么好处呢? 如果用户已经有一个解决方案 (例如用户已经在用 QQ 聊天), 那你的产品具体有哪些好处, 能让用户离开现有产品, 使用你的产品呢? 另外这还有一个 Benefit/Cost (成本) 的问题。 如果你要用户必须有8G 内存, 最好的视频驱动, 20M 宽带连接, 才能使用你的 “更好的”视频聊天工具, 那会有多少用户愿意支付这个成本呢?

Benefit 还可以指对自己团队/公司的好处。

 

4) C (Competitors 竞争)

竞争对手也没有闲着, 这个市场有多大, 目前有多少竞争者在瓜分, 你了解么? 竞争者是单独的,还是存在一个行业链,各个阶段的竞争者都一样么? 你如果不是最先进入某个市场的产品, 你还能赢么?

五,功能的定位和优先级


  在得到了需求以后,我们就要考虑用功能来实现这些需求,然而每个功能在需求中所占的比重不可能是一样的,我们必须准确的划分功能的优先级来实现我们资源的有效利用,从而达到利益的最大化。在这里功能一般可分为杀手功能和外围功能,对应的是必要需求和辅助需求,这里有个功能分析的四象限图可以形象的说明:

 

五,计划和估计

 

在估计之前,我们必须弄清楚三个概念

目标:表明一个希望达到的状态。

估计:以当前了解的情况和资源,要花费多少人力和物力才能达到。

决心:保证在某个时间之前完成规定的功能和质量。

如果我们混淆了这三个概念就会造成很多错误。

六,遇到的问题

我在这个阶段的学习中也遇到了很多问题,在这里提出来希望大家可以帮忙解决

1,在谈到需求的获取方法时,对于A/B测试这种方法的概念和它在软件工程中的具体实施方法还比较模糊,书中也没有详细的介绍。

2,对于目标,估计和决心这三个概念比较混淆,作者举的例子似乎并不能很好的区分三个概念。

 

  

 

posted @ 2016-04-13 20:32  心有猛虎行者无疆  阅读(529)  评论(0)    收藏  举报