- 傻瓜用户。这是需求工程师必备的一个假设(assumption),这样我们才可以用感激的态度欢迎和接受用户提供的所有原始材料。
- 提问的角度。一般的、传统的角度的询问是这样的:软件能为您做些什么;use case方法论则这样询问:您想怎样使用软件,用来做什么。
- Impersonation。需求工程师了解了用户的business背景后,可以impersonate用户的角色,提出一系列的软件需求,并一一让用户赞成或反对。
- 一致性和完备性(consistency and completeness)。这是需求工程的2个核心要求。达到这两个要求的主要手段是:分析所获得的材料,综合business要求和软件技术,形成需求规格说明,反馈、评审、修正需求。如此反复迭代若干次。
- 需求遗漏-最可怕的敌人。几乎每一个事后发现出来的需求遗漏都会给甲方、乙方造成不大不小的surprise。往往是一个项目从成功变成失败的转折点(如果一个项目真的会有这样的转变)。
- Prototype - 需求细化(refinement)。这个方法也是Frederick Brooks提倡的用以解决软件中essential complexity的一个有效方法,特别是在一个开发团队或组织对business陌生的情况下。它的主要思想是:prototype可以有效地激发用户对软件需求的全新的感知和描述。但是,在实际使用中,开发者不要被已经形成的prototype限制了软件设计和实现的思路。
- 需求问卷。有必要吗?问卷的任何问题是否都应该当面口头提问?
- 愚蠢的提问。需求工程师可以装作不懂,提出“愚蠢”的问题,目的是让用户反对,从而打开话匣子。自然、亲切、融洽。