需求工程师

需求阶段的错误在后期的纠错成本,远高于软件设计和实现阶段的错误的纠错成本,因此需求工程是软件工程领域非常关键的分支之一。

软件⼯程师、计算机科学家与数学家的 cold joke

一天,软件工程师、计算机科学家和数学家在圆明园相遇,他们看 到湖面上游来一只黑天鹅,于是不约而同地使用各自领域的建模方法描述这只黑天鹅:

  • 在软件工程师的模型中,将天鹅建模为黑色的:
  • 计算机科学家的模型中,仅将一部分天鹅建模为黑色的:
  • 数学家的模型则是:在圆明园,有一个湖上,存在至少一只天鹅,它的一面是黑色的… :$$ \exists x\exists y\exists z\exists u,\text{Swan}(x)\wedge\text{Lake}(y)\wedge\text{SwimOn}(x,y)\wedge\text{At}(y,Palace)\wedge\text{Black}(OneSide(x))

什么是合格的需求工程师?

现代需求工程师应当具备这些能力:

  • 分析问题和解决问题的能力
  • 人际沟通及交流能力
  • 软件工程知识和技能
  • 应用领域有关知识
  • 书面语言组织和表达能力

优秀需求工程师应当追求这些目标:

  1. 对环境或系统的错误假设,
  2. 确保描述的一致性,
  3. 提升对标准和规范的依从性,
  4. 减少团队和个人间的误解,
  5. 提高支持人员的反应速度和效率,
  6. 提升客户满意程度,
  7. 撰写优质的需求文档

需求定义

需求是对外可见的系统特征,关注的是系统的特征描述。

需求的类型

需求工程过程

需求的主要来源

需求获取技术

撰写需求文档