1 知识技能
问题:需求分析员缺乏应用域知识。应用域的知识是无边无际的,任何人都不可能是“万事通”。需求分析员可能是某一领域的专家,但一个企业要谋求发展,不能总在做老的业务,当他接手陌生的业务时,他可能是个“无知”者。
策略:要勇于实践,不要逃避。还应当赶紧补习应用域知识,不论是通过自学还是培训的方式。可能的话,最好请既懂软件又懂应用域知识的行家来帮忙。
2 态度
问题:很多开发人员习惯于被动地对待需求开发。每当遇到麻烦、挫折时,他们会找一堆用户的毛病。很多开发人员错误地以为:
需求是用户的事情,不是我们的事情。我们为用户开发软件,难道用户不该告诉我们应当开发什么吗?如果用户说不清楚需求,或者经常变更需求,这类问题是用户产生的,应当由他们自己负责。
策略:用户说不清楚需求或者需求发生变更都是常见的问题,人们可以设法解决的。开发人员不应该把这些问题当成借口。需求分析员的天职就是在有限的时间内获取准确而细致的用户需求,如果做不到就是失职,不要找借口。
3 合作关系
问题:需求分析员不能与用户建立良好的合作关系。对于一些竞标项目,在合同未签订之前的需求开发工作尤为困难。用户未必会买你的产品,他不会投入很多精力来协助你。搞需求开发。用户有他自己的想法:我回答了你们的问题,讲了该讲的。我们付钱给你们,你们自己想办法把工作做好……
策略:出色的需求分析员不仅要有过硬的专业知识,还要具备较强的交流、沟通能力。对于重大的、复杂的项目,不能完全期望双方能够自发地建立起良好地合作关系。 开发方和用户方在开展需求开发之前,双方协商并撰写“用户在需求工程中的权利与义务”,即以协议的方式确定合作关系。如果条件允许,开发方最好为用户举办关于需求工程的培训,这样的培训将使用户明白需求的重要性以及忽视需求的危害性,从而促使他们积极友善地参加需求工程中的各项活动。
4 用户说不清楚需求
问题:用户说不清楚需求。有些用户真的不知道需求是什么,或者对需求只有朦胧的感觉,他当然说不清楚需求。有些用户虽然心里明白想要什么,但却说不清楚需求。