读《需求工程——软件建模与分析》第二部分 需求获取 有感
顾名思义,需求获取就是进行需求收集的一个活动,它从人员、资料和环境中得到系统开发所需要的相关信息。在需求获取中有很多困难时普遍存在的,了解这些困难度更好地了解需求获取活动的复杂性有着重要意义。
需求获取中的常见困难:(1)用户和开发人员来自不同的环境,具有不同的背景和立场,有不同的表达方式和词汇集,因此他们之间必然会存在交流困难:a.知识理解的困难 b.默认知识现象 (2)普通用户缺乏概括性、综合性的表述能力。这个困难的原因在于每个人都维护着自己的一个知识结构,专家用户因其知识的渊博性使得自己的知识结构具有概括性和广泛性。(3)用户存在认知困境。潜在知识是指人们认识不到自己已经知道的知识,它的出现意味着人们遇到了认知困境。在需求获取中,用户的认知困境也是普遍存在的,其典型形式是在很多情况下用户无法明确的告诉开发者自己到底需要什么,但是当开发者提供一个明确的解决方案时,用户却能够迅速地判断出该方案是够以及为什么解决了自己的问题。(4)用户越俎代庖:a.用户提出的不是需求,而是解决方案 b.用户固执的坚持某些特征和功能 (5)缺乏用户参与:a.用户数量太多,选择困难 b.用户认识不足,不愿参与 c.用户情绪抵制,消极参与 d.没有明确的用户
通过常见困难的分析,可以发现需求获取并不是一个简单的进行知识转移的活动。为了解决上述普遍存在的困难,获取活动至少要做到:(1)研究应用背景,建立初始的知识框架。(2)根据获取的需要,采取必要的获取方法和技巧。(3)先行确定获取的内容和主题,设定场景。(4)分析用户的高深层目标,理解用户的意图。(5)进行涉众分析,针对涉众的特点开展工作。
获取信息的内容主要有三种:(1)需求。需求是获取的主要对象,是系统期望达到的目标。(2)问题域描述。问题域描述是用来承载和解释需求的问题域特性,主要是现实世界的业务运行状况。他可以从涉众的业务描述中获得,也可以从业务运行所产生的各种数据文档中获得。(3)环境与约束。环境与约束属于一种特殊的问题域特性,限定了解系统步数的环境和条件。
获取信息的来源包括:(1)涉众。(2)硬数据。(3)相关产品。(4)重要文档。(5)相关技术标准和法规。
获取信息的方法:(1)传统方法。传统方法开发使用的很多数据收集机制均数此类,它们在现在的需求获取中仍然起着非常基础的作用。(2)集体获取方法。该类方法将很多涉众集中在一起,通过与涉众的讨论发现需求,并在讨论中达成需求的一直,同时它还可以有效的利用时间。(3)原型。该类方法在系统的很多开发阶段都起着很重要的作用,其中包括需求获取。(4)模型驱动方法。该类方法都有一个定义方式确定了所有需要收集的信息类型,模型建立和完善的过程就是进行需求获取的过程。(5)认知方法。该方法起源于知识系统中的知识获取方法,以认知的方式获取用户无法表达的潜在知识。(6)基于上下文的方法。该方法更加注重用户在一定环境下表现出来的行为,通过分析用户的行为得到信息。
在开展需求活动时,要注意以下事项:(1)在整体上制定组织方案(2)维护项目的前景和范围(3)接受需求的不稳定性(4)控制探索性工作。
可以用户需求获取的方法很多,常见的有面谈、调查问卷、原型、观察、文档分析等。虽然需求获取的方法是丰富的,但是发现他们并没有在实践中得到充分的应用,很多已经提出多年的方法仍然不为实践者所知。认为实践中需求方法应用的不充分并不是因为实践者没有掌握面谈、原型、观察等常用方法的使用技巧,而是实践者不能很好地依据实际情况选择正确的获取方法。