一、引言
在项目管理领域中,需求开发与管理被视为项目的灵魂。一个项目的成功与否,很大程度上取决于需求工作的质量。本文旨在深入探讨需求开发与管理的核心要点,并结合Java代码示例与图表,为项目管理人员和开发人员提供实战指导。
二、需求开发与管理的核心要素
1. 需求的来源与重要性
需求通常源于用户的“需要”,这些需要经过分析、确认后形成完整的文档。这份文档详细说明了产品“必须或应当”做什么。需求是产品的根源,如果源头被污染,整个项目都将受到影响。
2. 需求开发面临的挑战
- 用户说不清楚需求:有些用户真的不知道需求是什么,或者对需求只有朦胧的感觉。
- 用户心里明白但说不清楚:比如买鞋子,我们知道自己的脚,但很难用语言说清楚脚的大小和形状。
3. 编写详细需求的重要性
项目开发最困难的部分是准确说明开发什么。编写详细的需求文档,包括所有面向用户、面向机器和其他软件系统的接口,是至关重要的。一旦需求工作做错,将给系统带来极大的损害,并且后续修改也极为困难。
三、需求开发的具体步骤
1. 需求调查与分析
通过调查与分析,获取用户需求并定义产品需求。进一步定义准确无误的产品需求,产生《产品需求规格说明书》。
2. 编写良好的需求说明书
一个良好的需求说明书应具备以下特征:
- 正确性:正确反映用户的真实意图。
- 清晰性:易读易懂。
- 无二义性:每个需求只有唯一的含义。
- 一致性:各个需求之间不发生矛盾。
- 必要性:集中精力完成必要的需求。
- 完备性:没有遗漏必要的需求。
- 可实现性:在技术上是可行的,并满足时间、费用、质量等约束。
- 可验证性:用户能够验证需求的满足情况。
- 优先级:明确需求的优先级。
- 阐述“做什么”而不是“怎么做”:避免将实现细节包含在需求中。
四、需求管理的过程域
1. 需求确认
开发方和客户共同对需求文档进行评审,达成共识后作出书面承诺,使需求文档具有商业合同效果。
2. 需求跟踪
建立与维护“需求-设计-编程-测试”之间的一致性,确保所有的工作成果符合用户需求。需求跟踪有两种方式:
- 正向跟踪:检查《产品需求规格说明书》中的每个需求是否都能在后继工作成果中找到对应点。
- 逆向跟踪:检查设计文档、代码、测试用例等工作成果是否都能在《产品需求规格说明书》中找到出处。
3. 需求变更控制
依据“变更申请-审批-更改-重新确认”的流程处理需求的变更,防止需求变更失去控制而导致项目混乱。需求变更控制过程中最难办的事情是拒绝客户提出的不合理需求变更请求。解决这个问题的办法是事先建立规则,如允许客户变更三次需求,超过次数则提请客户补偿开发投入。
五、深入理解需求:沟通与迭代
1. 认清客户的重要性
客户是上帝,占有决定性的地位。项目开发人员负有教育客户的义务,需要引导客户说出自己的心声。
2. 耐心沟通
耐心是获得真正需求的关键。只有耐心的沟通,才能揭开需求的重重面纱。
3. 参与的重要性
提倡“现场客户”,即客户应该随时和开发人员在一起,随时提供资料和做出决策。
4. 拥抱变化
需求变化是开发人员常面临的问题。应对变化的最好方法是迭代式开发,包括需求、设计、实现等阶段。
六、测试与评估
1. 测试目标
测试的目标是考核软件项目是否成功。例如,开发物流系统的目的是缩短产品周转周期、降低库存;开发供应链系统是为了加强和供应商的联系、降低库存。
2. 执行性目标
明确需求后,要竭力做到以下几点:
- 什么(WHAT):按顺序列出达到目标所需完成的工作。
- 何时(WHEN):完成工作所需要的时间。
- 做到的程度(HOW-WELL):要完成的工作以何标准来度量。
- 资源(RESOURCES):完成工作需要的人员/资金等。
- 谁(WHO):由谁负责完成任务。
3. 需求管理流程
+-------------------+
| 需求开发阶段 |
+-------------------+
| 收集用户需求 |
| 分析并定义需求 |
| 编写需求说明书 |
+-------------------+
|
v
+-------------------+
| 需求管理阶段 |
+-------------------+
| 需求确认 |
| 需求跟踪 |
| 需求变更控制 |
+-------------------+
七、总结
需求开发与管理是项目管理的核心环节。通过深入了解需求,编写清晰、准确的需求说明书,并实施有效的需求管理,可以大大提高项目的成功率。本文为项目管理人员和开发人员提供了实战指导。希望本文能为您的项目管理工作带来启示和帮助。