●需求管理的重要性:
◆在软件工程中,软件生命周期大体包括需求分析、设计、编码、测试、验收与运行、维护升级等几个阶段,需求分析是软件开发的第一要务;
◆实际开发中,一个项目的成败与否往往取决于它是否符合需求,对需求及需求变更的管理是项目成功最关键的因素;
◆有句俗话叫 "三岁看小. 七岁看老’,软件项目也是这样。 一个项目成功还是失败,往往在需求阶段就决定了;
eg:"南辕北辙" ,假如客户想要建一座烟囱, 结果你把客户提供的图纸拿反了,挖了一口井。 井挖得再好也是枉费人力,别指望客户会给你钱;
◆了解客户需求并不是,沟通能力很强就肯定能做好,软件需求的调研、需求的表达和需求的变更管理等是专门的技术,需要专门的方法和技巧。作为软件工程师,绝不是写好代码就可以了,能够迅速地、准确地理解户需求也是一项必备的技能;
◆有时候,软件开发人员经常困惑于软件分明是按照需求做出来的,可是为什么客户仍然不满意,客户总是在困惑为什么软件和自己想要的差距会那么大,这一现象的起因究竞是什么?问题是怎么产生的,又该怎么解决呢?
◆软件项目的需求管理包括需求调研、需求分析、需求变更管理等几个方面的工作,在需求调的过程中,可能遇到以下几种典型的情况:
★1、客户知道自己要什么,但表达不清:
☉如果客户有自己的 IT 团队, 那么情况稍好. 大家讲相同的 ’语言’, 沟通会相对顺畅, 但更时候. 我们需要和不懂软件技术的客户交流, 客户知道哪些数据和信息需要通过软件系统管理,软件系统需要给业务什么样的支持,但他们只能用自己行业的语言来表达。这时候首先需要我们对其行业和业务都要有一定的了解,然后才可以设计信息系统 (静态 Demo) , 并让客户确认。
☉任何一个具有一定规模的信息化系统都会涉及很多人,很多岗位和角色。在调研的时候,对着些人我们都需要访谈. 每个岗位都有自身的立场、 眼界和
利益 . 对系统需求的描述也会出现相左的情况,这也是需要权衡处理的;
★2、客户不知道自己要什么:
☉有的时候,客户期望通过信息化系统提高企业的效率,但对具体怎么做就了解不多了。这候需要我们主动地发掘需求. 同时对我们的行业经验也是一种考验。
例如,一位客户想要买一电钻. 如果你是售货员,你直接给客户电钻没有错. 但如果你是做需求分析的,那么可以看以这段对话:
客户:我要买个电钻
需求分析人员:你要电钻做什么呢?
客户:我要在墙上打个洞
需求分析人员:你为什么要在墙上打洞呢?
客户:因为我卧室没有网线插头,我要把网线从客厅引过来;
需求分析人员:那我推荐你买个无线路由器吧;
☉其实很多时候在与客户沟通时,客户的描述并不是准确、完整的。像上面的客户真实需求是在卧室也能上网,而他的描述却是要一个电钻,如果不深入挖掘,两者很难牵扯到一起;
★3、客户的需求是动态变化的: