需求工程

定义

需求工程是系统工程的一个分支,研究系统的实际目标、功能和约束。它还关注这些因素与系统中部件的行为精确规范的关系,以及它们随时间和跨系统家族的演化。

上面这个定义很好地强调了「现实世界目标」对于软件系统的重要性,这个可以解释软件系统开发的原因和内容;其次,它引用了「精确规范」——这些提供了分析需求的基础,确认它们确实是涉众想要的;最后其强调了「变化」,这是永远不可避免并且应当十分重视的。

更广义地说,需求工程也是是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。需求工程通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。

需求工程的理论基础和实践技术

RE 利用 认知科学社会科学提供理论基础和实践技术引出和建模要求:

  • 认知心理学有助于理解人们在描述自己的需求时可能遇到的困难。例如,问题领域的专家往往有大量的隐性知识,这些知识不适合内省,意味着当用户面临某个领域的困难的时候,无法识别其中的知识,他们本身就是盲目的。因此,他们对需求分析师提出的问题的回答可能与他们的行为不匹配,他们有可能不清楚自己在做什么。此外,需求工程师可能需要为用户对软件用户界面的理解建模。
  • 人类学提供了一种观察人类活动的方法论方法,有助于发展对计算机系统如何帮助或阻碍这些活动的更丰富的理解。例如,民族学方法已被应用于 RE,以发展分析协作工作和团队互动的观察技术。
  • 社会学提供了对计算机化引起的政治和文化变化的理解。新电脑系统的引入,会改变机构内部工作的性质,并可能影响机构内部的结构和沟通路径。因此,需求收集工作可能会变得政治化。解决这一问题的 RE 方法包括“斯堪的纳维亚”方法,其目的是在需求定义过程中涉及那些最受结果影响的人
  • 语言学很重要,因为 RE 很大程度上是关于交流的。语言分析改变了英语在规范中使用的方式,例如避免歧义和提高可理解性。语言学的工具也可以用于需求提取,例如分析组织内的沟通模式
  • RE 必须关注对利益相关者的信念的理解 (认识论),世界上可观察的问题 (现象学),以及客观真实的问题 (本体论)。每当人们希望讨论验证需求时,特别是当涉众可能有不同的目标和不兼容的信仰系统时,这些问题就变得很重要。在选择建模技术时,它们也变得很重要,因为技术的选择影响可以建模的现象集,并且可能限制需求工程师可以观察到的内容。

实现步骤

诱导需求

需求的诱导可能是最常被认为是 RE 过程中的“第一步”的活动。“诱导”这个词比“捕获”更可取,以避免让人觉得需求“就在那里”,只需提出正确的问题就可以收集。在需求工程师确信已经收集了系统的一组足够完整的需求之前,在需求获取过程中收集的信息通常必须被解释、分析、建模和验证。因此,需求诱导与其他反应密切相关——在很大程度上,所使用的诱导技术是由建模方案的选择驱动的 (反之亦然: 许多建模方案意味着使用特定类型的诱导技术)。

可行性研究 引出和分析 规范 验证

附录

笔记来源