《软件需求分析》阅读笔记
很多需求分析的工作都是从需求调研开始,需求调研是需求分析最重要的一环,决定之后的工作能否顺利地展开,与客户的交流决定了能否明确的交换双方的想法,让客户与我们都可以达到满意。面对客户群体的不同层次决定了如何交流,不同的群体对编程的了解是不同的,对不同的人要有不同的交流方法,而需求调研不是一朝一夕所可以完成的,大约需要几个月才能掌握真实可靠的客户需求。
了解了客户需求,就正式开始了,组织一场研讨会,具体讨论一下我们应当怎样与客户讨论业务需求。以往我们常常认为,需求分析是一件最简单的事情。客户说他们需要做一个什么软件,有些什么功能,我们照着做就可以了,所谓的需求分析员就是需求的记录员。这是一个极大的错误,许多失败的软件项目,或者说软件项目中的需求问题,大多都源于此。经过人们多年的研究发现,在需求分析过程中,客户存在的最大问题就是提不出正确的需求,这表现为几种形式:
1.由于对软件不了解,客户提不出需求,不知道软件最终会做成什么样子。虽然在自己心中对软件有一个大体的想法,但是一旦到细节的时候,就会描述的模棱两可。
2.能提出一些业务需求,但当软件做出来摆在自己面前时,需求就变了。总是当看到真实的软件的时候,才发现现实理想有差距,而又很难描述这些不同的地方,这就造成程序员对软件改了又改了。
3.能非常详细地提出业务需求,甚至有时候该怎么做的提出来了。这些客户虽然对专业的知识有一些了解,但是对程序的想法过于理想,完成的时间会大大增加并增加人工的成本过于理想而无法实现。
我们去分析客户提出的所有原始需求。他们为什么要提出这项需求,提这项需求的目的是什么?只有经过这样的分析,我们才能深刻地理解需求,进而运用我们的专业知识,提出更加合理的技术方案。但非常遗憾,我们在需求分析中常常不是这样做的,甚至当软件都开发出来了,需求分析人员都说不出客户为什么要提出这个需求,更谈不上了解业务操作流程。一句经典的话是:“客户让我们这样做的。”,我们做需求分析,眼界不能仅仅停留在软件本身,应当更开阔一些,应当扩展到跟这个业务有关的那些领域知识中。
需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获······需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。
而需求的捕获是一个很崎岖的道路,在软件需求捕获过程中,最根本、最容易犯错的问题是什么呢?我是一个态度的问题,是采用主动态度去捕获需求,还是采用被动的态度去捕获需求。若是被动的捕获需求,把客户的需求直接给开发人员,那么需求调研人员的存在就不需要了,开发人员与客户之间也没有交流,会对项目存在巨大的影响。所以我们要主动的捕获需求,从客户那里获取所有我们所需要的需求,什么是客户嘴中没有说出来的需求,并不是客户故意卖弄官子不愿说出来,而是在客户所在业务领域已经约定俗称,在他们看来已经是天经地义,根本就不用说出来的业务规则。然而,作为刚刚涉足该领域的需求人员,他们是不了解这些规则的。
了解了客户需求,就正式开始了,组织一场研讨会,具体讨论一下我们应当怎样与客户讨论业务需求。以往我们常常认为,需求分析是一件最简单的事情。客户说他们需要做一个什么软件,有些什么功能,我们照着做就可以了,所谓的需求分析员就是需求的记录员。这是一个极大的错误,许多失败的软件项目,或者说软件项目中的需求问题,大多都源于此。经过人们多年的研究发现,在需求分析过程中,客户存在的最大问题就是提不出正确的需求,这表现为几种形式:
1.由于对软件不了解,客户提不出需求,不知道软件最终会做成什么样子。虽然在自己心中对软件有一个大体的想法,但是一旦到细节的时候,就会描述的模棱两可。
2.能提出一些业务需求,但当软件做出来摆在自己面前时,需求就变了。总是当看到真实的软件的时候,才发现现实理想有差距,而又很难描述这些不同的地方,这就造成程序员对软件改了又改了。
3.能非常详细地提出业务需求,甚至有时候该怎么做的提出来了。这些客户虽然对专业的知识有一些了解,但是对程序的想法过于理想,完成的时间会大大增加并增加人工的成本过于理想而无法实现。
我们去分析客户提出的所有原始需求。他们为什么要提出这项需求,提这项需求的目的是什么?只有经过这样的分析,我们才能深刻地理解需求,进而运用我们的专业知识,提出更加合理的技术方案。但非常遗憾,我们在需求分析中常常不是这样做的,甚至当软件都开发出来了,需求分析人员都说不出客户为什么要提出这个需求,更谈不上了解业务操作流程。一句经典的话是:“客户让我们这样做的。”,我们做需求分析,眼界不能仅仅停留在软件本身,应当更开阔一些,应当扩展到跟这个业务有关的那些领域知识中。
需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获······需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。
而需求的捕获是一个很崎岖的道路,在软件需求捕获过程中,最根本、最容易犯错的问题是什么呢?我是一个态度的问题,是采用主动态度去捕获需求,还是采用被动的态度去捕获需求。若是被动的捕获需求,把客户的需求直接给开发人员,那么需求调研人员的存在就不需要了,开发人员与客户之间也没有交流,会对项目存在巨大的影响。所以我们要主动的捕获需求,从客户那里获取所有我们所需要的需求,什么是客户嘴中没有说出来的需求,并不是客户故意卖弄官子不愿说出来,而是在客户所在业务领域已经约定俗称,在他们看来已经是天经地义,根本就不用说出来的业务规则。然而,作为刚刚涉足该领域的需求人员,他们是不了解这些规则的。