论软件需求获取技术及应用软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。软件需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。需求获取是否科学、准备充分,对获取的结果影响很大,这是因为大部分用户无法完整地描述需求,而且也不可能看到系统的全貌。因此,掌握各种不同的需求获取技术,并且熟练地在实践中运用它,并与用户有效合作,是十分重要的。请围绕"需求获取技术及应用"论题,依次从以下三个方面进行论述。①简要叙述你参与管理和开发的软件项目,以及你在其中所承担的主要工作。②详细说明目前有哪些比较常用的需求获取技术,说明每种需求获取技术的基本方法。③详细论述在你参与分析和开发的软件项目中所采取的需求获取技术,以及选取这些技术的原因,并说明需求获取的具体实施步骤。
一、常用的需求获取技术:用户访谈、用户调查、现场观摩、阅读历史文档、联合讨论会(联合需求计划)等。
(1)用户访谈。用户访谈是最基本的一种需求获取手段,其形式包括结构化和非结构化两种,结构化是指事先准备好一系列问题,有针对地进行;非结构化则是只列出一个粗略的想法,根据访谈的具体情况发挥。最有效的访谈是结合这两种方法进行。用户访谈具有良好的灵活性,用较宽广的应用范围,但是也存在着许多困难,诸如客户经常较忙,你难以安排到时间;面谈时信息量大,记录较为困难;沟通需要很多技巧,同时需要分析员有足够的领域知识;另外,在访谈时会遇到一些对于组织来说比较机密和敏感的话题。因此,这看似简单的技术,也需要分析人员拥有足够多的经验和较强的沟通能力。
(2)用户调查。用户访谈时最大的难处在于很多关键的人员时间有限,不容易安排过多的时间;而且客户面经常较广,不可能一一访谈。因此,我们就需要借助用户调查,通过精心设计要问的问题,然后下发到相关的人员手里,让他们填写答案。这样就可以有效地克服前面提到的两个问题。但是与用户访谈相比,用户调查最大的不足就是缺乏灵活性;而且双方未见面,分析人员无法从他们的表情等其他动作来获取一些更隐性的信息;还有就是客户有可能在心理上会不重视一张小小的表格,不认真对待从而使得反馈的信息不全面。因此较好的做法是将这两种技术结合使用。具体来说,就是先设计问题,制作成为用户调查表,下发填写完后,进行仔细的分组、整理、分析,以获得基础信息,然后再针对这个结果进行小范围的用户访谈,作为补充。
(3)现场观摩。对于许多较为复杂的流程和操作而言,是比较难以用言语表达清楚的,而且这样做也会显得很低效。因此,针对这一现象,分析团队可以就一些较复杂、较难理解的流程、操作采用现场观摩的方法来获取需求。具体来说,就是走到客户的工作现场,一边观察,一边听客户的讲解,甚至可以安排人员跟随客户工作一小段时间。这样就可以使得分析人员更加直观地理解需求。
(4)阅读历史文档。这种方式也称为"文档考古"。对于一些数据流比较复杂的,工作表单较多的项目,有时是难以通过语言,或者通过观察来了解需求细节的。这个时候就可以借助于阅读历史文档的方法,对历史存在的一些文档进行研究,从中获得所需的信息。这个方法的主要风险是历史的文档可能与新系统的流程、数据有一些不吻合的地方,并且还可以承载一些原有系统的缺陷。要想有效地避免和发现这些问题,就需要分析人员能够运用自己的聪明才智,将其与其他需求捕获技术结合对照。还有一个负面因素就是,这些历史的文档中记载的信息有可能涉及客户的商业秘密,因此对数据信息的保密也是分析人员基本的职业道德。
(5)联合讨论会。这是一种相对来说成本较高的需求获取方法,但也是十分有效的一种。它通过联合各个关键客户表、分析人员、开发团队代表一起,通过有组织的会议来讨论需求。通常该会议的参与人数为6~18人,召开时间为1~5小时。在会议之前,应该将与讨论主题相关的材料提前分发给所有将要参加会议的人。在会议开始之后,首先应该花一些时间让所有的与会者互相认识,以使交流在更加轻松的气氛下进行。会议的最初,就是针对所列举的问题进行逐项专题讨论,然后对原有系统、类似系统的不足进行开放性交流,第三步则是大家在此基础上对新的解决方案进行一番设想,在过程中将这些想法、问题、不足记录下来,形成一个要点清单。第四步就是针对这个要点清单进行整理,明确优先级,并进行评审。这种联合讨论会将会起到群策群力的效果,对于一些问题最有歧义的时候、对需求最不清晰地领域都是十分有用的一种技术。而且最大的难度就是会议的组织,要做到言之有物,气氛开放,否则将难以达到预想的效果。
二、结合项目实际工作,举例说明你在获取需求时分别采用了哪些需求获取技术;详细说明你选择这些技术的原因及具体实施步骤。
第1题:
第2题:
“软件需求”被定义为软件用于解决真实世界问题而必须展示的特性,指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。以下关于需求的描述中,不正确的是 ________ 。
A.需求是固定的
B.需求是多样化的
C.需求是可以量化的
D.需求是可验证的
第3题:
1、“软件需求”被定义为软件用于解决真实世界问题而必须展示的特性,指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。以下关于需求的描述中,不正确的是 ________ 。
A.需求是多样化的
B.需求是可以量化的
C.需求是固定的
D.需求是可验证的
第4题:
软件需求指的是用户对目标软件系统在()等方面的期望
A.功能
B.行为
C.性能
D.设计约束
E.数据库
F.服务器性能
第5题:
2、需求是用户对目标软件系统在功能、质量、设计约束等方面的期望,所以它是主观的。()