什么是需求分析?在本篇开始之前需要先弄明白这个词。绅士狗指出通俗的讲,对用户的意图不断揭示和验叛的过程,要对经过系统可行性分析所确定的系统目标做更为详细的描述。
需求的要点是从人开始。也就是从使用者的角度来看。而不是从实现的角度来看。那么需求分析涉及的参与方有哪些呢?
首先,作为甲方也就是需求提出方必须要参与,这个需求输出端;其次是乙方即软件开发实施方也要参与;有些有特殊需求的可能需要一些第三方参与,本文谈论的主要涉及甲方和乙方,暂不考虑第三方因素。
明确了参与方,就需要明白需求分析的服务方,也就是需求分析好了之后给谁使用。甲方和乙方。需求分析的结果作为甲方和乙方共同输出的结果,将作为甲方最后的软件项目验收的依据,所以需求必须是明确的,双方理解一致的;同时,需求文档将作为乙方进行软件开发的依据,在软件开发之前,乙方将会根据需求分析结果进行软件设计;也将作为测试部门后期进行软件项目功能测试的依据。最后根据这个文档将会产出软件设计开发文档,软件测试用例文档等软件相关的文档。
那么如何写好一份软件开发的需求分析?
1.准确的理解和描述客户需要的功能。
2.帮助客户挖掘需求。
3.分析客户需求的可行性
看似几句话就概括了,其实做起来有很多的工作要做,比如第一条,你要准确理解客户描述的功能,你需要到客户的真实使用场景中去实地考察,和客户一起工作一段时间,熟悉他们的业务流程等,这一块可以描述的非常多,后续文章中将会就此展开讨论,本文不做过多阐述。
当然也会需要难点,那么需求分析困难在哪儿?
苏州软件开发指出有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。
1 . 客户说不清楚需求
有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求。例如全国各地的很多政府机构在搞网络建设,这些单位的领导和办公人员大多不清楚计算机网络有什么用,反而要软件系统分析人员替他们设想需求。这类工程的需求是如此的主观,以致产生很多贪污腐败现象。
有些客户心里非常清楚想要什么,但却说不明白。你可能很不以为然。就举日常生活的事例吧,比如说买鞋子。我们非常了解自已的脚,但没法说清楚脚的大小和形状。只能拿鞋子去试,试穿时感觉到舒服才会买鞋(居然也有神通广大的售货员,看一眼客户的手,就知道应该穿什么样的鞋)。
如果客户本身就懂软件开发,能把需求说得清清楚楚,这样的需求分析将会非常轻松、愉快。如果客户全不懂软件,但信任软件开发方,这事也好办。分析人员可以引导客户,先阐述常规的需求,再由客户否定不需要的,最终确定客户真正的需求。最怕的就是“不懂装懂”或者“半懂充内行”的客户,他们会提出不切实际的需求。如果这些客户甚至觉得自己是上帝的爸爸,那么沟通和协商都会很困难。
2 . 需求自身经常变动
苏州软件开发指出需求变动在软件开发过程中比较常见,让我们先接受“需求会变动”这个事实吧,免得在需求变动时惊慌失措。明白“需求会变动”这个道理后,在进行需求分析时就要留点神:
(1)尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求。以便在进行系统设计时,将软件的核心建筑在稳定的需求上,否则将会吃尽苦头。
(2)在合同中一定要说清楚“做什么”和“不做什么”。如果合同含含糊糊,日后扯皮的事情就多。要防止象韩复渠那样,在别人请他喝酒吃饭时他什么都点头(人家就更加献殷勤),吃完了他就宣布刚才答应的事都不算数,便扬长而去。
3 . 分析人员和顾客理解有误
软件系统分析人员不可能都是全才。客户表达的需求,不同的分析人员可能有不同的理解。如果分析人员理解错了,可能会导致开发人员白干活,吃力不讨好。由于客户大多不懂软件,他们可能觉得软件是万能的,会提出一些无法实现的需求。遇到这类情况,如果软件进行开发了,必须暂停开发,等明确了之后再继续,这也是损失最大的,要极力避免;如果还停留在分析阶段,则损失最小,双方需要商讨解决途径,确保需求理解一致。
下篇继续讨论。