需求开发的主要困难与对策

  ···知识技能问题

  (1)应用域的知识是无边无际的,任何人都不可能是"万事通"。

  (2)当需求分析员缺乏应用域知识时,他该怎么办?

  (a)首先他要有勇气做事,否则连实践的机会都没有。

  (b)其次他应当赶紧补习应用域知识。

  ···态度问题

  (1)相当多的开发人员习惯于被动地对待需求开发。每当遇到麻烦、挫折时,他们会发牢骚,找出一堆用户的毛病。很多开发人员错误地以为:

  需求是用户的事情,不是我们的事情。我们为用户开发软件,难道用户不该告诉我们应当开发什么吗?如果用户说不清楚需求,或者经常变更需求,这类问题是用户产生的,应当由他们自己负责。

  (2)用户说不清楚需求或者需求发生变更,这些都是常见的问题,并不是绝症,是人们可以设法解决的。可悲的是开发人员把这些问题当成了借口,不愿主动攻克问题,导致需求问题扩散到整个软件开发过程,产生太多的后患。

  (3)软件企业的领导应当给具有错误观念的开发人员们洗脑:需求分析员的天职是在有限的时间内获取准确而细致的用户需求,如果做不到是失职,不要找借口。

  需求获取

  需求获取时期的主要工作:

  (1)归纳和整理用户提出的各种问题和要求;

  (2)弄清用户企图通过软件达到的目的;

  (3) 借助各种工具和方法,陈述用户提出的实际需求,并标定软件的作用范围。

  终目的弄明白要"做什么"。

  获取需求应采用的步骤

  (1)确定产品的不同用户类型

  (2)确定用户需求的来源

  (3)挑选出每一类用户和其他涉众的代表并与他们一起工作

  (4)商定谁是项目需求的决策者

  获取需求的方法

  (1)明确终用户,与用户交谈,向用户提问题。向用户群体发调查问卷。透过客户所提出的表面需求理解他们的真正需求。

  (2)参观用户的工作流程,观察用户的操作。

  (3)与同行、专家交谈,听取他们的意见。

  (4)界面原型法,是指开发方根据自己所了解的用户需求,描画出应用系统的功能界面后与用户进行交流和沟通。

  (5)可运行的原型系统法

  (6)分析已经存在的同类软件产品,提取需求。

  (7)从行业标准、规则中提取需求。

  (8)从Internet上搜查相关资料。

      切记:

      设定用户代言人

      如果个别客户不能在需求方面达成一致意见,那么必须由用户代言人作出决策。

  需求分析

  (1)需求分析是指在需求开发过程中,对所获取的需求信息进行分析,及时排除错误和弥补不足,确保需求文档正确地反映用户的真实意图。

  (2)分析方法大体有两类:"问答分析法"和"建模分析法"。后者技术性比较强,写出来有学术味,故大多数软件工程书籍都有论述。前者是一些常识而已,虽然写不成文章,但是简单易用(保你一学会),很有实用价值。

  (3)采用方法:绘制关联图、创建用户接口原型、分析可行性、确定需求优先级、编写数据字典等。