在过去的十多年里,软件行业得到了迅猛发展,技术更新飞快,稍有不慎就会被社会发展的大潮所冲垮,被社会所淘汰。在这十多年里,也冒出了许多的软件工程项目,他们有的成功了,而大多数则是以失败而告终。套用一下大文豪托尔斯泰体:幸福的家庭都是一样的,不幸的家庭却各有各的不幸;幸福的软件项目都是一样的,不幸的软件项目却各有各的不幸;或者说,成功的软件项目都是一样的,失败的项目却各有各的问题。他们所出的问题各不相同,但归根到底还是需求的问题,需求分析既是一份体力活儿,更是一份技术活儿,它既是人际交往的艺术,又是逻辑分析与严密思考的产物。正是我们在需求分析过程存在的巨大隐患,最终导致了那么多项目的失败。根据作者提供的案例来分析,需求分析有以下几个误区值得注意:1.当开发团队接到任务时,首先要做的用该是清楚客户的真正的需求是什么,不能凭着感觉来,否则就算软件团队再怎么努力,也不会达到客户需求的理想状态。2.当我们接收到一个项目时,应该理智的分析一下客户的需求是否合乎正常的逻辑,因为他们不懂技术,所以一些他们认为合理的要求,在我们看来根本无法实现,所以我们必须要基于技术实现去引导客户的需求。3.我们在做需求调查时应该充分考虑到业务分析的方方面面,不能盲目的急于求成,对于一些问题不可能是一蹴而就的,而且需要与专家反复的讨论才可以。接下来,作者详细的介绍了怎样做好一个需求调研。
很多的需求分析都是从需求调研开始的,这是需求分析中重要的一个环节,当项目经理带领团队参加客户组织的见面会时,这个对于项目的开发非常重要,在与客户交流的过程中,项目团队成员应该以一个资深的业界人士来与客户交流,不能一味的妥协,客户说啥就是啥,我们应该正确的分析客户的要求,并发表自己的看法,否则会让客户变得非常强势,会提出很多不合理的要求。作为一个项目团队的领导者,应该明确不同角色所关心的是什么。
然后需求调研的下一步就是拜访,这不是一朝一夕的事,我们与客户一起为项目制订了短期与长期目标。这些目标就是我们的尚方宝剑。正是因为有了它,今后项目中的有关各方就应当协助实现这个目标。我们应当清晰地向客户表达这样一个意思,要完成这样的目标,不是某一方的努力,而是双方共同努力的结果。这也是客户方召开这样一个项目启动会议的重要意义。最后一个成果,也是最重要的成果,就是与各种角色、各个类型的客户建立了联系。紧接着便是拜访调研,这不但可以帮助我们更好的分析用户的需求而且可以帮助我们和用户建立友好的关系,这个对于今后软件开发的非常的有好处。
拜访完之后便是召开研讨会,召开研讨会主要是对那些可以帮助我们了解需求客户的提问了解需求,研讨会的形式有多种多样,没有一个研讨会是相同的业务研讨会是重要的,但同时又是灵活的,没有一个定式,甚至有时都不能称之为会议。项目经理需要根据实际情况,合理地与客户组织研讨会。但不论怎样组织,必须注意两点:有效抑制个性化差异、分模块组织专项研讨会,然后是需求研讨,讨论从客户那里了解到的需求的功能,需求分析不是一种简单的你说我记的收集活动,而是在大量业务分析与技术可行性分析基础上的分析活动。只有建立在这种分析基础上的软件研发,才能保证需求的正确与变更的可控。然后便是迭代,需求调查不是一个一蹴而就的事情,我们应该反复的重复以上的过程,以便我们更好的了解用户的需求。最后需求的捕获,·需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。按照我以往的经验,需求捕获是我们最薄弱的环节。前面我提到的许许多多项目开发的问题都可以归结为需求分析的问题,而许许多多需求分析的问题又都可以归结为需求捕获不完整的问题。需求捕获是整个需求分析工作中最难把握的一个部分,它不仅仅是一个技术的问题,还涉及到人际交往、沟通、知识理解,以及心理学等一系列问题。但更让我感到遗憾的是,在我读过的许许多多关于需求分析的书籍中,讨论需求分析与建模的书很多,但讨论需求捕获的书籍却寥寥无几。确实,要讨论这部分内容,真的已经远远超出了软件开发这个知识领域。
全文的树形结构图: